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

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


