Computer Systems Principles Deadlock Emery Berger and Mark
Computer Systems Principles Deadlock Emery Berger and Mark Corner University of Massachusetts Amherst UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
Deadlocks § Deadlock = condition where two threads/processes wait on each other thread A thread B printer->wait(); disk->wait(); printer->wait(); UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 2
Example: Dining Philosophers § Another gift from Dijkstra UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
Deadlocks - Terminology § Deadlock prevention algorithms – Check resource requests & availability § Deadlock detection – Finds instances of deadlock when threads stop making progress – Tries to recover UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 4
Rules for Deadlock § All necessary and none sufficient UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 5
Rules for Deadlock § All necessary and none sufficient § Finite resource – Resource can be exhausted causing waiting UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 6
Rules for Deadlock § All necessary and none sufficient § Finite resource – Resource can be exhausted causing waiting § Hold and wait – Hold resource while waiting for another UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 7
Rules for Deadlock § All necessary and none sufficient § Finite resource – Resource can be exhausted causing waiting § Hold and wait – Hold resource while waiting for another § No preemption – Thread can only release resource voluntarily – No other thread or OS can force thread to release UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 8
Rules for Deadlock § All necessary and none sufficient § Finite resource – Resource can be exhausted causing waiting § Hold and wait – Hold resource while waiting for another § No preemption – Thread can only release resource voluntarily – No other thread or OS can force thread to release § Circular wait – Circular chain of waiting threads UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 9
Circular Waiting § If no way to free resources (preemption) UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 10
Deadlock Detection § Define graph with vertices: – Resources = {r 1, …, rm} – Threads = {t 1, …, tn} § Request edge from thread to resource – (ti → rj) § Assignment edge from resource to thread – (rj → ti) – OS has allocated resource to thread § Result: – No cycles no deadlock – Cycle may deadlock UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 11
Example § Deadlock or not? § Request edge from thread to resource ti -> rj – Thread: requested resource but not acquired it (waiting) § Assignment edge from resource to thread rj -> ti – OS has allocated resource to thread UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 12
Quick Exercise § Draw a graph for the following event: § Request edge from thread to resource – ti -> rj § Assignment edge from resource to thread – rj -> ti UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 13
Resource Allocation Graph § Draw a graph for the following event: UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 14
Detecting Deadlock § Scan resource allocation graph for cycles – Then break them! § Different ways to break cycles: – Kill all threads in cycle – Kill threads one at a time • Force to give up resources – Preempt resources one at a time • Roll back thread state to before acquiring resource • Common in database transactions UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 15
Deadlock Prevention § Instead of detection, ensure at least one of necessary conditions doesn’t hold – Mutual exclusion – Hold and wait – No preemption – Circular wait UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 16
Deadlock Prevention § Mutual exclusion – Make resources shareable (but not all resources can be shared) § Hold and wait – Guarantee that thread cannot hold one resource when it requests another – Make threads request all resources they need first and release all before requesting more UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 17
Deadlock Prevention, continued § No preemption – If thread requests resource that cannot be immediately allocated to it • OS preempts (releases) all resources thread currently holds – When all resources available: • OS restarts thread § Not all resources can be preempted! UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 18
Deadlock Prevention, continued § Circular wait – Impose ordering (numbering) on resources and request them in order – Most important trick to correct programming with locks! UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 19
Avoiding Deadlock § Cycle in locking graph = deadlock § Typical solution: canonical order for locks – Acquire in increasing order • E. g. , lock_1, lock_2, lock_3 – Release in decreasing order § Ensures deadlock-freedom – but not always easy to do UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 20
Avoiding Deadlock § Avoiding deadlock: is this ok? lock (a); lock (b); unlock (a); lock (b); lock (a); unlock (b); UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 21
Avoiding Deadlock § Not ok – may deadlock (a); lock (b); unlock (a); lock (b); lock (a); unlock (b); § Solution: impose canonical order (acyclic) lock (a); lock (b); unlock (a); UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 22
UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science
Deadlocks, Example II UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 24
Multiple Resources § What if there are multiple interchangeable instances of a resource? – Cycle deadlock might exist – If any instance held by thread outside cycle, progress possible when thread releases resource UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 25
Deadlock Detection n Deadlock or not? UNIVERSITY OF MASSACHUSETTS AMHERST • Department of Computer Science 26
- Slides: 26