Process 以下哪一项表示进程调用P操作的无死锁顺序?
三个并发进程X、Y和Z执行三个不同的代码段,这些代码段访问和更新某些共享变量。进程X对信号量a、b和c执行P操作(即等待);进程Y对信号量b、c和d执行P操作;进程Z在输入相应的代码段之前对信号量c、d和a执行P操作。在完成其代码段的执行后,每个进程调用其三个信号量上的V操作(即signal)。所有信号量都是初始化为1的二进制信号量。Process 以下哪一项表示进程调用P操作的无死锁顺序?,process,operating-system,deadlock,semaphore,Process,Operating System,Deadlock,Semaphore,三个并发进程X、Y和Z执行三个不同的代码段,这些代码段访问和更新某些共享变量。进程X对信号量a、b和c执行P操作(即等待);进程Y对信号量b、c和d执行P操作;进程Z在输入相应的代码段之前对信号量c、d和a执行P操作。在完成其代码段的执行后,每个进程调用其三个信号量上的V操作(即signal)。所有信号量都是初始化为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) 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) 有人能解释一下答案吗?答案是(B),因为这是唯一一个所有进程都以相同顺序打开锁的地方 在
(A)
Xp(A)
然后p(c)
和Zp(c)
然后p(A)
所以X
可以有A
并等待c
和Z
可以有c
并等待A
在(B)
,p(a)
在p(c)
在X
和Z
之前,p(B)
在p(c)
在X
和Y
之前,p(c)
在p(d)
和Z
在(C)
中,p(b)
和p(C)
是X和Y中的问题
在(D)
中,p(a)
和p(c)
是X
和Z
和p(b)
和p(c)
中的问题
我在一个系统上工作,这个系统在文件锁定方面有这样的问题。解决方案是确保所有进程以相同的顺序打开文件,因此我们选择按字母顺序打开它们。是的,您是对的。答案是(B)。但我不明白你的最后一句话。。。你能解释一下为什么要按字母顺序排列吗?因为这里,ans(B)没有字母顺序,顺序不一定是字母顺序,这只是我们使用的惯例。您可以使用任何顺序,只要所有流程使用相同的顺序(答案已编辑)。