Professional Documents
Culture Documents
OS 11 Deadlocks
OS 11 Deadlocks
OS 11 Deadlocks
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Deadlock
■ A situation where a set of processes wait for each other's actions
indefinitely
■ Every process in the set is waiting for some action by some other
process which is also blocked
■ All processes in deadlock remain blocked permanently
Operating System Concepts – 9th Edition 7.2 Silberschatz, Galvin and Gagne ©2013
System Model
■ System consists of a finite set of resources, to be distributed
among a set of competing processes (competing for the resources)
■ Resource types R1, R2, . . ., Rm
CPU cycles, memory space, I/O devices
■ Each resource type may have several identical instances
● Let resource type Ri has Wi instances.
● When a process requests a resource of type Ri, any of the Wi
instances may be allocated
■ Each process utilizes a resource only in the following sequence:
● request resource
● use resource
● release resource
Operating System Concepts – 9th Edition 7.3 Silberschatz, Galvin and Gagne ©2013
Example of deadlock in such a model
■ A system contains one tape and one printer
■ Two processes P0 and P1
Process P0 Process P1
Operating System Concepts – 9th Edition 7.4 Silberschatz, Galvin and Gagne ©2013
Deadlock Example 2
/* thread one runs in this function */
void *do_work_one(void *param)
{
pthread_mutex_lock(&first_mutex);
pthread_mutex_lock(&second_mutex);
/** * Do some work */
pthread_mutex_unlock(&second_mutex);
pthread_mutex_unlock(&first_mutex);
pthread_exit(0);
}
/* thread two runs in this function */
void *do_work_two(void *param)
{
pthread_mutex_lock(&second_mutex);
pthread_mutex_lock(&first_mutex);
/** * Do some work */
pthread_mutex_unlock(&first_mutex);
pthread_mutex_unlock(&second_mutex);
pthread_exit(0);
}
Operating System Concepts – 9th Edition 7.5 Silberschatz, Galvin and Gagne ©2013
Characterizing Deadlocks
Operating System Concepts – 9th Edition 7.6 Silberschatz, Galvin and Gagne ©2013
Deadlock Characterization
Deadlock can arise if four conditions hold simultaneously
(necessay conditions for deadlock)
Operating System Concepts – 9th Edition 7.7 Silberschatz, Galvin and Gagne ©2013
Resource State Modeling
■ State of resource allocation can be modeled as a graph
● Resource Request and Allocation Graph (RRAG)
● Also called Resource Allocation Graph for simplicity
Operating System Concepts – 9th Edition 7.8 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph
A set of vertices V and a set of edges E.
Operating System Concepts – 9th Edition 7.9 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph
A set of vertices V and a set of edges E.
■ E is also partitioned into two types of edges:
Operating System Concepts – 9th Edition 7.10 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph (Cont.)
■ Process
■ Pi requests instance of Rj
Pi
Rj
■ Pi is holding an instance of Rj
Pi
Rj
Operating System Concepts – 9th Edition 7.11 Silberschatz, Galvin and Gagne ©2013
Example of a Resource Allocation Graph
Operating System Concepts – 9th Edition 7.12 Silberschatz, Galvin and Gagne ©2013
How R-A Graph changes with time
Operating System Concepts – 9th Edition 7.13 Silberschatz, Galvin and Gagne ©2013
Resource Allocation Graph With A Deadlock
Operating System Concepts – 9th Edition 7.14 Silberschatz, Galvin and Gagne ©2013
Resource Allocation Graph With A Deadlock
The presence of a
cycle in the graph
indicates a deadlock
Operating System Concepts – 9th Edition 7.15 Silberschatz, Galvin and Gagne ©2013
Graph With A Cycle But No Deadlock
Operating System Concepts – 9th Edition 7.16 Silberschatz, Galvin and Gagne ©2013
Basic Facts
Operating System Concepts – 9th Edition 7.17 Silberschatz, Galvin and Gagne ©2013
Handling deadlocks
Operating System Concepts – 9th Edition 7.18 Silberschatz, Galvin and Gagne ©2013
Methods for Handling Deadlocks
■ Ensure that the system will never enter a deadlock state:
● Deadlock prevention: use a protocol such that one of the necessary
conditions for deadlocks cannot hold (apply restrictions on how
processes can request for resources)
● Deadlock avoidance: kernel analyzes the resource allocation state,
to determine whether granting a resource request might lead to a
deadlock later on (Safe and Unsafe states)
Operating System Concepts – 9th Edition 7.19 Silberschatz, Galvin and Gagne ©2013
Deadlock prevention
Operating System Concepts – 9th Edition 7.20 Silberschatz, Galvin and Gagne ©2013
Deadlock Prevention
Restrain the ways in which resource requests can be made,
So that at least one of the necessary conditions for deadlock remains false
Operating System Concepts – 9th Edition 7.21 Silberschatz, Galvin and Gagne ©2013
Deadlock Prevention (Cont.)
Restrain the ways in which resource requests can be made,
So that at least one of the necessary conditions for deadlock remains false
■ Falsify 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
Operating System Concepts – 9th Edition 7.23 Silberschatz, Galvin and Gagne ©2013
Deadlock Avoidance
Requires that the system has some additional a priori information
available about the resource usage patterns of the processes
■ Simplest and most useful model requires that each process declare
the maximum number of resources of each type that it may need
Operating System Concepts – 9th Edition 7.24 Silberschatz, Galvin and Gagne ©2013
Safe State
Operating System Concepts – 9th Edition 7.25 Silberschatz, Galvin and Gagne ©2013
Safe, Unsafe, Deadlock State
■ Deadlock avoidance: ensure that system will never enter an unsafe state
Operating System Concepts – 9th Edition 7.26 Silberschatz, Galvin and Gagne ©2013
An example
Operating System Concepts – 9th Edition 7.27 Silberschatz, Galvin and Gagne ©2013
An example (contd.)
Operating System Concepts – 9th Edition 7.28 Silberschatz, Galvin and Gagne ©2013
An example (contd.)
Operating System Concepts – 9th Edition 7.29 Silberschatz, Galvin and Gagne ©2013
Deadlock Avoidance Algorithms
Operating System Concepts – 9th Edition 7.30 Silberschatz, Galvin and Gagne ©2013
Banker’s Algorithm
■ Assumes multiple instances of each resource type
■ When a process gets all its resources, it must return them in a finite
amount of time
Operating System Concepts – 9th Edition 7.31 Silberschatz, Galvin and Gagne ©2013
Data Structures for the Banker’s Algorithm
Operating System Concepts – 9th Edition 7.32 Silberschatz, Galvin and Gagne ©2013
Banker’s Algorithm: Notations
■ If X and Y are vectors of length n, we say X ≤ Y if and only if X[i] ≤ Y[i]
for all i = 1, 2, …, n
Operating System Concepts – 9th Edition 7.33 Silberschatz, Galvin and Gagne ©2013
Safety Algorithm
Find out whether the current state is safe
4. If Finish [i] == true for all i, then the system is in a safe state,
otherwise state is unsafe
Operating System Concepts – 9th Edition 7.34 Silberschatz, Galvin and Gagne ©2013
Resource-Request Algorithm for Process Pi
Operating System Concepts – 9th Edition 7.35 Silberschatz, Galvin and Gagne ©2013
Sequence of running the two algos
■ When a process requests for resources
● The Resource-Request algorithm is run
● The Safety Algorithm may be run as part of the Resource-Request
algorithm (in step 3)
Operating System Concepts – 9th Edition 7.36 Silberschatz, Galvin and Gagne ©2013
Example of Banker’s Algorithm
Operating System Concepts – 9th Edition 7.37 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.38 Silberschatz, Galvin and Gagne ©2013
Example: P1 Request (1,0,2)
■ Check that Request £ Available, that is, (1,0,2) £ (3,3,2) Þ true
Allocation Need Available
State after trial ABC ABC ABC
allocation to P1
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; hence request can be granted
Operating System Concepts – 9th Edition 7.39 Silberschatz, Galvin and Gagne ©2013
Deadlock detection and recovery from deadlock
Operating System Concepts – 9th Edition 7.40 Silberschatz, Galvin and Gagne ©2013
Deadlock Detection
Operating System Concepts – 9th Edition 7.41 Silberschatz, Galvin and Gagne ©2013
Single Instance of Each Resource Type
Operating System Concepts – 9th Edition 7.42 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph and Wait-for Graph
Operating System Concepts – 9th Edition 7.43 Silberschatz, Galvin and Gagne ©2013
Single Instance of Each Resource Type
■ Deadlock detection:
● Periodically invoke an algorithm that searches for a cycle in the
wait-for graph
● If there is a cycle, there exists a deadlock
Operating System Concepts – 9th Edition 7.44 Silberschatz, Galvin and Gagne ©2013
Recovery from deadlock
■ Two broad approaches
● Process termination
● Resource preemption
Operating System Concepts – 9th Edition 7.45 Silberschatz, Galvin and Gagne ©2013
Recovery from Deadlock: Process Termination
Operating System Concepts – 9th Edition 7.46 Silberschatz, Galvin and Gagne ©2013
Recovery from Deadlock: Resource Preemption
Operating System Concepts – 9th Edition 7.47 Silberschatz, Galvin and Gagne ©2013
Finally, the Ostrich Algo for handling deadlocks
Operating System Concepts – 9th Edition 7.48 Silberschatz, Galvin and Gagne ©2013
Summary
■ Deadlock characterization
● Necessary conditions for deadlock
● Resource Allocation Graph (cycles may indicate deadlock)
Operating System Concepts – 9th Edition 7.49 Silberschatz, Galvin and Gagne ©2013