مضى على الشبكة و يوم من العطاء.

شرحCritical Section Problem (Synchronization)بالعربي

Mr_Code

مشرف سابق

السمعة:

تكملة على آخر موضوع بعنوان Process Synchronization سنتحدث في هذا الموضوع عن مشكلة جديدة تدعي Critical Section Problem

Critical Section Problem

في البداية علينا أن نفهم ما هي ال Critical Section problem, لذلك وتكملة على كلامنا في الموضوع السابق; فإنه بافتراض أنه لدينا عمليتان أو اكثر " Two Or more Processes" يحاولان تعديل متغير مشترك
"Common Variable" بينهم فإن ذلك يؤدي الى عدم تناسق ويؤدي الي مشكلة تعرف بإسم Race Condition .

ال Critical Section هو جزء في البرمجية او ال Code تقوم فيه العملية "Process" بالتعديل على متغير مشترك او جدول بيانات مشترك او ملف.
أهم مبدأ بالنسبة للـ Critical Section هو أنه عندما توجد عملية تعمل في ال Critical Section الخاص بها فإنه لا يمكن لاي Process أخرى أن تعمل في ال Critical Section الخاص بها.
لاحظ : كل عملية لها ال Critical Section الخاص بها لذلك فإنه لا يمكن لأي عملية أنت تدخل في هذه المنطقة الخاصة بها طالما توجد عملية أخرى تعمل بالمنطقة الخاصة بها.
لا تقلق اذا لم تتصور الأمر حتى الآن سوف نستعرض الأمر بصور حتى تتمكن من فهمه بسهولة بإذن الله.
كل ما عليك معرفته حتى الآن هو أن ال Critical Section Problem تستخدم لوضع منهجية او طريقة حتى يمكن للعمليات أن تتشارك فيما بينها وللحفاظ على اتساق البيانات.
1702849245090.png



بالنسبة لبنية الكود ف هو أقرب لما يلي :
C:
do
{
    Entery Section
    Critical Section
    Exit Section
    Remainder Section
} while (true);
في البداية يوجد Entry Section وهو المسؤول عن تنفيذ طلب كل عملية لدخول ال Critical Section الخاص بها; فلا يمكن لأي عملية دخول ال Critical Section الخاص بها إلا بعد الطلب أولًا.
بعد ذلك تأتي بعد ال Critical Section منطقة تسمى ال Exit Section وهي التي تبين أنه قد انتهت العملية من تنفيذ عملياتها على المتغير المشترك.
وفي النهاية تكمل العملية باقي البرمجية أو ال Code بدون أي مشكلة وهذه المنطقة تدعى بال Remainder Section

1702849183342.png


في النهاية توجد ثلاثة متطلبات حتى يتم حل مشكلة ال Critical Section Problem
  1. Mutual Exclusion : وتعني أنه عندما تعمل ال Process في ال Critical section الخاص بها فإنه لا يسمح لاي Process اخرى بالدخول الي ال Critical Section الخاص بها.
  2. Progress : عندما لا توجد أي Process في ال Critical Section الخاص بها ويوجد عدد من ال Processes تريد الدخول فإنه يمكن لل Processes أو العمليات التي لم تصل الي ال Remainder Section فقط المشاركة في اتخاذ قرار من يمكنه الدخول الي ال Critical Section من هذه العمليات, وهذا القرار لا يمكن تأجيله تحت اي ظرف كان.
  3. Bounded Waiting : باختصار فإنه لا يمكن أن نسمح ل Process أنت تدخل ال Critical Section مرات عديدة وهناك Process أخرى تنتظر الدخول ولا يمكنها الدخول الي فترة طويلة وتسمى هذه المشكلة ايضاً بإسم Starvation .
    1702850108675.png
وبهذا نكون قد انتهينا من شرح الـ Critical Section Problem وانتظرونا في الموضوع القادم بإذن الله باسم Semaphores
ويمكنكم الوصول الي الموضوع القادم من خلال الرابط التالي : شرح Semaphores بالعربي
 
التعديل الأخير:
تكملة على آخر موضوع بعنوان Process Synchronization سنتحدث في هذا الموضوع عن مشكلة جديدة تدعى Critical Section Problem

Critical Section Problem

في البداية علينا ان نفهم ما هي ال Critical Section problem, لذلك وتكملة على كلامنا في الموضوع السابق; فإنه بافتراض انه لدينا عمليتان او اكثر " Two Or more Processes" يحاولان تعديل متغير مشترك
"Common Variable" بينهم فإن ذلك يؤدي الى عدم تناسق ويؤدي الي مشكلة تعرف بأسم Race Condition .

ال Critical Section هو جزء في البرمجية او ال Code تقوم فيه العملية "Process" بالتعديل على متغير مشترك او جدول بيانات مشترك او ملف.
أهم مبدأ بالنسبة لل Critical Section هو انه عندما توجد عملية تعمل في ال Critical Section الخاص بها فأنه لا يمكن لاي Process اخري ان تعمل في ال Critical Section الخاص بها.
لاحظ : كل عملية لها ال Critical Section الخاص بها لذلك فإنه لا يمكن لاي عملية انت تدخل في هذه المنطقة الخاصة بها طالما توجد عملية اخري تعمل بالمنطقة الخاصة بها.
لا تقلق اذا لم تتصور الامر حتي الان سوف نستعرض الامر بصور حتى تتمكن من فهمه بسهولة باذن الله.
كل ما عليك معرفته حتي الآن هو ان ال Critical Section Problem تستخدم لوضع منهجية او طريقة حتي يمكن للعمليات ان تتشارك فيما بينها وللحفاظ علي اتساق البيانات.
مشاهدة المرفق 6336


بالنسبة لبنية الكود ف هو اقرب لما يلي:
C:
do
{
    Entery Section
    Critical Section
    Exit Section
    Remainder Section
} while (true);
في البداية يوجد Entry Section وهو المسؤول عن تنفيذ طلب كل عملية لدخول ال Critical Section الخاص بها; فلا يمكن لاي عملية دخول ال Critical Section الخاص بها الا بعد الطلب اولا.
بعد ذلك تأتي بعد ال Critical Section منطقة تسمى بالـ Exit Section وهي التي تبين انه قد انتهت العملية من تنفيذ عملياتها علي المتغير المشترك.
وفي النهاية تكمل العملية باقي البرمجية او ال Code بدون اي مشكلة وهذه المنطقة تدعي بال Remainder Section

مشاهدة المرفق 6335

في النهاية توجد ثلاثة متطلبات حتي يتم حل مشكلة ال Critical Section Problem
  1. Mutual Exclusion : وتعني انه عندما تعمل ال Process في ال Critical section الخاص بها فأنه لا يسمح لاي Process أخرى بالدخول الي ال Critical Section الخاص بها.
  2. Progress : عندما لا توجد اي Process في ال Critical Section الخاص بها ويوجد عدد من ال Processes تريد الدخول فإنه يمكن للـ Processes او العمليات التي لم تصل الي ال Remainder Section فقط المشاركة في اتخاذ قرار من يمكنه الدخول الي ال Critical Section من هذه العمليات, وهذا القرار لا يمكن تأجيله تحت اي ظرف كان.
  3. Bounded Waiting : باختصار فانه لا يمكن ان نسمح ل Process انت تدخل ال Critical Section مرات عديدة وهناك Process أخرى تنتظر الدخول ولا يمكنها الدخول الي فترة طويلة وتسمي هذه المشكلة ايضاً باسم
    Starvation .
    مشاهدة المرفق 6337
وبهذا نكون قد انتهينا من شرح ال Critical Section Problem وانتظرونا في الموضوع القادم باذن الله باسم Semaphores
ابدعت يا صديقي ❤️
بارك الله فيك حبيب القلب وجزاك الله كل خير، ننتظر جديدك بإذن الله.
تقبل مروري
 
التعديل الأخير بواسطة المشرف:

آخر المشاركات

عودة
أعلى