بررسی غلطهای پاسخنامه اولیه سنجش - مهندسی کامپیوتر
خب من اعتراض سوالو سیستم عامل ۷۰ رو اینطوری زدم:
با یک مثال ساده می توان نشان داد که الگوریتم مورد نظر هیچ کدام از شروط انحصار متقابل، انتظار محدود، و شرط پیشرفت را رعایت نمی کند.
قبل از بررسی، الگوریتم مورد نظر را به شکل زیر شماره گذاری می کنیم:
۰/ ناحیه غیر بحرانی
۱/ c[i]=false
۲/ while (c[1-i]) do
۳/ ناحیه بحرانی
۴/ c[i]=true
حال دو فرآیند p و t به ترتیب با شماره ۰ و ۱ را در نظر می گیریم و فرض می کنیم سیستم ما دارای یک پردازنده است،
برای نمایش روند اجرای فرآیند ها روی پردازنده، به ترتیب از نام فرآیند و دستوری جاری شروع فرآیند و همچنین آخرین دستور اجرا شده قبل از تعویض متن، بر مبنای شماره سطر الگوریتم، استفاده می کنیم.
مثلا اگر روند اجرای فرآیند ها به شکل زیر باشد:
p,0,1
t,0,2
p,2,2
بدین معنا که ابتدا فرآیند p برای اجرا انتخاب شده و دستور شماره صفر را اجرا خواهد کرد و پس از انجام کامل دستور شماره ۱، تعویض متن اتفاق می افتد و فرآیند t اجرا خواهد شد. و فرآیند t نیز دستور شماره صفر را اجرا خواهد کرد و پس از اجرای کامل دستور شماره ۲، تعویض متن اتفاق خواهد افتاد و فرآیند p ادامه اجرای خود را از دستور شماره ۲ از سر خواهد گرفت و پس از یک بار اجرای دستور شماره ۲، تعویض متن اتفاق خواهد افتاد و الی آخر.
حال برای هر کدام از شرایط ناحیه بحرانی، کافی ست یک روند ترتیب مانند مثال بالا بیابیم که آن شرط را نقص کند.
یک روند ترتیب اجرا برای نقص شرط انحصار متقابل:
p,0,2
t,0,3
p,2,3
می بینیم که p و t هر دو وارد ناحیه بحرانی شده اند.
یک روند ترتیب اجرا برای نقص شرط انتظار محدود:
p,0,2
t,0,4
p,2,2
t,0,4
p,2,2
t,0,4
p,2,2
t,0,4
p,2,2
می بینیم که t به طور متوالی وارد ناحیه بحرانی می شود و p دچار گرسنگی خواهد شد.
یک روند ترتیب اجرا برای نقص شرط پیشرفت:
p,0,2
t,0,0
حال فرض کنید t دچار بروز یک وقفه io و بلوکه می شود.
p,2,2
p,2,2
p,2,2
می بینیم که p منتظر فرآیندی است که داوطلب ورود به ناحیه بحرانی نیست و در ناحیه بحرانی نیز قرار ندارد.
با توجه به اینکه روی یک پردازنده تمام شرایط نقص شد دیگر نیازی به بررسی روی چند پردازنده نیست و در نتیجه گزینه صحیح، گزینه ۳ کامل تر می باشد.
|