ماهى Semaphores
و كائنات تنظيم الوصول للموارد Resource Access Syncronaiztion
و كيفية صنعها ؟
و شكرا
ماهى Semaphores
و كائنات تنظيم الوصول للموارد Resource Access Syncronaiztion
و كيفية صنعها ؟
و شكرا
لا تراجع و لا إستسلام
المعنى الحرفي للSemaphore هو بوابة (مزلقان) القطار و التي تفتح لعبور السيارات من فوق القضبان و تغلق ليعبر القطار و هي نفس المبدأ الاساسي للShared Resource بين اثنين من المستهلكين Consumers فيكون القطار و السيارات هم الConsumers و قضبان القطار هي ال Shared Resource
اذن من التعريف السابق يتضح ان الSemaphore هو اداة لتنظيم استغلال الShared Resources بين (طرفين فقط)
مثلما يكون هناك 2 Threads في برنامج واحد يستخدمون Memory Location واحد كل فترة فيستخدم الSemaphore لعملية التنظيم
الSemaphore في الواقع هو Variable مكون من bit واحدة 0 او 1 فعندما يكون 0 يكون مفتوح اي الShared Variable غير محجوز و يمكن استغلاله و العكس صحيح
و يرتبط بعمليتين اساسيتين هما Lock و Release(Unlock) أو احيانا U و V على ما أتذكر
و ماذا اذا اردنا ان نجعل الSemaphore لأكثر من طرفين ؟؟؟؟؟؟؟
هنا سيتغير المفهوم و سنستخدم هنا مايسمى بالMonitor و هو Variable ايضا و لكن متعدد القيم و له قيمة كبرى Max Value و هي اكبر عدد من ال Active Sessions على الShared Resource و تتناقص هذه القيمة كلما حدث Lock و تتزايد مع الUnlock حتى تصبح صفرا و هنا ترفض جميع عمليات الLock الى ان تعود قيمة الMonitor الى قيمة اعلى من الصفر .
و ترتبط الفكرة كلها بمفهوم ال Mutual Exclusion او يطلق عليها اختصارا ال Mutex و هي ان احيانا يحتاج البرنامج او الThread الى عمل Exclusive Action في ال Shared Resource مما يتطلب وجود تنظيم لهذه العملية
ايضا يترتب على هذه المفاهيم ظهور مشكلة و هي ال Dead Lock و هي تحدث من ان تكون Process A تحجز Resource R1 و تحتاج الى Resource R2 و الذي تحجزه Process B و التي بدورها تحتاج الى Resource R1 المحجوز من A و الذي ينتج عنه مايسمى بالCircular Dependency أو ال Dead Lock او بالبلدي "قفلة" و لحل هذه المشاكل دراسات و دراسات و أبحاث طويلة و ووووو
السلام عليكم
Sr. Software Development Engineer
Hulu, LLC
My Blogs
شكرا جدا على التوضيح
و فى حالة الdead lock ينتج عنه توقف كلا من process a و process b
و لكن هل تم حل المشكله أم لا ؟
و شكرا
لا تراجع و لا إستسلام
المشكلة محلولة منذ زمن
و لكن حلها يتوقف على نوع النظام نفسه فربما لا يمكن غلق Process A فهي Vital Process و ربما يكون كلا من ال 2 Processes المتصارعة Vital و هنا تصبح المشكلة اكثر تعقيدا و تحتاج خوارزميات اكثر تعقيدا لحلها.
و هنا تظهر الابحاث و المقالات التي تبحث حلولا سريعة و قوية للDead Locks
Sr. Software Development Engineer
Hulu, LLC
My Blogs
هذا الموضوع مغلق.