Deadlock
Deadlock
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
Outline
▪ System Model
▪ Deadlock Characterization
▪ Methods for Handling Deadlocks
▪ Deadlock Prevention
▪ Deadlock Avoidance
▪ Deadlock Detection
▪ Recovery from Deadlock
Operating System Concepts – 10th Edition 8.2 Silberschatz, Galvin and Gagne ©2018
Chapter Objectives
▪ Illustrate how deadlock can occur when mutex locks are used
▪ Define the four necessary conditions that characterize deadlock
▪ Identify a deadlock situation in a resource allocation graph
▪ Evaluate the four different approaches for preventing deadlocks
▪ Apply the banker’s algorithm for deadlock avoidance
▪ Evaluate approaches for recovering from deadlock
Operating System Concepts – 10th Edition 8.3 Silberschatz, Galvin and Gagne ©2018
System Model
Operating System Concepts – 10th Edition 8.4 Silberschatz, Galvin and Gagne ©2018
Deadlock with Semaphores
▪ Data:
• A semaphore S1 initialized to 1
• A semaphore S2 initialized to 1
▪ Two processes P1 and P2
▪ P1:
wait(s1)
wait(s2)
▪ P2:
wait(s2)
wait(s1)
Operating System Concepts – 10th Edition 8.5 Silberschatz, Galvin and Gagne ©2018
Deadlock Characterization
Operating System Concepts – 10th Edition 8.6 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.7 Silberschatz, Galvin and Gagne ©2018
Resource Allocation Graph Example
▪ One instance of R1
▪ Two instances of R2
▪ One instance of R3
▪ Three instance of R4
▪ T1 holds one instance of R2 and is
waiting for an instance of R1
▪ T2 holds one instance of R1, one
instance of R2, and is waiting for an
instance of R3
▪ T3 is holds one instance of R3
Operating System Concepts – 10th Edition 8.8 Silberschatz, Galvin and Gagne ©2018
Resource Allocation Graph with a Deadlock
Operating System Concepts – 10th Edition 8.9 Silberschatz, Galvin and Gagne ©2018
Graph with a Cycle But no Deadlock
Operating System Concepts – 10th Edition 8.10 Silberschatz, Galvin and Gagne ©2018
Basic Facts
▪ If graph contains no cycles no deadlock
▪ If graph contains a cycle
• if only one instance per resource type, then deadlock
• if several instances per resource type, possibility of deadlock
Operating System Concepts – 10th Edition 8.11 Silberschatz, Galvin and Gagne ©2018
Methods for Handling Deadlocks
Operating System Concepts – 10th Edition 8.12 Silberschatz, Galvin and Gagne ©2018
Deadlock Prevention
Invalidate one of the four necessary conditions for deadlock:
Operating System Concepts – 10th Edition 8.13 Silberschatz, Galvin and Gagne ©2018
Deadlock Prevention (Cont.)
▪ No Preemption:
• If a process that is holding some resources requests another
resource that cannot be immediately allocated to it, then all
resources currently being held are released
• Preempted resources are added to the list of resources for which
the process is waiting
• Process will be restarted only when it can regain its old resources,
as well as the new ones that it is requesting
▪ Circular Wait:
• Impose a total ordering of all resource types, and require that each
process requests resources in an increasing order of enumeration
Operating System Concepts – 10th Edition 8.14 Silberschatz, Galvin and Gagne ©2018
Deadlock Avoidance
Requires that the system has some additional a priori information
available
▪ Simplest and most useful model requires that each process declare
the maximum number of resources of each type that it may need
▪ The deadlock-avoidance algorithm dynamically examines the
resource-allocation state to ensure that there can never be a
circular-wait condition
▪ Resource-allocation state is defined by the number of available and
allocated resources, and the maximum demands of the processes
Operating System Concepts – 10th Edition 8.15 Silberschatz, Galvin and Gagne ©2018
Safe State
▪ When a process requests an available resource, system must
decide if immediate allocation leaves the system in a safe state
▪ System is in safe state if there exists a sequence <P1, P2, …, Pn>
of ALL the processes in the systems such that for each Pi, the
resources that Pi can still request can be satisfied by currently
available resources + resources held by all the Pj, with j < I
▪ That is:
• If Pi resource needs are not immediately available, then Pi can
wait until all Pj have finished
• When Pj is finished, Pi can obtain needed resources, execute,
return allocated resources, and terminate
• When Pi terminates, Pi +1 can obtain its needed resources, and
so on
Operating System Concepts – 10th Edition 8.16 Silberschatz, Galvin and Gagne ©2018
Basic Facts
▪ If a system is in safe state no deadlocks
Operating System Concepts – 10th Edition 8.17 Silberschatz, Galvin and Gagne ©2018
Safe, Unsafe, Deadlock State
Operating System Concepts – 10th Edition 8.18 Silberschatz, Galvin and Gagne ©2018
Avoidance Algorithms
▪ Single instance of a resource type
• Use a resource-allocation graph
Operating System Concepts – 10th Edition 8.19 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph Scheme
▪ Claim edge Pi → Rj indicated that process Pj may request resource Rj;
represented by a dashed line
▪ Claim edge converts to request edge when a process requests a
resource
▪ Request edge converted to an assignment edge when the resource is
allocated to the process
▪ When a resource is released by a process, assignment edge
reconverts to a claim edge
▪ Resources must be claimed a priori in the system
Operating System Concepts – 10th Edition 8.20 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.21 Silberschatz, Galvin and Gagne ©2018
Unsafe State In Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.22 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph Algorithm
▪ Suppose that process Pi requests a resource Rj
▪ The request can be granted only if converting the request edge to an
assignment edge does not result in the formation of a cycle in the
resource allocation graph
Operating System Concepts – 10th Edition 8.23 Silberschatz, Galvin and Gagne ©2018
Banker’s Algorithm
▪ Multiple instances of resources
▪ When a process gets all its resources it must return them in a finite
amount of time
Operating System Concepts – 10th Edition 8.24 Silberschatz, Galvin and Gagne ©2018
Data Structures for the Banker’s Algorithm
Let n = number of processes, and m = number of resources types.
Operating System Concepts – 10th Edition 8.25 Silberschatz, Galvin and Gagne ©2018
Example of Banker’s Algorithm
Operating System Concepts – 10th Edition 8.26 Silberschatz, Galvin and Gagne ©2018
Example (Cont.)
▪ The content of the matrix Need is defined to be Max – Allocation
Need
ABC
P0 743
P1 122
P2 600
P3 011
P4 431
▪ The system is in a safe state since the sequence < P1, P3, P4, P2, P0>
satisfies safety criteria
Operating System Concepts – 10th Edition 8.27 Silberschatz, Galvin and Gagne ©2018
Example: P1 Request (1,0,2)
▪ Check that Request 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>
satisfies safety requirement
Operating System Concepts – 10th Edition 8.28 Silberschatz, Galvin and Gagne ©2018
Deadlock Detection
▪ Detect
▪ Recover
Operating System Concepts – 10th Edition 8.29 Silberschatz, Galvin and Gagne ©2018
Recovery from Deadlock: Process Termination
Operating System Concepts – 10th Edition 8.30 Silberschatz, Galvin and Gagne ©2018
Recovery from Deadlock: Resource Preemption
Operating System Concepts – 10th Edition 8.31 Silberschatz, Galvin and Gagne ©2018
End of Chapter 8
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018