(7)有如下两个优先级相同的进程P1和P2,已知信号量S1和S2的初值均为0,试问P1、P2并发执行后x、y、z的值各为多少? P1(){ y=1; y=y+3; V(S1); z=y+1; P(S2); y=z+y; P2() { x=1; x=x+5; P(S1); x=x+y; V(S2); z=z+x;
时间: 2023-11-27 07:02:33 浏览: 653
进程并发执行
5星 · 资源好评率100%
在理想情况下,P1和P2应该交替执行。假设P1首先执行,那么:
1. P1执行y=1,结果y=1;
2. P1执行y=y+3,结果y=4;
3. P1执行V(S1),将S1的值加1,此时S1=1;
4. P1执行z=y+1,结果z=5;
5. P1执行P(S2)时因为S2的初值为0,所以P1被阻塞,进入等待状态;
6. P2执行x=1,结果x=1;
7. P2执行x=x+5,结果x=6;
8. P2执行P(S1)时因为S1的值为1,所以P2可以继续执行;
9. P2执行x=x+y,结果x=10;
10. P2执行V(S2)将S2的值加1,此时S2=1;
11. P2执行z=z+x,结果z=15;
12. P2执行完毕,P1被唤醒,继续执行;
13. P1执行y=z+y,结果y=9;
14. P1执行完毕,整个程序结束。
因此,最终的结果是x=10,y=9,z=15。
阅读全文