ما هو سيمافور؟ العد، الأنواع الثنائية مع المثال

ما هو سيمافور؟

الملوحة جهاز هو ببساطة متغير غير سلبي ومشترك بين المواضيع. الإشارة هي آلية إرسال إشارات، ويمكن الإشارة إلى الخيط الذي ينتظر الإشارة بواسطة خيط آخر. يستخدم اثنين atomic opera1) انتظر، 2) إشارة للعملية syncكرونة.

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

سمة من سمافور

وهنا خصائص الإشارة:

  • إنها آلية يمكن استخدامها لتوفير syncكرونة المهام.
  • وهو مستوى منخفض syncآلية التسلسل.
  • ستحمل الإشارة دائمًا قيمة عددية غير سالبة.
  • يمكن تنفيذ الإشارة باستخدام الاختبار operaالمقاطعات والمقاطعات، والتي يجب تنفيذها باستخدام واصفات الملفات.

أنواع الإشارات

النوعان الشائعان من الإشارات هما

  • عد الإشارات
  • الإشارات الثنائية.

عد الإشارات

يستخدم هذا النوع من الإشارة عددًا يساعد على الحصول على المهمة أو تحريرها عدة مرات. إذا كان العدد الأولي = 0، فيجب إنشاء إشارة العد في الحالة غير المتاحة.

عد الإشارات
عد الإشارات

ومع ذلك، إذا كان العدد > 0، فسيتم إنشاء الإشارة في الحالة المتاحة، ويكون عدد الرموز المميزة بها مساويًا لعددها.

إشارات ثنائية

تشبه الإشارات الثنائية تمامًا حساب الإشارات، لكن قيمتها تقتصر على 0 و1. في هذا النوع من الإشارات، يتم الانتظار operaيعمل نشوئها فقط إذا كانت الإشارة = 1، والإشارة operaتنجح العملية عندما تكون الإشارة = 0. ومن السهل تنفيذها بدلاً من حساب الإشارات.

إشارات ثنائية

إشارات ثنائية

مثال على الإشارة

البرنامج الموضح أدناه هو تنفيذ خطوة بخطوة، والذي يتضمن استخدام وإعلان الإشارة.

Shared var mutex: semaphore = 1;
Process i
    begin
    .
    .
    P(mutex);
    execute CS;
    V(mutex);
    .
    .
    End;

الانتظار والإشارة Operaالإشارات في الإشارات

كلاهما operaوتستخدم للتنفيذ عملية المعالجة syncكرونة. الهدف من هذه الإشارة operaالهدف هو الحصول على الاستبعاد المتبادل.

أنتظر لأجل Operaالإنتاج

هذا النوع من الإشارة operaيساعدك tion على التحكم في إدخال المهمة إلى القسم الحرج. ومع ذلك، إذا كانت قيمة الانتظار موجبة، فسيتم تقليل قيمة وسيطة الانتظار X. في حالة القيمة السالبة أو الصفرية، لا operaيتم تنفيذ الأمر. ويسمى أيضًا P (S) operaنشوئها.

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

Copy CodeP(S)
{ 
    while (S<=0);
    S--;
}

سيجنل operaالإنتاج

هذا النوع من السيمافور operaيتم استخدامه للتحكم في خروج المهمة من القسم الحرج. يساعد على زيادة قيمة الوسيطة بمقدار 1، والتي يُشار إليها بـ V(S).

Copy CodeP(S)
{ 
    while (S>=0);
    S++;
}

عد سيمافور مقابل ثنائي سيمافور

فيما يلي بعض الاختلافات الرئيسية بين العد والإشارة الثنائية:

عد سيمافور ثنائي سيمافور
لا استبعاد متبادل استبعاد متبادل
أي قيمة عدد صحيح القيمة فقط 0 و 1
أكثر من فتحة فتحة واحدة فقط
قدم مجموعة من العمليات لديها آلية استبعاد متبادل.

الفرق بين Semaphore و Mutex

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

مزايا الإشارات

فيما يلي إيجابيات/فوائد استخدام Semaphore:

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

مساوئ الإشارات

هنا، سلبيات/عيب الإشارة

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

نبذة عامة

  • يتم تعريف الإشارة على أنها متغير غير سلبي ومشترك بين سلاسل الرسائل.
  • إنها آلية يمكن استخدامها لتوفير syncكرونة المهام.
  • يستخدم حساب الإشارة عددًا يساعد على الحصول على المهمة أو تحريرها عدة مرات.
  • الإشارات الثنائية تشبه إلى حد كبير حساب الإشارات، ولكن قيمتها تقتصر على 0 و 1.
  • operaتساعدك هذه الميزة على التحكم في إدخال المهمة إلى القسم الحرج
  • إشارة الإشارة operaيتم استخدامه للتحكم في خروج المهمة من القسم الحرج
  • عد الإشارة ليس له استبعاد متبادل في حين أن الإشارة الثنائية لها استبعاد متبادل
  • الإشارة تعني آلية الإشارة بينما Mutex هي آلية القفل
  • يسمح Semaphore لأكثر من موضوع بالوصول إلى القسم الحرج
  • أحد أكبر قيود الإشارة هو انعكاس الأولوية.