Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Course Overview Principles of Operating Systems Introduction Computer System Structures Operating System Structures Processes Process Synchronization Deadlocks CPU Scheduling © 2000 Franz Kurfess Memory Management Virtual Memory File Management Security Networking Distributed Systems Case Studies Conclusions Deadlocks 1 Chapter Overview Deadlock and Starvation Motivation Objectives Deadlock Principles Starvation Deadlock Conditions Mutual Exclusion Hold and Wait No Preemption Circular Wait © 2000 Franz Kurfess Dealing with Deadlock Deadlock Prevention Deadlock Avoidance Deadlock Detection and Recovery Deadlock and Operating Systems Important Concepts and Terms Chapter Summary Deadlocks 2 Motivation there is the potential of conflicts for processes who cooperate or share resources deadlock and starvation are the most severe conflicts, leading to the permanent halting of the processes affected common practice is not satisfactory ad hoc solutions neglecting the problem © 2000 Franz Kurfess Deadlocks 3 Objectives recognize potential problems with the coordination of activities for several processes (cooperation or resource sharing) understand the necessary conditions for a formal deadlock situation distinguish deadlocks from other reasons for “frozen” systems analyze the status of a system based on resource allocation graphs apply deadlock prevention, avoidance, and detection principles and algorithms to sets of processes © 2000 Franz Kurfess Deadlocks 4 “Deadlocked” Systems the term “deadlock” is often used casually to indicate that the computer system doesn’t respond (it is “frozen”) there are other reasons for a system to be in such a state endless loop waiting for an event that may never occur synchronization between processes deadlock needs to be defined carefully to distinguish it from these other reasons © 2000 Franz Kurfess Deadlocks 5 Deadlock Principles permanent mutual blocking of a set of resources that either compete for resources or cooperate on a task deadlocked processes don’t make any progress, and never finish their execution deadlocked processes may tie up system resources © 2000 Franz Kurfess Deadlocks 6 Starvation a process can’t proceed because other processes always have the resources it needs the request of the process is never satisfied in principle, it is possible to get the resource, but doesn’t happen because of low priority of the process timing of resource requests ill-designed resource allocation or scheduling algorithm different © 2000 Franz Kurfess from deadlock Deadlocks 7 Examples Starvation batch processes with low priority in a heavily used time-sharing system crossing a very busy road trying to call a very popular phone number NJIT modem pool radio station giveaways getting into a very popular course with limited enrollment © 2000 Franz Kurfess Deadlocks 8 Solution Starvation fairness: each process gets its fair share of all resources it requests how is fair defined? how is it enforced? aging the priority of a request is increased the longer the process waits for it © 2000 Franz Kurfess Deadlocks 9 Resource Types reusable resources can be used repeatedly by different processes does not imply simultaneous use OS examples: CPU, main memory, I/O devices, data structures consumable resources are produced by one entity, and consumed by another reuse is not possible, or impractical OS examples: messages © 2000 Franz Kurfess Deadlocks 10 Example Reusable Resources main memory allocation two processes make successive requests for main memory the overall memory size is 16 MByte Process A request 5 MBytes; request 8 MBytes; Process B request 7 MBytes; request 7 MBytes; deadlock no process can proceed unless one gives up some memory (preemption) frequent solutions: preallocation, virtual memory © 2000 Franz Kurfess Deadlocks 11 Example Consumable Resources message passing two processes wait for a message from each other, and then send one to each other receive operation is blocking (process can’t continue) Process A receive (B); send (B); Process B receive (A); send(A); deadlock no process can proceed because it is waiting for a message from the other no easy solution © 2000 Franz Kurfess Deadlocks 12 Deadlock on Resources usually based on design or programming errors these errors may be difficult or impossible to avoid interaction between different modules interaction between independent programs very difficult to detect may not occur during testing may occur very infrequently in the field © 2000 Franz Kurfess Deadlocks 13 Resource Allocation Graphs processes hold, request and release resources resources resource types specify a class of resources individual instances are identical from the process’ perspective resource assignment an instance of a resource is currently held by a process indicated by an assignment edge resource request a process wants to acquire another instance of a resource indicated by a request edge © 2000 Franz Kurfess Deadlocks 14 Resource Allocation Graphs R1 R2 R3 Assignment Edge P1 P2 P3 P4 P5 Request Edge R4 © 2000 Franz Kurfess R5 R6 R7 Deadlocks 15 Resource Allocation Graph with Cycle R1 P1 P1 -> R1 -> P2 -> R1, P1 -> R1 -> P2 -> R3 -> P1 P2 R2 © 2000 Franz Kurfess there is at least one cycle in the graph processes and resources involved e.g. R3 is there a deadlock? no, we have enough resources to satisfy all requests Deadlocks 16 Resource Allocation Graph with Deadlock R1 P1 R2 P2 R3 there must be at least one cycle in the graph cycles are candidates for deadlock is there a deadlock? yes, there are not enough resources in R2 to satisfy all requests by P1 and P2 processes and resources involved © 2000 Franz Kurfess P1 -> R2 -> P2 -> R2 Deadlocks 17 Cycles and Deadlocks if there is a cycle in the resource allocation graph, there may be a deadlock cycles a without deadlock are possible deadlock can only occur if there is a cycle no deadlock without a cycle © 2000 Franz Kurfess Deadlocks 18 Safe States a system is in a safe state if resources can be allocated to processes without getting into a deadlock the order in which resources are allocated must be flexible a sequence of processes is a safe sequence if the resources that a process may request are satisfiable by the currently available resources plus resources held by other processes this must hold for all processes in the system the process may have to wait until other processes are finished © 2000 Franz Kurfess Deadlocks 19 Safe State Space if a system is in a safe state there are no deadlocks in an unsafe state, there is a possibility of deadlocks Deadlock unsafe safe © 2000 Franz Kurfess Deadlocks 20 Dining Philosophers, Again var chopstick: array [0..4] of semaphore; repeat wait(chopstick[i]); wait(chopstick[i + 1 mod 5]); ... -- eat ... signal(chopstick[i]); signal(chopstick[i + 1 mod 5]); ... -- think ... until false; R4 R0 P4 P1 R1 R3 P3 © 2000 Franz Kurfess P0 R2 P2 Deadlocks 21 Why Deadlock? reasons for potential deadlock mutual exclusion two philosophers cannot use a chopstick simultaneously use a protocol that prevents philosophers from picking up their chopsticks simultaneously picking up one chopstick if the other is not available supervisor an authority that can tell philosophers what to do may use preemption of resources seating philosopher arrangement don’t seat philosophers around a round table may require more n+1 chopsticks for n philosophers several conditions must hold simultaneously © 2000 Franz Kurfess Deadlocks 22 Conditions for Deadlock all four conditions must hold simultaneously mutual exclusion hold and wait no preemption circular wait the term deadlock is often used sloppily in situations that don’t constitute a formal deadlock as described above © 2000 Franz Kurfess Deadlocks 23 Mutual Exclusion only one process can hold a resource at one point at least one resource may be used in a mutually exclusive way only requests by other processes are delayed usually determined by the needs of the resource, not under the control of the OS examples: CPU, printer, write on files © 2000 Franz Kurfess Deadlocks 24 Hold and Wait one process holds a resource and waits to acquire other resources currently held by other processes the processes doesn’t release its current resources may be necessary, or a consequence of bad program design examples: memory segments, I/O devices, chopsticks © 2000 Franz Kurfess Deadlocks 25 No Preemption a resource is released by a process only voluntarily no intervention by the OS or other processes examples: “cooperative multitasking” (MacOS) © 2000 Franz Kurfess Deadlocks 26 Circular Wait each process holds at least one resources needed by another process the set of processes together with the request and hold links forms a cycle there must be a set of processes P0, P1, ..., PN such that Pi is waiting on Pi+1 and PN is waiting on P0 examples: © 2000 Franz Kurfess dining philosophers, memory requests Deadlocks 27 Deadlock Examples examples studying students traffic intersection narrow tunnel single-track railroad airline reservation system evaluation four conditions: mutual exclusion, hold and wait, no preemption, circular wait © 2000 Franz Kurfess Deadlocks 28 Studying Students studying students: both students need the textbook and the course notes to study, but there is only one copy of each consider the following situation: Student A get coursenotes get textbook study release textbook release coursenotes © 2000 Franz Kurfess Student B get textbook get coursenotes study release coursenotes release textbook Deadlocks 29 Students Evaluation mutual exclusion books and course notes can be used only by one student hold and wait a student who has the book waits for the course notes, or vice versa no preemption there is no authority to take away book or course notes from a student circular wait student A waits for resources held by student B, who waits for resources held by A © 2000 Franz Kurfess Deadlocks 30 Traffic Intersection at a four-way intersection, four cars arrive simultaneously if all proceed, they will be stuck in the middle © 2000 Franz Kurfess Deadlocks 31 Traffic Evaluation mutual cars exclusion can’t pass each other in the intersection hold and wait vehicles proceed to the center, and wait for their path to be clear no preemption there circular is no authority to remove some vehicles wait vehicle 1 waits for vehicle 2 to move, which waits for 3, which waits for 4, which waits for 1 © 2000 Franz Kurfess Deadlocks 32 Narrow Tunnel in a narrow tunnel, there is enough room for most vehicles to pass each other if two large trucks arrive simultaneously, they won’t be able to pass each other © 2000 Franz Kurfess Deadlocks 33 Tunnel Evaluation mutual exclusion trucks can’t pass each other in the tunnel hold and wait trucks occupy part of the tunnel and wait for their path to become clear no preemption there is no authority to remove the trucks circular truck wait 1 waits for truck 2 to move, which waits for 1 © 2000 Franz Kurfess Deadlocks 34 Single-Track Railroad two trains arrive from different directions on a singletrack section railroad evaluation mutual exclusion trains can’t pass each other on the single track hold and wait no trains occupy part of the track and wait for their path to become clear preemption there is no authority to remove the trains circular wait train 1 waits for train 2 to move, which waits for 1 © 2000 Franz Kurfess Deadlocks 35 Airline Reservation System two agents book flights in from EWR to FRA to MUC agent A books flights EWR to FRA first agent B books FRA to MUC first flight records are locked during booking Agent A lock EWR-FRA lock FRA-MUC -- finalize booking release FRA-MUC release EWR-FRA © 2000 Franz Kurfess Agent B lock FRA-MUC lock EWR-FRA -- finalize booking release EWR-FRA release FRA-MUC Deadlocks 36 Reservation Evaluation mutual flight exclusion records are locked hold and wait one agent locks one segment and waits for the other to become available no preemption there circular agent is no authority to remove the locks held by an agent wait A waits for agent B to unlock a segment, who waits for A © 2000 Franz Kurfess Deadlocks 37 Dealing with Deadlocks protocol have strict rules that prevent a deadlock from occurring recover allow the system to enter a deadlock there must be a way to recover from the deadlock situation ignoring the deadlock frequently used in operating systems Windows, MacOS, Unix, ... © 2000 Franz Kurfess Deadlocks 38 Dealing with Deadlocks deadlock based on protocols deadlock check avoidance for safe state deadlock run prevention detection and recovery into a deadlock, detect it, and recover © 2000 Franz Kurfess Deadlocks 39 Deadlock Prevention set of rules ensures that at least one of the four necessary conditions for deadlock doesn’t hold mutual exclusion hold and wait no preemption circular wait may result in low resource utilization, reduced system throughput example: traffic lights, no trucks in the narrow tunnel © 2000 Franz Kurfess Deadlocks 40 Denying Mutual Exclusion if all resources were sharable there would not be any deadlock some resources can be made sharable for example, spooling printer output some e.g. resources are intrinsically non-sharable CPU (at the instruction time scale) © 2000 Franz Kurfess Deadlocks 41 Denying Hold And Wait prevent processes that hold resources from waiting for more resources processes request and are allocated all their resources before they start executing low resource utilization rate processes can request resources only if they have none indefinite postponement © 2000 Franz Kurfess Deadlocks 42 Denying No Preemption means that processes may be preempted by the OS should only done when necessary resources of a process trying to acquire another unavailable resource may be preempted preempt resources of processes waiting for additional resources, and give some to the requesting process possible only for some types of resources state must be easily restorable e.g. CPU, memory frequently © 2000 Franz Kurfess used when applicable Deadlocks 43 Denying Circular Wait break the cycle of waiting processes impose a total ordering of all resource types resources may only requested in increasing order of enumeration no process can request a resource with a lower number than what it is already holding ordering © 2000 Franz Kurfess should take typical order of usage into account Deadlocks 44 Safe Philosophers solution based on monitors deadlock prevention is used by designing the program with certain restrictions basic idea a philosopher picks up a chopstick only if the other one is available as well philosophers inform each other when they are done © 2000 Franz Kurfess Deadlocks 45 Philosophers with Monitors type dining-philosophers = monitor var state: array [0..4] of (thinking, hungry, eating); var self: array [0..4] of condition; procedure entry pickup(i: 0..4); begin state[i] := hungry; test(i); if state[i] <> eating then self[i].wait; end; procedure entry putdown(i: 0..4); begin state[i] := thinking; test(i-1 mod 5); test(i+1 mod 5); end; © 2000 Franz Kurfess [Silberschatz & Galvin, 1998] Deadlocks 46 Philosophers with Monitors (cont.) procedure test(k: 0..4); begin if (state[k-1] mod 5 <> eating and state[k] = hungry and state[k+1] mod 5 <> eating) then begin state[k] := eating; self[k].signal; end; end; begin for i := 0 to 4 do state[i] := thinking; end; © 2000 Franz Kurfess [Silberschatz & Galvin, 1998] Deadlocks 47 Deadlock Avoidance makes sure the system stays in a safe state if a request is satisfied prevents circular waits requires additional information at the beginning of the execution of a process maximum number of instances per resource type for each process © 2000 Franz Kurfess Deadlocks 48 Safe State A system is in a safe state when given the current allocation the system is able to handle any number of requests, in some order, without getting into a deadlock. © 2000 Franz Kurfess Deadlocks 49 Example Bank gives loans to customers maximum allocation = credit limit BANK $10 A B C $5 $7 $3 © 2000 Franz Kurfess Maximum Allocation Deadlocks 50 Safe State? Will the bank be able to give each customer a loan up to the full credit limit? not necessarily all customers simultaneously order is not important customers will pay back their loan once their credit limit is reached BANK $2 Current Allocation A $3 $5 © 2000 Franz Kurfess B $4 $7 Maximum Allocation C $1 $3 Deadlocks 51 Still Safe? after customer B requests and is granted $1, is the bank still safe? BANK $1 Current Allocation A $3 $5 B $5 $7 C $1 $3 Maximum Allocation © 2000 Franz Kurfess Deadlocks 52 Safe State Space Safe unsafe deadlock © 2000 Franz Kurfess Deadlocks 53 Bank Safe State Space unsafe Safe (3,4,1) x (3,5,1) x deadlock © 2000 Franz Kurfess Deadlocks 54 Banker’s Algorithm before a request is granted, check the system’s state assume the request is granted if it is still safe, the request can be honored otherwise the process has to wait overly careful there are cases when the system is unsafe, but not in a deadlock © 2000 Franz Kurfess Deadlocks 55 Example Banker’s Algorithm initially given: current allocation, maximum allocation, available resources Process P0 P1 P2 P3 P4 © 2000 Franz Kurfess Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Maximum Allocation A B C D E 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2 Available A B C D E 1 0 1 0 1 Deadlocks 56 needed allocation is calculated by subtracting the current allocation from the maximum allocation Process P0 P1 P2 P3 P4 Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 1 0 1 0 1 1 1 2 1 2 <P3> © 2000 Franz Kurfess Deadlocks 57 available resources are increased because processes that are finished return their resources Process P0 P1 P2 P3 P4 Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 1 0 1 0 1 1 1 2 1 2 2 2 2 2 2 <P3, P1> © 2000 Franz Kurfess Deadlocks 58 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 1 0 1 0 1 1 1 2 1 2 2 2 2 2 2 2 2 3 2 2 <P3, P1, P4> © 2000 Franz Kurfess Deadlocks 59 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 1 0 1 0 1 1 1 2 1 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 3 <P3, P1, P4, P2> © 2000 Franz Kurfess Deadlocks 60 if there is a sequence in which all processes get their needed allocation, the system is in a safe state Process P0 P1 P2 P3 P4 Current Allocation A B C D E 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 1 0 1 0 1 1 1 2 1 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 3 3 2 4 2 3 <P3, P1, P4, P2, P0> © 2000 Franz Kurfess Deadlocks 61 What if P0 requests and is granted one instance of resource A? adjust current and needed allocation, available resources Process P0 P1 P2 P3 P4 © 2000 Franz Kurfess Current Allocation A B C D E 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 0 0 1 0 1 Deadlocks 62 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 0 0 1 0 1 0 1 2 1 2 <P3> © 2000 Franz Kurfess Deadlocks 63 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 0 0 1 0 1 0 1 2 1 2 1 2 2 2 2 <P3, P1> © 2000 Franz Kurfess Deadlocks 64 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 Available A B C D E 0 0 1 0 1 0 1 2 1 2 1 2 2 2 2 1 2 3 2 2 <P3, P1, P4> © 2000 Franz Kurfess Deadlocks 65 Process P0 P1 P2 P3 P4 Current Allocation A B C D E 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 Needed Allocation A B C D E 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2 <P3, P1, P4> © 2000 Franz Kurfess Available A B C D E 0 0 1 0 1 0 1 2 1 2 1 2 2 2 2 1 2 3 2 2 Conflict! Deadlocks 66 Example 1 Banker’s Algorithm initially given: current allocation, maximum allocation, available resources Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Maximum Allocation A B C D 1 2 0 1 1 2 3 2 0 0 3 0 2 3 0 1 0 0 0 1 3 3 4 1 Available A B C D 1 0 0 1 Deadlocks 67 Ex. 1 Resource Allocation Graph B B A Assignment Edge P0 P1 P2 P3 P4 P5 Request Edge C © 2000 Franz Kurfess D Deadlocks 68 Example 1 (cont.) needed allocation is calculated by subtracting the current allocation from the maximum allocation all calculations are done for each element of the vector Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 Deadlocks 69 Example 1 (cont.) select a process whose request (needed allocation) could be satisfied with the available resources there may be several candidates (e.g. P0, P4) Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 <P0> Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 Deadlocks 70 Example 1 (cont.) the resources held by this process are added to the available resources because processes that are finished return their resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 <P0> © 2000 Franz Kurfess Deadlocks 71 Example 1 (cont.) the next process is selected the previous process is marked as already checked Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 <P0, P3> © 2000 Franz Kurfess Deadlocks 72 Example 1 (cont.) and its resources are added to the available resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 2 4 0 3 <P0, P3> © 2000 Franz Kurfess Deadlocks 73 Example 1 (cont.) the next process is selected, and its resources are added to the available resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 2 4 0 3 3 5 3 3 <P0, P3, P1> © 2000 Franz Kurfess Deadlocks 74 Example 1 (cont.) the next process is selected, and its resources are added to the available resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 2 4 0 3 3 5 3 3 3 5 4 3 <P0, P3, P1, P2> © 2000 Franz Kurfess Deadlocks 75 Example 1 (cont.) the next process is selected, and its resources are added to the available resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 1 0 0 1 1 2 0 2 2 4 0 3 3 5 3 3 3 5 4 3 3 5 4 3 <P0, P3, P1, P2, P4> © 2000 Franz Kurfess Deadlocks 76 Example 1 (cont.) the last process (P5) is selected, and its resources are added to the available resources Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 1 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 1 1 0 0 0 0 0 1 2 2 3 0 <P0, P3, P1, P2, P4, P5> Available A B C D 1 0 0 1 1 2 0 2 2 4 0 3 3 5 3 3 3 5 4 3 3 5 4 3 4 6 5 4 Deadlocks 77 Outcome Example 1 all processes have been checked successfully there is at least one sequence in which the requests of the processes can be satisfied safely the final value for the “available” vector indicates the total number of resources © 2000 Franz Kurfess Deadlocks 78 Example 2 Banker’s Algorithm slight modification of the previous example: holds 2 2 0 1 instead of 1 2 0 1 this changes Current Allocation, Needed Allocation, and Available Current Maximum Process Allocation Allocation Available AB C D A B C D A B C D P0 0 2 0 1 1 2 0 1 0 0 0 1 P1 1 1 3 0 1 2 3 2 P2 0 0 1 0 0 0 3 0 P3 2 2 0 1 2 3 0 1 P4 0 0 0 0 0 0 0 1 P5 1 1 1 1 3 3 4 1 P3 © 2000 Franz Kurfess Deadlocks 79 Ex. 2 Resource Allocation Graph B B A Assignment Edge P0 P1 P2 P3 P4 P5 Request Edge C © 2000 Franz Kurfess D Deadlocks 80 Example 2 (cont.) needed allocation is calculated by subtracting the current allocation from the maximum allocation all calculations are done for each element of the vector Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 2 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 0 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 0 0 0 1 Deadlocks 81 Example 2 (cont.) select a process whose request (needed allocation) could be satisfied with the available resources Process P0 P1 P2 P3 P4 P5 © 2000 Franz Kurfess Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 2 2 0 1 0 0 0 0 1 1 1 1 <P4> Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 0 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 0 0 0 1 Deadlocks 82 Example 2 (cont.) the resources held by this process are added to the available resources because processes that are finished return their resources Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 2 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 0 1 0 0 0 0 0 1 2 2 3 0 Available A B C D 0 0 0 1 0 0 0 1 <P4> © 2000 Franz Kurfess Deadlocks 83 Example 2 (cont.) the next process is selected the previous process is marked as already checked Process P0 P1 P2 P3 P4 P5 Current Allocation AB C D 0 2 0 1 1 1 3 0 0 0 1 0 2 2 0 1 0 0 0 0 1 1 1 1 Needed Allocation A B C D 1 0 0 0 0 1 0 2 0 0 2 0 0 1 0 0 0 0 0 1 2 2 3 0 <P4> © 2000 Franz Kurfess Available A B C D 0 0 0 1 0 0 0 1 Conflict! Deadlocks 84 Outcome Example 2 not all processes could be checked successfully there is no sequence in which the requests of the processes can be satisfied safely the system is in an unsafe state involving all processes except P4 © 2000 Franz Kurfess Deadlocks 85 Detection and Recovery the system must provide an algorithm to examine whether a deadlock has occurred recover from the deadlock requires run-time overhead due to maintaining information and executing a detection algorithm the potential losses inherent in recovery © 2000 Franz Kurfess Deadlocks 86 Detection: Single Instance all resource types have only one instance a cycle in the resource allocation graph means there is a deadlock a cycle detection algorithm requires an order of n2 operations for n nodes in the graph (processes + resources) © 2000 Franz Kurfess Deadlocks 87 Resource Allocation Graphs R1 R2 R3 Assignment Edge P1 P2 P3 P4 P5 Request Edge R4 © 2000 Franz Kurfess R5 R6 R7 Deadlocks 88 Detection: Multiple Instances there are several instances for each resource type an algorithm similar to deadlock avoidance (banker’s algorithm) is used to determine whether the system is deadlocked order of m * n2 operations (m = no. of resource types, n = no. of processes) requires how often the algorithm is invoked depends on the likelihood for deadlock to occur the number of processes affected by deadlock © 2000 Franz Kurfess Deadlocks 89 Recovery resume operation after a deadlock has been detected preemption rollback killing processes © 2000 Franz Kurfess Deadlocks 90 Ignoring the Problem simplest approach better performance and less restrictive system problem: possibility of occasional deadlocks example: Unix © 2000 Franz Kurfess Deadlocks 91 Deadlock in Operating Systems combined approach resources are partitioned into hierarchically ordered classes a resource-ordering technique is applied to the classes within each class, one particular approach to deadlocks can be used guarantees that a deadlock cannot involve more than one class, and the whole system is safe © 2000 Franz Kurfess Deadlocks 92 Example Combined Approach classes of resources system used by the OS user resources memory memory used by a user process process resources resources available to processes devices, files swap space space for processes on a background storage device © 2000 Franz Kurfess Deadlocks 93 Solution Combined Approach resource ordering between the four classes individual approaches within each class system prevention: resource ordering within the class user resources memory preemption: swap a process to secondary storage process deadlock avoidance: processes inform the OS in advance about resources to be requested swap resources space prevention: all required resources are allocated at the same time (preallocation) © 2000 Franz Kurfess Deadlocks 94 Important Concepts and Terms Banker’s algorithm circular wait condition deadlock deadlock avoidance deadlock detection deadlock prevention dining philosophers hold and wait condition instance monitor mutual exclusion condition © 2000 Franz Kurfess no preemption condition process preemption recovery resource resource allocation resource allocation graph resource type safe state starvation synchronization termination Deadlocks 95 Summary Deadlocks deadlock is a specific situation characterized by four criteria mutual exclusion, hold and wait, no preemption, circular wait it prevents affected processes from continuing their execution deadlock can be dealt with by prevention, avoidance, detection, or by ignoring the problem various algorithms based on resource allocation graphs e.g. banker’s algorithm © 2000 Franz Kurfess Deadlocks 96