习题1、有两个优先级相同的进程P1和P2,各自执行的操作如下,信号量S1和S2初值均为0
试问P1、P2并发执行后,x、y、z的值各为多少
P1:P2:beginbeginy:=1;x:=1;y:=y+2;x:=x+1;V(S1);P(S1);z:=y+1;x:=x+y;P(S2);V(S2);y:=z+yz:=z+x;end
现对进程语句进行编号,以方便描述
P1:P2:beginbeginy:=1;x:=1;①⑤y:=y+2;x:=x+1;②⑥V(S1);P(S1);z:=y+1;x:=x+y;③⑦P(S2);V(S2);y:=z+yz:=z+x;④⑧end
•①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的
接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到x=5,y=3
按Bernstein条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到z=4
最后,语句④和⑧并发执行,最后结果为:•语句④先执行,再执行⑧:x=5,y=7,z=9
•语句⑧先执行,再执行④:x=5,y=12,z=9
•2、在UNIX系统中运行以下程序,最多可产生出多少进程
画出进程家属树
main(){fork();/*←pc(程序计数器),进程Afork();fork();}解:首先采用fork()创建的子进程,其程序是复制父进程的;其次,父、子进程都从调用后的那条语句开始执行
当进程A执行后,派生出子进程B,当进程A、B执行后,各派生出子进程C、D,当进程A、B、C、D执行后,各派生出子进程E、F、G、H
这时进程A共派生出7个子进程
ABCEDFGH3、有一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B);(2)-N<A产品数量-B产品数量<M
其中,N和M是正整数
试用P、V操作描述产品A与产品B的入库过程