Operating Systems CST 352 Deadlock 4/9/2015 CST 352 - Operating Systems 1 Topics Definitions Deadlock Conditions Ostrich Algorithm Deadlock Detection Deadlock Recovery Deadlock Avoidance Deadlock Prevention 4/9/2015 CST 352 - Operating Systems 2 Definitions Resources – Parts of a system that are required for a process to run (e.g. memory, disk, CPU, etc.) Preemptable – A resource that can be taken from a process without adverse affects (e.g. seized memory) Non Preemtable– A resource that cannot be taken away (e.g. a device driver connected to printer) 4/9/2015 CST 352 - Operating Systems 3 Definitions Deadlock – In a set of processes, each process is waiting for a resource that one of the other process has seized. Remember the dining philosophers. 4/9/2015 CST 352 - Operating Systems 4 Definitions A Traffic Deadlock All Stop….. Ready….. Go! 4/9/2015 CST 352 - Operating Systems 5 Definitions A Traffic Deadlock Oops…. Deadlock How is this deadlock avoided under normal circumstances? 4/9/2015 CST 352 - Operating Systems 6 Definitions Question: 1. 2. 4/9/2015 Which of the two types of resource can lead to a deadlock condition? Why? CST 352 - Operating Systems 7 Definition Question: Can there be deadlock in a “firstcome, first-serve” scheduling scheme? 4/9/2015 CST 352 - Operating Systems 8 Required Conditions Four conditions necessary for Deadlock: 1. Mutual Exclusion – Only one process can access a resource at any given time. 2. Hold and Wait – A process may hold a resource while waiting for others to become available. 3. No preemption – No resource may be forcibly taken from a holding process. 4. Circular wait – There must be at least two processes, each waiting for a resource held by the other. 4/9/2015 CST 352 - Operating Systems 9 Deadlock Concepts Modeling Deadlock (grid method) X – axis: progress of process A. Y – axis: progress of process B. This gives us a good feel for deadlock overlap, however, it becomes unmanageable for more than two processes. 4/9/2015 CST 352 - Operating Systems 10 Modeling Deadlock (Resource Trajectories) Example: Proc A and Proc B competing for Resource 1 and Resource 2. Process B Deadlock Concepts Rel 1 Proc A and Proc B want Resource 1 Rel 2 Get 1 Deadlock Pending Get 2 Get 1 4/9/2015 Proc A and Proc B want Resource 2 Get 2 CST 352 - Operating Systems Rel 1 Rel 2 Process A 11 1. 2. 3. 4. 5. 6. 7. 8. Process B Deadlock Concepts A Executes B Executes Rel 1 A Executes B acquires 2 Rel 2 B acquires 1 B releases 2 Get 1 B releases 1 A can acquire both 1Get 2 and 2 Proc A and Proc B want Resource 1 Deadlock Pending Get 1 4/9/2015 Get 2 CST 352 - Operating Systems Proc A and Proc B want Resource 2 Rel 1 Rel 2 Process A 12 1. 2. 3. 4. 5. 6. 7. 8. 9. Process B Deadlock Concepts A Executes B Executes Rel 1 A Executes B acquires 2 Rel 2 B acquires 1 A blocks on 1 Get 1 B releases 2 B releases 1 Get 2 A can acquire both 1 and 2 Proc A and Proc B want Resource 1 Deadlock Pending Get 1 4/9/2015 Get 2 CST 352 - Operating Systems Proc A and Proc B want Resource 2 Rel 1 Rel 2 Process A 13 1. 2. 3. 4. 5. 6. 7. 8. A Executes B Executes A Executes B acquires 2 A acquires 1 B blocks on 1 A blocks on 2 Deadlock Process B Deadlock Concepts Rel 1 Proc A and Proc B want Resource 1 Rel 2 X Get 1 Deadlock Pending Proc A and Proc B want Resource 2 Get 2 Get 1 4/9/2015 Get 2 CST 352 - Operating Systems Rel 1 Rel 2 Process A 14 To reduce resource contention, construct Process A such that it does not need both resource 1 and resource 2 at the same time. This increases the number of valid paths through the “gray” areas. Process B Deadlock Concepts Rel 1 Rel 2 Proc A and Proc B want Resource 1 Proc A and Proc B want Resource 2 Get 1 Get 2 Get 1 4/9/2015 Rel 1 CST 352 - Operating Systems Get 2 Rel 2 Process A 15 Deadlock Concepts Modeling Deadlock (grid method) The resource trajectory model has disadvantages Unmanageable for complex systems Dependent on resource acquisition sequencing This model does suggest solutions to deadlock (e.g. avoid getting into the “Deadlock Pending” region. 4/9/2015 CST 352 - Operating Systems 16 Deadlock Concepts Modeling Deadlock (graph method) A circle represents a process A square represents a resource A directed arch from a circle to a square represents a process requesting a resource. P1 requesting R1 P1 R1 A directed arch from square to circle represents a process holding a resource P1 holding R1 P1 R1 A Deadlock is condition is represented by a “cycle” in the graph. 4/9/2015 CST 352 - Operating Systems 17 Deadlock Concepts Modeling Deadlock (graph method) Example: Processes P1, P2, and P3 Resources R1, R2, and R3 4/9/2015 P1 P2 P3 R1 R2 R3 CST 352 - Operating Systems 18 Deadlock Concepts Modeling Deadlock (graph method) 1. P1 requests and holds R1 2. P2 requests and holds R2 3. P3 requests and holds R3 4. P1 requests R2 5. P2 requests R3 6. P3 requests R1 The cyclic condition of the graph indicates this sequence of event will cause deadlock. 4/9/2015 P1 P2 P3 R1 R2 R3 CST 352 - Operating Systems 19 Ostrich Algorithm Stick your head in the sand and pretend there is no problem at all. Mathematically speaking – this is unacceptable. From an engineering point of view, this may be ok. 4/9/2015 CST 352 - Operating Systems 20 Ostrich Algorithm Considerations: What is the half-life of your OS. What resource contentions could cause a deadlock. How often statistically does your OS experience a visible deadlock. 4/9/2015 CST 352 - Operating Systems 21 Ostrich Algorithm The Ostrich Algorithm is the easiest solution to the deadlock problem. In standard “user” based systems (e.g. Windows, Unix Workstations, etc.), this is perfectly acceptable. Would you consider the “Ostrich Algorithm” an acceptable solution for an enterprise management system? 4/9/2015 CST 352 - Operating Systems 22 Deadlock Detection Graph based approach For each resource access Create a node representing the process accessing the resource. Create a node representing the resource. Make the appropriate directed association. 4/9/2015 CST 352 - Operating Systems 23 Deadlock Detection Graph based approach (example) 1. 2. 3. 4. 5. 6. PA requests R1 and gets it. PB requests R2 and gets it. PC requests R2. PD requests R3 and gets it. PD requests R1. PA requests R3. Every time a resource request is made: 1. Add the appropriate node to the graph 2. Check the graph for cycles. 4/9/2015 PA R1 PB R2 PC R3 CST 352 - Operating Systems PD 24 Deadlock Detection Graph based approach To implement the graph based approach, the OS needs to: Build a graph on the fly based on resource requests. Provide some form of cycle detection to detect deadlock conditions in the constructed graph. 4/9/2015 CST 352 - Operating Systems 25 Deadlock Detection Q: 1. 4/9/2015 List the four conditions for deadlock. CST 352 - Operating Systems 26 Deadlock Detection Matrix Approach Let “n” = number of processes == (P1, …, Pn). Let “m” = number of resource classes. E1 – resource of type 1 E2 – resource of type 2 … Em – resource of type m 4/9/2015 CST 352 - Operating Systems 27 Deadlock Detection Matrix Approach At any point in time, the allocation of resources can be represented by a two vectors. (E1, E2, …, Em) – Existing resource vector. (A1, A2, …, Am) – Available resource vector. 4/9/2015 CST 352 - Operating Systems 28 Deadlock Detection Matrix Approach Represent allocation with a matrix Columns represent resources Rows represent processes Represent requests with a matrix Columns represent resources Rows represent processes 4/9/2015 CST 352 - Operating Systems 29 Deadlock Detection Matrix Approach Current Allocation and Request c11 c22 … cn1 c12 … c1m c22 … c2m … … cn2 … cnm r11 r22 … rn1 Current Allocation 4/9/2015 CST 352 - Operating Systems r12 … r1m r22 … r2m … … rn2 … rnm Current Request 30 Deadlock Detection Matrix Approach At any point in time, the resource state must conform to the equation: For any j (j -> resource “column”): n cij+Aj = Ej i=1 e.g. allocated instances of resource j + available instances of resource j = number of existing instances of resource j. 4/9/2015 CST 352 - Operating Systems 31 Deadlock Detection Matrix Approach Process allocation is now done by comparing vectors. Vector A <= B iff For all i < m, Ai <= Bi Initialize the processes to “r” for “run”. As the algorithm proceeds, set the process flags to either “r” for processes capable of running, or “b” for processes blocked and waiting for a resource. 4/9/2015 CST 352 - Operating Systems 32 Deadlock Detection Matrix Approach Every time there is a resource allocation: Look for a process (Pi) for which the request row (Ri) <= available resources (Ai). Looking for resource demands that can be met. If such a process is found, add the ith row of the c matrix to the A vector. Loop over next request. Else Terminate the detection algorithm and set Pi to “b” All “b” processes are blocked. 4/9/2015 CST 352 - Operating Systems 33 Deadlock Detection Matrix Approach In practical application, keep the matrices as a running total. Each time there is a resource allocation, update the matrices. Each time there is a resource de-allocation, update the matrices. Deadlock occurs when two (or more) processes have cross referenced resources. 4/9/2015 CST 352 - Operating Systems 34 Deadlock Detection Matrix Approach (Example) Current 0 C= 0 0 Allocation 0 0 0 0 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [3 2 2] P1 r P2 r P3 r Request 2 0 0 R= 0 0 0 0 0 0 1) P1 requests 2 Printers 4/9/2015 CST 352 - Operating Systems 35 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 0 4/9/2015 Allocation 0 0 0 0 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [1 2 2] P1 r P2 r P3 r Request 0 0 0 R= 0 0 0 0 0 0 CST 352 - Operating Systems 36 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 0 Allocation 0 0 0 0 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [1 2 2] P1 r P2 r P3 r Request 0 0 0 R= 1 0 2 0 0 0 2) P2 requests 1 Printer, 2 DVDs 4/9/2015 CST 352 - Operating Systems 37 Deadlock Detection Matrix Approach (Example) Current 2 C= 1 0 4/9/2015 Allocation 0 0 0 2 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 2 0] P1 r P2 r P3 r Request 0 0 0 R= 0 0 0 0 0 0 CST 352 - Operating Systems 38 Deadlock Detection Matrix Approach (Example) Current 2 C= 1 0 Allocation 0 0 0 2 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 2 0] P1 r P2 r P3 r Request 0 0 0 R= 0 0 0 1 1 0 3) P3 requests 1 Printer, 1 CD Rom 4/9/2015 CST 352 - Operating Systems 39 Deadlock Detection Matrix Approach (Example) Current 2 C= 1 0 Allocation 0 0 0 2 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 2 0] P1 r P2 r P3 b Request 0 0 0 R= 0 0 0 1 1 0 4) P3 blocked 4/9/2015 CST 352 - Operating Systems 40 Deadlock Detection Matrix Approach (Example) Current 2 C= 1 0 Allocation 0 0 0 2 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 2 0] P1 r P2 r P3 b Request 0 0 0 R= 0 0 0 1 1 0 5) P2 frees up printer 4/9/2015 CST 352 - Operating Systems 41 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 0 4/9/2015 Allocation 0 0 0 2 0 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [1 2 0] P1 r P2 r P3 b Request 0 0 0 R= 0 0 0 1 1 0 CST 352 - Operating Systems 42 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 r P2 r P3 r Request 0 0 0 R= 0 0 0 0 0 0 6) P3 can now run 4/9/2015 CST 352 - Operating Systems 43 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 r P2 r P3 r Request 0 0 1 R= 0 0 0 0 0 0 7) P1 request DVD 4/9/2015 CST 352 - Operating Systems 44 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 b P2 r P3 r Request 0 0 1 R= 0 0 0 0 0 0 8) P1 blocked 4/9/2015 CST 352 - Operating Systems 45 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 b P2 r P3 r Request 0 0 1 R= 1 0 0 0 0 0 9) P2 request printer 4/9/2015 CST 352 - Operating Systems 46 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 b P2 b P3 r Request 0 0 1 R= 1 0 0 0 0 0 10) P2 blocked 4/9/2015 CST 352 - Operating Systems 47 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 b P2 b P3 r Request 0 0 1 R= 1 0 0 0 0 0 • This is still not deadlock since P3 holds a resource that could allow P2 to commence execution. • If P1 held all 3 printers, we would have true deadlock. 4/9/2015 CST 352 - Operating Systems 48 Deadlock Detection Matrix Approach (Example) Current 2 C= 0 1 Allocation 0 0 0 2 1 0 DVD Printer DVD CD Rom Printer E = [3 2 2] CD Rom Available Vector Resource Vector A = [0 1 0] P1 b P2 b P3 r Request 0 0 1 R= 1 0 0 0 0 0 • What are the general conditions for true deadlock? 4/9/2015 CST 352 - Operating Systems 49 Deadlock Detection Hypothesis (extra credit – 50 pts) Prove or disprove Deadlock can be detected by rotating the rows and columns of the C and R matrix (in conjunction) so that if C and R have any inverse sub-matrices, the involved processes are deadlocked. E and A must be involved. 4/9/2015 CST 352 - Operating Systems 50 Deadlock Recovery Given the above algorithm, the OS can detect which process is waiting for what resource. Now the OS needs to decide what to do when a deadlocked process is detected. 4/9/2015 CST 352 - Operating Systems 51 Deadlock Recovery Recovery through preemption Take a resource away from a process and give it to another. Only works for preemptable processes. 4/9/2015 CST 352 - Operating Systems 52 Deadlock Recovery Recovery through rollback PCB (TCB) and resource state are periodically saved at a “checkpoint” When a deadlock is detected, back the deadlocked process up to the previous stable state. Discard the resource manipulation that occurred after the checkpoint. Start the process after it is determined it can run again. 4/9/2015 CST 352 - Operating Systems 53 Deadlock Recovery Recovery through process killing Kill off the offending processes. The processes that have allocated contending resources are removed from the system. Kill off the lower priority process. Kill off non-OS (user) processes. Return their resources to the system. 4/9/2015 CST 352 - Operating Systems 54 Deadlock Recovery Q: 1. 2. 3. 4/9/2015 How can a system be constructed so it will never have deadlock? Give an example. T or F – The graph model for deadlock only works well for 2 processes. CST 352 - Operating Systems 55 Deadlock Avoidance Shaded regions with slanted lines represent instances where both processes gain access to a resource at the same time. If the resources are mutually exclusive, it is impossible for these areas to be entered by a “run time trajectory”. 4/9/2015 Process B Process Trajectories – revisited Rel 1 Proc A and Proc B want Resource 1 Rel 2 Get 1 Deadlock Pending Proc A and Proc B want Resource 2 Get 2 Get 1 CST 352 - Operating Systems Get 2 Rel 1 Rel 2 Process A 56 Deadlock Avoidance Bankers Algorithm The banker at Klamath First Federal is granting a group of customers credit. The banker has limited cash to loan. Each customer has a credit limit. The banker assumes no customer will request their entire credit limit at a single time. 4/9/2015 CST 352 - Operating Systems 57 Deadlock Avoidance Bankers Algorithm The banker grants loans to the customers based customer credit limit and available cash reserve. The bankers job is to avoid the situation where cash reserves drop so low that the FDIC shuts the bank down. Loans that may cause inspection by the FDIC are called “unsafe” loans. 4/9/2015 CST 352 - Operating Systems 58 Deadlock Avoidance Bankers Algorithm (Example) 4 customers – Joe, Jay, Jim, and Jill Initial reserve of 10 dollars (it is a very small bank). Each customer has a credit limit. The goal here is to ensure that two customers cannot be simultaneously blocked waiting on a resource. 4/9/2015 CST 352 - Operating Systems 59 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 Name Has Limit Joe 0 6 Jay 0 5 Jim 0 4 Jill 0 7 Reserve: 10 4/9/2015 CST 352 - Operating Systems 60 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 – granted Name Has Limit Joe 1 6 Jay 0 5 Jim 0 4 Jill 0 7 Reserve: 9 4/9/2015 CST 352 - Operating Systems 61 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 – granted 2. Jay requests 1 Name Has Limit Joe 1 6 Jay 0 5 Jim 0 4 Jill 0 7 Reserve: 9 4/9/2015 CST 352 - Operating Systems 62 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 – granted 2. Jay requests 1 – granted Name Has Limit Joe 1 6 Jay 1 5 Jim 0 4 Jill 0 7 Reserve: 8 4/9/2015 CST 352 - Operating Systems 63 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 – granted 2. Jay requests 1 – granted 3. Jim requests 2 Name Has Limit Joe 1 6 Jay 1 5 Jim 0 4 Jill 0 7 Reserve: 8 4/9/2015 CST 352 - Operating Systems 64 Deadlock Avoidance Bankers Algorithm (Example) 1. Joe requests 1 – granted 2. Jay requests 1 – granted 3. Jim requests 2 – granted Name Has Limit Joe 1 6 Jay 1 5 Jim 2 4 Jill 0 7 Reserve: 6 4/9/2015 CST 352 - Operating Systems 65 Deadlock Avoidance Bankers Algorithm (Example) 1. 2. 3. 4. Joe requests 1 – granted Jay requests 1 – granted Jim requests 2 – granted Jill requests 4 Name Has Limit Joe 1 6 Jay 1 5 Jim 2 4 Jill 0 7 Reserve: 6 4/9/2015 CST 352 - Operating Systems 66 Deadlock Avoidance Bankers Algorithm (Example) 1. 2. 3. 4. Joe requests 1 – granted Jay requests 1 – granted Jim requests 2 – granted Jill requests 4 – granted Name Has Limit Joe 1 6 Jay 1 5 Jim 2 4 Jill 4 7 Reserve: 2 4/9/2015 CST 352 - Operating Systems 67 Deadlock Avoidance Bankers Algorithm (Example) At any point in time, in this scenario, the states are safe because, with at least two units left, the banker can delay granting any requests until Jim pays back his loan. Jim can ask for the additional 2 dollars. Name Has Limit Joe 1 6 Jay 1 5 Jim 2 4 Jill 4 7 Reserve: 2 4/9/2015 CST 352 - Operating Systems 68 Deadlock Avoidance Bankers Algorithm (Example) When Jim pays back his loan, the banker can lend to Jay or Jill. Name Has Limit Joe 1 6 Jay 1 5 Jim 0 4 Jill 4 7 Reserve: 4 4/9/2015 CST 352 - Operating Systems 69 Deadlock Avoidance Bankers Algorithm (Example) Unsafe State Example 1. Joe requests 1 – granted 2. Jay requests 2 – granted Name Has Limit Joe 1 6 Jay 2 5 Jim 0 4 Jill 0 7 Reserve: 7 4/9/2015 CST 352 - Operating Systems 70 Deadlock Avoidance Bankers Algorithm (Example) Unsafe State Example 1. Joe requests 1 – granted 2. Jay requests 2 – granted 3. Jim requests 2 Name Has Limit Joe 1 6 Jay 2 5 Jim 0 4 Jill 0 7 Reserve: 7 4/9/2015 CST 352 - Operating Systems 71 Deadlock Avoidance Bankers Algorithm (Example) Unsafe State Example 1. Joe requests 1 – granted 2. Jay requests 2 – granted 3. Jim requests 2 – granted Name Has Limit Joe 1 6 Jay 2 5 Jim 2 4 Jill 0 7 Reserve: 5 4/9/2015 CST 352 - Operating Systems 72 Deadlock Avoidance Bankers Algorithm (Example) Unsafe State Example 1. 2. 3. 4. Joe requests 1 – granted Jay requests 2 – granted Jim requests 2 – granted Jill requests 4 Name Has Limit Joe 1 6 Jay 2 5 Jim 2 4 Jill 0 7 Reserve: 5 4/9/2015 CST 352 - Operating Systems 73 Deadlock Avoidance Bankers Algorithm (Example) Unsafe State Example 1. 2. 3. 4. Joe requests 1 – granted Jay requests 2 – granted Jim requests 2 – granted Jill requests 4 With a reserve of 1, potentially, any other request could be denied. If the banker gives the loan to Jill, the reserve will be down to 1. 4/9/2015 Name Has Limit Joe 1 6 Jay 2 5 Jim 2 4 Jill 0 7 Reserve: 5 CST 352 - Operating Systems 74 Deadlock Avoidance Bankers Algorithm (Example) 1. 2. 3. 4. Joe requests 1 – granted Jay requests 2 – granted Jim requests 2 – granted Jill requests 4 Granting Jill the loan would force the system into an unsafe state. If all customers demanded their maximum loan, none of them could be granted, forcing the FDIC to come down on the bank (deadlock). 4/9/2015 Name Has Limit Joe 1 6 Jay 2 5 Jim 2 4 Jill 0 7 Reserve: 5 CST 352 - Operating Systems 75 Deadlock Avoidance Bankers Algorithm (multiple resource) The bankers algorithm for multiple resource is just a modification of the matrix approach for deadlock detection. The modification made relates to what the scheduler does during the application of the algorithm. Rather than waiting for deadlock to occur, the scheduler takes proactive action during resource allocation and de-allocation. 4/9/2015 CST 352 - Operating Systems 76 Deadlock Avoidance Bankers Algorithm (multiple resource) The problem with the bankers algorithm for deadlock avoidance is to operate correctly, the resources must be pre-determined and stable. There are no systems where resources are all pre-determined and infinitely stable. 4/9/2015 CST 352 - Operating Systems 77 Deadlock Prevention Attack mutual exclusion condition Do not allow any resources to be mutually exclusive. Printer spooling was introduced to do this. 4/9/2015 CST 352 - Operating Systems 78 Deadlock Prevention Attack the hold and wait condition Do not allow any process to seize a resource and hold it. Require all processes to request their resources up-front. This solution introduces inefficiencies. 4/9/2015 CST 352 - Operating Systems 79 Deadlock Prevention Attack the No-Preempt condition It is close to impossible to get rid of all non-preemptable resources in a system. 4/9/2015 CST 352 - Operating Systems 80 Deadlock Prevention Attack the Circular wait condition Only allow a process one resource at a time. Require process to adhere to a resource numbering scheme sequential allocation 4/9/2015 CST 352 - Operating Systems 81