Professional Documents
Culture Documents
Deadlock 2
Deadlock 2
Safe State
Sequence <P0, P1, , Pn> is safe if 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
If Pis resource needs are not immediately available, then Pi can wait until all Pj have finished
When Pj finishes, Pi can obtain needed resources, execute, return allocated resources, and
terminate
Basic Facts
If system is in safe state no deadlock
If system is in unsafe state possibility of
deadlock
Avoidance ensure that system will never
enter an unsafe state
Example
Allocation
Max
P0
10
P1
P2
Example
Suppose that P2 requests and is allocated one
more instance of the resource, still assume the
system has 12 instances of the resource
Allocation
Max
P0
10
P1
P2
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
Avoidance algorithms
Single instance of a resource type
Use a resource-allocation graph
Bankers Algorithm
Multiple instances
Each process must a priori claim maximum use
Bankers Algorithm
Toward right idea:
State maximum resource needs in advance
Allow particular process to proceed if:
(available resources - #requested) max
remaining that might be needed by any process
instances)
P0
P1
P2
P3
P4
Allocation
Max
R0 R1 R2
R0 R1 R2
0
2
3
2
0
7
3
9
2
4
1
0
0
1
0
0
0
2
1
2
5
2
0
2
3
Available
3
2
2
2
3
Need
R0 R1 R2
3
R0 R1 R2
7
The system is in a safe state since the sequence <P1, P3, P4, P2, P0> satisfies safety criteria
P0
P1
P2
P3
P4
Allocation
Max
Available
R0 R1 R2
R0 R1 R2
R 0 R1 R2
0
2
3
2
0
7
3
9
2
4
1
0
0
1
0
0
0
2
1
2
5
2
0
2
3
3
2
2
2
3
Find the new state that the system would be in if this request is granted. If the new
state is safe, then it is safe to grant this request. Otherwise, it is not safe to honor this
request (safety algorithm)
This is the new state that the system would be in if P1s request is honored
P0
P1
P2
P3
P4
Allocation
R0 R1 R2
0 1 0
3 0 2
3 0 2
2 1 1
0 0 2
Max
R0 R1 R2
7 5 3
3 2 2
9 0 2
2 2 2
4 3 3
Available
R0 R1 R2
2 3 0
The sequence <P1, P3, P4, P0, P2> satisfies safety requirement, so it is safe to
honor P1s request
1.
2.
3.
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
3.
go to step 2
4. If Finish[i]
== true
Example
Consider a computer system having 4 serially-reusable resource classes R0 (4
instances), R1 (3 instances), R2 (11 instances), and R3 (2 instances). There are 4
processes in the system P0 through P3. Assume that the maximum claim
approach to deadlock avoidance is used. The current state is given by:
Allocation
Max
R0 R1 R2 R3
R0 R1 R2 R3
P0
2 1 2 0
3 1 5 1
P1
1 0 4 1
2 2 6 2
P2
0 1 1 0
1 2 1 0
P3
0 0 3 0
1 1 7 1
Which of the following outstanding requests can be safely satisfied?
Request
R0 R1 R2 R3
P0
1 0 2 1
P1
0 1 0 1
P2
1 0 0 0
P3
0 0 1 1