临界区管理 互尽与临界区 实现临界区管理的几种尝谜 实现临界区管理的软件方法 实现临界区管理的硬件设施
临界区管理 ⚫ 互斥与临界区 ⚫ 实现临界区管理的几种尝试 ⚫ 实现临界区管理的软件方法 ⚫ 实现临界区管理的硬件设施
互斥与临界区 ●并发进程中与共亨变量有关的程序段 ●对临界区的三个要求 ◇一次至多允许一个选程停留在临界区內 ◇一个进程不能无限地停留在临界区內 ◇一个进程不能无限地等待进入临界区 ●临界区的描迷 shared variable region variable do statement ●临界区的嵌使用 region x do .. region y do.... region y do[…. region x do[……]
互斥与临界区 ⚫并发进程中与共享变量有关的程序段 ⚫对临界区的三个要求 一次至多允许一个进程停留在临界区内 一个进程不能无限地停留在临界区内 一个进程不能无限地等待进入临界区 ⚫临界区的描述 shared variable region variable do statement ⚫临界区的嵌套使用 region x do [ … region y do [ … ] …] region y do [ … region x do [ … ] …]
临界区管理 inside inside: boolean inside false /*P1不在其临界区内*/ inside2:= false;/*P2不在其临界区内*/ process P1 process P2 egIn begin while inside do [ ]i while inside do []; inside 1 true i nsi de2= true 临界区 临界区; ins de1 false: ins ide2 false; en en
临界区管理 inside1,inside2:boolean; inside1 := false; /* P1 不在其临界区内 */ inside2 := false; /* P2 不在其临界区内 */ process P1 begin w h i l e i n s i d e 2 d o [ ]; inside1 := true; 临界区; inside1 := false; end; process P2 begin w h i l e i n s i d e 1 d o [ ]; inside2 = true; 临界区; inside2 := false; end;
临界区管理 ins idel inside: boolean inside:= false /*P1不在其临界区内*/ ins ide2: false /*P2不在其临界区内*/ process P1 process P2 begin beg ins ide1 true ins de2 true while inside do []; while inside do[ 1 临界区; 临界区; ins ide1 fa ai se nside2: false: end end
临界区管理 inside1,inside2:boolean; inside1 := false; /* P1 不在其临界区内 */ inside2 := false; /* P2 不在其临界区内 */ process P1 begin inside1 := true; w h i l e i n s i d e 2 d o [ ]; 临界区; inside1 := false; end; process P2 begin inside2 := true; w h i l e i n s i d e 1 d o [ ]; 临界区; inside2 := false; end;
Dekker算法 o var inside array [1..2 of Boolean; ●Turn: integer; ●turn 1 or 2 o inside [1]:=false o inside 2: =false;
Dekker算法 ⚫ var inside : array[1..2] of Boolean; ⚫ Turn :integer; ⚫ turn := 1 or 2; ⚫ inside[1]:=false; ⚫ inside[2]:=false;