题目
有两个优先级相同的并发程序P1和P2,它们的执行过程如下所示,假设,当前信号量s1=0,s2=0.当前的z=2,进程运行结束后,x、y和z的值分别是( )。进程P1 进程P2… …y=1; x=1y=y+2; x=x+1;z=y+1, P(s1);V(S1); x=x+y;P(s2), z=x+z;y=z+y, V(S2);…… ……A. 5,9,9B. 5,9,4C. 5,12,9D. 5,12,4
有两个优先级相同的并发程序P1和P2,它们的执行过程如下所示,假设,当前信号量s1=0,s2=0.当前的z=2,进程运行结束后,x、y和z的值分别是( )。进程P1 进程P2… …y=1; x=1y=y+2; x=x+1;z=y+1, P(s1);V(S1); x=x+y;P(s2), z=x+z;y=z+y, V(S2);……     ……
A. 5,9,9
B. 5,9,4
C. 5,12,9
D. 5,12,4
题目解答
答案
C. 5,12,9
解析
步骤 1:初始化变量
- 初始值:s1=0, s2=0, z=2
- 进程P1和P2的初始值:x=1, y=1
步骤 2:进程P1执行
- y=y+2; y=1+2=3
- z=y+1; z=3+1=4
- P(s1); s1=0-1=-1, 进程P1阻塞
- V(s1); s1=-1+1=0, 进程P1继续执行
- x=x+y; x=1+3=4
- P(s2); s2=0-1=-1, 进程P1阻塞
步骤 3:进程P2执行
- x=x+1; x=1+1=2
- V(s1); s1=-1+1=0, 进程P1继续执行
- y=z+y; y=4+3=7
- V(s2); s2=-1+1=0, 进程P2继续执行
- z=x+z; z=4+4=8
- y=z+y; y=8+7=15
步骤 4:进程P1继续执行
- V(s2); s2=0+1=1, 进程P1继续执行
- x=x+y; x=4+15=19
- z=x+z; z=19+8=27
- y=z+y; y=27+15=42
步骤 5:进程P2继续执行
- x=x+y; x=2+42=44
- z=x+z; z=44+27=71
- y=z+y; y=71+42=113
- 初始值:s1=0, s2=0, z=2
- 进程P1和P2的初始值:x=1, y=1
步骤 2:进程P1执行
- y=y+2; y=1+2=3
- z=y+1; z=3+1=4
- P(s1); s1=0-1=-1, 进程P1阻塞
- V(s1); s1=-1+1=0, 进程P1继续执行
- x=x+y; x=1+3=4
- P(s2); s2=0-1=-1, 进程P1阻塞
步骤 3:进程P2执行
- x=x+1; x=1+1=2
- V(s1); s1=-1+1=0, 进程P1继续执行
- y=z+y; y=4+3=7
- V(s2); s2=-1+1=0, 进程P2继续执行
- z=x+z; z=4+4=8
- y=z+y; y=8+7=15
步骤 4:进程P1继续执行
- V(s2); s2=0+1=1, 进程P1继续执行
- x=x+y; x=4+15=19
- z=x+z; z=19+8=27
- y=z+y; y=27+15=42
步骤 5:进程P2继续执行
- x=x+y; x=2+42=44
- z=x+z; z=44+27=71
- y=z+y; y=71+42=113