-

ما هو الجمود (Deadlock) في البرامج؟

(اخر تعديل 2024-09-09 11:26:08 )

الجمود (Deadlock) هو حالة يتعذر فيها على البرنامج الوصول إلى المورد الذي يحتاجه للمتابعة. عندما يصل تطبيق نشط إلى حالة توقف تام، فقد “يتعطل” أو يصبح غير مستجيب.

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

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

على سبيل المثال، سيؤدي الموقف التالي إلى طريق مسدود بين عمليتين:

  • تطلب العملية 1 المورد B من العملية 2.
  • يتم تأمين المورد ب أثناء تشغيل العملية 2.
  • تتطلب العملية 2 المورد A من العملية 1 حتى تنتهي من التشغيل.
  • يتم تأمين المورد أ أثناء تشغيل العملية 1.

والنتيجة هي أن العملية 1 والعملية 2 تنتظران انتهاء بعضهما البعض. نظرًا لعدم إمكانية استمرار أي من العمليتين حتى تكتمل العملية الأخرى، يتم إنشاء حالة توقف تام.

إقرأ أيضاً… ما هي (jQuery) في برمجة الجافا؟

طرق تجنب الجمود.

يمكن للمطورين منع حالات التوقف التام عن طريق تجنب شروط القفل في منطق البرمجة الخاص بهم.

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

من خلال ضمان إمكانية الوصول إلى البيانات عند الحاجة، يمكن للمبرمجين حماية تطبيقاتهم من التعليق أو التعطل.

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