Lec8 - ch8- Deadlocks (1)
Lec8 - ch8- Deadlocks (1)
Lec8 - ch8- Deadlocks (1)
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
Definition
Operating System Concepts – 10th Edition 8.2 Silberschatz, Galvin and Gagne ©2018
System Model
Operating System Concepts – 10th Edition 8.3 Silberschatz, Galvin and Gagne ©2018
Deadlock with Semaphores
Data:
• A semaphore S1 initialized to 1
• A semaphore S2 initialized to 1
Two threads T1 and T2
T1 :
wait(s1)
wait(s2)
T2 :
wait(s2)
wait(s1)
Operating System Concepts – 10th Edition 8.4 Silberschatz, Galvin and Gagne ©2018
Deadlock Characterization
Operating System Concepts – 10th Edition 8.5 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.6 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.7 Silberschatz, Galvin and Gagne ©2018
Resource Allocation Graph with a Deadlock
Operating System Concepts – 10th Edition 8.8 Silberschatz, Galvin and Gagne ©2018
Graph with a Cycle But no Deadlock
Operating System Concepts – 10th Edition 8.9 Silberschatz, Galvin and Gagne ©2018
Basic Facts
Operating System Concepts – 10th Edition 8.10 Silberschatz, Galvin and Gagne ©2018
Methods for Handling Deadlocks
Operating System Concepts – 10th Edition 8.11 Silberschatz, Galvin and Gagne ©2018
Deadlock Prevention
Invalidate one of the four necessary conditions for deadlock:
Operating System Concepts – 10th Edition 8.12 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 thread is waiting
• Thread will be restarted only when it can regain its old
resources, as well as the new ones that it is requesting
Operating System Concepts – 10th Edition 8.13 Silberschatz, Galvin and Gagne ©2018
Deadlock Prevention (Cont.)
Circular Wait:
• Impose a total ordering of all resource types, and require
that each thread requests resources in an increasing order
of enumeration
Operating System Concepts – 10th Edition 8.14 Silberschatz, Galvin and Gagne ©2018
Circular Wait
first_mutex = 1
second_mutex = 5
Operating System Concepts – 10th Edition 8.15 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 thread
declare the maximum number of resources of each type
that it may need
Operating System Concepts – 10th Edition 8.16 Silberschatz, Galvin and Gagne ©2018
Safe State
When a thread 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 <T1, T2, …,
Tn> of ALL the threads in the systems such that for each Ti, the
resources that Ti can still request can be satisfied by currently
available resources + resources held by all the Tj, with j < I
That is:
• If Ti resource needs are not immediately available, then Ti
can wait until all Tj have finished
• When Tj is finished, Ti can obtain needed resources,
execute, return allocated resources, and terminate
• When Ti terminates, Ti +1 can obtain its needed resources,
and so on
Operating System Concepts – 10th Edition 8.17 Silberschatz, Galvin and Gagne ©2018
Safe State
At time t0
• T1 T0 T2 is a safe state
Operating System Concepts – 10th Edition 8.19 Silberschatz, Galvin and Gagne ©2018
Safe, Unsafe, Deadlock State
Operating System Concepts – 10th Edition 8.20 Silberschatz, Galvin and Gagne ©2018
Avoidance Algorithms
Single instance of a resource type
• Use a resource-allocation graph
Operating System Concepts – 10th Edition 8.21 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph Scheme
Claim edge Ti Rj indicated that process Tj may request
resource Rj; represented by a dashed line
Operating System Concepts – 10th Edition 8.22 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.23 Silberschatz, Galvin and Gagne ©2018
Unsafe State In Resource-Allocation Graph
Operating System Concepts – 10th Edition 8.24 Silberschatz, Galvin and Gagne ©2018
Banker’s Algorithm
Multiple instances of resources
Operating System Concepts – 10th Edition 8.25 Silberschatz, Galvin and Gagne ©2018
Data Structures for the Banker’s Algorithm
Let n = number of processes, and m = number of resources types.
Max: n x m matrix.
• If Max [i,j] = k, then process Ti may request at most k instances of
resource type Rj
Allocation: n x m matrix.
• If Allocation[i,j] = k then Ti is currently allocated k instances of Rj
Need: n x m matrix.
• If Need[i,j] = k, then Ti may need k more instances of Rj to complete its
task
Operating System Concepts – 10th Edition 8.26 Silberschatz, Galvin and Gagne ©2018
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
4. If Finish [i] == true for all i, then the system is in a safe state
Operating System Concepts – 10th Edition 8.27 Silberschatz, Galvin and Gagne ©2018
Resource-Request Algorithm for Process Pi
Requesti = request vector for process Ti. If Requesti [j] = k then
process Ti 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 Ti must wait,
since resources are not available
3. Pretend to allocate requested resources to Ti by modifying the
state as follows:
Available = Available – Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;
• If safe the resources are allocated to Ti
• If unsafe Ti must wait, and the old resource-allocation state
is restored
Operating System Concepts – 10th Edition 8.28 Silberschatz, Galvin and Gagne ©2018
Example of Banker’s Algorithm
The system is in a safe state since the sequence < T1, T3, T4, T2, T0>
satisfies safety criteria
Operating System Concepts – 10th Edition 8.29 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
T0 010 743 230
T1 302 020
T2 302 600
T3 211 011
T4 002 431
Executing safety algorithm shows that sequence < T1, T3, T4, T0, T2>
satisfies safety requirement
Operating System Concepts – 10th Edition 8.30 Silberschatz, Galvin and Gagne ©2018
Deadlock Detection
Detection algorithm
Recovery scheme
Operating System Concepts – 10th Edition 8.31 Silberschatz, Galvin and Gagne ©2018
Single Instance of Each Resource Type
If all resources have only a single instance,
• define a deadlock detection algorithm that uses a variant of
the resource-allocation graph, called a wait-for graph.
Operating System Concepts – 10th Edition 8.32 Silberschatz, Galvin and Gagne ©2018
Resource-Allocation Graph and Wait-for Graph
Operating System Concepts – 10th Edition 8.33 Silberschatz, Galvin and Gagne ©2018
Several Instances of a Resource Type
Operating System Concepts – 10th Edition 8.34 Silberschatz, Galvin and Gagne ©2018
Detection Algorithm
Operating System Concepts – 10th Edition 8.35 Silberschatz, Galvin and Gagne ©2018
Detection Algorithm (Cont.)
3. Work = Work + Allocationi
Finish[i] = true
go to step 2
Operating System Concepts – 10th Edition 8.36 Silberschatz, Galvin and Gagne ©2018
Example of Detection Algorithm
Five threads T0 through T4; three resource types
A (7 instances), B (2 instances), and C (6 instances)
Sequence <T0, T2, T3, T1, T4> will result in Finish[i] = true for all i
Operating System Concepts – 10th Edition 8.37 Silberschatz, Galvin and Gagne ©2018
Example (Cont.)
State of system?
• Can reclaim resources held by thread T0, but insufficient resources
to fulfill other processes; requests
• Deadlock exists, consisting of processes T1, T2, T3, and T4
Operating System Concepts – 10th Edition 8.38 Silberschatz, Galvin and Gagne ©2018
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
Operating System Concepts – 10th Edition 8.40 Silberschatz, Galvin and Gagne ©2018
Recovery from Deadlock: Resource Preemption
Operating System Concepts – 10th Edition 8.41 Silberschatz, Galvin and Gagne ©2018
End of Chapter 8
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018