החלפת הקשר

מתוך ויקיפדיה, האנציקלופדיה החופשית

במחשב, החלפת הקשר (context switch) היא המעבר בין הרצת שני תהליכים באמצעות המעבד. באמצעות החלפת הקשר, מספר תהליכים יכולים לחלוק את אותו מעבד. בהחלפת הקשר מצב האוגרים במעבד נשמר בזיכרון המחשב, ולאחר מכן מכניסה למעבד את נתוני ריצת תהליך אחר. בסיום התהליך האחרון, מחזירה את נתוני הריצה של התהליך הקודם אל המעבד וממשיכה את ריצתו מאותה הנקודה בה הפסיק. החלפת הקשר היא כלי חיוני במחשבים הפועלים בריבוי משימות הרצות על מעבד יחיד. תהליך החלפת ההקשר נחשב לתהליך בזבזני מבחינת משאבי מערכת ועל כן מערכות הפעלה מנסות לבצע אופטימיזציה בשימוש בהן.

קיימים שלושה תרחישים בהם יש צורך בהחלפת הקשר:

  • במחשב הפועל בריבוי משימות, קיים סדרן תוכניות (scheduler) הקובע את סדר הרצת התוכניות ומקצה "זמן מעבד" לכל תהליך. כש"זמן מעבד" של תהליך אחד מסתיים, מופעלת פסיקה שתגרור החלפת הקשר.
  • ארכיטקטורות מסוימות (למשל ארכיטקטורת x86 של אינטל) הן מונחות-פסיקות. משמעות הדבר היא שאם המעבד צריך לבצע קריאה מהדיסק, למשל, הוא ישלח את בקשת הקריאה ויעבור לבצע פעולות אחרות במקום להמתין. עם סיום הקריאה מהדיסק תופעל פסיקה שתגרור החלפת הקשר. הפסיקה מהדיסק תטופל על ידי שגרת טיפול בפסיקה.
  • במעבר בין מצב משתמש (user mode) למצב ליבה (kernel mode), תלוי במערכת ההפעלה, תיתכן החלפת הקשר.