سوال 27

حل تشریحی سوال شماره 27 سیستم‌های عامل پیشرفته

کنکور دکتری مهندسی کامپیوتر 1399

27.

یک سیستم توزیع شده ممکن است دارای مناطق بحرانی متعدد و مستقل باشد تصور کنید که پردازه P0 می خواهد وارد ناحیه بحرانی A شود و پردازه P1 میخواهد وارد ناحیه بحرانی B شود. آیا الگوریتم Ricart - Agrawala میتواند به بن بست منجر شود؟ الگوریتم به صورت زیر است:


class CriticalRegionLockout extends GlobalAssertion

{

private LogicalTime[] try Times = new LogicalTime(RicartAgrawala.PNUM);

private int procTnCR=-1, procTryingLonger = -1;

public CriticalRegionLockout()

{

for (int i=0; i<try Times. length; i++)

try Times[i] = null;

}

public boolean assert(Program progs[])

{

for (int i=0; i<progs.length; i++)

if (((Prog) progs[i].region==Prog.T)

try Times[i] = ((Prog) progs[i]).lastTry Time;

//now check when an process is in th CR, if another one is still

//trying but started to try earlier. this should not happen.

for (int i=0; i<progs.length; i++)

if (((Prog) progs[i]).region==Prog.C)

{

for (int j=0; j<progs.length; j++)

{

if(((Prog) progs|j]).region==Prog.T && try Times|j].lessThan(try Times[i]))

{

procInCR = i;

procTryingLonger = j;

return false;

}

}

}

return true;

}

}

1)

خیر - بن‌بست رخ نمی‌دهد.

2)

بله - پردازه منبع A را می‌گیرد و پردازه P0 منبع B را می‌گیرد.

3)

بله - پردازه منبع A را می‌گیرد و پردازه P0 منبع B را درخواست می‌کند و پردازه منبع A را می‌گیرد.

4)

بله - پردازه منبع A را می‌گیرد و پردازه P0 منبع B را می‌گیرد و سپس پردازه منبع B را درخواست می کند.

پاسخ ها

0 پاسخ
تا کنون پاسخی برای این سوال وارد نشده است،

ارسال پاسخ