2 Safe StateWhen a process requests an available resource, system must decide if immediate allocation leaves the system in a safe stateSystem is in a safe state if there exists a safe sequence of all processesSequence <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 < iIf Pi‘s resource needs are not immediately available, then Pi can wait until all Pj have finishedWhen Pj finishes, Pi can obtain needed resources, execute, return allocated resources, and terminateWhen Pi terminates, Pi+1 can obtain its needed resources, and so on
3 Basic Facts If system is in safe state no deadlock If system is in unsafe state possibility of deadlockAvoidance ensure that system will never enter an unsafe state
5 Example Allocation Max Assume the system has 12 instances of the particular resourceIs the system currently in a safe or in an unsafe state?
6 ExampleSuppose that P2 requests and is allocated one more instance of the resource, still assume the system has 12 instances of the resourceAllocation MaxPPPIs the system currently in a safe or in an unsafe state?
7 Deadlock AvoidanceRequires 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 needThe deadlock-avoidance algorithm dynamically examines the resource-allocation state to ensure that there can never be a circular-wait conditionResource-allocation state is defined by the number of available and allocated resources, and the maximum demands of the processes
8 Avoidance algorithms Single instance of a resource type Use a resource-allocation graphMultiple instances of a resource typeUse the banker’s algorithm
9 Resource-Allocation Graph Algorithm Can be used if we have a resource-allocation system with only one instance of each resource type. We just need ensure that no cycle existsClaim edge Pi Rj indicates that process Pi may request resource Rj; represented by a dashed lineClaim edge converts to request edge when a process requests a resourceResources must be claimed a priori in the system
10 Resource-Allocation Graph For Deadlock Avoidance Suppose P2 requests R2, can this request be granted?
11 Resource-Allocation Graph For Deadlock Avoidance
12 Resource-Allocation Graph Algorithm Suppose that process Pi requests a resource RjThe 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
13 Banker’s AlgorithmMultiple instancesEach process must a priori claim maximum useWhen a process requests a resource it may have to waitWhen a process gets all its resources it must return them in a finite amount of time
14 Banker’s Algorithm Toward right idea: State maximum resource needs in advanceAllow particular process to proceed if:(available resources - #requested) max remaining that might be needed by any processBanker’s algorithm (less conservative):Allocate resources dynamicallyEvaluate each request and grant if some ordering of processes is still deadlock free afterwardTechnique: pretend request is granted, and check to see if resulting state would be a SAFE state. Grant request if result is deadlock free (conservative!)Keeps system in a SAFE state (i.e., there is always a safe sequence)Algorithm allows the sum of maximum resource needs of all current processes to be greater than total resources
15 Banker’s Algorithm: Example 5 processes P0 through P4; 3 resource types R0 (10 instances), R1 (5 instances), and R2 (7 instances)Snapshot at initial time:Allocation Max Available R0 R1 R2 R0 R1 R R0 R1 R2PPPPPIs the system in a safe state?The system is in a safe state since the sequence <P1, P3, P4, P2, P0> satisfies safety criteriaNeedR0 R1 R2
16 Banker’s Algorithm: Example Suppose that P1 requests (1, 0, 2). Is it safe to honor this request?Allocation Max Available R0 R1 R2 R0 R1 R2 R0 R1 R2PPPPPFind 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)
17 Banker’s Algorithm: Example This is the new state that the system would be in if P1’s request is honoredAllocation Max Available R0 R1 R2 R0 R1 R2 R0 R1 R2PPPPPThe sequence <P1, P3, P4, P0, P2> satisfies safety requirement, so it is safe to honor P1’s requestCan request for (3,3,0) by P4 be granted?Can request for (0,2,0) by P0 be granted?
18 Data Structures for the Banker’s Algorithm Let n be the number of processes, and m be the number of resource typesAvailable: Vector of length m. If Available[j]= k, there are k instances of resource type Rj availableMax: n x m matrix. If Max[i,j]= k, then process Pi may request at most k instances of resource type RjAllocation: n x m matrix. If Allocation[i,j]= k then Pi is currently allocated k instances of RjNeed: n x m matrix. If Need[i,j]= k, then Pi may need k more instances of Rj to complete its taskNeed[i, j] = Max[i, j] – Allocation[i, j]
19 Resource-Request Algorithm for Process Pi Let Request be the request vector for process Pi. If Requesti[j] = k then process Pi wants k instances of resource type Rj1. If Requesti Needi go to step 2. Otherwise, raise error condition, since process has exceeded its maximum claim2. If Requesti Available, go to step 3. Otherwise Pi must wait, since resources are not availablePretend to allocate requested resources to Pi by modifying the state as follows:Available = Available - RequestiAllocationi = Allocationi + RequestiNeedi = Needi – RequestiIf safe the resources are allocated to PiIf unsafe Pi must wait, and the old resource-allocation state is restored
20 Safety Algorithm1. Let Work and Finish be vectors of length m and n, respectively. Initialize:Work = AvailableFinish[i] = false for i = 0, 1, …, n2. Find an i such thatFinish[i] = false AND Needi WorkIf no such i exists, go to step 43. Work = Work + Allocationi Finish[i] = true go to step 24. If Finish[i] == true for all i, then the system is in a safe state
21 ExampleConsider 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 MaxR0 R1 R2 R R0 R1 R2 R3PPPPWhich of the following outstanding requests can be safely satisfied?RequestR0 R1 R2 R3PPPP