طريق مسدود في Operaنظام ting: ما هو الانتظار الدائري (أمثلة)

⚡ ملخص ذكي

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

  • 🔒 فريف: يؤدي التعطل التام إلى تجميد العمليات التي تحتفظ كل منها بمورد ما أثناء انتظارها لبعضها البعض.
  • 🧩 أربعة شروط: يجب أن تتكامل جميع عناصر الاستبعاد المتبادل، والانتظار والتثبيت، وعدم الاستباق، والانتظار الدائري.
  • 🔁 انتظار دائري: تشكل العمليات سلسلة مغلقة، حيث تنتظر كل عملية مورداً تحتفظ به العملية التالية.
  • 🛡️ الوقاية: يؤدي كسر أي من الشروط الأربعة إلى منع حدوث حالة جمود.
  • 🏦 تجنب: تقوم خوارزمية المصرفي بفحص طلبات الموارد للحفاظ على النظام في حالة آمنة.
  • 🤖 زاوية الذكاء الاصطناعي: يكتشف التعلم الآلي أنماط التعطل، ويساعد Copilot في كتابة ومراجعة التعليمات البرمجية الخاصة بالقفل.

طريق مسدود في Operaنظام تينج

ما هو Deadlock؟

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

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

مثال على الجمود

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

مثال على الجمود

مثال على الجمود

ما هو الانتظار الدائري؟

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

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

مثال على التعميم الانتظار

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

مثال على التعميم الانتظار

مثال الانتظار الدائري

اكتشاف الجمود في نظام التشغيل

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

منع الجمود في نظام التشغيل

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

منع حالة الجمود هو مجموعة من الأساليب لضمان عدم تحقق شرط واحد على الأقل من الشروط الأربعة الضرورية.

لا الشفعة

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

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

استبعاد متبادل

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

الموارد المشتركة مثل الملفات للقراءة فقط لا تؤدي أبدًا إلى حالات الجمود، ولكن الموارد مثل الطابعات ومحركات الأشرطة تحتاج إلى وصول حصري من قبل عملية واحدة.

انتظر وانتظر

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

الانتظار الدائري

تفرض هذه الطريقة ترتيبًا كليًا لجميع أنواع الموارد. كما يتطلب منع الانتظار الدائري أن تطلب كل عملية الموارد بترتيب تصاعدي للعدد.

تجنب الجمود Algorithms

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

تجنب Algorithms

تقوم خوارزمية تجنب التعطل بتقييم حالة تخصيص الموارد بشكل ديناميكي بحيث لا يمكن أن تحدث حالة انتظار دائرية أبدًا.

لنسخة واحدة من نوع مورد:

  • استخدم رسمًا بيانيًا لتخصيص الموارد.
  • تُعد الدورة في الرسم البياني ضرورية وكافية لحدوث حالة الجمود.

بالنسبة لحالات متعددة من نوع مورد واحد:

الفرق بين المجاعة والجمود

فيما يلي بعض الاختلافات المهمة بين حالة الجمود وحالة المجاعة:

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

مزايا الجمود

فيما يلي مزايا استخدام طريقة معالجة حالات الجمود:

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

عيوب الجمود

فيما يلي سلبيات استخدام طريقة معالجة حالات الجمود:

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

الأسئلة الشائعة

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

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

في حالة التعطل التام، تتوقف العمليات المتوقفة تمامًا ولا يتغير وضعها أبدًا. livelockتستمر العمليات في تغيير حالتها واستخدام وحدة المعالجة المركزية، لكنها لا تحرز أي تقدم. يُعدّ التعطل حالة خاصة من حالات نقص الموارد.

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

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

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

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

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

تلخيص هذه التدوينة بـ: