精品文档---下载后可任意编辑第三章 作业参考答案P181 第 3 题:答:现对进程语句进行编号,以方便描述
P1: P2:begin begin y:=1; ① x:=1; ⑤ y:=y+3; ② x:=x+5; ⑥ V(S1); P(S1); z:=y+1; ③ x:=x+y; ⑦ P(S2); V(S2); y:=z+y ④ z:=z+x; ⑧ end
①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的
接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到 x=10,y=4
按Bernstein 条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到 z=5
最后,语句④和⑧并发执行,这时得到了两种结果为:语句④先执行:x=10,y=9,z=15
语句⑧先执行:x=10,y=19,z=15
此外,还有第三种情况,语句③被推迟,直至语句⑧后再执行,于是依次执行以下三个语句:z:=z+x;z:=y+1;精品文档---下载后可任意编辑 y:=z+y;这时 z 的值只可能是 y+1=5,故 y=z+y=5+4=9,而 x=10
第三种情况为:x=10,y=9,z=5
P181 第 5 题:解:设信号量 empty,mutex;empty:=100;mutex:=1;parbegin读者进入:beginP(empty);P(mutex);登记;P(mutex);End;读者离开:begin P(mutex);撤消登记;V(mutex);V(empty);End;Parend;精品文档---下载后可任意编辑P181 第 6 题:答:实质上是两个进程的同步问题,设信号量 S1 和 S2 分别表示可拣白子和黑子,不失一般性,若令先拣白子
Main( ){ int S1=1, S2=0; CobeginP1( );P2( ); Coend}P182