42
ستم های آموزش سی عاملfaradars.org/fvsft103 مدرس: فرشید شیرافکن تهراننشگاه دانشجوی دکتری دا( سی ارشد کارشنا کارشناسی و: م افزار کامپیوتر نر( ) دکتری: نفورماتیک بیو ا) های عاملیستم س1 ﻓﺮادرسFaraDars.org

آموزش سیستم های عامل - بخش ششم

Embed Size (px)

Citation preview

Page 1: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

:مدرسفرشید شیرافکن

دانشجوی دکتری دانشگاه تهران (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )

سیستم های عامل

1

فرادرس

FaraDars.org

Page 2: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

2

:فصل پنجم

همروندی فرادرس

FaraDars.org

Page 3: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

مفاهیم اولیه

(Synchronization)سازیهمگام

.ودشرعایتبایدکارهاانجامدرستترتیبباشد،داشتهوجودوابستگیفرایندهابیناگر

3

فرادرس

FaraDars.org

Page 4: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

(Race Condition)شرایط رقابتی

.هدندرخآنهابرایرقابتیشرایطونکنندمداخلهیکدیگربحرانیهایفعالیتدرفرایندها

4

فرادرس

FaraDars.org

Page 5: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

منبع بحرانی

.که چند فرایند برای دسترسی به آن رقابت می کنند( مانند چاپگر)منبع غیر اشتراکی

5

فرادرس

FaraDars.org

Page 6: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

(Critical Region)ناحیه بحرانی

. بخشی از برنامه که از منبع بحرانی استفاده می کند

6

فرادرس

FaraDars.org

Page 7: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

گرسنگی.هستندRمنبعبهدسترسینیازمندمتناوباCًوBوAفرایندسهازیکهرکنیدفرض

.شوندمیانداختهتاخیربهمنبع،آنانتظاردردیگرفراینددوگیرد،اختیاردررامنبعاینAوقتی

.گیرنداختیاردرراRبایدفراینددوازیکیبحرانی،ناحیهازAخروجبا

پایانازبعدوبکندراRدرخواستAمجدداًبحرانیبخشپایانازقبلوبگیردراRمنبعCاگر

دسترسیازنامحدودصورتبهBیابد،ادامهCوAبینعملاینمکرراًوشوددادهCبهاجازه،

.کشدمیگرسنگیوماندمیمحرومRمنبعبه

7

فرادرس

FaraDars.org

Page 8: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

همروندفرایندهایهمکاری:باشدبرقرارروندهمفرایندهایبینکاراودرستهمکارییکتاشودرعایتبایدکهشرایطی

Mutual)متقابلانحصار-1 Exclusion)

فرایندیکفقطلحظههردرهستند، بحرانیناحیهداراییکسانمنبعیکبرایکهفرایندهاییبیناز

.باشدخودبحرانیناحیهدرکهاستمجاز

(Progress)پیشرفت-2

تورالعملدسوباشدمیبحرانیغیرناحیهدرونداردرابحرانیناحیهبهورودبهتصمیمفعالکهفرایندی

حرانیبناحیهبهدیگرفرایندهایورودبرایگیریتصمیمدرنبایدکند،میاجراراخودبرنامهعادیهای

(باشدنداشتهممانعتامکان).کندشرکت

12

فرادرس

FaraDars.org

Page 13: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

Bounded)محدودانتظار-3 Waiting)

چاردنبایدیعنی.باشدمحدوددارند،بحرانیناحیهبهورودبهنیازکهفرایندهاییانتظارمدتباید

.شوندبستبنوگرسنگی

.بودندیگرفرایندهایمنتظرمشخص،باالیحدبدونونامعلوممدتبه:گرسنگی

.بودنخودبحرانیناحیهبهورودمنتظرابدتا:بستبن

حلراهسازیسادهبرایفرضیوکردحلکلیحالتدربایدرامسئلهباال،شرط3رعایتبرعالوهالبته

.باشدداشتهتصادفیغیروقطعیحالتالگوریتمهمچنین.نبردکاربه

13

فرادرس

FaraDars.org

Page 14: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

رویکردهای انحصار متقابل.داردوجودمختلفیپیشنهادهایمتقابل،انحصارتحققبرای

:این راه حل ها را به صورت چهار رویکرد زیر، دسته بندی می کنیم

نرم افزاری -1

(CPUبا کمک دستورالعمل های خاص )با حمایت سخت افزار -2

( با کمک فراخوان های سیستمی خاص)با حمایت سیستم عامل -3

(با کمک کامپایلر)با حمایت زبان برنامه سازی -4

14

فرادرس

FaraDars.org

Page 15: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

رویکردهای نرم افزاری انحصار متقابل.استضروریاشتراکیحافظهوجودوشوندمیاستفادههابرنامهتوسطمستقیما

.نداریمسازیبرنامههایزبانوعاملسیستمازحمایتی

15

فرادرس

FaraDars.org

Page 16: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

Deckerالگوریتم

قابلمتانحصارمسئلهبرایفرایندیدوافزارینرمحلراهیککهبودشخصیاولینDeckerآقای

.دادارائه

Deckerرسیددرستحلراهبهتالشمرحلهپنجبا.

16

فرادرس

FaraDars.org

Page 17: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

:سناریو

حال.باشدمی0برابرturnبرود،بحرانیغیربخشبهوشدهتمامکارشوشودبحرانیناحیهواردP1اگر

.بماندبحرانیغیرناحیهدرطوالنیمدتبهخواهدمیولیشود،بحرانیناحیهواردکهاستP0نوبت

P1ونچاما.داردرابحرانیناحیهبهمجددورودقصدوشدهتمامبحرانیغیرناحیهدرکارشسرعتبه

turnباالخرهتاماندمیانتظارحلقهدراست0برابرP0خروج،ازبعدوشدهبحرانیناحیهواردturnرا

بحرانیناحیهدرکهبودماندهمنتظرفرایندیتوسطP1پس.شودبحرانیناحیهواردبتواندP1تاکرده1

.بودگرفتهرااشپیشرفتجلویونبود

. شرط پیشرفت را رعایت نمی کند

18

فرادرس

FaraDars.org

Page 19: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

.شودنمیرعایتمحدودانتظارشرطگرسنگی،امکانعلتبه

:سناریوP1است،TRUEبرابرflag[0]چون.شودمیسوئیچP1بهواستبحرانیناحیهدرP0کنیدفرض

ناحیهسریعافراینداینوشدهدادهP0بهپردازندهکوانتوم،پایانازبعد.شودبحرانیناحیهواردتواندنمی

.شودمیدادهاوبهاجازهاینوداردرابحرانیناحیهبهمجددورودبهسعیوکردهاجرارااشبحرانی

P0مجدداflag .بگیردوروداجازهتواندنمیهمبازشود،سوئیچP1بهاگروکردهTRUEرا[0]

.داردوجودقحطیامکانواستتصادفیبحرانیناحیهبهدستیابیبرایتالشبنابراین

.داردوجودبحرانیناحیهبهدیگرفراینددستیابیعدموبحرانیناحیهبهفرایندیکپیدرپیورودامکان

21

فرادرس

FaraDars.org

Page 22: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

.به علت امکان بن بست، شرط انتظار محدود رعایت نمی شود

: سناریو P1به ،P0در flagکند ولی قبل از بررسی TRUEرا P0،falg[0]فرض کنید که

در این صورت هر دو فرایند تا ابد در حلقه . کند TRUEرا P1 ،flag[1]سوئیچ شود و

.انتظار گرفتار شده و بن بست رخ می دهد

1

23

فرادرس

FaraDars.org

Page 24: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

.به دلیل امکان گرسنگی، شرط انتظار محدود رعایت نمی شود

سمت چون ممکن است یک فرایند به مدت نامعلوم و بدون حد باالی مشخص، گرفتار ق

. شود و فرایند مقابل به دفعات وارد ناحیه بحرانی شود (delay)تاخیر

.نیز شرط انتظار محدود رعایت نمی شود،Livelockهمچنین به علت امکان وجود

25

فرادرس

FaraDars.org

Page 26: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

Deckerخالصه ای از وضعیت تالش های

انتظار محدودپیشرفتلانحصار متقاب-تالش اول

--تالش دوم-تالش سوم

-تالش چهارمتالش پنجم

29

:مشخص شده استدر جدول زیر، هر جا که شرط رعایت می شود با عالمت

فرادرس

FaraDars.org

Page 30: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

.برعکس مقدار دهی و تست می شود که تفاوتی با روش باال ندارد turnدر کتاب استالینگز، مقدار

;turn = 1:داریم، P0برایمثالبه طور

while(turn==1 && flag[1]);

31

فرادرس

FaraDars.org

Page 32: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

:وجود دارند Petersonو روش Deckerمعایبی که در هر یک از تالش های

.مانداگر یکی از فرایندها در داخل ناحیه بحرانی از کار بیفتد، فرایند دیگر تا ابد منتظر می-1

.مبتنی بر انتظار مشغول می باشند-2

32

فرادرس

FaraDars.org

Page 33: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

رویکردهای انحصار متقابل

باحمایت

سخت افزار

33

فرادرس

FaraDars.org

Page 34: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

بهنیازوکنند،میاستفادهماشینویژههایدستورالعملازکهزیرهایحلراهکمکبهتوانمی

.کردحلرامتقابلانحصارمسئلهدارند،پردازندهطرفازحمایت

هاوقفهانداختنکارازدستورالعمل-1

TSLالعملدستور-2

SWAPدستورالعمل-3

34

فرادرس

FaraDars.org

Page 35: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

ازروجخازقبلدقیقاوبیندازدکارازراهاوقفهتمامبحرانی،ناحیهبهورودمحضبهبایدفرایندهر

.سازدفعالمجدداراهاوقفههمهبحرانی،ناحیه

فعالرغیساعتوقفهچونکند،سوئچدیگرفرایندبهفرایندیازتواندنمیپردازندهصورتایندر

.است

دهایفرایندخالتازترسبدونتواندمیکند، میفعالغیرراهاوقفهفرایندیکهوقتیبنابراین

.بپردازدمشتركحافظهدرنوشتنوخواندنبهدیگر،

35

ا هدستورالعمل از کار انداختن وقفه

فرادرس

FaraDars.org

Page 36: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

:رویکرد

P(int i) {

while(TRUE) {

disable_interrupts( );

critical_section( );

enable_interrupts( );

non_critical_section( );

}

}

36

فرادرس

FaraDars.org

Page 37: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

کردن،فعالغیرازبعدراهاوقفهفرایندیداردامکانکهاستاینروشاینمعایباز

.نکندفعالمجددا

اینکهایپردازندهدرفقطها،وقفهکردنغیرفعالای،چندپردازندههایسیستمدر

بحرانیناحیهبهتوانندمیدیگرهایپردازندهواستگذارتاثیرکردهاجرارادستورالعمل

.باشندداشتهدسترسی

37

فرادرس

FaraDars.org

Page 38: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

TSLدستورالعمل

TSL(Testدستورالعمل and Set Lock)،حافظهازکلمهیکمحتویات(lock)ثباتدروخواندهرا

.کندمیذخیرهحافظهازآدرسهماندررا1مقدارسپسودادهقرار

TSL reg , lock

.شودمییکlockوشدهذخیرهregدرlockمقدار

هیچنشود،تمامدستورالعملاجرایاینکهتاوشوندمیانجام(اتومیک)تقسیمقابلغیرعملیاتاین

کندپیدادسترسیحافظهازکلمهاینبهتواندنمیدیگریپردازندهیاوفرایند

39

فرادرس

FaraDars.org

Page 40: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

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: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

اول پایان قسمت

5فصل

41

فرادرس

FaraDars.org

Page 42: آموزش سیستم های عامل - بخش ششم

عاملآموزش سیستم های

faradars.org/fvsft103

عاملآموزش سیستم های

faradars.org/fvsft103

42

این اسالید ها بر مبنای نکات مطرح شده در فرادرس« آموزش سیستم های عامل»

.تهیه شده است

.برای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمایید

فرادرس

FaraDars.org