تبديل السياق

في مجال الحوسبة ، يُعرف تبديل السياق بأنه عملية تخزين حالة عملية أو خيط برمجي ، بحيث يمكن استعادتها واستئناف تنفيذها لاحقًا، ثم استعادة حالة مختلفة محفوظة مسبقًا. [ 1 ] يتيح هذا لعدة عمليات مشاركة وحدة معالجة مركزية واحدة (CPU)، وهو ميزة أساسية لأنظمة التشغيل متعددة البرامج أو متعددة المهام . في وحدة المعالجة المركزية التقليدية، تستخدم كل عملية - أي برنامج قيد التنفيذ - سجلات وحدة المعالجة المركزية المختلفة لتخزين البيانات والاحتفاظ بالحالة الحالية للعملية الجارية. أما في أنظمة التشغيل متعددة المهام، فيقوم نظام التشغيل بالتبديل بين العمليات أو الخيوط البرمجية للسماح بتنفيذ عدة عمليات في وقت واحد. [ 2 ] في كل عملية تبديل، يجب على نظام التشغيل حفظ حالة العملية الجارية حاليًا، ثم تحميل حالة العملية التالية التي ستعمل على وحدة المعالجة المركزية. يُطلق على هذا التسلسل من العمليات، الذي يخزن حالة العملية الجارية ويحمل حالة العملية التالية الجارية، اسم تبديل السياق.  

يختلف المعنى الدقيق لعبارة "تبديل السياق". في سياق تعدد المهام، تشير إلى عملية تخزين حالة النظام لمهمة ما، بحيث يمكن إيقاف تلك المهمة مؤقتًا واستئناف مهمة أخرى. كما يمكن أن يحدث تبديل السياق نتيجةً لمقاطعة ، كما هو الحال عندما تحتاج مهمة ما إلى الوصول إلى وحدة تخزين القرص ، مما يحرر وقت وحدة المعالجة المركزية لمهام أخرى. تتطلب بعض أنظمة التشغيل أيضًا تبديل السياق للتنقل بين مهام وضع المستخدم ووضع النواة . قد تؤثر عملية تبديل السياق سلبًا على أداء النظام. [ 3 ] : 28

يكلف

تُعدّ عمليات تبديل السياق عادةً عمليات حسابية مُكثّفة، ويُركّز جزء كبير من تصميم أنظمة التشغيل على تحسين استخدامها. يتطلب الانتقال من عملية إلى أخرى وقتًا مُحددًا لإدارة العمليات - حفظ وتحميل السجلات وخرائط الذاكرة، وتحديث الجداول والقوائم المختلفة، وما إلى ذلك. ويعتمد ما ينطوي عليه تبديل السياق فعليًا على بنية النظام، وأنظمة التشغيل، وعدد الموارد المُشتركة (تتشارك الخيوط التي تنتمي إلى نفس العملية موارد أكثر بكثير مقارنةً بالعمليات غير المُرتبطة وغير المُتعاونة). 

على سبيل المثال، في نواة لينكس ، يتضمن تبديل السياق تحميل كتلة التحكم بالعملية (PCB) المُخزّنة في جدول PCB ضمن مكدس النواة، وذلك لاسترجاع معلومات حول حالة العملية الجديدة. تُحمّل معلومات حالة وحدة المعالجة المركزية، بما في ذلك السجلات ومؤشر المكدس وعداد البرنامج ، بالإضافة إلى معلومات إدارة الذاكرة مثل جداول التجزئة وجداول الصفحات (إلا إذا كانت العملية القديمة تتشارك الذاكرة مع الجديدة)، من كتلة التحكم بالعملية للعملية الجديدة. لتجنب ترجمة العناوين غير الصحيحة في حالة استخدام العمليتين السابقة والحالية لذاكرة مختلفة، يجب تفريغ مخزن الترجمة المؤقت (TLB). يؤثر هذا سلبًا على الأداء لأن كل إشارة إلى مخزن الترجمة المؤقت ستكون غير موجودة، نظرًا لكونه فارغًا بعد معظم عمليات تبديل السياق. [ 4 ] [ 5 ]

علاوة على ذلك، يحدث تبديل سياق مماثل بين سلاسل المستخدم ، ولا سيما السلاسل الخضراء ، وغالبًا ما يكون خفيفًا جدًا، حيث يحفظ ويستعيد الحد الأدنى من السياق. في الحالات القصوى، مثل التبديل بين الروتينات الفرعية في لغة Go ، يكون تبديل السياق مكافئًا لعملية إنهاء روتين فرعي ، وهي عملية أغلى قليلًا فقط من استدعاء روتين فرعي .

تبديل الحالات

هناك ثلاثة عوامل محتملة لتغيير السياق:

تعدد المهام

في أغلب الأحيان، ضمن بعض أنظمة الجدولة ، يجب إخراج عملية من وحدة المعالجة المركزية (CPU) لإتاحة المجال لعملية أخرى. يمكن أن يحدث هذا التبديل السياقي عندما تجعل العملية نفسها غير قابلة للتنفيذ، كما في حالة انتظار اكتمال عملية إدخال/إخراج أو عملية مزامنة . في نظام تعدد المهام الاستباقي ، قد يقوم المجدول أيضًا بإخراج العمليات التي لا تزال قابلة للتنفيذ. ولمنع حرمان العمليات الأخرى من وقت وحدة المعالجة المركزية، غالبًا ما يقوم المجدول الاستباقي بضبط مقاطعة مؤقتة لتُفعّل عندما تتجاوز عملية ما حصتها الزمنية . تضمن هذه المقاطعة استعادة المجدول للتحكم لإجراء التبديل السياقي.

معالجة المقاطعات

تعتمد البنى الحديثة على نظام المقاطعات . وهذا يعني أنه إذا طلب المعالج بيانات من قرص، على سبيل المثال، فإنه لا يحتاج إلى الانتظار حتى اكتمال القراءة؛ بل يمكنه إرسال الطلب (إلى جهاز الإدخال/الإخراج) ومتابعة مهمة أخرى. عند اكتمال القراءة، يمكن مقاطعة المعالج (عن طريق وحدة معالجة في هذه الحالة، ترسل طلب مقاطعة إلى وحدة التحكم في المقاطعات ) وعرض البيانات المقروءة عليه. وللتعامل مع المقاطعات، يُثبَّت برنامج يُسمى معالج المقاطعات ، وهو المسؤول عن معالجة المقاطعة الواردة من القرص.

عند حدوث مقاطعة، يقوم الجهاز تلقائيًا بتغيير جزء من سياق التنفيذ (على الأقل بما يكفي لتمكين معالج المقاطعة من العودة إلى الكود الذي تمت مقاطعته). قد يحتفظ المعالج بسياق تنفيذ إضافي، وذلك بحسب تفاصيل تصميمات الأجهزة والبرامج. غالبًا ما يتم تغيير جزء صغير فقط من سياق التنفيذ لتقليل الوقت المستغرق في معالجة المقاطعة. لا يقوم نظام التشغيل بإنشاء أو جدولة عملية خاصة لمعالجة المقاطعات، بل يتم تنفيذ معالج المقاطعة في سياق التنفيذ (الجزئي غالبًا) الذي تم إنشاؤه في بداية معالجة المقاطعة. بمجرد اكتمال معالجة المقاطعة، يتم استعادة سياق التنفيذ الذي كان ساريًا قبل حدوث المقاطعة، حتى تتمكن العملية التي تمت مقاطعتها من استئناف التنفيذ في حالتها الصحيحة.

تبديل وضع المستخدم ووضع النواة

عندما ينتقل النظام بين وضع المستخدم ووضع النواة ، لا يلزم إجراء تبديل سياق؛ فانتقال الوضع بحد ذاته ليس تبديل سياق. ومع ذلك، قد يحدث تبديل سياق في هذه المرحلة، وذلك بحسب نظام التشغيل.

خطوات

يجب حفظ حالة العملية قيد التنفيذ حاليًا حتى يمكن استعادتها عند إعادة جدولة تنفيذها.

تتضمن حالة العملية جميع السجلات التي قد تستخدمها العملية، وخاصة عداد البرنامج ، بالإضافة إلى أي بيانات أخرى خاصة بنظام التشغيل قد تكون ضرورية. وعادةً ما يتم تخزين هذه البيانات في بنية بيانات تُسمى كتلة التحكم بالعملية (PCB) أو إطار التبديل .

قد يتم تخزين لوحة التحكم الرئيسية (PCB) في مكدس خاص بكل عملية في ذاكرة النواة (بدلاً من مكدس استدعاءات وضع المستخدم )، أو قد يكون هناك بنية بيانات محددة من قِبل نظام التشغيل لهذه المعلومات. يُضاف مؤشر لوحة التحكم الرئيسية إلى قائمة انتظار العمليات الجاهزة للتنفيذ، والتي تُسمى غالبًا قائمة الانتظار الجاهزة .

بما أن نظام التشغيل قد أوقف تنفيذ إحدى العمليات فعليًا، فإنه يستطيع تغيير السياق باختيار عملية من قائمة الانتظار واستعادة عداد البرنامج الخاص بها. عند القيام بذلك، يتم تحميل عداد البرنامج من عداد البرنامج، وبالتالي يمكن استئناف التنفيذ في العملية المختارة. قد تؤثر أولوية العملية أو الخيط على العملية المختارة من قائمة الانتظار (أي أنها قد تكون قائمة انتظار ذات أولوية ).

أمثلة

تختلف التفاصيل باختلاف بنية النظام ونظام التشغيل، ولكن هذه سيناريوهات شائعة.

لا حاجة لتغيير السياق

لنفترض عملية جمع حسابية عامة A = B + 1. تُخزَّن التعليمة في سجل التعليمات ، ويُزاد عداد البرنامج . تُقرأ قيمتا A وB من الذاكرة وتُخزَّنان في السجلين R1 وR2 على التوالي. في هذه الحالة، تُحسب قيمة B + 1 وتُكتب في R1 كنتيجة نهائية. تتطلب هذه العملية قراءات وكتابات متسلسلة فقط، ولا توجد فترات انتظار لاستدعاء الدوال ، وبالتالي لا يحدث تبديل سياق/انتظار في هذه الحالة.

تبديل السياق الناتج عن المقاطعة

لنفترض أن العملية A قيد التشغيل، وحدثت مقاطعة مؤقت. يقوم المعالج المركزي (CPU) بحفظ سجلات المستخدم  - عداد البرنامج، ومؤشر المكدس، وسجل الحالة  - للعملية A ضمنيًا على مكدس نواة A. ثم ينتقل الجهاز إلى وضع النواة، وينتقل إلى معالج المقاطعة ليتولى نظام التشغيل زمام الأمور. بعد ذلك، يستدعي نظام التشغيل روتينًا switch()لحفظ سجلات المستخدم العامة للعملية A أولًا على مكدس نواة A، ثم يحفظ قيم سجلات النواة الحالية للعملية A في لوحة التحكم الخاصة بها (PCB)، ويستعيد سجلات النواة من لوحة التحكم الخاصة بالعملية B، ويغير السياق، أي يغير مؤشر مكدس النواة ليشير إلى مكدس نواة العملية B. ثم يعود نظام التشغيل من المقاطعة. بعد ذلك، يقوم الجهاز بتحميل سجلات المستخدم من مكدس نواة B، وينتقل إلى وضع المستخدم، ويبدأ تشغيل العملية B من عداد برنامجها. [ 6 ]

أداء

يُؤثر تبديل السياق سلبًا على الأداء، نظرًا لتشغيل مُجدول المهام ، وتفريغ ذاكرة الترجمة السريعة (TLB)، وبشكل غير مباشر نتيجةً لمشاركة ذاكرة التخزين المؤقت لوحدة المعالجة المركزية بين مهام متعددة. [ 7 ] قد يكون التبديل بين خيوط عملية واحدة أسرع من التبديل بين عمليتين منفصلتين، لأن الخيوط تتشارك نفس خرائط الذاكرة الافتراضية ، وبالتالي لا حاجة لتفريغ ذاكرة الترجمة السريعة (TLB). [ 8 ]

يُطلق على الوقت اللازم للتبديل بين عمليتين منفصلتين اسم زمن انتقال العملية . ويُطلق على الوقت اللازم للتبديل بين خيطين من نفس العملية اسم زمن انتقال الخيط . أما الوقت المستغرق من لحظة توليد مقاطعة الأجهزة إلى لحظة معالجتها فيُطلق عليه زمن انتقال المقاطعة .

قد يكون التبديل بين عمليتين في نظام تشغيل ذي مساحة عنوان واحدة أسرع من التبديل بين عمليتين في نظام تشغيل ذي مساحات عناوين خاصة لكل عملية. [ 9 ]

الأجهزة مقابل البرامج

يمكن إجراء تبديل السياق بشكل أساسي بواسطة البرمجيات أو الأجهزة. بعض المعالجات، مثل Intel 80386 وخلفائها [ 10 ] ، تدعم تبديل السياق على مستوى الأجهزة، وذلك باستخدام مقطع بيانات خاص يُسمى مقطع حالة المهمة (TSS). يمكن تفعيل تبديل المهمة بشكل صريح باستخدام تعليمة CALL أو JMP تستهدف مُعرِّف TSS في جدول المُعرِّفات العام . كما يمكن أن يحدث ضمنيًا عند حدوث مقاطعة أو استثناء إذا كانت هناك بوابة مهمة في جدول مُعرِّفات المقاطعة (IDT). عند حدوث تبديل المهمة، يمكن لوحدة المعالجة المركزية تحميل الحالة الجديدة تلقائيًا من TSS.

كما هو الحال مع المهام الأخرى التي تُنفذ على مستوى الأجهزة، يُتوقع أن تكون هذه العملية سريعة نسبيًا؛ إلا أن أنظمة التشغيل الشائعة، بما في ذلك ويندوز ولينكس، [11 ] لا تستخدم هذه الميزة . ويعود ذلك أساسًا إلى سببين:

  • لا يقوم تبديل سياق الأجهزة بحفظ جميع السجلات (فقط السجلات العامة، وليس سجلات الفاصلة العائمة - على الرغم من أن TSالبت يتم تشغيله تلقائيًا في CR0سجل التحكم ، مما يؤدي إلى حدوث خطأ عند تنفيذ تعليمات الفاصلة العائمة وإعطاء نظام التشغيل الفرصة لحفظ واستعادة حالة الفاصلة العائمة حسب الحاجة).
  • مشاكل الأداء المرتبطة، على سبيل المثال، يمكن أن يكون تبديل سياق البرامج انتقائيًا ويخزن فقط تلك السجلات التي تحتاج إلى التخزين، في حين أن تبديل سياق الأجهزة يخزن جميع السجلات تقريبًا سواء كانت مطلوبة أم لا.

انظر أيضاً

مراجع

  1. دوغلاس كومر؛ تيموثي ف. فوسوم (1988). "4 جدولة وتبديل السياق". تصميم نظام التشغيل . المجلد  الأول: منهج XINU (إصدار الحاسوب الشخصي). برنتيس هول. ص  67. ISBN 0-13-638180-4يُعد تبديل السياق جوهر عملية إدارة العمليات المتعددة . ويتألف من إيقاف الحساب الحالي، وحفظ معلومات كافية لإعادة تشغيله لاحقًا، ثم إعادة تشغيل عملية أخرى.
  2. أو بالتتابع بسرعة كبيرة بحيث تبدو وكأنها متزامنة.
  3. تانينباوم، أندرو س.؛ بوس، هربرت (20 مارس 2014). أنظمة التشغيل الحديثة ( الطبعة الرابعة). بيرسون. ISBN  978-0133591620.
  4. نواة لينكس IA-64: التصميم والتنفيذ ، 4.7 تبديل مساحات العناوين
  5. أنظمة التشغيل ، 5.6 تبديل السياق، ص 118
  6. أرباتشي-دوسو، رمزي؛ أرباتشي-دوسو، أندريا (2015). أنظمة التشغيل: ثلاث خطوات سهلة . مؤرشف من الأصل في 25 يوليو 2016. تم الاطلاع عليه في 25 يوليو 2016 .
  7. تشوانبينغ لي؛ تشين دينغ؛ كاي شين. قياس تكلفة تبديل السياق (ملف PDF) . مؤتمر أبحاث الحوسبة الموحدة التابع لجمعية آلات الحوسبة ، سان دييغو، 13-14 يونيو 2007. مؤرشف (ملف PDF) من الأصل بتاريخ 13 أغسطس 2017.
  8. أولريش دريبر (9 أكتوبر 2014). "الذاكرة الجزء 3: الذاكرة الافتراضية" . LWN.net .
  9. دي إل سيمز. "مساحات العناوين المتعددة والمفردة: نحو حل وسط". 1993. doi : 10.1109/IWOOOS.1993.324906
  10. "تعريف تبديل السياق" . Linfo.org. مؤرشف من الأصل بتاريخ 18 فبراير 2010. تم الاطلاع عليه بتاريخ 8 سبتمبر 2013 .
  11. ^ بوفيه، دانييل بيير. سيساتي، ماركو (2006). فهم نواة لينكس، الطبعة الثالثة أورايلي وسائل الإعلام . ص. 104. ردمك  978-0-596-00565-8تم الاطلاع عليه بتاريخ 23-11-2009 .