Ch07 Deadlocks

Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Chapter 7: Deadlocks

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Chapter 7: Deadlocks
 System Model
 Deadlock Characterization
 Methods for Handling Deadlocks
 Deadlock Prevention
 Deadlock Avoidance

Operating System Concepts – 9th Edition 7.2 Silberschatz, Galvin and Gagne ©2013
Chapter Objectives

 To develop a description of deadlocks, which prevent


sets of concurrent processes from completing their
tasks
 To present a number of different methods for
preventing or avoiding deadlocks in a computer
system

Operating System Concepts – 9th Edition 7.3 Silberschatz, Galvin and Gagne ©2013
System Model
 System consists of resources
 Resource types R1, R2, . . ., Rm
CPU cycles, memory space, I/O devices
 Each resource type Ri has Wi instances.
 Each process utilizes a resource as follows:
 request
 use
 release

Operating System Concepts – 9th Edition 7.4 Silberschatz, Galvin and Gagne ©2013
Deadlock Characterization
Deadlock can arise if four conditions hold simultaneously.

 Mutual exclusion: only one process at a time can use a


resource
 Hold and wait: a process holding at least one resource is
waiting to acquire additional resources held by other
processes
 No preemption: a resource can be released only voluntarily
by the process holding it, after that process has completed
its task
 Circular wait: there exists a set {P0, P1, …, Pn} of waiting
processes such that P0 is waiting for a resource that is held
by P1, P1 is waiting for a resource that is held by P2, …, Pn–1
is waiting for a resource that is held by Pn, and Pn is waiting
for a resource that is held by P0.

Operating System Concepts – 9th Edition 7.5 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph
A set of vertices V and a set of edges E.
 V is partitioned into two types:
 P = {P1, P2, …, Pn}, the set consisting of all the processes
in the system

 R = {R1, R2, …, Rm}, the set consisting of all resource


types in the system

 request edge – directed edge Pi  Rj

 assignment edge – directed edge Rj  Pi

Operating System Concepts – 9th Edition 7.7 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph (Cont.)
 Process

 Resource Type with 4 instances

 Pi requests instance of Rj

Pi
Rj
 Pi is holding an instance of Rj

Pi
Rj

Operating System Concepts – 9th Edition 7.8 Silberschatz, Galvin and Gagne ©2013
Example of a Resource Allocation Graph

Operating System Concepts – 9th Edition 7.9 Silberschatz, Galvin and Gagne ©2013
Resource Allocation Graph With A Deadlock

Operating System Concepts – 9th Edition 7.10 Silberschatz, Galvin and Gagne ©2013
Graph With A Cycle But No Deadlock

Operating System Concepts – 9th Edition 7.11 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.12 Silberschatz, Galvin and Gagne ©2013
Methods for Handling Deadlocks

 Ensure that the system will never enter a deadlock


state:
 Deadlock prevention
 Deadlock avoidence
 Allow the system to enter a deadlock state and then
recover
 Ignore the problem and pretend that deadlocks never
occur in the system; used by most operating systems,
including UNIX

Operating System Concepts – 9th Edition 7.13 Silberschatz, Galvin and Gagne ©2013
Deadlock Prevention
Restrain the ways request can be made

 Mutual Exclusion – not required for sharable resources


(e.g., read-only files); must hold for non-sharable resources
 Hold and Wait – must guarantee that whenever a process
requests a resource, it does not hold any other resources
 Require process to request and be allocated all its
resources before it begins execution, or allow process
to request resources only when the process has none
allocated to it.
 Low resource utilization; starvation possible

Operating System Concepts – 9th Edition 7.14 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.15 Silberschatz, Galvin and Gagne ©2013
Deadlock Example
/* 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.16 Silberschatz, Galvin and Gagne ©2013
Deadlock Example with Lock Ordering
void transaction(Account from, Account to, double amount)
{
mutex lock1, lock2;
lock1 = get_lock(from);
lock2 = get_lock(to);
acquire(lock1);
acquire(lock2);
withdraw(from, amount);
deposit(to, amount);
release(lock2);
release(lock1);
}

Transactions 1 and 2 execute concurrently. Transaction 1 transfers $25


from account A to account B, and Transaction 2 transfers $50 from account
B to account A

Operating System Concepts – 9th Edition 7.17 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.18 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.19 Silberschatz, Galvin and Gagne ©2013
Basic Facts

 If a system is in safe state  no deadlocks

 If a system is in unsafe state  possibility of deadlock

 Avoidance  ensure that a system will never enter an


unsafe state.

Operating System Concepts – 9th Edition 7.20 Silberschatz, Galvin and Gagne ©2013
Safe, Unsafe, Deadlock State

Operating System Concepts – 9th Edition 7.21 Silberschatz, Galvin and Gagne ©2013
Avoidance Algorithms

 Single instance of a resource type


 Use a resource-allocation graph

 Multiple instances of a resource type


 Use the banker’s algorithm

Operating System Concepts – 9th Edition 7.22 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.23 Silberschatz, Galvin and Gagne ©2013
Resource-Allocation Graph

Operating System Concepts – 9th Edition 7.24 Silberschatz, Galvin and Gagne ©2013
Unsafe State In Resource-Allocation Graph

Operating System Concepts – 9th Edition 7.25 Silberschatz, Galvin and Gagne ©2013
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 – 9th Edition 7.26 Silberschatz, Galvin and Gagne ©2013
Banker’s Algorithm
 Multiple instances

 Each process must a priori claim maximum use

 When a process requests a resource it may have to wait

 When a process gets all its resources it must return them in a


finite amount of time

Operating System Concepts – 9th Edition 7.27 Silberschatz, Galvin and Gagne ©2013
Data Structures for the Banker’s Algorithm

Let n = number of processes, and m = number of resources types.

 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]

Operating System Concepts – 9th Edition 7.28 Silberschatz, Galvin and Gagne ©2013
Safety Algorithm
1. Let Work and Finish be vectors of length m and n, respectively.
Initialize:
Work = Available
Finish [i] = false for i = 0, 1, …, n- 1

2. Find an i such that both:


(a) Finish [i] = false
(b) Needi  Work
If no such i exists, go to step 4

3. Work = Work + Allocationi


Finish[i] = true
go to step 2

4. If Finish [i] == true for all i, then the system is in a safe state

Operating System Concepts – 9th Edition 7.29 Silberschatz, Galvin and Gagne ©2013
Resource-Request Algorithm for Process Pi

Requesti = request vector for process Pi. If Requesti [j] = k then


process Pi wants k instances of resource type Rj
1. If Requesti  Needi go to step 2. Otherwise, raise error condition,
since process has exceeded its maximum claim
2. If Requesti  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 – Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;
 If safe  the resources are allocated to Pi
 If unsafe  Pi must wait, and the old resource-allocation state
is restored

Operating System Concepts – 9th Edition 7.30 Silberschatz, Galvin and Gagne ©2013
Example of Banker’s Algorithm

 5 processes P0 through P4;


3 resource types:
A (10 instances), B (5instances), and C (7 instances)
 Snapshot at time T0:
Allocation Max Available
ABC ABC ABC
P0 010 753 332
P1 200 322
P2 302 902
P3 211 222
P4 002 433

Operating System Concepts – 9th Edition 7.31 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.32 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
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

 Can request for (3,3,0) by P4 be granted?

 Can request for (0,2,0) by P0 be granted?

Operating System Concepts – 9th Edition 7.33 Silberschatz, Galvin and Gagne ©2013
End of Chapter 7

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013

You might also like