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 |
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