۰
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 در برنامه فوق به دست می اید.در این صورت می توان گفت که این راه حل قابل قبول.....................
۱)است،چون تمام شرایط پیاده سازی ناحیه های بحرانی را تامین می کند.
۲)نیست،چون باحث قحطی برای فرایندها میشود.
۳)نیست،چون شرایط انحصار متقابل را تامین نمی کند.
۴)نیست،چون اگر فرایندی از ناحیه بحرانی خارج شود و دوباره بخواهد وارد ناحیه بحرانی گردد حتی اگر فرایند دیگر هم خواهان ورود به ناحیه بحرانی نباشد ،باز هم نمی تواند.
و در پاسخ اومده که جواب گزینه ۲ صحیح است.
میخواستم محل رخ دادن وقفه هایی که باعث ایجاد قحطی شده است رو بدونم.ممنون از تجهتون.