GATE - 2003 | OS | Suppose we want to synchronize two concurrent processes

GATE - 2003 | OS | Suppose we want to synchronize two concurrent processes
Posted on 23-02-2022

GATE - 2003 [Operating System]

Questions:

Suppose we want to synchronize two concurrent processes P and Q using binary semaphores S and T. The code for the processes P and Q is shown below.

Process P:

while (1) {

W:

   print '0';

   print '0';

X:

}

       

Process Q:

while (1) {

Y:

   print '1';

   print '1';

Z:

}

Synchronization statements can be inserted only at points W, X, Y and Z Which of the following will ensure that the output string never contains a substring of the form 01^n0 or 10^n1 where n is odd?

A

P(S) at W, V(S) at X, P(T) at Y, V(T) at Z, S and T initially 1

B

P(S) at W, V(T) at X, P(T) at Y, V(S) at Z, S and T initially 1

C

P(S) at W, V(S) at X, P(S) at Y, V(S) at Z, S initially 1

D

V(S) at W, V(T) at X, P(S) at Y, P(T) at Z, S and T initially 1

  

Solution:

Option (C) is Correct.

Here to print the required output only one semaphore is enough, if we initialize two at a time then they will run concurrently and leads the processing error.

Thank You