موصى به, 2021

اختيار المحرر

الفرق بين Semaphore و Mutex

تلعب عملية المزامنة دورًا مهمًا في الحفاظ على اتساق البيانات المشتركة. توجد كل من البرامج والحلول المادية لمعالجة مشكلة القسم الحرج. لكن حلول الأجهزة لمشكلة القسم الحرج صعبة التنفيذ. في مقالة اليوم ، سنناقش حل يستند إلى برمجيات للتعامل مع مشكلة القسم الحاسم ، أي Semaphore و Mutex.

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

رسم بياني للمقارنة

أساس للمقارنةالملوحة جهازمزامنة
الأساسيةSemaphore هي آلية تشوير.Mutex هو آلية القفل.
وجودSemaphore هو متغير صحيح.Mutex هو كائن.
وظيفةسمابور يسمح لمؤشرات برنامج متعددة للوصول إلى مثيل محدود من الموارد.يسمح Mutex لعدة سلاسل برنامج للوصول إلى مورد واحد ولكن ليس في نفس الوقت.
ملكيةيمكن تغيير قيمة الإشارة عن طريق أي عملية اكتساب أو تحرير المورد.يتم تحرير قفل كائن Mutex فقط من خلال العملية التي اكتسبت القفل عليها.
صنفيمكن تصنيف الإشارات في حساب الإشارة والأشكال الثنائية.لم يتم تصنيف Mutex أكثر من ذلك.
عمليةيتم تعديل قيمة الإشارة باستخدام الدالة wait () و signal ().كائن Mutex مقفل أو غير مقفل بواسطة عملية طلب أو تحرير المورد.
الموارد المحتلةإذا تم استخدام كافة الموارد ، عملية طلب المورد بتنفيذ عملية الانتظار () وحظر نفسها حتى يصبح عدد الإشارات أكبر من واحد.إذا كان كائن كائن المزامنة (mutex) مؤمنًا بالفعل ، فستنتظر العملية التي تطلب الموارد وتضع النظام في قائمة الانتظار حتى يتم تحرير القفل.

تعريف سيمفور

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

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

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

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

تعريف موتكس

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

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

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

الاختلافات الرئيسية بين Semaphore و Mutex

  1. Semaphore هي آلية تشوير كعملية الانتظار () والإشارة () العملية التي يتم إجراؤها على متغير الإشارة يشير إلى ما إذا كانت العملية تحصل على المورد أو تصدر المصدر. على الجانب الآخر ، فإن كائن المزامنة عبارة عن آلية قفل ، للحصول على مورد ، تحتاج العملية إلى قفل كائن كائن المزامنة ، بينما يجب أن يقوم تحرير عملية المورد بإلغاء قفل كائن المزامنة.
  2. Semaphore هو عادة متغير صحيح بينما كائن المزامنة عبارة عن كائن .
  3. يسمح Symaphore لسلاسل البرامج المتعددة بالوصول إلى مثيل محدود من الموارد . من ناحية أخرى ، يسمح Mutex لعدة مؤشرات ترابط البرنامج بالوصول إلى مورد مشترك واحد ولكن في وقت واحد.
  4. يمكن تعديل قيمة المتغير Semaphore من خلال أي عملية تستحوذ على أو تنفّذ المورد من خلال إجراء عملية الانتظار () و signal (). على اليد الأخرى ، يمكن تحرير قفل المكتسبة على كائن كائن المزامنة فقط من خلال العملية التي اكتسبت القفل على كائن المزامنة.
  5. Simaphore هي من نوعين يحسبان الإشارة والأشكال الثنائية التي تشبه تماما كائن المزامنة.
  6. يتم تعديل قيمة المتغير إشارة عن طريق الانتظار () وإجراء () إشارة من التهيئة. ومع ذلك ، يتم تأمين كائن كتم الصوت أو إلغاء القفل بواسطة عملية الحصول على أو تحرير المورد.
  7. إذا تم الحصول على جميع الموارد من خلال العملية ، ولم يكن أي مورد مجاني ، فإن العملية التي ترغب في الحصول على الموارد تقوم بتنفيذ عملية الانتظار () على متغير إشارة ، وتقوم بحظر نفسها حتى يصبح عدد الإشارات أكبر من 0. لكن إذا كان كائن كائن المزامنة مقفل ثم عملية الرغبة في الحصول على انتظار الموارد والحصول على قائمة الانتظار من قبل النظام حتى يتم تحرير المورد ويتم فتح كائن كائن المزامنة.

استنتاج:

Simaphore هو خيار أفضل في حالة وجود حالات متعددة من الموارد المتاحة. في حالة mutex مورد مشترك واحد هو خيار أفضل.

Top