Download presentation
Presentation is loading. Please wait.
Published byTamsyn Harmon Modified over 9 years ago
1
This Time - Deadlock Definition Conditions for deadlocks
Deadlock prevention & detection
2
Binary semaphore: printer, disk. Both initialized to be 1.
Deadlocks Deadlock = condition where multiple threads/processes wait on each other thread A printer->wait(); disk->wait(); do stuffs … disk->signal(); printer->signal(); thread B disk->wait(); printer->wait(); do stuffs … printer->signal(); disk->signal(); Binary semaphore: printer, disk. Both initialized to be 1.
3
Deadlocks, Example II
4
Deadlocks - Terminology
Can occur when several threads compete for finite number of resources simultaneously Deadlock prevention algorithms: Check resource requests & availability Deadlock detection: Finds instances of deadlock when threads stop making progress Tries to recover Note: Deadlock ≠ Starvation
5
When Deadlock Occurs All of below must hold: Mutual exclusion:
An instance of resource used by one thread at a time Hold and wait One thread holds resource while waiting for another; other thread holds that resource No preemption Thread can only release resource voluntarily No other thread or OS can force thread to release resource Circular wait Set of threads {t1, …, tn}: ti waits on ti+1, tn waits on t1
6
Deadlock: Example If no way to free resources (preemption), deadlock
7
Deadlock Detection: Resource Allocation Graph
Define graph with vertices: Resources = {r1, …, rm} Threads = {t1, …, tn} Request edge from thread to resource ti → rj Thread requested resource but not acquired it Assignment edge from resource to thread rj → ti OS has allocated resource to thread Deadlock detection No cycles → no deadlock Cycle → might be deadlock
8
Resource Allocation Graph: Example
Deadlock or not? Request edge from thread to resource ti → rj Thread requested resource but not acquired it Assignment edge from resource to thread rj → ti OS has allocated resource to thread
9
Deadlock Detection: Multiple Resources
What if there are multiple instances of a resource? Cycle → deadlock might exist If any instance held by thread outside cycle, progress is possible when thread releases resource
10
Deadlock Detection Deadlock or not?
11
Resource Allocation Graph: Example
Draw a graph for the following event: Each car going straight Request edge from thread to resource ti → rj Thread: requested resource but not acquired it Assignment edge from resource to thread rj → ti OS has allocated resource to thread
12
Resource Allocation Graph : Example
Draw a graph for the following event:
13
Detecting Deadlock (Single Instance of Resource)
Scan resource allocation graph for cycles & break them! Different ways to break cycles: Kill all threads in cycle Kill threads one at a time Force each to give up resources Preempt resources one at a time Roll back thread state to before acquiring resource Common in database transactions
14
Detecting Deadlock (Single Instance of Resource)
Detecting cycles takes O(n2)time n = |T| + |R| When to detect: When request cannot be satisfied On regular schedule, e.g. every hour When CPU utilization drops below threshold
15
Deadlock Prevention One way - instead of detection, ensure at least one of necessary conditions doesn’t hold Mutual exclusion Hold and wait No preemption Circular wait
16
Deadlock Prevention Mutual exclusion: Hold and wait
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 at once and release all before requesting new set
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 Problem: not all resources can be preempted
18
Deadlock Prevention, continued
Circular wait Impose ordering (numbering) on resources and request them in order These solutions are not entirely adequate...
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.