Deadlock Prevention, Avoidance, and Detection
Deadlock Prevention, Avoidance, and Detection
and Detection
The Deadlock problem
In a computer system deadlocks arise when
members of a group of processes which
hold resources are blocked indefinitely
from access to resources held by other
processes within the group.
Deadlock example
Pi requests one I/O controller and the
system allocates one.
Pj requests one I/O controller and again the
system allocates one.
Pi wants another I/O controller but has to
wait since the system ran out of I/O
controllers.
Pj wants another I/O controller and waits.
Conditions for deadlocks
Mutual exclusion. No resource can be shared by
more than one process at a time.
Hold and wait. There must exist a process that is
holding at least one resource and is waiting to
acquire additional resources that are currently
being held by other processes.
No preemption. A resource cannot be preempted.
Circular wait. There is a cycle in the wait-for
graph.
An example
bridge
bridge
City A City B City A City B
river river
Graph-theoretic models
Wait-for graph.
Resource-allocation graph.
Wait-for graph
P2
P1
P3
P5
P4
Resource allocation graph
P1 P2 P1 P2
r1 r2
P3 P3
Resource allocation graph With deadlock
Without deadlock
Wait-for graph and Resource-
allocation graph conversion
Any resource allocation graph with a single
copy of resources can be transferred to a
wait-for graph.
P1 P1
P3 P2 P3 P2
Strategies for handling
deadlocks
Deadlock prevention. Prevents deadlocks by
restraining requests made to ensure that at least
one of the four deadlock conditions cannot occur.
Deadlock avoidance. Dynamically grants a
resource to a process if the resulting state is safe.
A state is safe if there is at least one execution
sequence that allows all processes to run to
completion.
Deadlock detection and recovery. Allows
deadlocks to form; then finds and breaks them.
Two types of deadlocks
Resource deadlock: uses AND condition.
AND condition: a process that requires resources
for execution can proceed when it has acquired
all those resources.
Communication deadlock: uses OR condition.
OR condition: a process that requires resources
for execution can proceed when it has acquired at
least one of those resources.
P-out-of –Q condition which means that a
process simultaneously requests Q
resources and remains blocked until it is
granted any P of those resources.
AND-OR model, which may specify any
combination of AND and OR models.
E.g. a AND (b OR c).
Deadlock conditions
The condition for deadlock in a system using the
AND condition is the existence of a cycle.
The condition for deadlock in a system using the
OR condition is the existence of a knot.
P3 P3
P1 P2 P4 P4
P1 P2
P5 P5
No deadlock Deadlock
Deadlock Prevention
1. A process acquires all the needed resources
simultaneously before it begins its execution,
therefore breaking the hold and wait condition.
E.g. In the dining philosophers’ problem, each
philosopher is required to pick up both forks at
the same time. If he fails, he has to release the
fork(s) (if any) he has acquired.
Drawback: over-cautious.
2. All resources are assigned unique numbers. A process
may request a resource with a unique number I only if it is
not holding a resource with a number less than or equal to
I and therefore breaking the circular wait condition.
E.g. In the dining philosophers problem, each philosopher
is required to pick a fork that has a larger id than the one
he currently holds. That is, philosopher P5 needs to pick
up fork F5 and then F1; the other philosopher Pi should
pick up fork Fi followed by Fi-1.
Drawback: over-cautions.
3. Each process is assigned a unique priority number. The
priority numbers decide whether process Pi should wait
for process Pj and therefore break the non-preemption
condition.
E.g. Assume that the philosophers’ priorities are based on
their ids, i.e., Pi has a higher priority than Pj if i <j. In this
case Pi is allowed to wait for Pi+1 for I=1,2,3,4. P5 is not
allowed to wait for P1. If this case happens, P5 has to
abort by releasing its acquired fork(s) (if any).
Drawback: starvation. The lower priority one may always
be rolled back. Solution is to raise the priority every time
it is victimized.
4. Practically it is impossible to provide a
method to break the mutual exclusion
condition since most resources are
intrinsically non-sharable, e.g., two
philosophers cannot use the same fork at
the same time.
A Deadlock Prevention Example
Wait-die
Wants Resource Hold Resource
Old process ----- Young process
10 20
Waits
Wants resource Holds resource
Young process 20 Old process 10
Dies
Preempts
Wants resource Hold resource
Waits
An example
Process id priority 1st request length Retry
time interval
P1 2 1 1 1
P2 1 1.5 2 1
P3 4 2.1 2 2
P4 5 3.3 1 1
P5 3 4.0 2 3
Deadlock Avoidance
Four resources ABCD. A has 6 instances, B has 3 instances, C
Has 4 instances and D has 2 instances.
Distributed approaches
Hierarchical approaches
Centralized approaches
Machine 0 Machine 1 Coordinator Coordinator
Holds Wants A S C
A S S C A S C
Wants
Holds
R R R
Holds T T T
B B B
B releases R and then B wants T.
But B wants T reaches coordinator first
and results in false deadlock.
Distributed approaches
A copy of the global wait-for graph is kept
at each site with the result that each site has
a global view of the system.
The global wait-for graph is divided and
distributed to different sites.
Chandy-Misra-Haas distributed
deadlock detection algorithm
(0,8,0)