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

ما هو لايفلوك؟
A livelock هي حالة يتم فيها رفض طلب الحصول على قفل حصري بشكل متكرر، حيث تتداخل العديد من الحالات.ping تتسبب الأقفال المشتركة في تداخلها مع بعضها البعض. وتستمر العمليات في تغيير حالتها، مما يمنعها من إكمال المهمة.
أمثلة على Livelock
مثال 1:
أبسط مثال على حالة التعطل الحركي هو شخصان يلتقيان وجهاً لوجه في ممر، فيتنحّى كل منهما جانباً ليسمح للآخر بالمرور. يستمران في التحرك من جانب إلى آخر دون إحراز أي تقدم لأنهما يتحركان في نفس الاتجاه وفي نفس الوقت. هنا، لا يتقاطعان أبداً.
مثال 2:
في الصورة أعلاه، يحتاج كل من العمليتين إلى موردين، ويستخدمان أسلوب الاستقصاء البسيط لمحاولة الحصول على الأقفال اللازمة. إذا فشلت المحاولة، تُعاد المحاولة.
- العملية أ تحتوي على المورد ص
- العملية B تحمل المورد X
- تتطلب العملية أ المورد س
- تتطلب العملية ب المورد ص
لنفترض أن العملية A تعمل أولاً وتحصل على المورد X، ثم تعمل العملية B وتحصل على المورد Y. بغض النظر عن العملية التي تعمل أولاً، فإن أياً منهما لا يحرز تقدماً إضافياً.
ومع ذلك، لا يتم حظر أي من العمليتين. فهما تستهلكان موارد وحدة المعالجة المركزية بشكل متكرر دون إحراز أي تقدم، ومع ذلك لا تتوقفان أبدًا لمعالجة أي جزء من البيانات.
لذلك، فإن هذا الوضع ليس مأزق، لأنه لا توجد عملية واحدة محظورة؛ بدلاً من ذلك، نواجه حالة تعادل حالة الجمود، والتي تسمى LIVELOCK.
ما الذي يؤدي إلى Livelock؟
يرتبط التعطل بعدد العمليات التي يسمح بها النظام، والذي يُحدد بإجمالي عدد المدخلات في جدول العمليات. ولذلك، تُعامل هذه الخانات في جدول العمليات كموارد محدودة. عندما تُحاول العمليات مرارًا وتكرارًا الحصول على هذه الموارد المحدودة مع استمرارها في التنازل لبعضها البعض، لا تُحرز أي منها تقدمًا، ويدخل النظام في حالة تعطل.
ما هو Deadlock؟
A مأزق هي حالة تحدث في نظام التشغيل عندما تدخل عملية ما في حالة انتظار لأن عملية أخرى تنتظر المورد المطلوب. يُعدّ التعطل مشكلة شائعة في المعالجة المتعددة، حيث تتشارك عدة عمليات نوعًا محددًا من الموارد الحصرية المتبادلة، والمعروفة باسم القفل البرمجي.
مثال على الجمود
- ومن الأمثلة الواقعية على ذلك حركة المرور التي تسير في اتجاه واحد فقط.
- هنا، يعتبر الجسر موردا.
- عندما يحدث طريق مسدود، يمكن حله بسهولة إذا تراجعت سيارة واحدة (استباق الموارد والتراجع).
- قد يتعين إرجاع عدة سيارات إلى الخلف في حالة حدوث حالة توقف تام.
- لذلك، فإن الموت جوعاً أمر ممكن.
مثال على الجمود
ما هو المجاعة؟
يُعرَّف الحرمان بأنه حالة تُعاق فيها العمليات ذات الأولوية المنخفضة بينما تستمر العمليات ذات الأولوية العالية. في أي نظام، تتكرر طلبات الموارد ذات الأولوية العالية والمنخفضة بشكل ديناميكي. لذا، يلزم وجود سياسة لتحديد من يحصل على الخدمة ومتى.
في بعض الخوارزميات، قد لا تحصل بعض العمليات على الخدمة المطلوبة حتى وإن لم تكن في حالة جمود. يحدث التجويع عندما تجعل بعض الخيوط الموارد المشتركة غير متاحة لفترة طويلة.
مثال على المجاعة
على سبيل المثال، قد يحتوي كائن ما على دالة متزامنة تستغرق وقتًا طويلاً لإرجاع القيمة. إذا استخدم أحد الخيوط هذه الدالة بشكل متكرر، فغالبًا ما يتم حظر الخيوط الأخرى التي تحتاج أيضًا إلى وصول متزامن متكرر إلى نفس الكائن.
الفرق بين الجمود والجوع والتوقف الدائم
- حالة الجمود هي حالة تحدث في نظام التشغيل عندما تدخل عملية ما في حالة انتظار لأن المورد المطلوب محتجز بواسطة عملية انتظار أخرى.
- أما حالة التعطل الحي، من ناحية أخرى، فهي تشبه إلى حد كبير حالة التعطل التام، باستثناء أن حالات العمليات المشاركة في حالة التعطل الحي تستمر في التغير باستمرار استجابة لبعضها البعض، دون أن يتقدم أي منها.
- لذا، فإن حالة الركود الحيوي هي حالة فريدة من نوعها من حالات نقص الموارد.


