Title: Deadlock
1Deadlock
- COMP346 - Operating Systems
- Tutorial 5
- Edition 1.1, June 15, 2002
2Topics
- Deadlock Debrief
- Simplest Example
- Necessary Deadlock Conditions
- Resource Allocation Graph
- Deadlock Handling
- Deadlock and Starvation with Semaphores
- Examples
3Deadlock
- Simplest example
- Two processes require two resources to complete
(and release the resources) - There are only two instances of these resources
- If they acquire one resource each, they block
indefinitely waiting for each other to release
the other resource gt - DEADLOCK, one of the biggest problems in
multiprogramming.
4Necessary Deadlock Conditions
- Recall which conditions must hold (p. 245)
- ME at least one process exclusively uses a
resource - Hold and wait a process possesses at least one
resources and requires more, which are held by
others - No preemption resources are released only in
voluntary manner by processes holding them - Circular wait P1?P2 ? P3 ? ? PN ? P1
5Resource-Allocation Graph
- An easy way to illustrate resource allocation and
visually detect the deadlock situation(s) - Example
- N1 resources
- N processes
- Every process needs 2 resources
- Upon acquiring 2 resources, a process releases
them - Is there a deadlock?
6More Examples
- Example from Salsa Theory Review
- Resource Allocation Graph
- Is the following true or false?
- Deadlock cannot happen in a system with two
processes. - One CPU
- Two CPUs
7Handling Deadlocks
- Deadlock Ignorance
- Deadlock Prevention
- Deadlock Avoidance
- Deadlock Detection and Recovery
8Deadlock Ignorance
- As system designers we may pretend that deadlocks
dont happen -). - If they do happen, they dont happen very often.
- Most common approach because its cheap (in terms
of human labor, complexity of the system and
systems performance). - Highest resource utilization.
- Sysadmin can simply kill deadlocked processes or
restart the system if its not responding.
9Deadlock Prevention
- Recall necessarily deadlock conditions
- Deadlock prevention algorithms assure at least
one these conditions do not hold, thus preventing
occurrence of the deadlock. - Possible Disadvantages
- Low device utilization
- Reduced systems throughput
- 1 p. 250
10Deadlock Avoidance
- Unlike in deadlock prevention, deadlock avoidance
algorithms do not watch for necessary deadlock
conditions, but use additional a priori info
about future resource requests. - This info will help the system to avoid entering
the unsafe state. - Disadvantages again, lower resource utilization
(because resources may not be granted sometimes
even if they are unused). - 1 P. 253
11Deadlock Detection and Recovery
- Instead of preventing or avoiding deadlocks we
allow them to happen and also provide mechanisms
to recover. - Problems
- How often do we run detection algorithms?
- How do we recover?
- What is the cost of detection and recovery?
- 1 P. 260, p. 264
12Deadlocks and Starvation with Semaphores
- Semaphores act like resources in this case, which
can be acquired and (never) released. - One example as book suggests
- 1 P. 204
P1 wait(sem1) wait(sem2) signal(sem1) signal(sem2) P2 wait(sem2) wait(sem1) signal(sem2) signal(sem1)
13Deadlocks and Starvation with Semaphores (2)
- Starvation, or indefinite blocking, is when a
process is waiting on a semaphore where nobody is
ever going to release it. - Another example of both deadlock and starvation
process A process B wait(mutex)
wait(mutex) ... ...
wait(synch) signal(synch) ...
... wait(synch) ... ...
... signal(mutex) signal
(mutex)
For this case assume mutex 1 synch
0 Try starting processes in any order and
see where they block.
14Deadlocks and Starvation with Semaphores (3)
a) semaphore S -2 P1 P2 P3
ltphase1gt ltphase1gt ltphase1gt V(S)
V(S) V(S) P(S) P(S) P(S)
ltphase2gt ltphase2gt ltphase2gt
b) semaphore S -2, S1 0, S2 0 P1 P2
P3 ltphase1gt ltphase1gt ltphase1gt
V(S) V(S) V(S) P(S) P(S) P(S)
V(S1) P(S1) P(S2) ltphase2gt V(S2)
ltphase2gt ltphase2gt
15Deadlocks and Starvation with Semaphores (4)
- Things to note
- Assume the P2, P3, P1 order in the starvation
example - Assume the P1, P3, P2 order in the deadlock
example - Blocking means getting out from the running state
to the waiting state, so a context switch to the
next process in the queue happens - In these example there are no multiple instances
of these processes.
16Deadlocks and Starvation with Semaphores (5)
- Starvation scenario (in b)
- 1) P2 ltphase1gt
- 2) V(S) (S -1)
- 3) P(S) (blocked-gtswitch to P3)
- 4) P3 ltphase1gt
- 5) V(S) (S 0)
- 6) P(S) (blocked-gtswitch to P1)
- 7) P1 ltphase1gt
- 8) V(S) (S 1)
- 9) P(S) (S 0)
- 10) V(S1) (S1 1)
- 11) ltphase2gt
- 12) terminates
- 13) ???
- Deadlock Scenario
- 1) P1 ltphase1gt
- 2) V(S) (S -1)
- 3) P(S) (blocked-gtswitch to P3)
- 4) P3 ltphase1gt
- 5) V(S) (S 0)
- 6) P(S) (blocked-gtswitch to P2)
- 7) P2 ltphase1gt
- 8) V(S) (S 1)
- 9) P(S1) (blocked)
- 10) ???