Upload
faradars
View
80
Download
13
Embed Size (px)
Citation preview
عاملآموزش سیستم های
faradars.org/fvsft103
:مدرسفرشید شیرافکن
دانشجوی دکتری دانشگاه تهران (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )
سیستم های عامل
1
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
2
:فصل پنجم
همروندی فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
مفاهیم اولیه
(Synchronization)سازیهمگام
.ودشرعایتبایدکارهاانجامدرستترتیبباشد،داشتهوجودوابستگیفرایندهابیناگر
3
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
(Race Condition)شرایط رقابتی
.هدندرخآنهابرایرقابتیشرایطونکنندمداخلهیکدیگربحرانیهایفعالیتدرفرایندها
4
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
منبع بحرانی
.که چند فرایند برای دسترسی به آن رقابت می کنند( مانند چاپگر)منبع غیر اشتراکی
5
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
(Critical Region)ناحیه بحرانی
. بخشی از برنامه که از منبع بحرانی استفاده می کند
6
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
گرسنگی.هستندRمنبعبهدسترسینیازمندمتناوباCًوBوAفرایندسهازیکهرکنیدفرض
.شوندمیانداختهتاخیربهمنبع،آنانتظاردردیگرفراینددوگیرد،اختیاردررامنبعاینAوقتی
.گیرنداختیاردرراRبایدفراینددوازیکیبحرانی،ناحیهازAخروجبا
پایانازبعدوبکندراRدرخواستAمجدداًبحرانیبخشپایانازقبلوبگیردراRمنبعCاگر
دسترسیازنامحدودصورتبهBیابد،ادامهCوAبینعملاینمکرراًوشوددادهCبهاجازه،
.کشدمیگرسنگیوماندمیمحرومRمنبعبه
7
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
همروندفرایندهایهمکاری:باشدبرقرارروندهمفرایندهایبینکاراودرستهمکارییکتاشودرعایتبایدکهشرایطی
Mutual)متقابلانحصار-1 Exclusion)
فرایندیکفقطلحظههردرهستند، بحرانیناحیهداراییکسانمنبعیکبرایکهفرایندهاییبیناز
.باشدخودبحرانیناحیهدرکهاستمجاز
(Progress)پیشرفت-2
تورالعملدسوباشدمیبحرانیغیرناحیهدرونداردرابحرانیناحیهبهورودبهتصمیمفعالکهفرایندی
حرانیبناحیهبهدیگرفرایندهایورودبرایگیریتصمیمدرنبایدکند،میاجراراخودبرنامهعادیهای
(باشدنداشتهممانعتامکان).کندشرکت
12
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
Bounded)محدودانتظار-3 Waiting)
چاردنبایدیعنی.باشدمحدوددارند،بحرانیناحیهبهورودبهنیازکهفرایندهاییانتظارمدتباید
.شوندبستبنوگرسنگی
.بودندیگرفرایندهایمنتظرمشخص،باالیحدبدونونامعلوممدتبه:گرسنگی
.بودنخودبحرانیناحیهبهورودمنتظرابدتا:بستبن
حلراهسازیسادهبرایفرضیوکردحلکلیحالتدربایدرامسئلهباال،شرط3رعایتبرعالوهالبته
.باشدداشتهتصادفیغیروقطعیحالتالگوریتمهمچنین.نبردکاربه
13
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای انحصار متقابل.داردوجودمختلفیپیشنهادهایمتقابل،انحصارتحققبرای
:این راه حل ها را به صورت چهار رویکرد زیر، دسته بندی می کنیم
نرم افزاری -1
(CPUبا کمک دستورالعمل های خاص )با حمایت سخت افزار -2
( با کمک فراخوان های سیستمی خاص)با حمایت سیستم عامل -3
(با کمک کامپایلر)با حمایت زبان برنامه سازی -4
14
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای نرم افزاری انحصار متقابل.استضروریاشتراکیحافظهوجودوشوندمیاستفادههابرنامهتوسطمستقیما
.نداریمسازیبرنامههایزبانوعاملسیستمازحمایتی
15
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
Deckerالگوریتم
قابلمتانحصارمسئلهبرایفرایندیدوافزارینرمحلراهیککهبودشخصیاولینDeckerآقای
.دادارائه
Deckerرسیددرستحلراهبهتالشمرحلهپنجبا.
16
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
:سناریو
حال.باشدمی0برابرturnبرود،بحرانیغیربخشبهوشدهتمامکارشوشودبحرانیناحیهواردP1اگر
.بماندبحرانیغیرناحیهدرطوالنیمدتبهخواهدمیولیشود،بحرانیناحیهواردکهاستP0نوبت
P1ونچاما.داردرابحرانیناحیهبهمجددورودقصدوشدهتمامبحرانیغیرناحیهدرکارشسرعتبه
turnباالخرهتاماندمیانتظارحلقهدراست0برابرP0خروج،ازبعدوشدهبحرانیناحیهواردturnرا
بحرانیناحیهدرکهبودماندهمنتظرفرایندیتوسطP1پس.شودبحرانیناحیهواردبتواندP1تاکرده1
.بودگرفتهرااشپیشرفتجلویونبود
. شرط پیشرفت را رعایت نمی کند
18
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
.شودنمیرعایتمحدودانتظارشرطگرسنگی،امکانعلتبه
:سناریوP1است،TRUEبرابرflag[0]چون.شودمیسوئیچP1بهواستبحرانیناحیهدرP0کنیدفرض
ناحیهسریعافراینداینوشدهدادهP0بهپردازندهکوانتوم،پایانازبعد.شودبحرانیناحیهواردتواندنمی
.شودمیدادهاوبهاجازهاینوداردرابحرانیناحیهبهمجددورودبهسعیوکردهاجرارااشبحرانی
P0مجدداflag .بگیردوروداجازهتواندنمیهمبازشود،سوئیچP1بهاگروکردهTRUEرا[0]
.داردوجودقحطیامکانواستتصادفیبحرانیناحیهبهدستیابیبرایتالشبنابراین
.داردوجودبحرانیناحیهبهدیگرفراینددستیابیعدموبحرانیناحیهبهفرایندیکپیدرپیورودامکان
21
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
.به علت امکان بن بست، شرط انتظار محدود رعایت نمی شود
: سناریو P1به ،P0در flagکند ولی قبل از بررسی TRUEرا P0،falg[0]فرض کنید که
در این صورت هر دو فرایند تا ابد در حلقه . کند TRUEرا P1 ،flag[1]سوئیچ شود و
.انتظار گرفتار شده و بن بست رخ می دهد
1
23
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
.به دلیل امکان گرسنگی، شرط انتظار محدود رعایت نمی شود
سمت چون ممکن است یک فرایند به مدت نامعلوم و بدون حد باالی مشخص، گرفتار ق
. شود و فرایند مقابل به دفعات وارد ناحیه بحرانی شود (delay)تاخیر
.نیز شرط انتظار محدود رعایت نمی شود،Livelockهمچنین به علت امکان وجود
25
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
Deckerخالصه ای از وضعیت تالش های
انتظار محدودپیشرفتلانحصار متقاب-تالش اول
--تالش دوم-تالش سوم
-تالش چهارمتالش پنجم
29
:مشخص شده استدر جدول زیر، هر جا که شرط رعایت می شود با عالمت
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
.برعکس مقدار دهی و تست می شود که تفاوتی با روش باال ندارد turnدر کتاب استالینگز، مقدار
;turn = 1:داریم، P0برایمثالبه طور
while(turn==1 && flag[1]);
31
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
:وجود دارند Petersonو روش Deckerمعایبی که در هر یک از تالش های
.مانداگر یکی از فرایندها در داخل ناحیه بحرانی از کار بیفتد، فرایند دیگر تا ابد منتظر می-1
.مبتنی بر انتظار مشغول می باشند-2
32
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
رویکردهای انحصار متقابل
باحمایت
سخت افزار
33
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
بهنیازوکنند،میاستفادهماشینویژههایدستورالعملازکهزیرهایحلراهکمکبهتوانمی
.کردحلرامتقابلانحصارمسئلهدارند،پردازندهطرفازحمایت
هاوقفهانداختنکارازدستورالعمل-1
TSLالعملدستور-2
SWAPدستورالعمل-3
34
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
ازروجخازقبلدقیقاوبیندازدکارازراهاوقفهتمامبحرانی،ناحیهبهورودمحضبهبایدفرایندهر
.سازدفعالمجدداراهاوقفههمهبحرانی،ناحیه
فعالرغیساعتوقفهچونکند،سوئچدیگرفرایندبهفرایندیازتواندنمیپردازندهصورتایندر
.است
دهایفرایندخالتازترسبدونتواندمیکند، میفعالغیرراهاوقفهفرایندیکهوقتیبنابراین
.بپردازدمشتركحافظهدرنوشتنوخواندنبهدیگر،
35
ا هدستورالعمل از کار انداختن وقفه
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
:رویکرد
P(int i) {
while(TRUE) {
disable_interrupts( );
critical_section( );
enable_interrupts( );
non_critical_section( );
}
}
36
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
کردن،فعالغیرازبعدراهاوقفهفرایندیداردامکانکهاستاینروشاینمعایباز
.نکندفعالمجددا
اینکهایپردازندهدرفقطها،وقفهکردنغیرفعالای،چندپردازندههایسیستمدر
بحرانیناحیهبهتوانندمیدیگرهایپردازندهواستگذارتاثیرکردهاجرارادستورالعمل
.باشندداشتهدسترسی
37
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
TSLدستورالعمل
TSL(Testدستورالعمل and Set Lock)،حافظهازکلمهیکمحتویات(lock)ثباتدروخواندهرا
.کندمیذخیرهحافظهازآدرسهماندررا1مقدارسپسودادهقرار
TSL reg , lock
.شودمییکlockوشدهذخیرهregدرlockمقدار
هیچنشود،تمامدستورالعملاجرایاینکهتاوشوندمیانجام(اتومیک)تقسیمقابلغیرعملیاتاین
کندپیدادسترسیحافظهازکلمهاینبهتواندنمیدیگریپردازندهیاوفرایند
39
فرادرس
FaraDars.org
عاملآموزش سیستم های
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
عاملآموزش سیستم های
faradars.org/fvsft103
اول پایان قسمت
5فصل
41
فرادرس
FaraDars.org
عاملآموزش سیستم های
faradars.org/fvsft103
عاملآموزش سیستم های
faradars.org/fvsft103
42
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« آموزش سیستم های عامل»
.تهیه شده است
.برای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمایید
فرادرس
FaraDars.org