هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها
يرجى مراجعة هذه المقالة وإزالة وسم المقالات غير المراجعة، ووسمها بوسوم الصيانة المناسبة.

تحويل السياق

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
N write.svg
هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر عدا الذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. (ديسمبر 2018)

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

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

التكلفة[عدل]

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

متى يحدث التحويل؟[عدل]

هناك ثلاثة أسباب محتملة تسبب تحويل السياق:

تعدد المهام[عدل]

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

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

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

الخطوات[عدل]

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

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

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

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

الأداء[عدل]

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

المراجع[عدل]

  1. ^ IA-64 Linux Kernel: Design and Implementation, 4.7 Switching Address Spaces نسخة محفوظة 27 يوليو 2018 على موقع واي باك مشين.
  2. ^ Operating Systems, 5.6 The Context Switch, p. 118 نسخة محفوظة 27 فبراير 2017 على موقع واي باك مشين.
  3. ^ Chuanpeng Li؛ Chen Ding؛ Kai Shen. "Quantifying The Cost of Context Switch" (PDF). 
  4. ^ Ulrich Drepper (9 أكتوبر 2014). "Memory part 3: Virtual Memory". LWN.net. LWN.net. مؤرشف من الأصل في 14 أبريل 2019.  تحقق من التاريخ في: |date= (مساعدة)

روابط خارجية[عدل]