# GATE | Gate IT 2005 | Question 42

• Difficulty Level : Medium
• Last Updated : 28 Jun, 2021

Two concurrent processes P1 and P2 use four shared resources R1, R2, R3 and R4, as shown below.

P1P2
Compute:
Use R1;
Use R2;
Use R3;
Use R4;
Compute;
Use R1;
Use R2;
Use R3;.
Use R4;

Both processes are started at the same time, and each resource can be accessed by only one process at a time The following scheduling constraints exist between the access of resources by the processes:

Attention reader! Don’t stop learning now.  Practice GATE exam well before the actual exam with the subject-wise and overall quizzes available in GATE Test Series Course.

Learn all GATE CS concepts with Free Live Classes on our youtube channel.

• P2 must complete use of R1 before P1 gets access to R1
• P1 must complete use of R2 before P2 gets access to R2.
• P2 must complete use of R3 before P1 gets access to R3.
• P1 must complete use of R4 before P2 gets access to R4.

There are no other scheduling constraints between the processes. If only binary semaphores are used to enforce the above scheduling constraints, what is the minimum number of binary semaphores needed?

(A) 1
(B) 2
(C) 3
(D) 4

Explanation:
We use two semaphores : A and B.
A is initialized to 0 and B is initialized to 1.

```P1:

Compute;
Wait(A);
Use R1;
Use R2;
Signal(B);
Wait(A);
Use R3;
Use R4;
Signal(B);

P2:

Compute;
Wait(B);
Use r1;
Signal(A);
Wait(B);
Use R2;
Use R3;
Signal(A);
Wait(B);
Use R4;
Signal(B);
```

In process p1, initially control will be stuck in while loop of Wait(A) because A = 0.
In process p2, Wait(B) decrements the value of B to 0 . Now, P2 uses the resource R1 and increments the value to A to 1 so that process P1 can enter its critical section and use resource R1.

Thus, P2 will complete use of R1 before P1 gets access to R1.

Now, in P2 values of B = 0. So, P2 can not use resource R2 till P1 uses R2 and calls function Signal(B) to increment the value of B to 1.
Thus, P1 will complete use of R2 before P2 gets access to R2.

Now, semaphore A = 0. So, P1 can not execute further and gets stuck in while loop of function Wait(A).
Process P2 uses R3 and increments the value of semaphore A to 1.Now, P1 can enter its critical section to use R3.
Thus, P2 will complete use of R3 before P1 gets access to R3.

Now, P1 will use R4 and increments the value of B to 1 so that P2 can enter is critical section to use R4.
Thus, P1 will complete use of R4 before P2 gets access to R4.

Thus, option (B) is correct.

Please comment below if you find anything wrong in the above post.

Quiz of this Question

My Personal Notes arrow_drop_up