Presentation is loading. Please wait.

Presentation is loading. Please wait.

Deadlock CSE451 Andrew Whitaker. Review: What Can Go Wrong With Threads? Safety hazards  “Program does the wrong thing” Liveness hazards  “Program never.

Similar presentations


Presentation on theme: "Deadlock CSE451 Andrew Whitaker. Review: What Can Go Wrong With Threads? Safety hazards  “Program does the wrong thing” Liveness hazards  “Program never."— Presentation transcript:

1 Deadlock CSE451 Andrew Whitaker

2 Review: What Can Go Wrong With Threads? Safety hazards  “Program does the wrong thing” Liveness hazards  “Program never does the right thing” Performance hazards  Program is too slow due to excessive synchronization

3 A Liveness Hazard: Starvation A thread is ready, but the scheduler does not select it to run  Can be caused by shortest-job-first scheduling

4 Deadlock Each thread is waiting on a resource held by another thread  So, there is no way to make progress Thread 1 Thread 2Thread 3

5 Deadlock, Illustrated

6 Necessary Conditions for Deadlock Mutual exclusion  Resources cannot be shared e.g., buffers, locks Hold and wait (subset property)  A thread must hold a subset of its resource needs And, the thread is waiting for more resources No preemption  Resources cannot be taken away Circular wait  A needs a resource that B has  B has a resource that A has

7 Resource Allocation Graph with a Deadlock Silberschatz, Galvin and Gagne  2002 P => R: request edge R => P: assignment edge

8 Cycle Without Deadlock P => R: request edge R => P: assignment edge Silberschatz, Galvin and Gagne  2002 Why is there no deadlock here?

9 Graph Reduction A graph can be reduced by a thread if all of that thread’s requests can be granted  Eventually, all resources by the reduced thread will be freed Miscellaneous theorems (Holt, Havender):  There are no deadlocked threads iff the graph is completely reducible  The order of reductions is irrelevant (Detail: resources with multiple units)

10 Approaches to Deadlock 1.Avoid threads 2.Deadlock prevention  Break up one of the four necessary conditions 3.Deadlock avoidance  Stay live even in the presence of the four conditions 4.Detect and recover

11 Approach #1: Avoid Threads Brain dead solution: avoid deadlock by avoiding threads Example: GUI frameworks  Typically use a single event-dispatch thread Operating System GUI Framework Application mouse click change background color

12 Approach #2: Prevention Can we eliminate: Mutual exclusion? Hold and wait (subset property)? No Preemption? Circular waiting?

13 Lock Ordering We can avoid circular waiting by acquiring resources in a fixed order Example: Linux rename operation  Each open file has a semaphore  Both semaphores must be held during file operations  Linux always uses the same order for down operations Semaphore at the lowest memory address goes first

14 Rename Example Process 1: rename (“foo.txt”,”bar.txt”); Process 2: rename (“bar.txt”,”foo.txt”); down() foo semaphore down() bar semaphore up() bar semaphore up() foo semaphore down() foo semaphore down() bar semaphore up() bar semaphore up() foo semaphore

15 Approach #3: Avoidance Intuition: the four conditions do not always lead to deadlock  “necessary but not sufficient” We can stay live if we know the resource needs of the processes

16 Bankers Algorithm Overview Basic idea: ensure that we always have an “escape route”  The resource graph is reducible This can be enforced with the bankers algorithm:  When a request is made Pretend you granted it Pretend all other legal requests were made  Can the graph be reduced? If so, allocate the requested resource If not, block the thread

17 Deadlock Avoidance in Practice Static provisioning  Ensure that each active process/thread can acquire some minimum set of resources  Use admission control to maintain this invariant This is closely related to the idea of thrashing  Each thread needs some minimum amount of resources to run efficiently

18 Approach #4: Detection and Recovery Not commonly used  Detection is expensive  Recovery is tricky Possible exception: databases

19 Deadlock Detection Detection algorithm (sketch)  Keep track of who is waiting for resources  Keep track of who holds resources  Assume that all runnable processes release all their resources Does this unblock a waiting process? If yes, release that process’s resources  If processes are still blocked, we are deadlocked

20 Recovery Must “back out” of a resource allocation decision  By preemption or by killing the process This is particularly problematic for lock- based deadlocks  System can be in an inconsistent state


Download ppt "Deadlock CSE451 Andrew Whitaker. Review: What Can Go Wrong With Threads? Safety hazards  “Program does the wrong thing” Liveness hazards  “Program never."

Similar presentations


Ads by Google