如下所示,考虑三个并发进程P1,P2和P3,它们访问已初始化为100的共享变量D。 该过程在运行分时操作系统的单处理器系统上执行。如果在三个过程完成执行之后D的最小和最大值分别为X和Y,则Y–X的值为__________。
注意:这是数值类型的问题。
(A) 80
(B) 130
(C) 50
(D)这些都不是答案: (A)
说明:在以下情况下,D的最小值(X)将是可能的,
- P2读取D = 100,已抢占。
- P1执行D = D + 20,D = 120。
- P3执行D = D + 10,D = 130。
- 现在,P2具有D = 100,执行,D = D-50 = 100-50 =50。P2写入D = 50最终值。
因此,D的最小值(X)为50。
在以下情况下,D的最大值(Y)将是可能的,
- P1读取D = 100,已抢占。
- P2读取D = 100,然后执行,D = D-50 = 100-50 = 50。
- 现在,执行P1,D = D + 20 = 100 + 20 = 120。
- 现在,P3读取D = 120,执行D = D + 10,D = 130。 P3写入D = 130最终值。
因此,D的最大值(Y)为130。
所以,
= Y - X
= 130 - 50
= 80
因此,选项(A)是正确的。
这个问题的测验