-1

三个并发进程 X、Y 和 Z 执行访问和更新某些共享变量的三个不同代码段。进程X对信号量a、b、c执行P操作(即等待);进程 Y 对信号量 b、c 和 d 执行 P 操作;进程 Z 在进入各自的代码段之前对信号量 c、d 和 a 执行 P 操作。在完成其代码段的执行后,每个进程在其三个信号量上调用V操作(即信号)。所有信号量都是初始化为 1 的二进制信号量。
以下哪一项代表进程调用 P 操作的无死锁顺序?
(A) X:P(a)P(b)P(c) , Y:P(b)P(c)P(d) , Z:P(c)P(d)P(a)
(B) X:P(b)P(a)P(c) , Y:P(b)P(c)P(d) , Z:P(a)P(c)P(d)
(C) X:P(b)P(a)P(c) , Y:P(c)P(b)P(d) , Z:P(a)P(c)P(d)
(D) X:P(a)P(b)P(c) , Y:P(c)P(b)P(d) , Z:P(c)P(d)P(a)

任何人都可以为答案提供一些解释吗?

4

1 回答 1

4

答案是(B),因为这是唯一一个所有进程都以相同顺序打开锁的情况。

(A) XP(a)那么P(c)Z那么P(c)那么P(a)可以Xa正在 等待c并且Z可以 有c并且 正在 等待a

In (B), P(a)is before P(c)in Xand Z, P(b)is before P(c)in XandYP(c)is before P(d)in YandZ

(C),P(b)和是和P(c)中的问题XY

(D),P(a)P(c)是问题XZP(b)P(c)XY

我在一个存在文件锁定问题的系统上工作。解决方案是确保所有进程以相同的顺序打开文件,因此我们选择按字母顺序打开它们。

于 2013-07-19T20:17:08.117 回答