操作系统课件 ch3-3.2临界区管理.ppt

操作系统课件 ch3-3.2临界区管理.ppt

ID:57000835

大小:152.50 KB

页数:24页

时间:2020-07-26

操作系统课件 ch3-3.2临界区管理.ppt_第1页
操作系统课件 ch3-3.2临界区管理.ppt_第2页
操作系统课件 ch3-3.2临界区管理.ppt_第3页
操作系统课件 ch3-3.2临界区管理.ppt_第4页
操作系统课件 ch3-3.2临界区管理.ppt_第5页
资源描述:

《操作系统课件 ch3-3.2临界区管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.2临界区管理3.2.1互斥与临界区3.2.2实现临界区管理的几种尝试3.2.3实现临界区管理的软件方法3.2.4实现临界区管理的硬件设施3.2.1互斥与临界区(1)并发进程中与共享变量有关的程序段叫“临界区”(CriticalSection),共享变量代表的资源叫“临界资源”(CriticalResource)。互斥与临界区(2)•与同一变量有关的临界区分散在各进程的程序段中,而各进程的执行速度不可预知。•如果保证进程在临界区执行时,不让另一个进程进入临界区,即各进程对共享变量的访问是互斥的,就不会造成与

2、时间有关的错误。互斥与临界区(3)Dijkstra在1965年首先提出临界区的概念。可以用与一个共享变量相关的临界区的语句结构来书写交互的并发进程。互斥与临界区(4)临界区的调度原则:一次至多允许一个进程进入临界区内一个进程不能无限地停留在临界区内一个进程不能无限地等待进入临界区互斥与临界区(5)临界区调度原则无空等待、有空让进、择一而入、算法可行。互斥与临界区(6)临界区的描述sharedvariableregionvariabledostatement临界区的嵌套使用regionxdo[…regionyd

3、o[…]…]regionydo[…regionxdo[…]…]临界区管理的尝试(1)inside1,inside2:Booleaninside1:=false;/*P1不在其临界区内*/inside2:=false;/*P2不在其临界区内*/cobeginprocessP1Beginwhileinside2dobeginend;inside1:=true;临界区;inside1:=false;end;processP2beginwhileinside1dobeginend;inside2=true;临界区;i

4、nside2:=false;end;coend临界区管理的尝试(2)inside1,inside2:boolean;inside1:=false;/*P1不在其临界区内*/inside2:=false;/*P2不在其临界区内*/cobeginprocessP1begininside1:=true;whileinside2dobeginend;临界区;inside1:=false;end;processP2begininside2:=true;whileinside1dobeginend;临界区;inside2

5、:=false;end;coendDekker算法(1)Dekker算法用一个指示器turn来指示应该哪一个进程进入临界区。varinside:array[1..2]ofboolean;turn:integer;turn:=1or2;inside[1]:=false;inside[2]:=false;cobeginprocessP1begininside[1]:=true;whileinside[2]doifturn=2thenbegininside[1]:=false;whileturn=2dobegine

6、nd;inside[1]:=true;end临界区;turn=2;inside[1]:=false;end;Dekker算法(2)Dekker算法(3)processP2begininside[2]:=true;whileinside[1]doifturn=1thenbegininside[2]:=false;whileturn=1dobeginend;inside[2]:=true;end临界区;turn=1;inside[2]:=false;end;coendDekker算法的执行过程描述(1)进程P1(

7、或P2)进入自己的临界区时,把自己的标志位insidei置为true,并检查对方标志位如果对方不在也不想进入临界区,进程Pi可立即进入临界区;如果双方都想进入,咨询指示器turn,若turn为1(或为2),P1(或P2)知道应该自己进入Dekker算法的执行过程描述(2)仅当turn=i(i=1,2)时进程Pi才有权力进入临界区,且在一个进程退出临界区之前,turn值不会改变,能保证互斥进入临界区的要求。turn的值不是1就是2,不可能同时出现两个进程均在while语句中等待而进不了临界区。Peterson算

8、法(1)varinside:array[1..2]ofboolean;turn:integer;turn:=1or2;inside[1]:=false;/*P1不在其临界区内*/inside[2]:=false;/*P2不在其临界区内*/Peterson算法(2)cobeginprocessP1begininside[1]:=true;turn:=2;while(inside[2]andturn=2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。