收藏 分销(赏)

并发性互斥和同步.pptx

上传人:w****g 文档编号:3229954 上传时间:2024-06-26 格式:PPTX 页数:108 大小:612.19KB
下载 相关 举报
并发性互斥和同步.pptx_第1页
第1页 / 共108页
并发性互斥和同步.pptx_第2页
第2页 / 共108页
并发性互斥和同步.pptx_第3页
第3页 / 共108页
并发性互斥和同步.pptx_第4页
第4页 / 共108页
并发性互斥和同步.pptx_第5页
第5页 / 共108页
点击查看更多>>
资源描述

1、CHAPTER CHAPTER 5 5Concurrency:MutualExclusionandSynchronization(并发性:互斥和同步并发性:互斥和同步并发性:互斥和同步并发性:互斥和同步)Concurrency(并发性)(并发性)(并发性)(并发性)CommunicationamongprocessesSharingofandcompeting(竟争竟争)forresourcesSynchronizationoftheactivitiesofmultipleprocessesAllocationofprocessortimetoprocesserConcurrencyMulti

2、pleapplicationsMultiprogrammingMultiprogrammingStructuredapplicationApplicationcanbeasetofconcurrentApplicationcanbeasetofconcurrentprocessesprocessesOperating-systemstructureOperatingsystemisasetofprocessesorOperatingsystemisasetofprocessesorthreadsthreads5.1PRINCIPLESOFNCURRENCY(并发的原理并发的原理并发的原理并发的

3、原理)DifficultieswithConcurrency1.Sharingglobalresources2.Managementofallocationofresources3.ItbecomeverydifficulttolocateaProgrammingerrorsASimpleExampleprocedure echo;Var out,in:character;begininput(in,keyboard);out:=in;output(out,display);endASimpleExampleProcess P1Process P1 Process P2 Process P2.

4、Input(in,keyboard).Input(in,keyboard).Input(in,keyboard)Input(in,keyboard)Out:=in out:=inOut:=in out:=inOutput(out,display).Output(out,display).Output(out,display)Output(out,display).OperatingSystemConcerns(操作系统关注的问题)(操作系统关注的问题)(操作系统关注的问题)(操作系统关注的问题)Keeptrackofactiveprocesses:PCBKeeptrackofactivepro

5、cesses:PCBAllocateanddeallocateresourcesAllocateanddeallocateresources Processortime:schedulingProcessortime:scheduling Memory:virtualmemoryMemory:virtualmemory FilesFiles I/OdevicesI/OdevicesProtectdataandresourcesProtectdataandresourcesResultofprocessmustbeindependentoftheResultofprocessmustbeinde

6、pendentofthespeedofexecutionofotherconcurrentspeedofexecutionofotherconcurrentprocessesprocesses(应保证进程执行的结果与速度无关)(应保证进程执行的结果与速度无关)(应保证进程执行的结果与速度无关)(应保证进程执行的结果与速度无关)ProcessInteractionProcessesunawareofeachotherProcessesunawareofeachother-Competition-Competition-Mutualexclusion,Deadlock,Starvation-Mut

7、ualexclusion,Deadlock,StarvationProcessesindirectlyawareofeachotherProcessesindirectlyawareofeachother-Cooperationbysharing-Cooperationbysharing-Mutualexclusion,Deadlock,Starvation,Data-Mutualexclusion,Deadlock,Starvation,Datacoherencecoherence(一致性一致性)ProcessdirectlyawareofeachotherProcessdirectlyaw

8、areofeachother-C-Cooperationbycommunicationooperationbycommunication-D-Deadlock,Starvationeadlock,Starvation 表51进程的交互 知道程度关系一个进程对其他进程的影响潜在的控制问题进进程程之之间间不不知知道道对对方方(进程间无工作联系)竞争1 一个进程的结果与其它进程的活动无关2 进程的分时可能会受到影响互斥死锁(可复用的资源)饿死进程间接知道对方进程间接知道对方(如共享对象)通过共享合作1.一个进程的结果可能依赖于从其他进程获得的信息2.进程的分时可能会受到影响互斥死锁(可复用的资源)饿

9、死数据一致性进程直接知道对方进程直接知道对方(它们有可用的通信原语)通过通信合作1.一个进程的结果可能依赖于从其他进程获得的信息 2.进程的分时可能会受到影响死锁(可消费的资源)饿死CompetitionAmongProcessesforResourcesMutualExclusion(互斥互斥)CriticalsectionsCriticalsections(临界区)(临界区)(临界区)(临界区)OnlyoneprogramatatimeisallowedinitsOnlyoneprogramatatimeisallowedinitscriticalsection(criticalsecti

10、on(一次仅允许一个进程在临界区一次仅允许一个进程在临界区一次仅允许一个进程在临界区一次仅允许一个进程在临界区)ExampleonlyoneprocessatatimeisallowedtoExampleonlyoneprocessatatimeisallowedtosendcommandtotheprintersendcommandtotheprinter(critical resource)()(例如一次仅允许一个进程发打印命令例如一次仅允许一个进程发打印命令)Deadlock(死锁)(死锁)StarvationCompetitionAmongProcessesforResourcesDe

11、adlockDeadlock例例如如,有有两两个个进进程程P1P1、P2P2,竞竞争争两两个个资资源源R1R1、R2R2。假设。假设占用占用:P1P1(R2R2)and P2and P2(R1R1)申请申请:P1P1(R1R1)and P2and P2(R2R2)结果:结果:P1P1、P2P2永久等待(死锁)永久等待(死锁)CompetitionAmongProcessesforResourcesStarvationStarvation(饿死)(饿死)例如,有三个进程例如,有三个进程例如,有三个进程例如,有三个进程P1P1P1P1、P2P2P2P2、P3P3P3P3,竞争资源,竞争资源,竞争资

12、源,竞争资源R R R R假设假设假设假设占用占用占用占用:P1P1P1P1(R R R R)申请申请申请申请:P2P2P2P2(R R R R)and P3and P3and P3and P3(R R R R)释放:释放:释放:释放:P1P1P1P1(R R R R)占用占用占用占用:P2P2P2P2(R R R R)申请申请申请申请:P1P1P1P1(R R R R)and P3and P3and P3and P3(R R R R)释放:释放:释放:释放:P2P2P2P2(R R R R)占用占用占用占用:P1P1P1P1(R R R R)结果:结果:结果:结果:P3P3P3P3(饿死)(

13、饿死)(饿死)(饿死)MutualExclusionMechanism互斥机制互斥机制互斥机制互斥机制entry section critical sectionexit section (阅读(阅读P194,图,图5.1)CooperationAmongProcessesbySharing(进程间由于共享合作)(进程间由于共享合作)(进程间由于共享合作)(进程间由于共享合作)WritingmustbemutuallyexclusiveWritingmustbemutuallyexclusive(对写共享变量必须互斥)(对写共享变量必须互斥)(对写共享变量必须互斥)(对写共享变量必须互斥)Cr

14、iticalsectionsareusedtoprovidedataintegrityCriticalsectionsareusedtoprovidedataintegrity(确保数据完整性使用临界区)(确保数据完整性使用临界区)(确保数据完整性使用临界区)(确保数据完整性使用临界区)例如:两个数据保持相等:例如:两个数据保持相等:例如:两个数据保持相等:例如:两个数据保持相等:A=BA=B,初始值相等。,初始值相等。,初始值相等。,初始值相等。P1P1:A=A+1A=A+1;B=B+1B=B+1;P2P2:B=2*BB=2*B;A=2*AA=2*A 当当当当P1P1和和和和P2P2顺序执行

15、,能保证一致。但并发执行,就可顺序执行,能保证一致。但并发执行,就可顺序执行,能保证一致。但并发执行,就可顺序执行,能保证一致。但并发执行,就可能出现能出现能出现能出现ABAB,因此必须采用临界资源管理才能达到数据,因此必须采用临界资源管理才能达到数据,因此必须采用临界资源管理才能达到数据,因此必须采用临界资源管理才能达到数据的一致性。的一致性。的一致性。的一致性。CooperationAmongProcessesbyCommunicationCooperationAmongProcessesbyCommunication(进程间由于通信的合作)(进程间由于通信的合作)(进程间由于通信的合作)

16、(进程间由于通信的合作)BecausenothingissharedbetweenprocessesintheactofpassingmessagesMutualexclusionisnotacontrolrequirementMutualexclusionisnotacontrolrequirementforthissortofcooperation.forthissortofcooperation.PossibletohavedeadlockEachprocesswaitingforamessagefromtheEachprocesswaitingforamessagefromtheoth

17、erprocessotherprocessPossibletohavestarvationTwoprocessessendingmessagetoeachotherTwoprocessessendingmessagetoeachotherwhileanotherprocesswaitsforamessagewhileanotherprocesswaitsforamessageRequirementsforMutualExclusion(互斥的要求)(互斥的要求)1.Onlyoneprocessatatimeisallowedinthecriticalsectionforaresource(一次

18、仅一次仅一次仅一次仅允许一个进程进入临界区允许一个进程进入临界区允许一个进程进入临界区允许一个进程进入临界区)2.Aprocessthathaltsinitsnon-criticalsectionmustdosowithoutinterferingwithotherprocesses(处于非临界区的进程不处于非临界区的进程不处于非临界区的进程不处于非临界区的进程不能干预其它进程能干预其它进程能干预其它进程能干预其它进程)3.NodeadlockorstarvationRequirementsforMutualExclusion(互斥的要求)(互斥的要求)4.Aprocessmustnotbed

19、elayedaccesstoa4.Aprocessmustnotbedelayedaccesstoacriticalsectionwhenthereisnootherprocesscriticalsectionwhenthereisnootherprocessusingit(usingit(当没有进程在临界区时应立即进入当没有进程在临界区时应立即进入当没有进程在临界区时应立即进入当没有进程在临界区时应立即进入)5.Noassumptionsaremadeaboutrelative5.Noassumptionsaremadeaboutrelativeprocessspeedsornumberof

20、processors(processspeedsornumberofprocessors(对相关对相关对相关对相关进程的速度和处理机的数目没有任何要求和限制进程的速度和处理机的数目没有任何要求和限制进程的速度和处理机的数目没有任何要求和限制进程的速度和处理机的数目没有任何要求和限制)6.Aprocessremainsinsideitscriticalsectionfor6.Aprocessremainsinsideitscriticalsectionforafinitetimeonly(afinitetimeonly(一个进程驻留在它的临界区中的一个进程驻留在它的临界区中的一个进程驻留在它的临

21、界区中的一个进程驻留在它的临界区中的时间必须是有限的确时间必须是有限的确时间必须是有限的确时间必须是有限的确)RequirementsforMutualExclusion(互斥的要求)(互斥的要求)空闲让进空闲让进忙则等待忙则等待有限等待有限等待让权等待让权等待ApproachesofMutualExclusion(互斥的方法)(互斥的方法)Software Approaches(软件方法)软件方法)软件方法)软件方法)HardwareSupportSemaphoresMonitorsMessagePassing5.2 Software ApproachesMemoryaccesslevelA

22、ccesstothesamelocationinmainmemoryareserializedbysomesortofmemoryarbiterDekkersAlgorithmPetersonsAlgorithmDekkersAlgorithm:FirstAttemptBusyWaitingProcessisalwayscheckingtoseeifitcanProcessisalwayscheckingtoseeifitcanenterthecriticalsectionenterthecriticalsectionProcesscandonothingproductiveuntilitPr

23、ocesscandonothingproductiveuntilitgetspermissiontoenteritscriticalsectiongetspermissiontoenteritscriticalsectionDekkersAlgorithm:FirstAttempt(第(第1种尝试)种尝试)图图图图5.25.25.25.2“爱斯基摩人的小屋协议爱斯基摩人的小屋协议爱斯基摩人的小屋协议爱斯基摩人的小屋协议”(P198P198P198P198)门门门门和和和和小小小小屋屋屋屋很很很很小小小小,每每每每次次次次只只只只能能能能容容容容纳纳纳纳一一一一个个个个人人人人进进进进入入入入,

24、小屋内有一个标志黑板小屋内有一个标志黑板小屋内有一个标志黑板小屋内有一个标志黑板进进进进程程程程申申申申请请请请进进进进入入入入临临临临界界界界区区区区,必必必必须须须须首首首首先先先先进进进进入入入入小小小小屋屋屋屋并并并并检检检检查黑板标志是否是它查黑板标志是否是它查黑板标志是否是它查黑板标志是否是它 是是,离离 开开 小小 屋屋,进进 入入 临临 界界 区区,执执 行行 完完 毕毕,退退 出出 临临 界界 区区,并返回小屋,修改黑板标志为其他进程并返回小屋,修改黑板标志为其他进程 否否,反反复复进进入入小小屋屋,检检查查黑黑板板标标志志,直直到到标标志志是是它它自自己己小黑版指示P1可进

25、varturn:0.1;共享的全局变量共享的全局变量PROCESS0PROCESS1whileturn0donothing;whileturn1donothing;turn:=1;turn:=0;解析解析解析解析 保证了互斥,但存在问题:进程保证了互斥,但存在问题:进程保证了互斥,但存在问题:进程保证了互斥,但存在问题:进程“忙等忙等忙等忙等”进入临界进入临界进入临界进入临界区;若黑板标志修改失败,其他进程区;若黑板标志修改失败,其他进程区;若黑板标志修改失败,其他进程区;若黑板标志修改失败,其他进程永久阻塞永久阻塞永久阻塞永久阻塞DekkersAlgorithmSecondAttempt(第

26、(第2种尝试)种尝试)EachprocesscanexaminetheothersstatusbutcannotalteritWhenaprocesswantstoenterthecriticalsection,ItcheckstheotherprocessesfirstIfnootherprocessisinthecriticalsection,itsetsitsstatusforthecriticalsection图图 5.3 5.3 每每 个个 人人 有有 一一 个个 自自 己己 的的 小小 屋屋 (P199P199)每每个个人人只只能能检检查查,但但不不能能修修改改其其他他人人的的黑板

27、标志黑板标志若若某某人人申申请请进进入入临临界界区区,首首先先检检查查对对方方黑板是否为黑板是否为“falsefalse”是是,修修改改自自己己小小屋屋黑黑板板值值为为“truetrue”,进进入入临临界界区区执执行行,完完毕毕,恢恢复复黑黑板板值值为为“falsefalse”否,反复进入小屋,检查黑板标志,直否,反复进入小屋,检查黑板标志,直到标志是到标志是“falsefalse”varflag:array0.1ofboolean:false;共共享享全全局局变变量量PROCESS0PROCESS1whileflag1whileflag0donothing;donothing;flag0:=

28、true;flag1:=true;flag0:=false;flag1:=false;若若进进程程执执行行完完临临界界区区,恢恢复复自自己己标标志志为为“falsefalse”失败失败,则其他进程,则其他进程永久阻塞永久阻塞。Thismethoddoesnotguaranteemutualexclusion分析以下执行顺序:分析以下执行顺序:P0P0P0P0:当:当:当:当flag1=false;flag1=false;flag1=false;flag1=false;执行执行执行执行while flag1;while flag1;while flag1;while flag1;P1P1P1P1

29、:当:当:当:当flag0=false;flag0=false;flag0=false;flag0=false;执行执行执行执行while flag0;while flag0;while flag0;while flag0;P0P0P0P0:置:置:置:置flag0=true flag0=true flag0=true flag0=true 执行执行执行执行;P1P1P1P1:置:置:置:置flag1=true;flag1=true;flag1=true;flag1=true;执行执行执行执行;DekkersAlgorithmThirdAttempt(第(第3种尝试)种尝试)Setflagto

30、entercriticalsectionbeforecheckotherprocessesIfanotherprocessisinthecriticalsectionwhentheflagisset,theprocessisblockeduntiltheotherprocessreleasesthecriticalsectionvarflag:array0.1ofboolean:false;共享的全局变量共享的全局变量PROCESS0PROCESS1flag0:=true;flag1:=true;whileflag1whileflag0donothing;donothing;flag0:=fa

31、lse;flag1:=false;解解析析:如如果果两两个个进进程程在在执执行行while之之前前都都把把flag设设置置成成true,那那么么每每个个进进程程都都会会以以为为对对方方进进入入了了临临界界区区,使使自自己己处于阻塞,从而导致死锁。处于阻塞,从而导致死锁。首先设标志DekkersAlgorithmFourthAttempt(第(第4种尝试)种尝试)AprocesssetsitsflagtoindicateitsdesiretoenteritscriticalsectionbutispreparedtoresettheflagOtherprocessesarechecked.Ift

32、heyareinthecriticalregion,theflagisresetandlatersettoindicatedesiretoenterthecriticalregion.Thisisrepeateduntiltheprocesscanenterthecriticalregion.varflag:array0.1ofboolean:false;共享的全局变量共享的全局变量PROCESS0PROCESS1flag0:=true;flag1:=true;whileflag1dowhileflag0dobeginbeginflag0:=false;flag1:=false;flag0:=

33、true;flag1:=true;end;end;flag0:=false;flag1:=false;重置标志 试按以下顺序执行:试按以下顺序执行:试按以下顺序执行:试按以下顺序执行:P0P0:置:置:置:置flag0=true;flag0=true;P1P1:置:置:置:置flag1=true;flag1=true;P0P0:执行:执行:执行:执行whileflag1;whileflag1;P1P1:执行:执行:执行:执行whileflag0;whileflag0;P0P0:置:置:置:置flag0=false;flag0=false;P1P1:置:置:置:置flag1=false;flag

34、1=false;P0P0:置:置:置:置flag0=true;flag0=true;P1P1:置:置:置:置flag1=true;flag1=true;解析:检查其它进程,然后重置,再检查,再重置解析:检查其它进程,然后重置,再检查,再重置解析:检查其它进程,然后重置,再检查,再重置解析:检查其它进程,然后重置,再检查,再重置,重重重重置置置置序序序序列列列列可可可可以以以以无无无无线线线线延延延延伸伸伸伸,任任任任何何何何一一一一个个个个进进进进程程程程都都都都不不不不能能能能进进进进入入入入自自自自己己己己的临界区。的临界区。的临界区。的临界区。(这种现象称为这种现象称为这种现象称为这种现

35、象称为:互斥礼让互斥礼让互斥礼让互斥礼让)DekkersAlgorithm:CorrectSolution为了解决为了解决为了解决为了解决“互斥礼让互斥礼让互斥礼让互斥礼让”问题问题问题问题,给出给出给出给出:DekkersAlgorithm:CorrectSolution该算法的主要思想是该算法的主要思想是该算法的主要思想是该算法的主要思想是:需要两个变量需要两个变量需要两个变量需要两个变量:1.turn:1.turn:指出应该哪一个进入指出应该哪一个进入指出应该哪一个进入指出应该哪一个进入 thecriticalsectionthecriticalsectionturn=0turn=0表示

36、表示表示表示P0P0可以进入可以进入可以进入可以进入turn=1turn=1表示表示表示表示P1P1可以进入可以进入可以进入可以进入2.Flag:2.Flag:指出当前哪一个在临界区指出当前哪一个在临界区指出当前哪一个在临界区指出当前哪一个在临界区Flag=0Flag=0表示表示表示表示P0P0当前在临界区当前在临界区当前在临界区当前在临界区Flag=1Flag=1表示表示表示表示P1P1当前在临界区当前在临界区当前在临界区当前在临界区图图图图5.45.45.45.4增加一个带准许进入临界区标志的小屋增加一个带准许进入临界区标志的小屋增加一个带准许进入临界区标志的小屋增加一个带准许进入临界区标

37、志的小屋 指示P0可以进入临界区代码描述(代码描述(P203,P203,图图5.55.5)var flag:array0.1 of boolean;turn:0.1;/准许进入临界区标志变量准许进入临界区标志变量beginflag0:=false;flag1:=false;turn:1;/设P1进程在临界区parbegin p0;p1;parendend procedure P0;Begin repeatflag0:true;/初值为真,P0希望进入临界区。while flag1 do /查P1进程标志if turn=1 then /turn为1,表明P1进程在临界区 begin flag0:

38、=false;while turn=1 /当turn=0,表明P0进程可以进入临界区 do nothing;flag0:true;/设标志为真,P0进入临界区 end;critical section ;turn:=1;/指定P1进程可进临界区 flag0:false;remainder foreverendprocedure P1;beginrepeatflag1:=true;while flag0 do if turn=0 then begin flag 1:false;while turn0 do nothing;flag1:true end;critical section;turn:

39、0;flag1:false;foreverend解析(解析(分析分析分析分析P0P0P0P0的执行)的执行)的执行)的执行)1.置flag0:=true;2.执行while flag1 语句有两种情况:(1)当flag1=false,P0进入临界区,执行完成,置turn:=1;flag0:=false;(2)当flag1=true,检查turn的值,turn的值又有两种情况:turn=1 P0忙等 turn=0 P1已退出(但还未修改flag的值),P0立即进入 PetersonsAlgorithm提提提提出出出出简简简简单单单单的的的的互互互互斥斥斥斥方方方方案案案案:turnturntur

40、nturn解解解解决决决决同同同同时时时时的的的的冲冲冲冲突突突突,FlagFlagFlagFlag指指指指示示示示进进进进程程程程是是是是否否否否在在在在临临临临界界界界区区区区。对对对对两两两两参参参参量量量量同同同同时时时时控控控控制,交替进入临界区执行。制,交替进入临界区执行。制,交替进入临界区执行。制,交替进入临界区执行。代码描述(图代码描述(图代码描述(图代码描述(图5.65.65.65.6,P204P204P204P204)解析:解析:解析:解析:分析分析分析分析P0P0P0P0的执行:的执行:的执行:的执行:1.1.1.1.置置置置flag0:=true;flag0:=true

41、;flag0:=true;flag0:=true;阻止阻止阻止阻止P1P1P1P1进入临界区进入临界区进入临界区进入临界区 2.2.2.2.执行执行执行执行while flag1while flag1while flag1while flag1 当当当当flag1=flag1=flag1=flag1=falsefalsefalsefalse时时时时,P0,P0,P0,P0进进进进 入入入入,执执执执 行行行行 完完完完 成成成成,置置置置flag0:=false;flag0:=false;flag0:=false;flag0:=false;当当当当flag1=trueflag1=truefla

42、g1=trueflag1=true时时时时,P0,P0,P0,P0阻塞,等待阻塞,等待阻塞,等待阻塞,等待P1P1P1P1退出退出退出退出var flag:array 0.1of boolean;turn:0.1;begin flag0:false;flag1:false;turn:=1;/假设P1进程可先进临界区 parbegin P0;P1;/见下页 parend end Figure5.6 Petersons Algorithm for Two Processes procedure P0;begin repeat flag0:=true;/P0进程希望进临界区 turn:1;while

43、 flag1 and turn1 do nothing;critical section;flag0:=false;forever end;procedure P1;begin repeat flag1:=true;turn:0;while flag0 and turn=0 do nothing ;flag1:=false;remainder forever end;ApproachesofMutualExclusionSoftwareApproachesHardware SupportSemaphoresMonitorsMessagePassing5.3MutualExclusion:Har

44、dwareSupport(互斥:硬件支持)(互斥:硬件支持)InterruptDisabling(中断屏蔽)(中断屏蔽)Aprocessrunsuntilitinvokesanoperating-Aprocessrunsuntilitinvokesanoperating-systemserviceoruntilitisinterruptedsystemserviceoruntilitisinterrupted(进程运行到它调用系统服务或被中断为止)(进程运行到它调用系统服务或被中断为止)(进程运行到它调用系统服务或被中断为止)(进程运行到它调用系统服务或被中断为止)Disablinginter

45、ruptsguaranteesmutualDisablinginterruptsguaranteesmutualexclusionexclusion(屏蔽中断以确保互斥)(屏蔽中断以确保互斥)(屏蔽中断以确保互斥)(屏蔽中断以确保互斥)Multiprocessor(Multiprocessor(在多处理机中在多处理机中在多处理机中在多处理机中)disablinginterruptsononeprocessorwilldisablinginterruptsononeprocessorwillnotguaranteemutualexclusionnotguaranteemutualexclusio

46、n实现互斥的过程 While(true)/*屏蔽中断 */*临界区 */*启用中断 */*其余部分 */SpecialMachineInstructions(专门的机器指令)在一个多处理器配置中,几个处理器共享访问一个公共的主存。在这种情况下,不存在主从关系,处理器的间行为是无关的,表现出一种对等关系,处理器之间没有支持互斥的中断机制。处理器的设计者提出了一些机器指令,用于保证两个动作的原子性。如在一个取指令周期中对一个存储器单元的读和写,或者读和测试。由于这些动作在一个指令周期中执行,它们不会受到其他指令的干扰。两种最常见的指令描述如下:两种最常见的指令描述如下:1.TestandSetIn

47、structionTestandSetInstructionfunctiontestset(vari:integer):boolean;functiontestset(vari:integer):boolean;beginbeginifi=0thenifi=0thenbeginbegini:=1;i:=1;testset:=true;testset:=true;endendelsetestset:=false;elsetestset:=false;end.end.例如:例如:例如:例如:Figure5.7a(p206)Figure5.7a(p206)program mutualexclusio

48、n;const n.;(*number of processes*);var bolt:integer;procedure PO(i:integer);begin repeat repeat nothing until testset(bolt);当bolt为0时,进入临界区,;bolt:0;foreverend;begin(*main program*)bolt:=0;parbegin P(1);P(2);.P(n);parendend (a)Test and Set Instruction 2.ExchangeInstructionprocedureexchange(procedureex

49、change(varr:register;varm:memory);varr:register;varm:memory);vartemp;begintemp:=m;m:=r;r:=temp;end.例如:例如:例如:例如:Figure5.7b(p206)Figure5.7b(p206)program mutualexclusion;const n=.;(*number of processes);var bolt:integer;procedure P(i:integer);var keyi:integer;begin repeat keyi:1;repeat exchange(keyi,bo

50、lt)until keyi=0;critical section ;exchange(keyi,bolt);remainder foreverend;begin(*main program*)bolt:0;parbegin P(1);P(2);.P(n);parendend.(b)Exchange Intruction AdvantagesofMachineInstructionsAdvantagesofMachineInstructions(机器指令的优点机器指令的优点机器指令的优点机器指令的优点)ApplicabletoanynumberofprocessesoneitherApplica

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服