۰
subtitle
ارسال: #۱
  
تست سیستم عامل-۳۱ سراسری ۸۰
آنچه در زیر آمده است به عنوان راه حلی برای مشکل ناحیه های بحرانی پیشنهاد می گردد.در ابتدا flag(A)=flag(B)=0 .برنامه فراروند A به قرار زیر است:
برنامه فرایند B از جابه جایی مستقیم AوB در برنامه فوق به دست می اید.در این صورت می توان گفت که این راه حل قابل قبول.....................
۱)است،چون تمام شرایط پیاده سازی ناحیه های بحرانی را تامین می کند.
۲)نیست،چون باحث قحطی برای فرایندها میشود.
۳)نیست،چون شرایط انحصار متقابل را تامین نمی کند.
۴)نیست،چون اگر فرایندی از ناحیه بحرانی خارج شود و دوباره بخواهد وارد ناحیه بحرانی گردد حتی اگر فرایند دیگر هم خواهان ورود به ناحیه بحرانی نباشد ،باز هم نمی تواند.
و در پاسخ اومده که جواب گزینه ۲ صحیح است.
میخواستم محل رخ دادن وقفه هایی که باعث ایجاد قحطی شده است رو بدونم.ممنون از تجهتون.
۱: flag(A)=0;
If (flag(B) !=0) then goto 1;
Flag(A)=1;
If (flag(B) !=0) then goto 1;
<critical section>
Flag(A)=0;
If (flag(B) !=0) then goto 1;
Flag(A)=1;
If (flag(B) !=0) then goto 1;
<critical section>
Flag(A)=0;
برنامه فرایند B از جابه جایی مستقیم AوB در برنامه فوق به دست می اید.در این صورت می توان گفت که این راه حل قابل قبول.....................
۱)است،چون تمام شرایط پیاده سازی ناحیه های بحرانی را تامین می کند.
۲)نیست،چون باحث قحطی برای فرایندها میشود.
۳)نیست،چون شرایط انحصار متقابل را تامین نمی کند.
۴)نیست،چون اگر فرایندی از ناحیه بحرانی خارج شود و دوباره بخواهد وارد ناحیه بحرانی گردد حتی اگر فرایند دیگر هم خواهان ورود به ناحیه بحرانی نباشد ،باز هم نمی تواند.
و در پاسخ اومده که جواب گزینه ۲ صحیح است.
میخواستم محل رخ دادن وقفه هایی که باعث ایجاد قحطی شده است رو بدونم.ممنون از تجهتون.
۰
ارسال: #۲
  
تست۳۱ سراسری ۸۰ سیستم عامل
درست بعد از اجرای If اول به فرآیند B سوئیچ می شه
در فرآیند B هم دستور If اجرا می شه. تا اینجا شرط هر دو If نادرسته و هردو ازش عبور می کنن
بعدش مقدار Flag برای B برابر با ۱ می شه و بعدش دوباره سوئیچ می شه به A و مقدار Flag این فرآیند هم ۱ می شه
حالا هیچکدوم از دستور If بعدی شون نمی تونن رد بشن و دوباره همین قصه تکرار می شه.
در فرآیند B هم دستور If اجرا می شه. تا اینجا شرط هر دو If نادرسته و هردو ازش عبور می کنن
بعدش مقدار Flag برای B برابر با ۱ می شه و بعدش دوباره سوئیچ می شه به A و مقدار Flag این فرآیند هم ۱ می شه
حالا هیچکدوم از دستور If بعدی شون نمی تونن رد بشن و دوباره همین قصه تکرار می شه.
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close