كيفية التبديل من عملية إلى أخرى: كل شيء عن التبديل السياقي

آخر تحديث: 27 دي جوليو دي 2023
نبذة عن الكاتب: جيمي هيريرا
تغيير السياق، العملية

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

ما هي العملية؟

مدير المهام

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

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

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

ما هو الرقم القياسي لأسعار المستهلك؟

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

يعتبر مؤشر أسعار المستهلك ضروريًا لـ البرمجة المتزامنة وإنشاء تطبيقات تتطلب التفاعل والمزامنة بين عمليات متعددة. كما يوفر وسيلة لتبادل البيانات ومزامنة الأنشطة وتنسيق المهام بين العمليات.

تتوفر آليات مختلفة لمؤشر أسعار المستهلك، بما في ذلك:

  • طوابير الرسائل:السماح بإرسال واستقبال الرسائل بين العمليات باستخدام قائمة انتظار مشتركة.
  • الذاكرة المشتركة: إنه يسمح لعمليات متعددة بالوصول إلى منطقة ذاكرة مشتركة، مما يسمح لها بتبادل البيانات بسرعة وكفاءة.
  • مآخذ: إنها توفر واجهة شبكة للاتصال بين العمليات على أجهزة مختلفة عبر TCP/IP أو بروتوكولات الشبكة الأخرى.
  • الأنابيب: إنها تسمح بالاتصال في اتجاه واحد بين العمليات، حيث يتم إعادة توجيه مخرجات إحدى العمليات كمدخلات إلى العملية الأخرى.
  • المزامنة: يتم استخدام آليات المزامنة، مثل إشارات المرور، والمفاتيح المتبادلة، ومتغيرات الحالة، لتنسيق الوصول إلى الموارد المشتركة وتجنب ظروف السباق بين العمليات.

يعتمد اختيار آلية IPC على المتطلبات الخاصة بالتطبيق والبيئة التي تُجرى فيها العمليات. لكل آلية مزاياها وعيوبها من حيث الأداء والتعقيد والأمان.

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

ما هو PCB؟

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

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

قد تتضمن بعض البيانات المخزنة على PCB ما يلي:

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

يُحدَّث نظام التشغيل لوحة الدوائر المطبوعة باستمرار عند تغيير حالة العملية أو عند حدوث تبديل في السياق. عند تعليق عملية أو تحويلها إلى عملية أخرى، يحفظ نظام التشغيل حالتها الحالية على لوحة الدوائر المطبوعة، ويُحمِّل حالة العملية التالية لتنفيذها.

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

الفرق بين العملية والخيط

الكثير الخيوط والعمليات الخيوط مفهومان مهمان في مجال البرمجة وتنفيذ البرامج في نظام التشغيل. فيما يلي بعض الاختلافات الرئيسية بين الخيوط والعمليات:

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

الاختلافات بين تبديل سياق العملية وتبديل سياق الخيط

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

في العمليات أحادية الخيط، يُمثل الخيط نفسه العملية بأكملها. أما في العمليات متعددة الخيوط، فيلزم التبديل بين خيوط مختلفة لتنفيذ البرنامج:

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

كيفية إجراء تبديل السياق

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

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

ما هو تبديل السياق؟

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

  كيفية معرفة الحالة الصحية لجهاز SSD أو HDD الخاص بك

تكلفة تبديل السياق: التأثير على الأداء

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

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

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

ملخص العملية

الكثير الخطوات المتبعة في سياق التغيير هناك ما يلي:

  1. احفظ سياق العملية الجارية حاليًا على وحدة المعالجة المركزية. حدِّث كتلة التحكم في العملية والحقول المهمة الأخرى.
  2. نقل كتلة التحكم الخاصة بالعملية السابقة إلى قائمة الانتظار المقابلة، مثل قائمة الانتظار الجاهزة، وقائمة الانتظار للإدخال/الإخراج، وما إلى ذلك.
  3. حدد عملية جديدة لتشغيلها.
  4. حدّث كتلة التحكم للعملية المحددة. يتضمن ذلك تحديث حالة العملية إلى "قيد التشغيل".
  5. تحديث هياكل بيانات إدارة الذاكرة حسب الحاجة.
  6. استعادة سياق العملية التي تم تنفيذها سابقًا عند تحميلها مجددًا إلى المعالج. يتم ذلك بتحميل القيم السابقة من كتلة التحكم في العملية والسجلات.

على سبيل المثال، في حالة لينكس على وجه الخصوص، ما هو النظام الذي أعرفه بشكل أفضل، والذي سيكون:

  1. تصل العملية الحالية التي يتم تشغيلها على وحدة المعالجة المركزية إلى نقطة يجب عندها مقاطعتها، أو يحدث حدث يتطلب تبديل السياق، مثل مكالمة نظام أو مقاطعة أجهزة.
  2. يحفظ نواة نظام التشغيل حالة العملية الحالية، بما في ذلك سجلات وحدة المعالجة المركزية، ومؤشر المكدس، وعداد البرنامج، في كتلة التحكم بالعملية (PCB). يهدف هذا إلى الحفاظ على حالة العملية والسماح باستئنافها لاحقًا.
  3. تختار النواة العملية التالية للتشغيل، إما من قائمة الانتظار الجاهزة أو وفقًا لخوارزمية جدولة. تُحدَّث لوحة الدوائر المطبوعة للعملية المختارة حديثًا، مما يُعيِّن حالتها إلى "قيد التشغيل".
  4. يتم تنفيذ المهام الضرورية لإعداد بيئة العملية الجديدة، مثل تحميل سجلات وحدة المعالجة المركزية ومؤشر المكدس بالقيم المخزنة على PCB الخاص بها.
  5. يقوم النواة بتحديث هياكل الذاكرة، مثل جداول التجزئة وجداول الصفحات، للعملية الجديدة.
  6. أخيرًا، يُستعاد سياق العملية الجديدة، وتُخصَّص لها وحدة المعالجة المركزية للتنفيذ. تستأنف العملية التنفيذ من حيث توقفت سابقًا.

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

آمل أن يكون هذا مفيدًا، إلى جانب مقالة تغيير الموضوع... إذا كنت مهتمًا بهذه البرامج التعليمية، يمكنك رؤية المزيد هنا.