سيمافور مقابل مونيتور
Semaphore هي بنية بيانات تُستخدم للتأكد من أن العمليات المتعددة لا تصل إلى مورد مشترك أو قسم مهم في نفس الوقت ، في بيئات البرمجة المتوازية. تستخدم Semaphores لتجنب الأقفال الميتة وظروف السباق. الشاشة عبارة عن بنية لغة برمجة تُستخدم أيضًا لتجنب وصول عمليات متعددة إلى مورد مشترك في نفس الوقت ، وبالتالي يضمن الاستبعاد المتبادل. تستخدم الشاشات المتغيرات الشرطية لتحقيق هذه المهمة.
ما هي الإشارة؟
Semaphore هي بنية بيانات تُستخدم لتوفير الاستبعاد المتبادل للأقسام الحرجة.تدعم Semaphores بشكل أساسي عمليتين تسمى الانتظار (المعروف تاريخيًا باسم P) والإشارة (المعروفة تاريخيًا باسم V). تحجب عملية الانتظار العملية حتى يتم فتح السيمافور وتسمح عملية الإشارة بالدخول إلى عملية أخرى (مؤشر ترابط). ترتبط كل إشارة بقائمة انتظار لعمليات الانتظار. عندما يتم استدعاء عملية الانتظار بواسطة مؤشر ترابط ، إذا كانت الإشارة مفتوحة ، يمكن أن يستمر مؤشر الترابط. إذا تم إغلاق الإشارة عندما يتم استدعاء عملية الانتظار بواسطة مؤشر ترابط ، يتم حظر مؤشر الترابط ويتعين عليه الانتظار في قائمة الانتظار. تفتح عملية الإشارة إشارة ، وإذا كان هناك مؤشر ترابط ينتظر بالفعل في قائمة الانتظار ، فيُسمح لهذه العملية بالمتابعة وإذا لم تكن هناك خيوط منتظرة في قائمة الانتظار ، يتم تذكر الإشارة للخيوط التالية. هناك نوعان من الإشارات تسمى إشارات كائن المزامنة (mutex semaphores) وعدد الإشارات. تسمح إشارات Mutex بالوصول الفردي إلى المورد وتسمح إشارات العدّ للخيوط المتعددة بالوصول إلى المورد (الذي يحتوي على عدة وحدات متاحة).
ما هي الشاشة؟
الشاشة هي لغة برمجة تُستخدم للتحكم في الوصول إلى البيانات المشتركة. تقوم أجهزة المراقبة بتغليف هياكل البيانات المشتركة والإجراءات (التي تعمل على هياكل البيانات المشتركة) والمزامنة بين استدعاءات الإجراءات المتزامنة. يتأكد جهاز المراقبة من أن بياناته لا تواجه عمليات وصول غير منظمة ويضمن أن يتفاعل (الذي يصل إلى بيانات الشاشة من خلال إجراءاته) بطريقة مشروعة. تضمن الشاشة الاستبعاد المتبادل من خلال السماح لخيط واحد فقط بتنفيذ أي إجراء للشاشة في وقت معين. إذا حاول مؤشر ترابط آخر استدعاء طريقة في الشاشة ، بينما يقوم مؤشر ترابط بالفعل بتنفيذ إجراء في الشاشة ، فسيتم حظر الإجراء الثاني وعليه الانتظار في قائمة الانتظار. هناك نوعان من الشاشات المسماة Hoare monitors و Mesa monitors. هم يختلفون بشكل أساسي في دلالات الجدولة الخاصة بهم.
ما الفرق بين سيمافور و مونيتور؟
على الرغم من استخدام كل من الإشارات والشاشات لتحقيق الاستبعاد المتبادل في بيئات البرمجة المتوازية ، إلا أنها تختلف في التقنيات المستخدمة لتحقيق هذه المهمة. في الشاشات ، يكون الكود المستخدم لتحقيق الاستبعاد المتبادل في مكان واحد وهو أكثر تنظيماً ، بينما يتم توزيع رمز الإشارات على شكل مكالمات دالة انتظار وإشارة. أيضًا ، من السهل جدًا ارتكاب الأخطاء عند تنفيذ الإشارات ، بينما هناك فرصة ضئيلة جدًا لارتكاب الأخطاء عند تنفيذ الشاشات. علاوة على ذلك ، تستخدم الشاشات متغيرات الحالة ، بينما لا تستخدم الإشارات.