4.2 Deadlock Detection
4.2 Deadlock Detection
Deadlock Detection-
Using Resource Allocation Graph, it can be easily detected whether system is in
a Deadlock state or not.
The rules are-
Rule-01:
In a Resource Allocation Graph where all the resources are single instance,
If a cycle is being formed, then system is in a deadlock state.
If no cycle is being formed, then system is not in a deadlock state.
Rule-02:
In a Resource Allocation Graph where all the resources are NOT single instance,
If a cycle is being formed, then system may be in a deadlock state.
Banker’s Algorithm is applied to confirm whether system is in a deadlock state or not.
If no cycle is being formed, then system is not in a deadlock state.
Presence of a cycle is a necessary but not a sufficient condition for the occurrence of
deadlock.
Problem-01:
Consider the resource allocation graph in th
the figure-
Method-01:
The given resource allocation graph is single instance with a cycle contained in it.
Thus, the system is definitely in a deadlock state.
Method-02:
Using the given resource allocation graph, we have
have-
Allocatio
Allocation Request(Need)
R1 R2 R1 R2
Process P1 1 0 0 1
Process P2 0 1 1 0
Available = [ R1 R2 ] = [ 0 0 ]
Now,
There are no instances available currently and both the processes require a resource to
execute.
Problem-02:
Consider the resource allocation graph in the figure
figure-
Allocation Request(Need)
R1 R2 R1 R2
Process P1 1 0 0 1
Process P2 0 1 1 0
Process P3 0 1 0 0
Available = [ R1 R2 ] = [ 0 0 ]
Then,Available
=[00]+[01]
=[01]
Step-02:
With the instances available currently, only the requirement of the process P1 can be
satisfied.
So, process P1 is allocated the requested resources.
It completes its execution and then free up the instances of resources held by it.
Then-Available
=[01]+[10]
=[11]
Step-03:
With the instances available currently, the requirement of the process P2 can be satisfied.
So, process P2 is allocated the requested resources.
It completes its execution and then free up the instances of resources held by it.
Then-Available= [ 1 1 ] + [ 0 1 ]
=[12] Thus,
There exists a safe sequence P3, P1, P2 in which all the processes can be executed.
So, the system is in a safe state
state.
Problem-03:Consider
Consider the resource allocation graph in the figure
figure-
The given resource allocation graph is multi instance with a cycle contained in it.
So, the system may or may not be in a deadlock state.
Allocation Need
R1 R2 R3 R1 R2 R3
Process P0 1 0 1 0 1 1
Process P1 1 1 0 1 0 0
Process P2 0 1 0 0 0 1
Process P3 0 1 0 0 2 0
Available = [ R1 R2 R3 ] = [ 0 0 1 ]
Step-01:
With the instances available currently, only the requirement of the process P2 can be
satisfied.
So, process P2 is allocated the requested resources.
It completes its execution and then free up the instances of resources held by it.
Then-
Available
=[001]+[010]
=[011]
Step-02:
Then-
Available
=[011]+[101]
=[112]
Step-03:
With the instances available currently, only the requirement of the process P1 can be
satisfied.
So, process P1 is allocated the requested resources.
It completes its execution and then free up the instances of resources held by it.
Then-
Available
=[112]+[110]
=[222]
Step-04:
With the instances available currently, the requirement of the process P3 can be satisfied.
So, process P3 is allocated the requested resources.
It completes its execution and then free up the instances of resources held by it.
Then-
Available
=[222]+[010]
=[232]
Thus,
There exists a safe sequence P2, P0, P1, P3 in which all the processes can be executed.
So, the system is in a safe state.