Deadlocks Final
Deadlocks Final
Pi
Rj
Pi is holding an instance of Rj – assignment edge
Pi
Rj
Eg of RAG
P={P1,P2,P3}
R={R1,R2,R3,R4}
E={P1->R1, P2->R3, R1->P2,R2->P2, R2-
>P1, R3->P3 }
Resource instances
1 instance of R1
2 instances of R2
1 instance of R3
3 instances of R4
No cycle hence no
deadlock
It can be shown that if the graph contains no
cycles, then no process in the system is
deadlocked.
If the graph does contain a cycle, then a deadlock
may exist.
Cycles:
P1R1P2R3P3R2P1
P2R3P3R2P2
Cycle:
P1R1P3R2P1
There is no deadlock:
P4 may release its instance on resource type
R2. That resource can then be allocated to P3,
breaking the cycle.
Necessary and sufficient
conditions for
deadlock
• A cycle is a necessary condition for a
deadlock to occur.
• But if a graph contains a cycle then a
deadlock may or may not exist.
• Hence presence of a cycle is a necessary
but not a sufficient condition for the
existence of a deadlock
What is a knot?
A knot K in a graph is a nonempty set of
nodes such that for every node x in K, all
nodes in K and only the nodes in k are
reachable from x.
P1
R2 R1
P2
P3
R2
R1
P2
P3
P1
R2
R1
P3 P2
P3 P2
P2
P3
There are 3 different methods for dealing with the
deadlock problem :
Use a protocol to ensure that the system will never
recover.(Deadlock Detection)
1. Deadlock Prevention :
A set of methods for ensuring that at least one of the
necessary conditions cannot hold.
2. Deadlock avoidance :
Predicts the future state of the system for avoiding
allocations that can eventually lead to a deadlock.
3. Deadlock detection :
If a system does not employ either a deadlock
prevention or deadlock avoidance algorithm, then a
deadlock situation may occur.
Hence an algorithm can be used to determine
whether a deadlock has occurred, and an algorithm
can be used to recover from deadlock.
For a deadlock to occur, each of the 4 necessary
conditions must hold.
By ensuring that at least one of the 4 conditions
cannot hold, occurrence of deadlock can be
prevented.
Examining each of the 4 necessary conditions
separately…….
1. Mutual exclusion
For mutual exclusion to not happen, resources
should be sharable.
But printer cannot be simultaneously shared by
several processes.
Read only files are an example of sharable resource.
If several processes attempt to open a read only file
at the same time, they can be granted simultaneous
access to the file.
A process never waits for a sharable resource.
In general , however, we deadlocks cannot be
prevented by denying mutual exclusion condition.
Some resources are intrinsically non sharable.
2. Hold and wait
This method denies the hold and wait condition by
ensuring that whenever a process requests a resource, it
does not hold any other resources.
One of the following policies are used:
First…
• A process must request all of the resources before it
begins execution.
• If all the needed resources are available, they are
allocated to the process
• If one of the requested resources are not available,
none will be allocated and the process would just wait.
Second…
• Instead of requesting all its resources before its execution
◦ If Pi‘s resource needs are not immediately available, then Pi can wait
until all Pj have finished
Max 4 5 6
Holds 2 2 2
Free =2
P1 P2 p3
Eg
Max 4 5 6
Holds 4 2 2
Free =0
P1 P2 p3
Max - 5 6
Holds 0 2 2
Free =4
P1 P2 p3 P1 P2 p3
Max - 5 6 Max - 5 6
Holds 0 5 2 Holds 0 2 6
Free =1 Free =0
P1 P2 p3 P1 P2 p3
Max - - 6 Max - 5 -
Holds 0 0 2 Holds 0 2 0
Free =6 Free =6
Hence the analysis performed shows that this
state is safe because there exists a
sequence of allocations that allows all
processes to complete.
Hence the two safe sequences are (P1,P2,P3)
and (P1, P3, P2).
Hence the initial state is a safe state
because it avoids deadlocks
Suppose system has 12 instances of a particular resource
Maximum Needs Currently Allocated
Need
P0 10 5 5
P1 4 2 2
P2 9 2
7
(i.e. currently 3 free)
At time t0, system is in safe state because there exists a
process sequence that would allow each process to
immediately be allocated its maximum needed resources. .. For
example <P1, P0, P2>
P1 could need 2 more, which results in 1 free, then P1 releases
resulting in 5 free, then P0 could get all its maximum, then P1
releases, for a total of 10 free, then P2 could get his maximum.
P1 5 6 3 2 1 0
P2 8 5 6 3 2 3
P3 4 8 2 3 0 2
P4 7 4 3 3 2 0
P5 4 3 3 1 0 1
Av
R1 R2 R3
3 3 2
P1 5 6 3 2 1 0 3 5 3
P2 8 5 6 3 2 3 5 3 3
P3 4 8 2 3 0 2 1 8 0
P4 7 4 3 3 2 0 4 2 3
P5 4 3 3 1 0 1 3 3 2
Safety Test Algorithm to find whether the new state is safe
:
Current_Avail = Av = [ 3 3 2 ]
Marked
P1 false
P2 false
P3 false
P4 false
P5 false
Since Marked value for all processes is true. Therefore, the system is in
safe state.
The Safe String of processes is {P5,P4,P1,P2,P3}
i.e. The processes can be scheduled in this order, to have a safe state in
the system.
At time t1, if P4 requests 2 more instances of R1 and 2
instances of R3.
Request vector [2 0 2 ]
Executing the request handling algorithm, to find out
whether the request can be granted.
First check if Req4<=Need4. [2 0 2] <= [ 4 2 3 ]
Check if Req4 <= Av. [ 2 0 2 ] <= [ 3 3 2]
Assume to allocate these resources and update the
following
Av=Av-Req4 = [ 3 3 2] –[2 0 2]=[1 3 0 ]
Alloc 4 =Alloc 4 +Req4=[3 2 0 ] + [2 0 2]=[5 2 2]
Need4 = Need4 – Req4=[4 2 3] – [2 0 2]= [2 2 1]
Av
R1 R2 R3
1 3 0
Find Need matrix
Process Max Alloc Need
R1 R2 R3 R1 R2 R3 R1 R2 R3
P1 5 6 3 2 1 0 3 5 3
P2 8 5 6 3 2 3 5 3 3
P3 4 8 2 3 0 2 1 8 0
P4 7 4 3 5 2 2 2 2 1
P5 4 3 3 1 0 1 3 3 2
Current_Avail=Av=[1 3 0].
Safe sequence P0 P2 P3 P4 P1
Note : Solution is not unique
Request can be granted
Ex :3
5 processes P0 through P4;
3 resource types:
A (10 instances), B (5instances), and C (7 instances)
Snapshot at time T0:
Allocation Max Available
ABC ABC ABC
P0 010 753 332
P1 200 322
P2 302 902
P3 211 222
P4 002 433
P1-3 3 2 + 2 0 0 = 5 3 2
P3-5 3 2 + 2 1 1 = 7 4 3
P4-7 4 3 + 0 0 2= 7 4 5
P0- 7 4 5 + 0 1 0 = 7 5 5
P2- 7 5 5 + 3 0 2 =10 5 7
instances.
5 processes(P1…P5)
Max Alloc
R R R R R R R R
1 2 3 4 1 2 3 4
P1 3 1 2 5 P1 1 0 2 1
P2 3 2 5 7 P2 1 1 2 0
P3 2 6 3 1 P3 1 2 3 1
P4 5 4 9 2 P4 1 1 1 1
How does the OS react if P5 requests 7 instances of R4.
P5 1 3 8 9 P5 1 0 2 2
Can this request be granted?
Need
R R R R
1 2 3 4
P1 2 1 0 4
P2 2 1 3 7
P3 1 4 0 0
P4 4 3 8 1
P5 0 3 6 7
Av < 1 4 0 7 >
If P5 requests 7 instances of R4
Req <0 0 0 7>
Req<=Need5----yes
Req<=Av -----yes
allocated to a process.
If a system is not able to implement neither deadlock
prevention nor a deadlock avoidance algorithm, it may
lead to a deadlock situation.
For deadlock detection, the system must provide
◦ An algorithm that examines the state of the system to
detect whether a deadlock has occurred
◦ And an algorithm to recover from the deadlock
resource.
Single Instance of Each Resource Type
Requires the creation and maintenance of
a wait-for graph
◦ Consists of a variant of the resource-allocation graph
◦ The graph is obtained by removing the resource nodes from a
resource-allocation graph and collapsing the appropriate edges
◦ Consequently all nodes are processes
◦ Pi Pj if Pi is waiting for Pj.
No deadlock
Suppose that process P2 makes an additional request for
an instance of type C. The request matrix ---
Request
ABC
P0 0 0 0
P1 2 0 2
P2 0 0 1
P3 1 0 0
P4 0 0 2
System is deadlocked.
Although resources held by P0 are reclaimed , the number of available
resources is not sufficient to fulfill the requests of the other processes.
Ex: 2
4 resources total res=(4 2 3 1)
A= 0 0 1 0 R= 2 0 0 1
2001 1010
0120 2100
Av=( 2 1 0 0)
P3 – 2 1 0 0 + 0 1 2 0= 2 2 2 0
P2- 2 2 2 0 + 2 0 0 1= 4 2 2 1
P1- 4 2 2 1 + 0 0 1 0= 4 2 3 1
SAFE state
Current state is not deadlocked
1. Process Termination
Two methods used.
Both the methods reclaims all resources allocated to the
terminated processes.
a) Abort all deadlocked processes :
This method clearly will break the deadlock cycle, but at
great
expense; the deadlocked processes may have computed for
along time, and the results of these partial computations
must
be discarded and probably will have to be recomputed later
b) Abort one process at a time until the deadlock cycle is
eliminated.
This method incurs considerable overhead, since, after each
process is aborted, a deadlock detection algorithm must be
invoked to determine whether any processes are still
deadlocked.
If the partial termination method is used, then we must
determine which deadlocked process (or processes) should
be
terminated.
Many factors may affect which process is chosen,
including: