Deadlocks
CPE 261403 - Operating Systemshttp://www.e-cpe.org/moodle
Conditions of a Deadlock (7.2.1)
Mutual exclusion
Hold and wait
No preemption
Circular wait
Which of these are in a deadlock?
Methods for Handling Deadlocks Never allow a deadlock state
Allow deadlock and then recover
Ignore the problem
Deadlock Prevention (7.4)
Prevent deadlock conditions from occurring Mutual exclusion
Hold and wait
No preemption
Circular wait
Deadlock Avoidance (7.5)
Figure 7.5
Example
Max Needs Needs at T0(safe)
Needs at T1(unsafe)
P0 4 2 2
P1 10 5 5
P2 9 2 3
Total number of resources = 12
Resource Allocation Graph
Safe Unsafe
Banker’s Algorithm
Available: Vector of length m. If available [j] = k, there are k instances of resource type Rj available.
Max: n x m matrix. If Max [i,j] = k, then process Pi may request at most k instances of resource type Rj.
Allocation: n x m matrix. If Allocation[i,j] = k then Pi is currently allocated k instances of Rj.
Need: n x m matrix. If Need[i,j] = k, then Pi may need k more instances of Rj to complete its task.
Need [i,j] = Max[i,j] – Allocation [i,j].
Let n = number of processes, and m = number of resources types.
Example
A B C
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
P0
P1
P2
P3
P4
A B C
0 1 0
2 0 0
3 0 2
2 1 1
0 0 2
MAX Allocation
3 resource types: A (10 instances), B (5instances), and C (7 instances).
Time T0
Safety Algorithm
Available
Need Finish
P0
P1
P2
P3
P4
R1 R2 R3
Safety Algorithm
7-0=7 5-1=4 3-0=3
3-2=1 2-0=2 2-0=2
9-3=6 0-0=0 2-2=0
2-2=0 2-1=1 2-1=1
4-0=4 3-0=3 3-2=1
3 3 2Available
Need Finish
P0
P1
P2
P3
P4
R1 R2 R3
Example (Cont.)
The content of the matrix Need is defined to be Max – Allocation.
NeedA B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
The system is in a safe state since the sequence < P1, P3, P4, P2, P0> satisfies safety criteria.
Process P1 makes a request for: 1 instance of A 2 instance of C
Request Vector = (1,0,2)
Safety Algorithm after (1,0,2) request
7 4 3
1 2 2
6 0 0
0 1 1
4 3 1
3 3 2Work
Need Finish
P0
P1
P2
P3
P4
R1 R2 R3
Example: P1 Request (1,0,2)
Check that Request Available (that is, (1,0,2) (3,3,2) true.Allocation Need AvailableA B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 1 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1 Executing safety algorithm shows that sequence < P1, P3, P4, P0,
P2> satisfies safety requirement. Can request for (3,3,0) by P4 be granted? Can request for (0,2,0) by P0 be granted?
Deadlock Detection (7.6)
Wait-for Graphs (single instance system only)
Resource-Allocation Graph Corresponding wait-for graph
Wait-for Graph does not work with multiple instance resources
Banker’s Algorithm as a deadlock detection tool for multiple instance systems
Deadlock Recovery (7.7)
Process Termination
Abort all deadlock processes
Abort one at a time until deadlock cycle is eliminated
Resource Preemption
Selecting a victim – minimize cost.
Rollback – return to some safe state, restart process for that state.
Starvation – same process may always be picked as victim, include number of rollback in cost factor.