1 / 32

This lecture…

This lecture…. Definition of deadlock Conditions for its occurrence Solutions for breaking and avoiding deadlock Solutions pose a dilemma: Simple solutions – inefficient Complex solutions – inefficient and unpleasant. Cautionary Tale: OS/2. Every major OS since 1985 provides threads

veta
Download Presentation

This lecture…

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. This lecture… • Definition of deadlock • Conditions for its occurrence • Solutions for breaking and avoiding deadlock • Solutions pose a dilemma: • Simple solutions – inefficient • Complex solutions – inefficient and unpleasant

  2. Cautionary Tale: OS/2 • Every major OS since 1985 provides threads • Makes it easier to write concurrent programs • Microsoft OS/2 (circa 1988): initially, a failure • IBM re-wrote it using threads for everything • Window systems, Inter-Process Communication, … • OS/2 let you print while you worked! • Could have 100 threads, but most not on run queue (waiting for something) • Each thread needs its own stack, say 9 KB • Result: System needs an extra 1MB of memory • $200 in 1988 • Moral: Threads are cheap, but they’re not free • <$0.10 today, but context switching is expensive…

  3. Definitions • Threads – active • Resources – passive, things needed by thread to do its job • CPU, disk space, memory • Two kinds of resources: • Preemptable – can take it away • CPU, Embedded security chip • Non-preemptable – must leave with thread • disk space, plotter, chunk of virtual address space • Mutual exclusion – the right to enter a critical section is a kind of resource

  4. Resources • Resources may require exclusive access or may be sharable • Read-only files are typically sharable • Printers are not sharable during time of printing • One of the major tasks of an operating system is to manage resources

  5. Starvation vs Deadlock • Starvation – thread waits indefinitely • Example, low-priority thread waiting for resources constantly in use by high-priority threads • Deadlock – circular waiting for resources • Example: • I have resource A and need resource B to get my job done. • You have resource B and need resource A to get your jobdone. • Deadlock implies starvation, but not vice versa • Starvation can end (but doesn’t have to) • Deadlock can’t end without external intervention.

  6. Conditions for deadlock - Motivation • Deadlock need not be deterministic: • semaphores A and B, initialized to 1 P0 P1 wait (A); wait(B); wait (B); wait(A); Signal(B); signal(A); Signal(A); Signal(B); • Deadlock won’t always happen with this code, but it might. • Have to have exactly the right timing (“wrong” timing?) • So you release a piece of software, and you tested it, and there it is, controlling a nuclear power plant

  7. Conditions for deadlock - Motivation • Deadlocks can occur with multiple resources. • Means you can’t decompose the problem • can’t solve deadlock for each resource independently. • For example: • One thread grabs the memory it needs • Another grabs disk space • Another grabs the tape drive • Each waits for the other to release. • Deadlock can occur whenever there is waiting. • Example: dining philosophers • Each philosopher needs two chopsticks to eat. Each grabs chopstick on the right first. • What if all grab at the same time? Deadlock.

  8. Conditions for deadlock - Need all four • Mutual exclusion: only one process at a time can use a resource. • Hold and wait: wait for additional resource while holding at least one resource. • No preemption: if someone has resource, can’t take it away. • Circular wait: Circular chain of requests

  9. Resource-Allocation Graph • A set of vertices and a set of edges E. • V is partitioned into two types: • P = {P1, P2, …, Pn}, the set consisting of all the processes in the system. • R = {R1, R2, …, Rm}, the set consisting of all resource types in the system. • request edge – directed edge P1  Rj • assignment edge – directed edge Rj Pi

  10. Resource-Allocation Graph (Cont.) • Process • Resource Type with 4 instances • Pirequests instance of Rj • Pi is holding an instance of Rj Pi Rj Pi Rj

  11. Resource Allocation Graph Examples Simple Resource Allocation Graph Allocation GraphWith Deadlock Allocation Graph With Cycle, but No Deadlock

  12. Solutions to Deadlock • Three methods for dealing with deadlock problem: • Ensure deadlock never happens – prevention and avoidance • Detect deadlock and fix • Ignore the problem and pretend that deadlocks never occur; used by most operating systems - UNIX, JVM. • Deadlock prevention - eliminate one of the necessary conditions • Deadlock avoidance – list resources required by a process in advance

  13. Deadlock Prevention • Mutual Exclusion: Buy more resources, split into pieces, or virtualize to make “infinite” copies • Hold and Wait • Make all threads request everything they’ll need at beginning. • allow process to request resources only when the process has none. • No preemption: make copies and preempt • Can preempt main memory by copying to disk • If holding some resources and requesting other not available, then release all • Circular wait: impose a total ordering of all resource types, and require that each process requests resources in an increasing order of enumeration

  14. Deadlock Avoidance • State the maximum number of resources of each type required in advance. • Examine the resource-allocation state dynamically to ensure circular-wait condition does not exist. • Resource-allocation state: number of available and allocated resources, and the maximum demands of the processes.

  15. Deadlock Avoidance • Safe state: if the system can allocate resources to each process (up to its maximum) in some order and still avoid a deadlock. • System is in safe state if there exists a safe sequence of all processes. • Safe sequence: If for eachprocess the resources that it can still request can be satisfied by currently available resources + resources held by all the processes preceding in the sequence.

  16. Deadlock Avoidance • If a system is in safe state  no deadlocks. • If a system is in unsafe state  possibility of deadlock. • Example • available - 12 magnetic tape drives, 3 processes: P0, P1, P2. At time t0 Maximum NeedsCurrent Needs P0 10 5 P1 4 2 P2 9 2 • At time t0, the system is in a safe state. • The sequence <P1,P0,P2> is safe.

  17. Deadlock Avoidance • It is possible to go from a safe state to an unsafe state. • Suppose at time t1, process P2 requests and is allocated 1 more tape drive. • The system is no longer in a safe state. • Avoidance  ensure that a system will never enter an unsafe state. • Wait if allocation will lead to unsafe state.

  18. Banker’s Algorithm • Let n = number of processes, and m = number of resources types. • Available: Vector of length m. If Available[j] = k, there are k instances of resource type Rjavailable. • Max: n x m matrix. If Max [i,j] = k, then process Pimay request at most k instances of resource type Rj. • Allocation: n x m matrix. If Allocation[i,j] = k then Pi is currently allocated k instances of Rj. • Need: n x m matrix. If Need[i,j] = k, then Pi may need k more instances of Rjto complete its task. Need [i,j] = Max[i,j] – Allocation [i,j]

  19. Safety Algorithm 1. Let Work and Finish be vectors of length m and n, respectively. Initialize: Work := Available Finish [i] = false for i = 1,2,3, …, n. 2. Find an i such that both: (a) Finish [i] = false (b) Needi Work If no such i exists, go to step 4. 3. Work := Work + AllocationiFinish[i] := truego to step 2. 4. If Finish [i] = true for all i, then the system is in a safe state. • This algorithm may require an order of m x n2 operations to decide whether a state is safe.

  20. Resource-Request Algorithm for Process Pi • Requesti = request vector for process Pi. If Requesti[j] = k then process Pi wants k instances of resource type Rj. 1. If Requesti Needigo to step 2. Otherwise, raise error condition, since process has exceeded its maximum claim. 2. If Requesti Available, go to step 3. Otherwise Pi must wait, since resources are not available. 3. Pretend to allocate requested resources to Pi by modifying the state as follows: Available := Available -Requesti ; Allocationi:= Allocationi + Requesti ; Needi:= Needi – Requesti ; • If safe  the resources are allocated to Pi. • If unsafe  Pi must wait, and the old resource-allocation state is restored

  21. Example of Banker’s Algorithm • 5 processes P0 through P4; 3 resource types A (10 instances), B (5 instances), and C (7 instances). • Snapshot at time T0: AllocationMaxAvailable A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 P1 2 0 0 3 2 2 P2 3 0 2 9 0 2 P3 2 1 1 2 2 2 P4 0 0 2 4 3 3

  22. Example (Cont.) • The content of the matrix. Need = Max – Allocation. NeedAvailable A B C A B C P0 7 4 3 3 3 2 P1 1 2 2 P2 6 0 0 P3 0 1 1 P4 4 3 1 • The system is in a safe state since the sequence <P1, P3, P4, P2, P0> satisfies safety criteria.

  23. Example (Cont.): P1 request (1,0,2) • Check that Request  Available, that is, (1,0,2)  (3,3,2)  true. AllocationNeedAvailable A B C A B C A B C P0 0 1 0 7 4 3 2 3 0 P1 3 0 2 0 2 0 P2 3 0 1 6 0 0 P3 2 1 1 0 1 1 P4 0 0 2 4 3 1 • Executing safety algorithm shows that sequence <P1, P3, P4, P0, P2> satisfies safety requirement. • Can request for (3,3,0) by P4 be granted? No! • Can request for (0,2,0) by P0 be granted? No!

  24. Deadlock Detection • Detection and recovery scheme requires overhead that includes • run-time costs of maintaining the necessary information and executing the detection algorithm, • the potential losses inherent in recovering from a deadlock. • A deadlock exists in the system if and only if the wait-for graph contains a cycle. • An algorithm to detect a cycle in a graph requires an order of n2 operations, where n is the number of vertices in the graph.

  25. Deadlock Detection • Several Instances of a Resource Type • Available: A vector of length m indicates the number of available resources of each type. • Allocation: An n x m matrix defines the number of resources of each type currently allocated to each process. • Request: An n x m matrix indicates the current request of each process. If Request [i,j] = k, then process Pi is requesting k more instances of resource type Rj. • The detection algorithm investigates every possible allocation sequence for the processes that remain to be completed.

  26. Detection Algorithm 1. Let Work and Finish be vectors of length m and n, respectively Initialize: (a) Work := Available (b) For i = 1,2, …, n, if Allocationi 0, then Finish[i] := false; otherwise, Finish[i] := true. 2. Find an index i such that both: (a) Finish[i] = false (b) Requesti Work If no such i exists, go to step 4. 3. Work := Work + AllocationiFinish[i] := truego to step 2. 4. If Finish[i] = false, for some i, 1  i  n, then the system is in deadlock state. Moreover, if Finish[i] = false, then Pi is deadlocked. • Algorithm requires an order of m x n2 operations to detect whether the system is in deadlocked state.

  27. Example of Detection Algorithm • Five processes P0 through P4;three resource types A (7 instances), B (2 instances), and C (6 instances). • Snapshot at time T0: AllocationRequestAvailable A B C A B C A B C P0 0 1 0 0 0 0 0 0 0 P1 2 0 0 2 0 2 P2 3 0 3 0 0 0 P3 2 1 1 1 0 0 P4 0 0 2 0 0 2 • Sequence <P0, P2, P3, P1, P4> will result in Finish[i] = true for all i.

  28. Example (Cont.) • P2 requests an additional instance of type C. Request A B C P0 0 0 0 P1 2 0 2 P2 0 0 1 P3 1 0 0 P4 0 0 2 • State of system? Deadlocked! • Can reclaim resources held by process P0, but insufficient resources to fulfill other processes’ requests. • Deadlock exists, consisting of processes P1, P2, P3, and P4.

  29. Detection-Algorithm Usage • When, and how often, to invoke depends on: • How often a deadlock is likely to occur? • How many processes will need to be rolled back? • one for each disjoint cycle • Frequent deadlocks  invoke detection algorithm frequently. • Extreme case: invoke detection algorithm every time a request for allocation cannot be granted immediately. • A less expensive alternative: invoke the algorithm at less frequent intervals – e.g. once per hour, or whenever CPU utilization drops below 40%.

  30. Recovery from Deadlock: Process Termination • Abort all deadlocked processes • Expensive (partial results may have to be recomputed) • Abort one process at a time until the deadlock cycle is eliminated • considerable overhead (rerun deadlock-detection algorithm) • In which order should we choose the processes to abort? • Priority of the process. • How long process has computed, and how much longer to completion. • Resources the process has used. • Resources the process needs to complete. • How many processes will need to be terminated. • Is the process interactive or batch?

  31. Recovery from Deadlock: Resource Preemption • Selecting a victim • Which resources and which processes are to be preempted? • minimize cost. • Cost factors include the following parameters: • number of resources held by a deadlocked process • amount of time consumed so far by the deadlocked process • Rollback – return to some safe state, restart process from that state. • Simpler to rollback completely: abort and restart • partial rollback requires more information to be recorded for all running processes. • Starvation – same process may always be picked as a victim, • pick up a process as a victim only (small) finite number of times. • include number of rollbacks in the cost factor.

  32. Combined Approach to Deadlock Handling • Combine the three basic approaches, • prevention • avoidance • detection allowing the use of the optimal approach for each class of resources in the system. • Partition resources into hierarchically ordered classes. • Use most appropriate technique for handling deadlocks within each class.

More Related