Professional Documents
Culture Documents
6.1
Deadlocks
The Deadlock Problem
System Model
Deadlock Characterization
Methods for Handling Deadlocks
Deadlock Prevention
Deadlock Avoidance
Deadlock Detection
Recovery from Deadlock
6.2
Deadlock
Permanent blocking of a set of processes that
either compete for system resources or
communicate with each other
No efficient solution
Involve conflicting needs for resources by two or
more processes
6.3
The Deadlock Problem
A set of blocked processes each holding a
resource and waiting to acquire a resource held
by another process in the set
Example
System has 2 disk drives
P1and P2 each hold one disk drive and each
needs another one
Example : semaphores A and B, initialized to 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
6.4
Bridge Crossing Example
6.5
6.6
6.7
6.8
System Model
use
release
6.9
Reusable Resources
Used by one process at a time and not depleted by
that use
Processes obtain resources that they later release
for reuse by other processes
Processors, I/O channels, main and secondary
memory, files, databases, and semaphores
Deadlock occurs if each process holds one
resource and requests the other
6.10
Example of Deadlock
6.11
Another Example of Deadlock
Space is available for allocation of 200K bytes,
and the following sequence of events occur
P1 P2
... ...
Request 80K bytes; Request 70K bytes;
... ...
Request 60K bytes; Request 80K bytes;
6.12
Consumable Resources
Created (produced) and destroyed (consumed) by
a process
Interrupts, signals, messages, and information in
I/O buffers
Deadlock may occur if a Receive message is
blocking
May take a rare combination of events to cause
deadlock
6.13
Example of Deadlock
Deadlock occurs if receive is blocking
P1 P2
... ...
Receive(P2); Receive(P1);
... ...
Send(P2, M1); Send(P1, M2);
6.14
Conditions for Deadlock
Mutual exclusion
Hold-and-wait
No preemption
Circular wait
6.15
Conditions for Deadlock
Mutual exclusion
only one process may use a resource at a time
Hold-and-wait
A process request all of its required resources at
one time
6.16
Conditions for Deadlock
No preemption
Resources can't be preempted. ie a resource can
be released only voluntarily by the process holding
it, after that process had completed it's task.
Preemption:
If a process holding certain resources is denied
a further request, that process must release its
original resources
If a process requests a resource that is currently
held by another process, the operating system
may preempt the second process and require it
to release its resources
6.17
Conditions for Deadlock
Circular wait
Prevented by defining a linear ordering of
resource types
6.18
Resource-Allocation Graph
A set of vertices V and a set of edges E.
6.19
Resource-Allocation Graph (Cont.)
Process
Pi requests instance of Rj
Pi
Rj
Pi is holding an instance of Rj
Pi
Rj
6.20
Example of a Resource Allocation Graph
6.21
Resource Allocation Graph With A Deadlock
6.22
Graph With A Cycle But No Deadlock
6.23
Basic Facts
6.24
Methods for Handling Deadlocks
6.25
Deadlock Prevention: Prevent one of the 4
necessary conditions from arising
Restrain the ways request can be made
Mutual Exclusion – not required for sharable
resources; must hold for non-sharable resources
6.27
Deadlock Prevention (Cont.)
Circular Wait – impose a total ordering of all
resource types, and require that each process
requests resources in an increasing order of
enumeration
6.28
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
6.30
Safe State
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
6.31
Basic Facts
6.32
Safe, Unsafe , Deadlock State
6.33
Avoidance algorithms
6.34
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
6.36
Unsafe State In Resource-Allocation Graph
6.37
Resource-Allocation Graph Algorithm
6.38
Banker’s Algorithm
Multiple instances
6.39
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]
6.40
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 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 6.41
Resource-Request Algorithm for Process Pi
6.42
Resource-Request Algorithm for Process Pi
6.43
Example of Banker’s Algorithm
5 processes P0 through P4;
3 resource types:
(10 instances), B (5instances), and C (7 instances)
Snapshot at time T0:
Allocation Max Available
ABC ABC ABC
P0 0 1 0 753 332
P1 2 0 0 322
P2 3 0 2 902
P3 2 1 1 222
P4 0 0 2 433
6.44
Example (Cont.)
The content of the matrix Need is defined to
be Max – Allocation
Need
ABC
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
6.45
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 0 1 0 743 230
P1 3 0 2 020
P2 3 0 1 600
P3 2 1 1 011
P4 0 0 2 431
Executing safety algorithm shows that sequence
< P1, P3, P4, P0, P2> satisfies safety requirement
6.46
Example: P1 Request (1,0,2)
6.47
Deadlock Detection
Allow system to enter deadlock state
Detection algorithm
Recovery scheme
6.48
Single Instance of Each Resource Type
Maintain wait-for graph
Nodes are processes
Pi Pj if Pi is waiting for Pj
6.50
Several Instances of a Resource Type
Available: A vector of length m indicates
the number of available resources of each
type.
6.53
Example of Detection Algorithm
Five processes P0 through P4; three resource types
A (7 instances), B (2 instances), and C (6 instances)
Snapshot at time T0:
Allocation Request Available
ABC ABC ABC
P0 0 1 0 000 000
P1 2 0 0 202
P2 3 0 3 000
P3 2 1 1 100
P4 0 0 2 002
Sequence <P0, P2, P3, P1, P4> will result in Finish[i] = true
for all i
6.54
Example (Cont.)
P2 requests an additional instance of type C
Request
ABC
P0 0 0 0
P1 2 0 1
P2 0 0 1
P3 1 0 0
P4 0 0 2
State of system?
Can reclaim resources held by process P0, but insufficient
resources to fulfill other processes; requests
Deadlock exists, consisting of processes P1, P2, P3, and P4
6.55
Detection-Algorithm Usage
When, and how often, to invoke depends on:
How often a deadlock is likely to occur?
How many processes will need to be rolled
back?
one for each disjoint cycle
6.56
Recovery from Deadlock: Process Termination
Abort all deadlocked processes
6.58
Deadlock Avoidance
A decision is made dynamically whether the
current resource allocation request will, if granted,
potentially lead to a deadlock
Requires knowledge of future process request
6.59
Two Approaches to
Deadlock Avoidance
Do not start a process if its demands might lead to
deadlock
Do not grant an incremental resource request to a
process if this allocation might lead to deadlock
6.60
Resource Allocation Denial
Referred to as the banker’s algorithm
State of the system is the current allocation of
resources to process
Safe state is where there is at least one sequence
that does not result in deadlock
Unsafe state is a state that is not safe
6.61
Determination of a Safe State
Initial State
6.62
Determination of a Safe State
P2 Runs to Completion
6.63
Determination of a Safe State
P1 Runs to Completion
6.64
Determination of a Safe State
P3 Runs to Completion
6.65
Determination of an
Unsafe State
6.66
Determination of an
Unsafe State
6.67
Deadlock Avoidance
Maximum resource requirement must be stated in
advance
Processes under consideration must be
independent; no synchronization requirements
There must be a fixed number of resources to
allocate
No process may exit while holding resources
6.68
Deadlock Detection
6.69
Strategies once Deadlock Detected
Abort all deadlocked processes
Back up each deadlocked process to some
previously defined checkpoint, and restart all
process
original deadlock may occur
Successively abort deadlocked processes until
deadlock no longer exists
Successively preempt resources until deadlock no
longer exists
6.70
Selection Criteria Deadlocked Processes
Least amount of processor time consumed so far
Least number of lines of output produced so far
Most estimated time remaining
Least total resources allocated so far
Lowest priority
6.71