◆例、进程A、B、c依赖于D的結果 ■■■ Ready List ∏人∵ 程的同步与通信 Ready List 例:根据前趋图写出可并发执行的程序: 利用信号量描述前趋关系 var a, b, c, d, e, f, g, h: semaphore: =0,0,0,0,0,0,0,0 P2:S2 选则设置信号量s=0, a Pl: SI: signal(s) 的同步 P2: Wait(s): $2 begin SI; signal(a); signal(b); signal(c); end 记录型信号量机制 begin wait(a); S2; signal(d); end b type semaphore -=re begin wait(b); S3; signal(e), end 系统|遗程的 L: list of process begin wait(e), wait(f), S6; signal( h); end begin wait(g), wait(h); S7; end5 操 作 系 统 | 进 程 的 同 步 与 通 信 25 CUIT 徐虹 例、进程A、B、C依赖于D的结果 操 作 系 统 | 进 程 的 同 步 与 通 信 26 CUIT 徐虹 操 作 系 统 | 进 程 的 同 步 与 通 信 27 CUIT 徐虹 ¾利用信号量描述前趋关系 P1:S1 P2:S2 S1——>S2 则设置信号量s=0, P1:S1;signal(s); P2:Wait(s);S2; 操 作 系 统 | 进 程 的 同 步 与 通 信 28 CUIT 徐虹 1 2 3 4 5 6 7 a b c d e f g h 例:根据前趋图写出可并发执行的程序: var a,b,c,d,e,f,g,h:semaphore := 0,0,0,0,0,0,0,0; 操 作 系 统 | 进 程 的 同 步 与 通 信 29 CUIT 徐虹 begin parbegin begin S1;signal(a); signal(b); signal(c); end begin wait(a); S2; signal(d); end begin wait(b); S3; signal(e); end begin wait(c); S4; signal(f); end begin wait(d); S5; signal(g); end begin wait(e); wait(f); S6 ; signal( h); end begin wait(g); wait(h); S7; end parend end 操 作 系 统 | 进 程 的 同 步 与 通 信 30 CUIT 徐虹 ¾记录型信号量机制 type semaphore = record value:integer; L:list of process; end