Three concurrent processes X, Y, and Z execute three different code segments that access and update certain shared variables. Process X executes the P operation (i.e., wait) on semaphores a,b and c; process Y executes the P operation on semaphores b, c and d; process Z executes the Poperation on semaphores c, d, and a before entering the respective code segments. After completing the execution of its code segment, each process invokes the V operation (i.e., signal) on its three semaphores. All semaphores are binary semaphores initialized to one. Which one of the following represents a deadlock-free order of invoking the P operations by the processes?
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)
Answer:B
Three concurrent processes X, Y, and Z execute three different code segments that access and update certain shared variables. Process X executes the P operation (i.e., wait) on semaphores a,b and c; process Y executes the P operation on semaphores b, c and d; process Z executes the Poperation on semaphores c, d, and a before entering the respective code segments. After completing the execution of its code segment, each process invokes the V operation (i.e., signal) on its three semaphores. All semaphores are binary semaphores initialized to one. Which one of the following represents a deadlock-free order of invoking the P operations by the processes?
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)