Professional Documents
Culture Documents
Chapter 6
Chapter 6
Chapter 6
Deadlocks
Topics
• System Model
• Deadlock Characterization
• Methods for Handling Deadlocks
• Deadlock Prevention
• Deadlock Avoidance
• Deadlock Detection
• Recovery from Deadlock
• Combined Approach to Deadlock Handling
The Deadlock Problem
• A set of blocked processes each holding a resource and waiting
to acquire a resource held by another process in the set.
• Example
– System has 2 tape drives.
– P1 and P2 each hold one tape drive and each needs another one.
• Example
• semaphores A and B , initialized to 1
P0 P1
------ ------
wait(A) wait(B)
wait(B) wait(A)
Example: bridge crossing
• Pi requests instance of R j
• Pi is holding an instance of R j
Cont’d
• A banker 10 thousand dollars and four customers Florence, Dougal, Dylan and Zebedee each
customer has a maximum need and and starts owing nothing.
Name Used Max
Florence 0 6
Dougal 0 5
Dylan 0 4
Zebedee 0 7
Available = 10 Safe
Name Used Max
Florence 1 6
Dougal 1 5
Dylan 2 4
Zebedee 4 7
Available = 2 Safe, because any requests for loans, except to Dylan, can wait until Dylan repays
his loan
Name Used Max
Florence 1 6
Dougal 2 5
Dylan 2 4
Zebedee 4 7
Available = 1 Unsafe, since if all customers ask for their maximum, none will get it, causing
deadlock
Safety Algorithm
1. Let Work and Finish be vectors of length m and n, respectively.
Initialize:
Work := Available
Finish[i] := false for i = 1, 2, ..., n.
2. Find an i such that both:
Finish[i] = false
Need i <= Work (every element in Needi < every element in
Work)
If no such i exists, go to step 4.
3. Work := Work + Allocation I
Finish[i] := true
go to step 2.
4. If Finish[i] = true for all i, then the system is in a safe state.
• May require an order of m x n 2 operations to decide whether a
state is safe
Resource-Request Algorithm for process Pi
• Request i = request vector for process Pi .
• If Request i [ j ] = k , then process Pi wants k instances of
resource type R j .
1. If Request i <= Need i , go to step 2. Otherwise, raise error
condition, since process has exceeded its maximum claim.
2. If Request i <= Available, go to step 3. Otherwise, Pi must
wait, since resources are not available.
3. Pretend to allocate requested resources to Pi by modifying
the state as follows:
• Available := Available - Request i ;
• Allocation i := Allocation i + Request i ;
• Need i := Need i - Request i ;
– If safe -> the resources are allocated to Pi .
– If unsafe -> Pi must wait, and the old resource-allocation state is
restored
Example of Banker's algorithm
• Request 1 = (1,0,2).
Check that Request 1 <= Available (that is, (1,0,2) <= (3,3,2)) -> true.
Allocation Need Available
---------- --- ---------
ABC ABC ABC
P0 010 743 230
P1 302 020
P2 302 600
P3 211 011
P4 002 431
– Executing safety algorithm shows that sequence <P1, P3, P4, P0, P2>n
satisfies safety requirement.
• From this state, can request for (3,3,0) by P4 be granted?
• From this state, can request for (0,2,0) by P0 be granted?
Deadlock Detection