**الاستعصاء** أو المأزق (بالإنجليزية: deadlock)‏ هو حالة تطرأ في مجال الحوسبة المتوازية. تقع حالة الاستعصاء عندما تصل مهمتان متنافستان إلى حالة انتظار كل منهما للأخرى من أجل تحرير مورد تطلبه. المهام التي تصل لهذه الحالة تخلق حالة استعصاء.

تقاطع طرق في حالة استعصاء في مدينة نيويورك
والاستعصاء الحوسبي كالاستعصاء في تقاطع الطرق يحدث حينما تحاول السيارات عبور التقاطع في نفس الوقت فيوقف بعضهم البعض.

مثال
----

مثال في الحوسبة عن حالة استعصاء نجم عن تنافس مهمتين في طلب قفلين بترتيب مختلف. فإذا كان لدينا اقصاء متبادل (M1 وM2) والمهمتين تاليتين:

|  |  |
| --- | --- |
| 
```
مهمة أ:
الحصول على M1
الحصول على M2
*عمل في حاجة لقفلين*
تحرير M2
تحرير M1
```
 | 
```
مهمة ب:
الحصول على M2
الحصول على M1
*عمل في حاجة لقفلين*
تحرير M1
تحرير M2
```
 |

الاستعصاء هنا ممكن، حيث إذا كانت عملية التنفيذ تسير كما يلي:

1. المهمة أ يحصل على M1.
2. المهمة ب يحصل على M2.
3. المهمة أ تنتظر للحصول على M2 (المملوك لـ المهمة ب).
4. المهمة ب تنتظر للحصول على M1 (المملوك لـ المهمة أ).

في هذه الحالة، المهمتين أ وب في حالة استعصاء.

تفادي الاستعصاء
---------------

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

خوارزميات انتظار/موت وجريح/انتظار (بالإنجليزية: Wait/Die - Wound/Wait)‏ هي طرق أخرى للتفادي التي تستعمل تقنية كسر التناظر. تأخذ الخورزميتان بعين الاعتبار عمر كل مهمة وتفصل بين مهمة مسنة (م) ومهمة فتية (ف).

يمكن تحديد عمر المهمة باستعمال الختم الزمني (بالإنجليزية: timestamp)‏ عند استحداث المهمة. التواريخ الصغيرة هي للمهام المسنة والتواريخ الكبيرة هي للفتية.

|  | انتظار/موت | جرح/انتظار |
| --- | --- | --- |
| م بحاجة لمورد يحتكره ف | م ينتظر | ف يموت |
| ف بحاجة لمورد يحتكره م | ف يموت | ف ينتظر |
|

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

الوقاية
-------

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

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

مراجع
-----

1. ↑  "معلومات عن استعصاء على موقع britannica.com". britannica.com. مؤرشف من الأصل في 2016-04-22.

* Paper "Confirmation of Deadlock Potentials Detected by Runtime Analysis" by Saddek Bensalem, Jean-Claude Fernandez, Klaus Havelund and Laurent Mounier

| * ع
* ن
* ت
مواضيع عن الحوسبة المتوازية |
| --- |
| عموميات | 
* حوسبة سحابية
* حوسبة عالية الأداء
* حوسبة عنقودية
* حوسبة موزعة
* حوسبة شبكية

 |
| مستويات التوازي | 
* توازي على مستوى البت
* توازي على مستوى التعليمة
* توازي على مستوى البيانات
* توازي المهام

 |
| الخيوط | 
* تقنية خيوط المعالجة الخارقة
* تقنية خيوط المعالجة الفائقة

 |
| نظريات | 
* قانون أمدال
* قانون غوستافسون
* كلفة الفعالية
* نظام كارب وفلات المتري
* تباطؤ
* تسريع

 |
| عناصر | 
* عملية
* الخيوط
* ليف
* PRAM
* نافذة تعليمات

 |
| تنسيق | 
* المعالجة المتعددة
* تماسك الذاكرة
* تماسك الكاش
* حاجز حاسوبي
* التزامن
* برمجية التدقيق والفحص

 |
| برمجة | 
* نماذج (موازاة ضمنية
* موازاة صريحة
* التزامن)
* تصنيف فلين (سيسد
* سيمد
* إم آي إس دي
* ميمد (برنامج واحد متعدد البيانات))
* خيط (حاسوب)
* خوارزمية غير مسدودة

 |
| عتاد الحاسوب | 
* حوسبة متعددة (متماثلة
* غير متماثلة)
* ذاكرة (غير موحدة الوصول
* COMA
* موزعة
* مشتركة
* مشتركة موزعة)

حاسوب متوازي هائل
* وحدة سلمية فائقة (سوبرسكيلر)
* معالج سلمي
* حاسوب فائق
* عنقود بيوولف

 |
| واجهة برمجة التطبيقات | 
* خيوط POSIX
* أوبن أم بي
* PVM
* إم بي آي
* UPC
* كتل البناء الخطية لإنتل
* مكتبات دفع لغة ++C
* الصفائف العالمية
* شارم++
* Cilk
* Co-array Fortran
* أوبن سي أل
* كودا

 |
| مشاكل | 
* التوازي المحرج
* التحدي الكبير
* برنامج تأمين
* التدرجية
* حالة تسابق
* استعصاء
* الخوارزمية القطعية
* تباطؤ التوازي

 |

* أيقونة بوابةبوابة تقانة المعلومات
* أيقونة بوابةبوابة علم الحاسوب