0% found this document useful (0 votes)
52 views

Deadlock Prevention, Avoidance, and Detection

This document discusses different approaches to handling deadlocks in computer systems, including prevention, avoidance, and detection. Deadlock prevention methods restrain resource requests to ensure at least one deadlock condition cannot occur. Deadlock avoidance dynamically grants resources if the resulting state is safe. Deadlock detection allows deadlocks to form and then finds and breaks them using graph-based algorithms run in centralized, distributed, or hierarchical architectures.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

Deadlock Prevention, Avoidance, and Detection

This document discusses different approaches to handling deadlocks in computer systems, including prevention, avoidance, and detection. Deadlock prevention methods restrain resource requests to ensure at least one deadlock condition cannot occur. Deadlock avoidance dynamically grants resources if the resulting state is safe. Deadlock detection allows deadlocks to form and then finds and breaks them using graph-based algorithms run in centralized, distributed, or hierarchical architectures.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 29

Deadlock Prevention, Avoidance,

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
City A

bridge

river

City B

City A

City B

river

Graph-theoretic models

Wait-for graph.

Resource-allocation graph.

Wait-for graph
P2
P1
P3
P5
P4

Resource allocation graph


P1

P2

r1

P1

P2

r2

P3
Resource allocation graph
Without deadlock

P3
With deadlock

Wait-for graph and Resourceallocation graph conversion

Any resource allocation graph with a single


copy of resources can be transferred to a
wait-for graph.
P1

P3

P1

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.
A knot (K) consists of a set of nodes such that for
every node a in K, all nodes in K and only the
nodes in K are reachable from node a.

Example: OR condition
P3
P1

P3
P4

P2

P1

P5
No deadlock

P4

P2

P5
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
Old process -----
10
Waits

Hold Resource
Young process
20

Wants resource
Young process 20

Dies

Wait-die is a non-preemptive method.

Holds resource
Old process 10

Wound-wait
Wants resource

Old process 10

Preempts

Hold resource
Young process 20

Wants resource

Hold resource

Young process 20

Old process 10

Waits

An example
Process id priority

1st request length


time

Retry
interval

P1

P2

1.5

P3

2.1

P4

3.3

P5

4.0

Deadlock Avoidance
Four resources ABCD. A has 6 instances, B has 3 instances, C
Has 4 instances and D has 2 instances.
Process

Allocation
Max
ABCD
ABCD
P1
3011
4111
P2
0100
0212
P3
1110
4210
P4
1101
1101
P5
0000
2110
Is the current state safe?
If P5 requests for (1,0,1,0), can this be granted?

Deadlock Detection and


Recovery

Centralized approaches

Distributed approaches

Hierarchical approaches

Centralized approaches
Machine 0
A

Holds
Wants

R
Holds

Machine 1
S

Wants

Holds

Coordinator

Coordinator

R
B

R
T

C
T

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)
Machine 0
0

Machine 1
2

(0,2,3)

Machine 2
(0,4,6)

3
5

(0,5,7)

6
7

Hierarchical approaches

In hierarchical deadlock detection algorithms, sites are arranged hierarchically


in a tree. A site detects deadlocks involving only its descendant sites.
For example, let A, B and C be controllers such that C is the lowest common
ancestor of A and B. Suppose that node Pi appears in the local wait-for graph
of controllers A and B. Then Pi must also appear in the local wait-for graph as:

Controller of C.
Every controller in the path from C to A.
Every controller in the path from C to B.

In addition, if Pi and Pj appear in the wait-for graph of controller D and there


exists a path from Pi to Pj in the wait-for graph of one of the children of D,
then an edge (Pi, Pj) must be in the wait-for graph of D.

You might also like