Skip to content
Related Articles

Related Articles

Algorithms Quiz | SP Contest 1 | Question 10
  • Difficulty Level : Easy
  • Last Updated : 11 Jul, 2018

Here are the two concurrent process A, B with respective codes:

Code A:

while (true) // infinite condition
{
    M :____;
    printf("%c", b);
    printf("%c", b);
    N:____;
}

Code B:

while (true) // infinite condition
{
    O:____;
    printf("%c", a);
    printf("%c", a);
    P:____;
}

What should be the binary semaphore operation on M, N, O, P respectively and what must be the initial values of semaphore X, Y in order to get the output bbaabbaabbaa . . . ?
Where P is down and V is up operation respectively.

(A) M = P(Y), N = V(X), O = P(X), P = V(Y); X = 0, Y = 1;
(B) M = P(Y), N = V(X), O = P(X), P = P(Y); X = Y = 1;
(C) M = P(Y), N = V(Y), O = P(X), P = V(X); X = 1, Y = 0;
(D) M = P(Y), N = V(Y), O = P(X), P = V(X); X = Y = 1;


Answer: (A)

Explanation: In semaphore up is always a successful operation but down is not always successful.
In following concurrent process Operations are:
A: code



while (true) // infinite condition
{
M :P(Y); // Y become 0 successful down operation.
printf("%c", b);
printf("%c", b);
N:V(X); // X become 1 successful up operation.
}

B code:

while (true) // infinite condition
{
O:P(X); // X  become 0 successful down operation.
printf("%c", a);
printf("%c", a);
P:V(Y); // Ybecome 1 successful up operation.
}

Here all operation are successful with intial values of X and Y are 0 and 1 respectively.
So, option (A) is correct.


Quiz of this Question

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :