Consider the following snapshot of a system:
Allocation Max Available
A B C D E A B C D E A B C D E
P0 2 0 0 1 0 4 2 1 2 3 3 3 3 1 2
P1 0 1 2 1 1 3 2 5 2 3
P2 2 1 0 3 1 2 3 1 6 3
P3 1 3 1 2 2 1 4 2 4 4
P4 1 4 3 2 2 3 6 6 5 4
Answer the following questions using the banker’s algorithm:
a. Illustrate that the system is in a safe state by demonstrating an order in which the processes may complete.
b. If a request from process P1 arrives for (1, 1, 0, 0, 1), can the request be granted immediately?
c. If a request from process P4 arrives for (0, 0, 2, 0, 1), can the request be granted immediately?
Expert Answer
the processes may complete.
Ans:
Need = Max – Allocation.
Now, let us see which of the above needs may be met by the Available resources.
P1’s Need are satisfied. So assume we have allocated these resources to P1. P1 completes execution and then releases its resources.
Now Available= <3 3 3 1 2> + <0 1 2 1 1> = <3 4 5 2 3>.
Now, P2’s Need are satisfied. So assume we have allocated these resources to P2. P2 completes execution and then releases its resources.
Now Available= <3 4 5 2 3> + <2 1 0 3 1> = <5 5 5 5 4>.
Now, P3’s Need are satisfied. So assume we have allocated these resources to P3. P3 completes execution and then releases its resources.
Now Available= <5 5 5 5 4> + <1 3 1 2 2> = <6 8 6 7 6>.
Now, P4’s Need are satisfied. So assume we have allocated these resources to P4. P4 completes execution and then releases its resources.
Now Available= <6 8 6 7 6> + <1 4 3 2 2> = <7 12 9 9 8>.
Now, P1, P2, P3 or P4’s Need may be satisfied. Assume we have allocated resources to P0. P0 completes execution and then releases its resources.
Now Available= <7 12 9 9 8> + < 2 0 0 1 0>= <9 12 9 10 8>.
Since there is at least one sequence <P1, P2, P3, P4, P0> that can successfully complete execution, there is no deadlock.
b. If a request from process P1 arrives for (1, 1, 0, 0, 1), can the request be granted immediately?
Ans: To answer this question, first let us assume that the request (1, 1, 0, 0, 1) is granted.
Then Available=<3 3 2 1 2> – <1 1 0 0 1> = < 2 2 2 1 1>.
P0 can still complete with the Available. After it completes,
Available = < 2 2 2 1 1> + <2 0 0 1 1> = <4 2 2 2 2>.
P3 can still finish with the Available. After it completes,
Available = <4 2 2 2 2> + <1 3 1 2 2 > = <5 5 3 4 2>.
P1, P2, or P4 can finish in any order.
Since there is a possible sequence in which all processes can finish even after granting P1’s (1 1 0 0 1) request, the request may be granted immediately.
c. If a request from process P4 arrives for (0, 0, 2, 0 1), can the request be granted immediately?
Ans: To answer this question, first let us assume that the request (0, 0, 2, 0 1) is granted.
Then Available=<3 3 2 1 2> – <0 0 2 0 1> = < 3 3 0 1 3>.
None of the processes P0-P4 can finish with the new Available. So we should defer granting resources to this request.