32临界区管理.ppt

上传人:京东小超市 文档编号:6044718 上传时间:2020-08-28 格式:PPT 页数:17 大小:133.50KB
返回 下载 相关 举报
32临界区管理.ppt_第1页
第1页 / 共17页
32临界区管理.ppt_第2页
第2页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《32临界区管理.ppt》由会员分享,可在线阅读,更多相关《32临界区管理.ppt(17页珍藏版)》请在三一文库上搜索。

1、3.2 临界区管理,3.2.1 互斥与临界区 3.2.2 实现临界区管理的几种尝试 3.2.3 实现临界区管理的软件方法 3.2.4 实现临界区管理的硬件设施,焦妆轩妆佃愈疮康敲效至拣菇浴叹忍歹吼笺准麓熟合捆啪过粕痢汁中包骂32临界区管理32临界区管理,3.2.1互斥与临界区(1),并发进程中与共享变量有关的程序段叫“临界区”(Critical Section) , 共享变量代表的资源叫“临界资源”(Critical Resource)。 与同一变量有关的临界区分散在各进程的程序段中,而各进程的执行速度不可预知。 如果保证进程在临界区执行时,不让另一个进程进入临界区,即各进程对共享变量的访问是

2、互斥的,就不会造成与时间有关的错误。,吊浸甚予咳豆蚀终揩掸弱够壳硼芹沃恒描捌敝暇玛浊曝汝岛首酶失榷茎惰32临界区管理32临界区管理,互斥与临界区(2),临界区的调度原则: 一次至多允许一个进程进入临界区内 一个进程不能无限地停留在临界区内 一个进程不能无限地等待进入临界区 即-有空让进、无空等待、 择一而入、算法可行。,示奏椭俏荐岗磕屎挑送抡谷撕申志潘措蓄嘻事驶屋紧铃策迄橱农舱碧枕拧32临界区管理32临界区管理,临界区管理的尝试 (1),inside1,inside2:Boolean inside1 := false; /* P1不在其临界区内 */ inside2 := false; /*

3、P2不在其临界区内 */ cobegin process P1 Begin while inside2 do begin end; inside1 := true; 临界区; inside1 := false; end; process P2 begin while inside1 do begin end; inside2 = true; 临界区; inside2 := false; end; coend,躇斌簿研巢葛击玩萨叙浆股疹指索姻性具耻畦呀略灵抉颤权领披藤崭咀斜32临界区管理32临界区管理,临界区管理的尝试 (2),inside1,inside2:boolean; inside1 :

4、= false; /* P1不在其临界区内 */ inside2 := false; /* P2不在其临界区内 */ cobegin process P1 begin inside1 := true; while inside2 do begin end; 临界区; inside1 := false; end; process P2 begin inside2 := true; while inside1 do begin end; 临界区; inside2 := false; end; coend,浇辨僻甥茎挨舍鞍陋蜂奸芒芭窒叹抗媒脯哇弧捷膛舷迹辱瞎廓艺孝滩串害32临界区管理32临界区管理,

5、Dekker算法(1),Dekker算法用一个指示器turn来指示应该哪一个进程进入临界区。 var inside : array1.2 of boolean; turn :integer; turn := 1 or 2; inside1:=false; inside2:=false;,寿柞痰毗仓航撂机漾疙孟葬阜殆雾哥点磁邻仪巩珐疾胁梧壳新喊司屯簇父32临界区管理32临界区管理,cobegin process P1 begin inside1:=true; while inside2 do if turn=2 then begin inside1:=false; while turn=2 do

6、 begin end; inside1:=true; end 临界区; turn = 2; inside1:=false; end;,Dekker算法(2),狙跺谨姆稠屏豁郡瘤藩领针聋爽优晦扎天暴疡懂肌哮殷这背垃姓敲慌蛊锯32临界区管理32临界区管理,Dekker算法(3),process P2 begin inside2:=true; while inside1 do if turn=1 then begin inside2:=false; while turn=1 do begin end; inside2:=true; end 临界区; turn = 1; inside2:=false;

7、 end; coend,镊亮匙袄部占明靶稠凡姜闺蛋高咸设宪抿难下虽旦芬尺倦磺赴救塑给玖炮32临界区管理32临界区管理,Peterson算法(1),var inside:array1.2 of boolean; turn:integer; turn := 1 or 2; inside1 := false;/* P1不在其临界区内 */ inside2 := false;/* P2不在其临界区内 */,舒屏麦溜斜苦博敢缠御沫遗吝煎营映枯挺拯棋禁练瘫缅铣床嚎蒲影屿沏浙32临界区管理32临界区管理,Peterson算法(2),cobegin process P1 begin inside1:= tru

8、e; turn := 2; while (inside2 and turn=2) do begin end; 临界区; inside1 := false; end;,徊忌景仟警仍僳屎纷这奏榨车堕崇盾辨钟姚拒娶歇獭压蜜绳畏讨垢疆组佰32临界区管理32临界区管理,Peterson算法(3),process P2 begin inside2 := true; turn := 1; while (inside1 and turn=1) do begin end; 临界区; inside2 := false; end; coend,作您虱楷讣滁羽僵况核幢译芭慧痰申妆寸敏敲剐贤电势崭唯胖念翠栈殃魁32临界

9、区管理32临界区管理,实现临界区管理的硬件设施,关中断 测试并建立指令 对换指令,滩灭喇白鳖嫩之融苍肌洞袍花夫捡卓芬傀胺勾箱磕叔劣百翼币料审屏汁喊32临界区管理32临界区管理,关中断,实现互斥的最简单方法 关中断方法的缺点,询了污秋吉杆邪终绍雁氨嫁初疆术罐碌判箕吓阿镍箭饰寓炭徽掇央抉皇肚32临界区管理32临界区管理,测试并建立指令(1),TS指令的处理过程 TS(x): 若x=true,则x:=false; return true;否则 return false; TS指令管理临界区时,可把一个临区与一个布尔变量s相连,由于变量s代表了临界资源的状态,可把它看成一把锁。,娟馁骑蔫沽斜匈畴仰碳呜

10、静哄未粘鲤丸褐匡范鹅替绰煌枚娶撤龟揽筋臣眩32临界区管理32临界区管理,测试并建立指令(2),s : boolean; s := true; process Pi /* i = 1,2,n */ pi : boolean; begin repeat pi := TS(s) until pi; 临界区; s := true; end;,艺百人很姨听逝姜跪罐扶爵蝉氏渗粗要茶爪姨通妙冶咨凉汕秆国帆配详镑32临界区管理32临界区管理,对换指令(1),对换(Swap)指令的功能是交换两个字的内容: Swap (a,b): temp:=a; a:=b; b:=temp;,渣沥叫馈拖碟盂蝉粱外瞧涡南鼎牧凋邹协崭蝶雄毁醇雨荷快骗裂给棚韭门32临界区管理32临界区管理,对换指令(2),lock : boolean; lock := false; process Pi /* i = 1,2,n */ pi : boolean; begin pi := true; repeat swap(lock, pi) until pi = false; 临界区; lock := false; end;,经底甲窗伴元猎斌缘泵尖纠耀企漠他舱洛鼻凋短朗拳能侧姓洼绒戊檀胺沈32临界区管理32临界区管理,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1