آموزش سیستم های عامل - بخش ششم
TRANSCRIPT
![Page 1: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/1.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:مدرسفرشید شیرافکن
دانشجوی دکتری دانشگاه تهران (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )
سیستم های عامل
1
فرادرس
FaraDars.org
![Page 2: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/2.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
2
:فصل پنجم
همروندی فرادرس
FaraDars.org
![Page 3: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/3.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
مفاهیم اولیه
(Synchronization)سازیهمگام
.ودشرعایتبایدکارهاانجامدرستترتیبباشد،داشتهوجودوابستگیفرایندهابیناگر
3
فرادرس
FaraDars.org
![Page 4: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/4.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
(Race Condition)شرایط رقابتی
.هدندرخآنهابرایرقابتیشرایطونکنندمداخلهیکدیگربحرانیهایفعالیتدرفرایندها
4
فرادرس
FaraDars.org
![Page 5: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/5.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
منبع بحرانی
.که چند فرایند برای دسترسی به آن رقابت می کنند( مانند چاپگر)منبع غیر اشتراکی
5
فرادرس
FaraDars.org
![Page 6: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/6.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
(Critical Region)ناحیه بحرانی
. بخشی از برنامه که از منبع بحرانی استفاده می کند
6
فرادرس
FaraDars.org
![Page 7: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/7.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
گرسنگی.هستندRمنبعبهدسترسینیازمندمتناوباCًوBوAفرایندسهازیکهرکنیدفرض
.شوندمیانداختهتاخیربهمنبع،آنانتظاردردیگرفراینددوگیرد،اختیاردررامنبعاینAوقتی
.گیرنداختیاردرراRبایدفراینددوازیکیبحرانی،ناحیهازAخروجبا
پایانازبعدوبکندراRدرخواستAمجدداًبحرانیبخشپایانازقبلوبگیردراRمنبعCاگر
دسترسیازنامحدودصورتبهBیابد،ادامهCوAبینعملاینمکرراًوشوددادهCبهاجازه،
.کشدمیگرسنگیوماندمیمحرومRمنبعبه
7
فرادرس
FaraDars.org
![Page 8: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/8.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:خروجی های ممکن در صورت اجرای هم روند و موازی دو پروسس زیر
A(void){while(true){
cout<< 1;cout<< 2;
}}
B(void){
while(true){
cout<< 3;cout<< 4;}
}
: A B1234
: B A3412
: A( ) B A( ) 1342 1 2
: B( ) A B( ) 3124 1 2
: A( ) B( ) A( ) B( ) 1324 1 1 2 2
: B( ) A( ) B( ) A( ) 3142 1 1 2 2
8
مثال
فرادرس
FaraDars.org
![Page 9: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/9.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
باشد،صفرaسراسریمتغیراولیهمقدارکهصورتیدر.شوندمیاجراروندهمصورتبهزیرفراینددو
دهد؟رختواندمیهاییحالتچهفرآیند،دوکاملاجرایازبعد(.داردوجوددیگرفرایندبهسوئیچووقفهوقوعامکانفرایند،اجرایازلحظههردریعنی.داردوجودنیزInterleavedصورتبهآنهااجرایامکان)
p1 p2
a=1; b=a;c=a;
9
مثال
P P a b c 1 2 1
P P a ,b ,c 2 1 1 0 0
P ( ) P P ( ) a ,b ,c 2 1 1 2 2 1 0 1
فرادرس
FaraDars.org
![Page 10: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/10.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:پردازهدوهمرونداجرایازحاصلخروجیچند
P2P1repeat
print "C"print "D"
forever
repeatprint "A"print "B"
forever
10
مثال
1 2* * * *(AB) (CD) : P P
1 1 2 1 2* *A(CD) B : P ( ) P P ( )
1 1 2 1 2ACDB : P ( ) P P ( )
فرادرس
FaraDars.org
![Page 11: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/11.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:badcنحوه تولید
int x=0 ; int y=0;
BA
printf("b");
x=1;
while (y==0);
printf("c");
while (x==0);
printf("a");
y=1;
y=0;
printf("d");
y=1;
11
مثال
BA
printf("b");
x=1;
.
.
.
.
.
.
while (y==0) ;
printf("c");
.
.
while (x==0) ;
printf("a");
y=1;
y=0;
printf("d");
y=1;
.
.
badc : B( , ) A B( , ) 1 2 3 4
فرادرس
FaraDars.org
![Page 12: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/12.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
همروندفرایندهایهمکاری:باشدبرقرارروندهمفرایندهایبینکاراودرستهمکارییکتاشودرعایتبایدکهشرایطی
Mutual)متقابلانحصار-1 Exclusion)
فرایندیکفقطلحظههردرهستند، بحرانیناحیهداراییکسانمنبعیکبرایکهفرایندهاییبیناز
.باشدخودبحرانیناحیهدرکهاستمجاز
(Progress)پیشرفت-2
تورالعملدسوباشدمیبحرانیغیرناحیهدرونداردرابحرانیناحیهبهورودبهتصمیمفعالکهفرایندی
حرانیبناحیهبهدیگرفرایندهایورودبرایگیریتصمیمدرنبایدکند،میاجراراخودبرنامهعادیهای
(باشدنداشتهممانعتامکان).کندشرکت
12
فرادرس
FaraDars.org
![Page 13: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/13.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
Bounded)محدودانتظار-3 Waiting)
چاردنبایدیعنی.باشدمحدوددارند،بحرانیناحیهبهورودبهنیازکهفرایندهاییانتظارمدتباید
.شوندبستبنوگرسنگی
.بودندیگرفرایندهایمنتظرمشخص،باالیحدبدونونامعلوممدتبه:گرسنگی
.بودنخودبحرانیناحیهبهورودمنتظرابدتا:بستبن
حلراهسازیسادهبرایفرضیوکردحلکلیحالتدربایدرامسئلهباال،شرط3رعایتبرعالوهالبته
.باشدداشتهتصادفیغیروقطعیحالتالگوریتمهمچنین.نبردکاربه
13
فرادرس
FaraDars.org
![Page 14: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/14.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای انحصار متقابل.داردوجودمختلفیپیشنهادهایمتقابل،انحصارتحققبرای
:این راه حل ها را به صورت چهار رویکرد زیر، دسته بندی می کنیم
نرم افزاری -1
(CPUبا کمک دستورالعمل های خاص )با حمایت سخت افزار -2
( با کمک فراخوان های سیستمی خاص)با حمایت سیستم عامل -3
(با کمک کامپایلر)با حمایت زبان برنامه سازی -4
14
فرادرس
FaraDars.org
![Page 15: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/15.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای نرم افزاری انحصار متقابل.استضروریاشتراکیحافظهوجودوشوندمیاستفادههابرنامهتوسطمستقیما
.نداریمسازیبرنامههایزبانوعاملسیستمازحمایتی
15
فرادرس
FaraDars.org
![Page 16: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/16.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
Deckerالگوریتم
قابلمتانحصارمسئلهبرایفرایندیدوافزارینرمحلراهیککهبودشخصیاولینDeckerآقای
.دادارائه
Deckerرسیددرستحلراهبهتالشمرحلهپنجبا.
16
فرادرس
FaraDars.org
![Page 17: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/17.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
17
(تناوب قطعی)تالش اول
P0( )
{
while(TRUE)
{
while( turn != 0) ;
critical-section( );
turn = 1;
non-CS ( );
}
}
P1( )
{
while(TRUE)
{
while( turn != 1) ;
critical-section( );
turn = 0;
non-CS ( );
}
}
فرادرس
FaraDars.org
![Page 18: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/18.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:سناریو
حال.باشدمی0برابرturnبرود،بحرانیغیربخشبهوشدهتمامکارشوشودبحرانیناحیهواردP1اگر
.بماندبحرانیغیرناحیهدرطوالنیمدتبهخواهدمیولیشود،بحرانیناحیهواردکهاستP0نوبت
P1ونچاما.داردرابحرانیناحیهبهمجددورودقصدوشدهتمامبحرانیغیرناحیهدرکارشسرعتبه
turnباالخرهتاماندمیانتظارحلقهدراست0برابرP0خروج،ازبعدوشدهبحرانیناحیهواردturnرا
بحرانیناحیهدرکهبودماندهمنتظرفرایندیتوسطP1پس.شودبحرانیناحیهواردبتواندP1تاکرده1
.بودگرفتهرااشپیشرفتجلویونبود
. شرط پیشرفت را رعایت نمی کند
18
فرادرس
FaraDars.org
![Page 19: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/19.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
دیگرندفراینداشت،رابحرانیناحیهازاستفادهقصدفرایندیاگرتااستبحرانیناحیهبهورودبرایمجزاکلیددارایفرایندهر
باشدداشتهدسترسیخودبحرانیناحیهبهبتواند
19
تالش دوم P0(void){
while(TRUE){
while( flag[1] );flag[0] = TRUE;
critical-section( );flag[0] = FALSE;
non-CS ( );}
}
P1(void){
while(TRUE){
while( flag[0] );flag[1] = TRUE;
critical-section( );flag[1] = FALSE;
non-CS ( );}
}
فرادرس
FaraDars.org
![Page 20: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/20.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
. انحصار متقابل رعایت نمی شود
:سناریو،flag[0]کردنTRUEازقبلامابیند،میFALSEراآنوخواندهراP0،flag[1]فرایند
p1وشوداجراflag[0]راآنوخواندهراFALSEبحرانیناحیهبهورودبرایوبیندمیflag[1]
وکردهTRUEراflag[0]وشدهسوئیچP0بهزمانایندر.شودمیواردP1وکردهTRUEرا
.شودمیبحرانیناحیهواردهمفراینداین
20
فرادرس
FaraDars.org
![Page 21: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/21.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
.شودنمیرعایتمحدودانتظارشرطگرسنگی،امکانعلتبه
:سناریوP1است،TRUEبرابرflag[0]چون.شودمیسوئیچP1بهواستبحرانیناحیهدرP0کنیدفرض
ناحیهسریعافراینداینوشدهدادهP0بهپردازندهکوانتوم،پایانازبعد.شودبحرانیناحیهواردتواندنمی
.شودمیدادهاوبهاجازهاینوداردرابحرانیناحیهبهمجددورودبهسعیوکردهاجرارااشبحرانی
P0مجدداflag .بگیردوروداجازهتواندنمیهمبازشود،سوئیچP1بهاگروکردهTRUEرا[0]
.داردوجودقحطیامکانواستتصادفیبحرانیناحیهبهدستیابیبرایتالشبنابراین
.داردوجودبحرانیناحیهبهدیگرفراینددستیابیعدموبحرانیناحیهبهفرایندیکپیدرپیورودامکان
21
فرادرس
FaraDars.org
![Page 22: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/22.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
ورودقصدهمزمانطوربهدوهراگربنابراین.کندمیTRUEراخودflagسپسوکردهچکرامقابلفرایندوضعیتابتدافرایندهردومتالشدر
.کنیممیعوضرامسئلهسطردومشکلاینحلبرای.شوندمیواردهمباوبینندمیFALSEرایکدیگرflagباشند،داشتهرابحرانیناحیهبه
22
تالش سوم
P0(void){
while(TRUE){
flag[0] = TRUE ; while( flag[1] );
critical-section( );flag[0]= FALSE;
non-CS( );}
}
P1(void){
while(TRUE){
flag[1] = TRUE; while( flag[0] );
critical-section( );flag[1]= FALSE;
non-CS( );}
}
فرادرس
FaraDars.org
![Page 23: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/23.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
.به علت امکان بن بست، شرط انتظار محدود رعایت نمی شود
: سناریو P1به ،P0در flagکند ولی قبل از بررسی TRUEرا P0،falg[0]فرض کنید که
در این صورت هر دو فرایند تا ابد در حلقه . کند TRUEرا P1 ،flag[1]سوئیچ شود و
.انتظار گرفتار شده و بن بست رخ می دهد
1
23
فرادرس
FaraDars.org
![Page 24: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/24.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
خودحقرویتواندمیفرایندهرقبلیتالشدر
ایندر.کندپافشاریاشبحرانیبخشبهورودبرای
کردهTRUEراخودflagمتغیرفرایندهرروش
ننشارابحرانیبخشبهورودبرایخودخواستتا
فرایندبهتادهدتغییرراflagاستآمادهامادهد،
.گذارداحترامدیگر
اربحرانیناحیهبهورودقصدکهفرایندییعنی
هبخواهدمیهممقابلفرایندکهببینداگردارد،
مدتبرایراخودfalgشود،واردبحرانیناحیه
اردوبتواندمقابلفرایندتاکردهFALSEکوتاهی
.شود
24
(ادب و تعارف)تالش چهارم P0(void){
while(TRUE){
flag[0] = TRUE; while( flag[1])
{flag[0] = FALSE;delay ( ); flag[0] = TRUE;
}
critical-section( );flag[0] = FALSE;
non-CS ( );
}
}
P1(void){
while(TRUE){
flag[1] = TRUE; while( flag [0])
{flag[1] = FALSE;delay ( ); flag[1] = TRUE;
}
critical-section( );flag[1] = FALSE;
non-CS( );
}
}
فرادرس
FaraDars.org
![Page 25: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/25.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
.به دلیل امکان گرسنگی، شرط انتظار محدود رعایت نمی شود
سمت چون ممکن است یک فرایند به مدت نامعلوم و بدون حد باالی مشخص، گرفتار ق
. شود و فرایند مقابل به دفعات وارد ناحیه بحرانی شود (delay)تاخیر
.نیز شرط انتظار محدود رعایت نمی شود،Livelockهمچنین به علت امکان وجود
25
فرادرس
FaraDars.org
![Page 26: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/26.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
Livelockمشکل
. وجود داردLivelockدر تالش چهارم مشکل بن بست وجود ندارد، اما مشکل جدیدی به نام
:با دنبال کردن اجرای زیر، این مشکل را توضیح می دهیم
1 )P0،flag[0] راTRUE کند .
2 )P1،flag [1] راTRUE کند .
3 )P0،flag [1]را بررسی کند .
4 )P1،flag[0] بررسی کندرا .
5 )P0،flag[0] راFALSE کند .
6 )P1،flag[1] راFALSE کند.26
ینشینعقبیکسانکوتاهمدتبهزمانیکدرفراینددوهر
میتکرارراباالمراحلوگردندمیبرهمباسپس.کنندمی
تاسممکنشود،تکرارنامحدودطوربهدنبالهایناگر.کنند
.شوندبحرانیناحیهواردنتوانندفرایندهاازکدامهیچ
رعتسدرتغییرباچونباشد،نمیبستبنتکراراینالبته
.شودمیشکستهچرخهاینفرایندها،نسبی
فرادرس
FaraDars.org
![Page 27: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/27.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
.کردترکیبپرچممتغیرهایبارانوبتمتغیر
27
پنجمتالش
P0(void){
while(TRUE){
flag[0] = TRUE;
while( flag[1] )
if (turn == 1){
flag[0] = FALSE;
while( turn==1) do;
flag[0] = TRUE;
}
critical-section( );
turn = 1;
flag[0] = FALSE;
non-CS ( );
}
}
P1(void){
while(TRUE){
flag[1] = TRUE;
while( flag[0])
if (turn == 0){
flag[1] = FALSE;
while( turn==0) do;
flag[1] = TRUE;
}
critical-section( );
turn = 0;
flag[1] = FALSE;
non-CS( );
}
}
فرادرس
FaraDars.org
![Page 28: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/28.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
سپس . می گذارد TRUEمربوط به خود مقدار flagبخواهد وارد بخش بحرانی خود شود، در P0هنگامی که
flag مربوط بهP1 دو حالت رخ می دهدرا بررسی می کند که:
:باشد TRUEبرابر flag[1]-الف
در . کردن پرچم اش منتظر می ماند FALSEاحترام گذاشته و با P1به P0برابر یک باشد، turnاگر
. می کند TRUEخودش را flagبرابر صفر شود و سپس turnکاری انجام نمی دهد تا P0این هنگام
:باشد FALSEبرابر flag[1]-ب
P0 وارد بخش بحرانی شده و بعد از خروج از بخش بحرانی، درflag خود مقدارFALSE می گذارد تا
.واگذارد P1را قرار می دهد تا حق پافشاری را به1مقدار turnبخش بحرانی را آزاد کند و در 28
فرادرس
FaraDars.org
![Page 29: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/29.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
Deckerخالصه ای از وضعیت تالش های
انتظار محدودپیشرفتلانحصار متقاب-تالش اول
--تالش دوم-تالش سوم
-تالش چهارمتالش پنجم
29
:مشخص شده استدر جدول زیر، هر جا که شرط رعایت می شود با عالمت
فرادرس
FaraDars.org
![Page 30: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/30.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
قابلنیزفرایندnبرایکهکردارائهمتقابلانحصارمسئلهحلبرایرازیباییوسادهحلراهpetersonبعد،سالچندین
.استتعمیم
P0(void){while (TRUE) {flag[0] = TRUE;turn = 0; while (turn==0 && flag[1] );
critical-section( );flag[0] = FALSE;
non-CS( );}
{
P1(void){{
while (TRUE) {flag[1] = TRUE;turn = 1; while(turn==1 && flag[0] );
critical-section( );flag[1] = FALSE;
non-CS( );}
{
30
Petersonالگوریتم
همزمانتقریباطوربهدوهرکنیدفرض
(P1دیرترکمی)،ناحیهبهورودقصد
خودشمارهفرایند،دوهر.دارندرابحرانی
کهP1ولیکردهذخیرهturnدررا
شمارهکرده،ذخیرهرااششمارهدیرتر
می1برابرturnوماندمیturnدراش
دستوربهدوهرکهزمانیحال.شود
whileرسند،میP0کردهعبورحلقهاز
درP1ولیشودمیبحرانیناحیهواردو
واردو(مشغولانتظار)چرخدمیحلقه
.شودنمیبحرانیناحیه
فرادرس
FaraDars.org
![Page 31: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/31.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
.برعکس مقدار دهی و تست می شود که تفاوتی با روش باال ندارد turnدر کتاب استالینگز، مقدار
;turn = 1:داریم، P0برایمثالبه طور
while(turn==1 && flag[1]);
31
فرادرس
FaraDars.org
![Page 32: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/32.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:وجود دارند Petersonو روش Deckerمعایبی که در هر یک از تالش های
.مانداگر یکی از فرایندها در داخل ناحیه بحرانی از کار بیفتد، فرایند دیگر تا ابد منتظر می-1
.مبتنی بر انتظار مشغول می باشند-2
32
فرادرس
FaraDars.org
![Page 33: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/33.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای انحصار متقابل
باحمایت
سخت افزار
33
فرادرس
FaraDars.org
![Page 34: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/34.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
بهنیازوکنند،میاستفادهماشینویژههایدستورالعملازکهزیرهایحلراهکمکبهتوانمی
.کردحلرامتقابلانحصارمسئلهدارند،پردازندهطرفازحمایت
هاوقفهانداختنکارازدستورالعمل-1
TSLالعملدستور-2
SWAPدستورالعمل-3
34
فرادرس
FaraDars.org
![Page 35: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/35.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
ازروجخازقبلدقیقاوبیندازدکارازراهاوقفهتمامبحرانی،ناحیهبهورودمحضبهبایدفرایندهر
.سازدفعالمجدداراهاوقفههمهبحرانی،ناحیه
فعالرغیساعتوقفهچونکند،سوئچدیگرفرایندبهفرایندیازتواندنمیپردازندهصورتایندر
.است
دهایفرایندخالتازترسبدونتواندمیکند، میفعالغیرراهاوقفهفرایندیکهوقتیبنابراین
.بپردازدمشتركحافظهدرنوشتنوخواندنبهدیگر،
35
ا هدستورالعمل از کار انداختن وقفه
فرادرس
FaraDars.org
![Page 36: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/36.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:رویکرد
P(int i) {
while(TRUE) {
disable_interrupts( );
critical_section( );
enable_interrupts( );
non_critical_section( );
}
}
36
فرادرس
FaraDars.org
![Page 37: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/37.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
کردن،فعالغیرازبعدراهاوقفهفرایندیداردامکانکهاستاینروشاینمعایباز
.نکندفعالمجددا
اینکهایپردازندهدرفقطها،وقفهکردنغیرفعالای،چندپردازندههایسیستمدر
بحرانیناحیهبهتوانندمیدیگرهایپردازندهواستگذارتاثیرکردهاجرارادستورالعمل
.باشندداشتهدسترسی
37
فرادرس
FaraDars.org
![Page 38: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/38.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103 دستورswap
int const n= /*number of processes */;
int b;
p(int i){
int keyi=1;
while(true) {
swap( keyi , b );
while( keyi != 0) ;
critical section;
b=0;
remainder;
}
}
main( ){
b=0;parbegin( p(1),p(2),…,p(n) );
}.این راه حل گرسنگی دارد
38
فرادرس
FaraDars.org
![Page 39: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/39.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
TSLدستورالعمل
TSL(Testدستورالعمل and Set Lock)،حافظهازکلمهیکمحتویات(lock)ثباتدروخواندهرا
.کندمیذخیرهحافظهازآدرسهماندررا1مقدارسپسودادهقرار
TSL reg , lock
.شودمییکlockوشدهذخیرهregدرlockمقدار
هیچنشود،تمامدستورالعملاجرایاینکهتاوشوندمیانجام(اتومیک)تقسیمقابلغیرعملیاتاین
کندپیدادسترسیحافظهازکلمهاینبهتواندنمیدیگریپردازندهیاوفرایند
39
فرادرس
FaraDars.org
![Page 40: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/40.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
:اسمبلیزبانبه،TSLازاستفادهبابحرانیناحیهبهورودتابع
enter:
tsl reg , lock
cmp reg , #0
jne enter
ret
مقایسه0باlockقبلیمقدارسپس.شودمییکlockوشدهذخیرهregدرlockقبلیمقدارابتدا
درکرده،بازگشتزیربرنامهبود،0اگرو(مشغولانتظارحلقه)شدهتکرارعملیاتایننبود،0اگر.شودمی
.استکرده1راlockکهحالی
.داردگرسنگیحلراهاین
40
فرادرس
FaraDars.org
![Page 41: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/41.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
اول پایان قسمت
5فصل
41
فرادرس
FaraDars.org
![Page 42: آموزش سیستم های عامل - بخش ششم](https://reader037.vdocuments.site/reader037/viewer/2022110218/5876c79f1a28ab6d5a8b62f5/html5/thumbnails/42.jpg)
عاملآموزش سیستم های
faradars.org/fvsft103
عاملآموزش سیستم های
faradars.org/fvsft103
42
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« آموزش سیستم های عامل»
.تهیه شده است
.برای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمایید
فرادرس
FaraDars.org