Professional Documents
Culture Documents
Contents
• Deadlock definition
• Conditions for Deadlock
• Strategies for Dealing with Deadlock
• Deadlock Prevention
• Deadlock Avoidance
o Safe State
o Baker's Algorithm
o How do you know if it is a safe state
• Detection and Recovery
o Recovery
Deadlock Definition
A set of processes is deadlocked if each process in the set is waiting for an event that
only another process in the set can cause (including itself).
Deadlock Prevention
Difference from avoidance is that here, the system itself is build in such a way that there
are no deadlocks.
This may however be even more conservative than deadlock avoidance strategy.
Deadlock Avoidance
Avoid actions that may lead to a deadlock.
Safe State
To avoid deadlocks, we try to make only those transitions that will take you from
one safe state to another. We avoid transitions to unsafe state (a state that is not
deadlocked, and is not safe)
eg.
Total # of instances of resource = 12
(Max, Allocated, Still Needs)
P0 (10, 5, 5) P1 (4, 2, 2) P2 (9, 2, 7) Free = 3
- Safe
The sequence is a reducible sequence
the first state is safe.
When a request is made, check to see if after the request is satisfied, there is a
(atleast one!) sequence of moves that can satisfy all the requests. ie. the new
state is safe. If so, satisfy the request, else make the request wait.
while () {
Temp[j]=Available[j] for all j
Find an i such that
a) Done[i] = False
b) Still_Needs[i,j] <= Temp[j]
if so {
Temp[j] += Allocated[i,j] for all j
Done[i] = TRUE}
}
else if Done[i] = TRUE for all i then state is safe
else state is unsafe
}
check if there is a cycle in the resource graph. for each node N in the
graph do DFS (depth first search) of the graph with N as the root In the
DFS if you come back to a node already traversed, then there is a cycle. }
m resources, n processes
Max resources in existence = [E1, E2, E3, .... Em]
Current Allocation = C1-n,1-m
Resources currently Available = [A1, A2, ... Am]
Request matrix = R1-n,1-m
Invariant = Sum(Cij) + Aj = Ej
Define A <= B for 2 vectors, A and B, if Ai <= Bi for all i
Overview of deadlock detection algorithm,
Basic idea, is that there is atleast 1 execution which will undeadlock the
system
Recovery
through preemption
rollback
keep checkpointing periodically
when a deadlock is detected, see which resource is needed.
Take away the resource from the process currently having it.
Later on, you can restart this process from a check pointed state
where it may need to reacquire the resource.
killing processes