تبديل السياق

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

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

يكلف

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

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

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

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

هناك ثلاثة محفزات محتملة للتبديل بين السياقات:

تعدد المهام

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

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

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

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

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

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

خطوات

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

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

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

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

أمثلة

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

لا حاجة للتبديل بين السياقات

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

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

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

أداء

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

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

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

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

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

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

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

انظر أيضا

مراجع

  1. ^ دوغلاس كومر؛ تيموثي ف. فوسوم (1988). "4 الجدولة والتبديل بين السياقات". تصميم نظام التشغيل . المجلد الأول: نهج XINU (إصدار الكمبيوتر الشخصي). برنتيس هول. ص. 67. رقم ISBN 0-13-638180-4. إن تبديل السياق هو جوهر عملية التلاعب بالعمليات. وهو يتألف من إيقاف الحساب الحالي، وحفظ معلومات كافية بحيث يمكن إعادة تشغيله لاحقًا، وإعادة تشغيل عملية أخرى.
  2. ^ أو بشكل متتابع وبسرعة كبيرة بحيث تبدو وكأنها متزامنة.
  3. ^ تانينباوم، أندرو س.؛ بوس، هربرت (20 مارس 2014). أنظمة التشغيل الحديثة (الطبعة الرابعة). بيرسون. رقم ISBN 978-0133591620.
  4. ^ IA-64 Linux Kernel: التصميم والتنفيذ ، 4.7 تبديل مساحات العناوين
  5. ^ أنظمة التشغيل ، 5.6 تبديل السياق، ص 118
  6. ^ Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (2015). Operating Systems: Three Easy Pieces. مؤرشف من الأصل في 25 يوليو 2016 . تم الاسترجاع في 25 يوليو 2016 .
  7. ^ Chuanpeng Li؛ Chen Ding؛ Kai Shen. Quantifying The Cost of Context Switch (PDF) . مؤتمر أبحاث الحوسبة الفيدرالية التابع لـ ACM ، سان دييغو، 13-14 يونيو 2007. مؤرشف من الأصل (PDF) في 13 أغسطس 2017.
  8. ^ أولريش دريبر (9 أكتوبر 2014). "الذاكرة الجزء 3: الذاكرة الافتراضية". LWN.net .
  9. ^ DL Sims. "مساحات العناوين المتعددة والمفردة: نحو أرضية وسطى". 1993. doi :10.1109/IWOOOS.1993.324906
  10. ^ "Context Switch definition". Linfo.org. مؤرشف من الأصل في 2010-02-18 . تم الاسترجاع في 2013-09-08 .
  11. ^ بوفيه ، دانييل بيير. سيساتي، ماركو (2006). فهم نواة لينكس، الطبعة الثالثة أورايلي وسائل الإعلام . ص. 104. ردمك 978-0-596-00565-8. تم الاسترجاع بتاريخ 2009-11-23 .
  • التبديل بين السياقات في OSDev.org
  • تعريف تبديل السياق بواسطة مشروع معلومات Linux (LINFO)
  • تبديلات السياق من شبكة مطوري Microsoft (MSDN)
  • الهندسة المعمارية العامة والتصميم - معالجة المقاطعات في FreeBSD.org
  • تبديل سياق نظام التشغيل - Computerphile
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=تبديل_السياق&oldid=1250067978"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate