以下哪一项表示由进程调用P操作的无死锁顺序?

时间:2013-07-16 08:01:05

标签: process operating-system deadlock semaphore

三个并发进程X,Y和Z执行三个不同的代码段,用于访问和更新某些共享变量。进程X对信号量a,b和c执行P操作(即等待);进程Y对信号量b,c和d执行P操作;进程Z在进入各个代码段之前对信号量c,d和a执行P操作。在完成其代码段的执行之后,每个进程在其三个信号量上调用V操作(即信号)。所有信号量都是二进制信号量,初始化为一个 以下哪一项表示由进程调用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)

有人可以为答案提供一些解释吗?

1 个答案:

答案 0 :(得分:4)

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

(A) X确实P(a)然后P(c)Z执行P(c)然后P(a) X a可能有c并等待Zc可能有a并等待(B)

P(a)中,P(c)位于X Z之前P(b) P(c)X位于Y之前P(c) 1}}和P(d)以及Y位于Z(C)

之前的P(b)之前

P(c)XY(D)P(a)

中的问题

P(c)XZ以及P(b)P(c) X中存在Y和{{1}}问题{1}}和{{1}}

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