GATE - 2013 | OS | Three concurrent processes X, Y, and Z execute three different code segments

GATE - 2013 | OS | Three concurrent processes X, Y, and Z execute three different code segments
Posted on 12-02-2022

GATE - 2013 [Operating System]

Question:

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 P operation 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)

  

Solution:

Option (B) is Correct

The trick to check deadlock in the given code proceeds parallelly i.e., first executed the first line of all the processes then executed the second line of all processes, and so on.

Thank You