written 8.5 years ago by
snehalb
• 910
|
|
Need matrix is calculated by subtracting Allocation Matrix from the Max matrix
To check if system is in a safe state
- The Available matrix is $[1 5 2 0]$.
- A process after it has finished execution is supposed to free up all the resources it hold.
- We need to find a safety sequence such that it satisfies the criteria need $Need ≤ Available$.
- Since $Need(P0) ≤ Available$ , we select $P0. [Available]=[Available]+[Allocation(P0)]$
$Available= [1 5 2 0]+ [0 0 1 2]=[1 5 3 2]$
- Need(P2) ≤ Available $→$Available=[1 5 3 2]+[1 3 5 4]=[2 8 8 6]
- Need(P3) ≤ Available$→$ Available=[ 2 8 8 6 ]+[ 0 6 3 2 ]=[2 14 11 8 ]
- Need(P4) ≤ Available$→$Available=[ 2 14 11 8 ]+[0 0 1 4 ]=[ 2 14 12 12 ]
- Need(P1) ≤ Available$→$Available=[ 2 14 12 12 ]+[ 1 0 0 0 ]=[ 3 14 12 12]
- Safe Sequence is <p0,p2,p3,p4,p1>
A request from process P1 arrives for (0,4,2,0)
- System receives a request for P1 for $Req(P1)[ 0 4 2 0 ]$
- First we check if Req(P1) is less than $Need(P1) $→$ [ 0 4 2 0 ]\lt [ 0 7 5 0 ] is true$
- Now we check if Req(P1) is less than $Available $→$[0 4 2 0]\lt[1 5 2 0] is true$.
- So we update the values as:
- $Available=Available-Request=[ 1 5 2 0 ]- [ 0 4 2 0 ]=[ 1 1 0 0 ]$
- $Allocation=allocation(P1)+Request= [ 1 0 0 0 ]+[ 0 4 2 0]=[ 1 4 2 0 ]$
- $Need= Need(P1)-Request=[ 0 7 5 0 ]- [ 0 4 2 0]=[0 3 3 0 ]$
- This is the modified table
- On verifying, we see that the safe sequence still remains the same .The system continues to remain in a safe state.