Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf ·...

21
Concurrency: Deadlock 1 ©Magee/Kramer Chapter 6 Deadlock

Transcript of Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf ·...

Page 1: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 1©Magee/Kramer

Chapter 6

Deadlock

Page 2: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 2©Magee/Kramer

Deadlock

Concepts: system deadlock: no further progressfour necessary & sufficient conditions

Models: deadlock - no eligible actions

Practice: blocked threads

Aim: deadlock avoidance - to designsystems where deadlock cannot occur.

Page 3: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 3©Magee/Kramer

Deadlock: four necessary and sufficient conditions

♦ Serially reusable resources:the processes involved share resources which they use under mutualexclusion.

♦ Incremental acquisition:processes hold on to resources already allocated to them while waitingto acquire additional resources.

♦ No pre-emption:once acquired by a process, resources cannot be pre-empted (forciblywithdrawn) but are only released voluntarily.

♦ Wait-for cycle:a circular chain (or cycle) of processes exists such that each processholds a resource which its successor in the cycle is waiting to acquire.

Page 4: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 4©Magee/Kramer

Wait-for cycle

A

B

CD

E

Has A awaits B

Has B awaits C

Has C awaits DHas D awaits E

Has E awaits A

Page 5: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 5©Magee/Kramer

6.1 Deadlock analysis - primitive processes

♦ deadlocked state is one with no outgoing transitions

♦ in FSP: STOP process

MOVE = (north->(south->MOVE|north->STOP)).

Trace to DEADLOCK:northnorth

♦ animation to produce a trace.

♦analysis using LTSA:

(shortest trace to STOP)

MOVEnorth north

south

0 1 2

Page 6: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 6©Magee/Kramer

deadlock analysis - parallel composition

♦ in systems, deadlock may arise from theparallel composition of interacting processes.

RESOURCE = (get->put->RESOURCE).P = (printer.get->scanner.get

->copy ->printer.put->scanner.put

->P).Q = (scanner.get->printer.get

->copy ->scanner.put->printer.put

->Q).||SYS = (p:P||q:Q

||{p,q}::printer:RESOURCE ||{p,q}::scanner:RESOURCE ).

printer:RESOURCEgetput

SYS

scanner:RESOURCEgetput

p:P

printer

scanner

q:Q

printer

scanner

Deadlock Trace?

Avoidance?

Page 7: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 7©Magee/Kramer

deadlock analysis - avoidance

♦ acquire resources in the same order?

♦ Timeout:P = (printer.get-> GETSCANNER),GETSCANNER = (scanner.get->copy->printer.put ->scanner.put->P |timeout -> printer.put->P ).Q = (scanner.get-> GETPRINTER),GETPRINTER = (printer.get->copy->printer.put ->scanner.put->Q |timeout -> scanner.put->Q ).

Deadlock? Progress?

Page 8: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 8©Magee/Kramer

6.2 Dining Philosophers

Five philosophers sit around acircular table. Each philosopherspends his life alternatelythinking and eating. In the centreof the table is a large bowl ofspaghetti. A philosopher needstwo forks to eat a helping ofspaghetti.

0

1

23

40

1

2

3

4

One fork is placed between eachpair of philosophers and they agreethat each will only use the fork to hisimmediate right and left.

Page 9: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 9©Magee/Kramer

Dining Philosophers - model structure diagram

phil[4]:PHIL

phil[1]:PHIL

phil[3]:PHIL

phil[0]:PHIL

phil[2]:PHIL

FORK FORK

FORK

FORK FORK

lef tright

right

right

right

lef t

lef t

right

lef t

lef t

Each FORK is ashared resourcewith actions getand put.

When hungry,each PHIL mustfirst get hisright and leftforks before hecan start eating.

Page 10: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 10©Magee/Kramer

Dining Philosophers - model

FORK = (get -> put -> FORK).PHIL = (sitdown ->right.get->left.get

->eat ->right.put->left.put ->arise->PHIL).

||DINERS(N=5)= forall [i:0..N-1] (phil[i]:PHIL || {phil[i].left,phil[((i-1)+N)%N].right}::FORK

).

Table of philosophers:

Can this system deadlock?

Page 11: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 11©Magee/Kramer

Dining Philosophers - model analysis

Trace to DEADLOCK:phil.0.sitdownphil.0.right.getphil.1.sitdownphil.1.right.getphil.2.sitdownphil.2.right.getphil.3.sitdownphil.3.right.getphil.4.sitdownphil.4.right.get

This is the situation whereall the philosophers becomehungry at the same time, sitdown at the table and eachphilosopher picks up thefork to his right.

The system can make nofurther progress since eachphilosopher is waiting for afork held by his neighbor i.e.a wait-for cycle exists!

Page 12: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 12©Magee/Kramer

Dining Philosophers

Deadlock is easilydetected in ourmodel.

How easy is it todetect a potentialdeadlock in animplementation?

Page 13: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 13©Magee/Kramer

Dining Philosophers - implementation in Java

♦philosophers:active entities- implement asthreads

♦forks: sharedpassive entities- implement asmonitors

♦display

Applet

Diners

Thread

Philosopher1 n

Fork

1

n

PhilCanvas

display

controller

view

display

Page 14: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 14©Magee/Kramer

Dining Philosophers - Fork monitor

class Fork { private boolean taken=false; private PhilCanvas display; private int identity;

Fork(PhilCanvas disp, int id) { display = disp; identity = id;}

synchronized void put() { taken=false; display.setFork(identity,taken); notify(); }

synchronized void get() throws java.lang.InterruptedException { while (taken) wait(); taken=true; display.setFork(identity,taken); }}

takenencodes thestate of thefork

Page 15: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 15©Magee/Kramer

Dining Philosophers - Philosopher implementation

class Philosopher extends Thread { ... public void run() { try { while (true) { // thinking view.setPhil(identity,view.THINKING); sleep(controller.sleepTime()); // hungry view.setPhil(identity,view.HUNGRY); right.get(); // gotright chopstick view.setPhil(identity,view.GOTRIGHT); sleep(500); left.get(); // eating view.setPhil(identity,view.EATING); sleep(controller.eatTime()); right.put(); left.put(); } } catch (java.lang.InterruptedException e){} }}

Followsfrom themodel(sittingdown andleaving thetable havebeenomitted).

Page 16: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 16©Magee/Kramer

Dining Philosophers - implementation in Java

for (int i =0; i<N; ++i) fork[i] = new Fork(display,i);for (int i =0; i<N; ++i){ phil[i] = new Philosopher

(this,i,fork[(i-1+N)%N],fork[i]); phil[i].start();}

Code to create the philosopherthreads and fork monitors:

Page 17: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 17©Magee/Kramer

Dining Philosophers

To ensure deadlockoccurs eventually,the slider controlmay be moved to theleft. This reducesthe time eachphilosopher spendsthinking and eating.This "speedup"increases theprobability ofdeadlock occurring.

Page 18: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 18©Magee/Kramer

Deadlock-free Philosophers

Deadlock can be avoided by ensuring that a wait-for cyclecannot exist. How? PHIL(I=0)

= (when (I%2==0) sitdown ->left.get->right.get ->eat

->left.put->right.put->arise->PHIL

|when (I%2==1) sitdown ->right.get->left.get ->eat

->left.put->right.put->arise->PHIL

).

Introduce anasymmetry into ourdefinition ofphilosophers.Use the identity I ofa philosopher to makeeven numberedphilosophers gettheir left forks first,odd their right first.Other strategies?

Page 19: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 19©Magee/Kramer

Maze example - shortest path to “deadlock”

0 1 2

3 4 5

6 7 8

STOP

north

south

west east

We can exploit the shortest path trace produced by thedeadlock detection mechanism of LTSA to find theshortest path out of a maze to the STOP process!

We must firstmodel the MAZE.

Each position canbe modelled by themoves that itpermits. The MAZEparameter gives thestarting position.

eg. MAZE(Start=8) = P[Start],P[0] = (north->STOP|east->P[1]),...

Page 20: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 20©Magee/Kramer

Maze example - shortest path to “deadlock”

||GETOUT = MAZE(7).

0 1 2

3 4 5

6 7 8

STOP

north

south

west east

Shortest pathescape trace fromposition 7 ?

Trace toDEADLOCK:

eastnorthnorthwestwestnorth

Page 21: Deadlock - Department of Computing, Imperial College Londonjnm/book/firstbook/pdf/ch6.pdf · Deadlock: four necessary and sufficient conditions ♦ Serially reusable resources: the

Concurrency: Deadlock 21©Magee/Kramer

Summary

uConceptsl deadlock: no futher progress

l four necessary and sufficient conditions:u serially reusable resources

u incremental acquisition

u no preemption

u wait-for cycle

uModelsl no eligable actions (analysis gives shortest path trace)

uPracticel blocked threads

Aim: deadlock avoidance- to design systems wheredeadlock cannot occur.