有两个优先级相同的进程p1和p2,如下,信号量s1,s2的初值均为0,试问p1,p2并发执行结束后,x=? y=? z=?

(进程p1:y=1;y=y+2;v(s1);x=y+1;p(s2);y=z+y.
进程p2:x=1;x=x+1;p(s1);x=x+y;v(s2);z=x+z)
请在明天中午之前给出答案,明天下午就要交作业

现对进程语句进行编号,以方便描述。
P1: P2:
begin begin
y:=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+y ④ z:=z+x; ⑧
end. end.
①、②、⑤和⑥是不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句⑦时,可以得到x=5,y=3。按Bernstein条件,语句③的执行结果不受语句⑦的影响,故语句③执行后得到z=4。最后,语句④和⑧并发执行,最后结果为:
语句④先执行,再执行⑧:x=5,y=7,z=9。
语句⑧先执行,再执行④:x=5 ,y=12,z=9。
温馨提示:内容为网友见解,仅供参考
无其他回答

有两个优先级相同的进程p1和p2,如下,信号量s1,s2的初值均为0,试问p1...
P1: P2:begin begin y:=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+y ④

设有两个优先级相同的进程p1与p2,令信号量s1、s2的初值为0,已知z=2...
x=9 y=7 z=13

设有2个并发执行的进程: P1: S1; P2:S2 利用信号量实现前驱关系S1→S2...
1.有三个进程p1、p2、p3协作解决文件打印问题:系统有两个环形缓冲池,每个缓冲池有n个缓冲区;p1每次将1条记录从磁盘读入缓冲池1,p2每次将1条记录从缓冲池1复制到缓冲池2,p3每次从缓冲池2取出1条记录打印输出。请用信号量机制实现这三个进程的同步。信号量提示:full1、empty1、mutex1、in1、out1;full2、empt...

狄克斯特拉人物介绍
对P1和凹可定义两个信号量S1和S2,初值分别为1和0。进程P1在向缓冲B送人数据前执行P操作P(S1),在送人数据后执行V操作V(S2)。进程P2在从缓冲B读取数据前先执行P操作P(S2),在读出数据后执行V操作V(S1)。当P1往缓冲B送入一数据后信号量S1之值变为0,在该数据读出后S1之值才又变为1,因此在前驱数未读出...

假设两个缓冲区buf1和buf2都是无限大,进程P1向buf1写数据,进程P2向buf2...
semaphore s2 = N; \/\/ buf2比buf1最多多N个 \/\/ 进程P1 void P1() { while(1) { P(s1); \/\/ 申请写入权限,确保不会超过上界M write_to_buf1(); \/\/ 写入一个数据到buf1 V(s2); \/\/ 释放buf2的写入配额 } } \/\/ 进程P2 void P2() { while(1) { P(s2); \/\/ ...

PV操作的解释
对P1和P2可定义两个信号量S1和S2,初值分别为1和0。进程P1在向缓冲B送入数据前执行P操作P(S1),在送入数据后执行V操作V(S2)。进程P2在从缓冲B读取数据前先执行P操作P(S2),在读出数据后执行V操作V(S1)。当P1往缓冲B送入一数据后信号量S1之值变为0,在该数据读出后S1之值才又变为1,因此在前一数未读...

PV操作解释
以P1和P2为例,进程P1在写入缓冲区前执行P操作,写入后执行V操作,而P2反之。通过信号量S1和S2的协同,确保了进程之间的同步,避免了并发错误。信号量是最早解决进程同步和互斥问题的工具,它通过PV操作实现,包括p和v两个操作,以及与之相关的asleep和wakeup过程。信号量的使用涉及两个关键概念:信号量...

触摸屏上的pv表示什么意思
对P1和P2可定义两个信号量S1和S2,初值分别为1和0。进程P1在向缓冲B送入数据前执行P操作P(S1),在送入数据后执行V操作V(S2)。进程P2在从缓冲B读取数据前先执行P操作P(S2),在读出数据后执行V操作V(S1)。当P1往缓冲B送入一数据后信号量S1之值变为0,在该数据读出后S1之值才又变为1...

如何写操作系统原理的PV原语操作?思路是什么啊?
而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S?,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。 利用信号量和PV操作实现进程互斥的一般模型是:进程P1 进程P2 …… 进程Pn…… …… ……P(S); P(S); P(S);...

...用自动分拣系统吧白子和黑子分开。该系统设有两个
实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。var S1,S2:semaphore;S1:=1;S2:=0;cobegin { process P1 begin repeat P(S1);拣白子 V(S2);until false;end process P2 begin repeat P(S2);拣黑子 V(S1);until false;end } coend....

相似回答