Consider the following threads, T1, T2, and T3 executing on a single processor, synchronized using three binary semaphore variables, S1, S2, and S3, operated upon using standard wait() and signal(). The threads can be context switched in any order and at any time. 

T1T2T3
while(true){
wait(S3);
print("C");
signal(S2);
}
while(true){
wait(S1);
print("B");
signal(S3);
}
while(true){
wait(S2);
print("A");
signal(S1);
}

Which initialization of the semaphores would print the sequence BCABCABCA….? 

A.

S1 = 1; S2 = 1; S3 = 1

B.

S1 = 1; S2 = 1; S3 = 0

C.

S1 = 1; S2 = 0; S3 = 0

D.

S1 = 0; S2 = 1; S3 = 1

Solution:

As T2 should execute first, in order to print 'B'.

S1 must be 1 and S2 and S3 must be 0.