首页 文章

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

提问于
浏览
-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)

有谁可以请答复一些解释?

1 回答

  • 4

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

    (A) X 确实 P(a) 然后 P(c)Z 确实 P(c) 然后 P(a) 所以 X 可能有 a 并且正在等待 c 并且 Z 可能有 c 并且正在等待 a

    (B) 中, P(a) 位于 X 之前的 XZ 中, P(b) 位于 X 之前的 P(c) 之前且 Y 位于 P(c) 之后且 P(c) 位于 P(d) 之前 Z

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

    (D)P(a)P(c)XZP(b) 以及 P(c)Y 中的问题

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

相关问题