سوال ۱۰۴ کنکور ارشد مهندسی کامپیوتر ۱۴۰۰
اهمیت
۰/۵
الگوریتم زیر یک راهحل پیشنهادی نرمافزاری برای حل مسئلهٔ ناحیهٔ بحرانی (Critical-Problem) در نظر بگیرید. در حالی که تنها دو پردازهٔ و وجود داشته باشند، متغیرهای flag (آرایه) و turn این دو پردازه مشترک هستند:
boolean flag[2]; /* initially false */
int turn;
با فرض ساختار پردازهٔ بهصورت زیر (با و ) باشد، کدام گزینه صحیح است؟
do {
flag[i] = true;
while (flag[j]) {
if (turn == j) {
flag[i] = false;
while (turn == j)
; /* do nothing */
flag[i] = true;
}
}
/* critical section */
turn = j;
flag[i] = false;
/* remainder section */
} while (true);
پاسخ صحیح: گزینهٔ D — هر سه شرط انحصار متقابل، انتظار محدود و پیشرفت همواره برقرار است.
پاسخ تشریحی
The code shown is Dekker's algorithm, the first known correct purely-software solution to the two-process critical-section problem. …
ادامهٔ پاسخ تشریحی ویژهٔ مشترکان است.
مشاهدهٔ پاسخ کامل#mutual-exclusion#dekkers-algorithm#critical-section#bounded-waiting#progress#busy-waiting