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