سؤال

ال مفاهيم نظام التشغيل تقدم الطبعة السادسة خوارزمية واحدة بسيطة لتنفيذ القسم النقدي.

do{
  while (turn != i);
    critical section
  trun = j;
    remainder section
} while(1);

ملحوظة,Pi هي العملية ذات المعرف i,Pj هي العملية ذات المعرف j. لتبسيط السؤال، حدد الكتاب i,j بـ 0 و1، العمليتين مقيدتان بالبيئة.

السؤال رقم 1 هو، جرعة هذه الخوارزمية تبطل تقدم الشرط الذي هو واحد من المتطلبات الثلاثة لحل القسم الحرجة؟

في رأيي، عندما يكون Pi في قسمه المتبقي، لا يمكنه المشاركة في القرار بشأن ما إذا كان بإمكان Pj الدخول إلى القسم الحرج. ثم يكون ملزمًا بالمتطلبات.

أو أن فهمي لمتطلبات التقدم خاطئ تمامًا. لذلك، إذا تقاعد Pi من القسم المتبقي، فلن يتمكن من الدخول إلى القسم الدائري على الفور، فهذا ينتهك القاعدة.

السؤال 2,

If turn == 0 and P1 is ready to enter itscritical section,P1 cannot do so,even thought P0 may be in its remainder section

ما معنى هذا البيان؟ بقدر ما أستطيع أن أفكر، لم أستطع أن أفهم لماذا يمكن أن يكون Turn == 0 و p0 في القسم المتبقي موجودًا بشكل متزامن ...

فهل هذا البيان خاطئ؟

هل كانت مفيدة؟

المحلول

لنفترض أن turn = 0 بدءًا.يقوم P0 بعمل قسمه الحرج ومجموعاته turn = 1.الآن، ص1 يجب تنفيذ القسم الحرج الخاص به قبل أن يتمكن P0 من تنفيذ الأمر مرة أخرى.ولكن فقط لأن كلا المواضيع لديك قسم حاسم لا يعني ذلك أنهم سيرغبون في تبديل استخدامهم له بهذه الطريقة - في الواقع، قد لا يأخذ P1 دوره أبدًا.(وعلى العموم أنت لا يمكن تحديد هذا في وقت الترجمة.)

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top