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

الحاجة إلى الأجزاء الحرجة عدل

قد تتكون رموز أو عمليات مختلفة من نفس المتغير أو الموارد الأخرى التي تحتاج إلى قراءة أو كتابة ولكن نتائجها تعتمد على الترتيب الذي تحدث فيه الإجراءات. على سبيل المثال، إذا كان المتغير 'x' يجب قراءته بواسطة العملية A، والعملية B يجب أن تكتب لنفس المتغير 'x' في نفس الوقت، قد تحصل العملية A على القيمة القديمة أو الجديدة 'x'.

العملية A:

// العملية A
 .
 .
 b = x+5;                 // تعليمات تنفذ في الوقت = Tx
 .

العملية B:

// العملية B
.
.
x = 3+z;                 // تعليمات تنفذ في الوقت = Tx
.
 
الشكل 1: رسم بياني لتدفق يصور الحاجة إلى الجزء الحرج

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

مراجع عدل

  1. ^ Raynal، Michel (2012). Concurrent Programming: Algorithms, Principles, and Foundations. Springer Science & Business Media. ص. 9. ISBN:3642320279.