بين سيمافور و موتكس

Anonim

سيمافور مقابل موتكس

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

ما هو الرمز ؟

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

ما هو موتكس؟

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

ما هو الفرق بين سيمافور و موتكس؟

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