في الحوسبة، يكون تحويل السياق هو عملية تخزين حالة عملية أو شريط التعليمات، بحيث يمكن استعادته واستئناف تنفيذه من نفس النقطة في وقت لاحق. يتيح ذلك عمليات متعددة مشاركة وحدة معالجة مركزية واحدة، وهي ميزة أساسية لنظام تشغيل متعدد المهام.
يختلف المعنى الدقيق لعبارة "تحويل السياق" بشكل كبير في الاستخدام. في سياق تعدد المهام، تحويل السياق يشير إلى عملية تخزين حالة النظام لمهمة واحدة، بحيث يمكن إيقاف المهمة مؤقتًا واستئناف مهمة أخرى. يمكن أيضًا أن يحدث تبديل السياق كنتيجة للمقاطعة، مثال عندما تحتاج مهمة ما إلى الوصول إلى مخزن القرص، مما يؤدي إلى توفير وقت وحدة المعالجة المركزية لعمل المهام الأخرى. تتطلب بعض أنظمة التشغيل أيضًا تحويل السياق للتنقل بين وضع المستخدم ومهام وضع النواة (kernel) . يمكن أن يكون لعملية تبديل السياق تأثير سلبي على أداء النظام، على الرغم من أن حجم هذا التأثير يعتمد على طبيعة التحويل الذي يتم تنفيذه.
التكلفة
عادةً ما تكون محولات السياق مكثّفة من الناحية الحسابية، والكثير من تصميم أنظمة التشغيل يتمثل في تحسين استخدام تحويل السياق. يتطلب التحويل من عملية إلى أخرى قدرًا معينًا من الوقت للقيام بالمهام الإدارية - حفظ وتحميل السجلات وخرائط الذاكرة، وتحديث جداول وقوائم متنوعة، إلخ. ما هو موجود فعلاً في تحويل السياق يختلف بين هذه الحواس وبين المعالجات وأنظمة التشغيل. على سبيل المثال، في نواة لينكس ، يشتمل تبديل السياق على تبديل التسجيلات، مؤشر المكدس، وعداد البرنامج، ولكنه مستقل عن تبديل مساحة العنوان، على الرغم من أنه يحدث أيضًا في تبديل عملية تبديل عنوان مساحة.[1][2]
متى يحدث التحويل؟
هناك ثلاثة أسباب محتملة تسبب تحويل السياق:
تعدد المهام
الأكثر شيوعًا، في بعض مخطط الجدولة ، يجب إيقاف عملية واحدة من وحدة المعالجة المركزية بحيث يمكن تشغيل عملية أخرى. يمكن تشغيل عملية تحويل السياق من خلال عملية تجعل نفسها غير قابلة للتشغيل، مثل انتظار عملية وحدات الإدخال والإخراج (I/O) أو عملية التزامن لإكمالها. في نظام تعدد المهام الوقائي، قد يقوم المجدول أيضًا بتحويل العمليات التي لا تزال قابلة للتشغيل. لمنع عمليات أخرى من التجويع من وقت وحدة المعالجة المركزية (CPU) ، غالباً ما تقوم المجدولون الوقائيون بتكوين جهاز توقيت للمقاطعة لإطلاق النار عندما تتجاوز إحدى العمليات شريحة الوقت الخاصة بها. تضمن هذه المقاطعة أن يقوم المجدول بالتحكم في أداء مفتاح تبديل السياق.
التحويل بين وضع المستخدم والنواة
عندما يكون الانتقال بين وضع النواة ووضع المستخدم مطلوبًا في نظام التشغيل ، لا يكون تحويل السياق ضروريًا؛ انتقال الوضع ليس في حد ذاته تحويل السياق. ومع ذلك، اعتمادًا على نظام التشغيل، قد يتم أيضًا إجراء تحويل السياق في هذا الوقت.
الخطوات
في التبديل، يجب حفظ حالة العملية التي يتم تنفيذها حاليًا بطريقة أو بأخرى، بحيث يمكن استعادة هذه الحالة عند إعادة جدولتها.
تتضمن حالة العملية كافة السجلات التي قد تستخدمها العملية، وخاصةً عداد البرنامج، بالإضافة إلى أية بيانات أخرى خاصة بنظام التشغيل قد تكون ضرورية. يتم تخزين هذا عادة في بنية بيانات تسمى كتلة التحكم بالعملية (PCB)
قد يتم تخزين كتلة التحكم بالعملية على مكدس لكل عملية في ذاكرة النواة (بدلاً من مكدس الاستدعاءات الخاص بوضع المستخدم) . تتم إضافة مقبض إلى كتلة التحكم بالعملية إلى قائمة انتظار العمليات الجاهزة للتشغيل، غالباً ما تسمى قائمة انتظار الجاهزة.
بما أن نظام التشغيل قد قام بتعليق تنفيذ عملية واحدة، فإنه يمكن عندئذٍ تحويل السياق عن طريق اختيار عملية من قائمة الانتظار الجاهزة واستعادة كتلة التحكم بالعملية الخاص به. عند القيام بذلك، يتم تحميل عداد البرنامج من كتلة التحكم بالعملية، وبالتالي يمكن أن يستمر التنفيذ في العملية المختارة. يمكن أن تؤثر أولوية المعالجة والخيط الحاسوبي على العملية التي يتم اختيارها من قائمة الانتظار الجاهزة (أي أنها قد تكون قائمة انتظار ذات أولوية).
الأداء
إن تحويل السياق نفسه له تكلفة في الأداء، بسبب تشغيل جدولة المهام، وإحالة TLB ، وبسبب غير مباشر مشاركة ذاكرة التخزين المؤقت لوحدة المعالجة المركزية بين مهام متعددة.[3] يمكن أن يكون التبديل بين الخيوط حاسوبية للعمليات في عملية واحدة أسرع من بين عمليتين منفصلتين، لأن الخيوط حاسوبية تتشارك في نفس خرائط الذاكرة افتراضية ، لذا لا يكون تدفق TLB ضروريًا. [4]
المراجع
- IA-64 Linux Kernel: Design and Implementation, 4.7 Switching Address Spaces - تصفح: نسخة محفوظة 27 يوليو 2018 على موقع واي باك مشين.
- Operating Systems, 5.6 The Context Switch, p. 118 - تصفح: نسخة محفوظة 27 فبراير 2017 على موقع واي باك مشين.
- Chuanpeng Li; Chen Ding; Kai Shen. "Quantifying The Cost of Context Switch" ( كتاب إلكتروني PDF ). مؤرشف من الأصل ( كتاب إلكتروني PDF ) في 13 أغسطس 2017.
- Ulrich Drepper (9 أكتوبر 2014). "Memory part 3: Virtual Memory". LWN.net. LWN.net. مؤرشف من الأصل في 14 أبريل 2019. تحقق من التاريخ في:
|date=
(مساعدة)
روابط خارجية
- Context Switching at OSDev.org
- Context Switch Definition by The Linux Information Project (LINFO)
- Context Switches from the Microsoft Developer Network (MSDN)
- General Architecture and Design -Interrupt Handling at FreeBSD.org