Você está na página 1de 16

Deadlock

COMP346 - Operating Systems Tutorial 5 Edition 1.1, June 15, 2002


June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 1

Topics
Deadlock Debrief
Simplest Example Necessary Deadlock Conditions Resource Allocation Graph Deadlock Handling

Deadlock and Starvation with Semaphores Examples


June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 2

R2

Deadlock
Simplest example:

P1 R1

P2

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 =>
DEADLOCK, one of the biggest problems in multiprogramming.
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 3

Necessary 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: P1P2 P3 PN P1
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 4

Resource-Allocation Graph
An easy way to illustrate resource allocation and visually detect the deadlock situation(s) Example:
N+1 resources ? N processes P1 P2 P3 Every process needs 2 resources Upon acquiring 2 resources, a process releases them Is there a deadlock?

June 11, 2002

Serguei A. Mokhov, mokhov@cs.concordia.ca

More 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

June 11, 2002

Serguei A. Mokhov, mokhov@cs.concordia.ca

Handling Deadlocks
Deadlock Ignorance Deadlock Prevention Deadlock Avoidance Deadlock Detection and Recovery

June 11, 2002

Serguei A. Mokhov, mokhov@cs.concordia.ca

Deadlock 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.
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 8

Deadlock 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
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 9

Deadlock 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
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 10

Deadlock 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


June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 11

Deadlocks and Starvation with Semaphores


Semaphores act like resources in this case, which can be acquired and (never) released. One example as book suggests:
P1 wait(sem1) wait(sem2) signal(sem1) signal(sem2) P2 wait(sem2) wait(sem1) signal(sem2) signal(sem1)

[1] P. 204
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 12

Deadlocks 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:
For this case assume: mutex = 1 synch = 0 Try starting processes in any order and see where they block.
June 11, 2002

process A { wait(mutex) ... wait(synch) ... wait(synch) ... signal(mutex) }


Serguei A. Mokhov, mokhov@cs.concordia.ca

process B { wait(mutex) ... signal(synch) ... ... ... signal (mutex) }


13

Deadlocks and Starvation with Semaphores (3)


Yet another example :-)
a) semaphore S = -2; P1 { P2 { <phase1> <phase1> V(S) V(S) P(S) P(S) <phase2> <phase2> } } b) semaphore S = -2, S1 = 0, S2 = 0; P1 { P2 { <phase1> <phase1> V(S) V(S) P(S) P(S) V(S1) P(S1) <phase2> V(S2) } <phase2> } June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca P3 { <phase1> V(S) P(S) <phase2> }

P3 { <phase1> V(S) P(S) P(S2) <phase2> } 14

Deadlocks 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.
June 11, 2002 Serguei A. Mokhov, mokhov@cs.concordia.ca 15

Deadlocks and Starvation with Semaphores (5)


Starvation scenario (in b): 1) P2: <phase1> 2) V(S) (S = -1) 3) P(S) (blocked->switch to P3) 4) P3: <phase1> 5) V(S) (S = 0) 6) P(S) (blocked->switch to P1) 7) P1: 8) 9) 10) 11) 12) 13) <phase1> V(S) (S = 1) P(S) (S = 0) V(S1) (S1 = 1) <phase2> terminates ??? Deadlock Scenario: 1) P1: <phase1> 2) V(S) (S = -1) 3) P(S) (blocked->switch to P3) 4) P3: <phase1> 5) V(S) (S = 0) 6) P(S) (blocked->switch to P2) 7) P2: <phase1> 8) V(S) (S = 1) 9) P(S1) (blocked) 10) ???

June 11, 2002

Serguei A. Mokhov, mokhov@cs.concordia.ca

16

Você também pode gostar