lezione 13 deadlock - web lab grafo di allocazione di holt (modella le prenotazioni e le...

122
1 Lezione 13 Deadlock Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Upload: lethuan

Post on 05-May-2018

243 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

1

Lezione 13DeadlockSistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015Dipartimento di Scienze Fisiche, Informatiche e MatematicheUniversità di Modena e Reggio Emiliahttp://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Page 2: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

2

Quote of the day(Meditate, gente, meditate...)

“When two trains approach each other at a crossing, both shall come to a full stop and neither shall start up again until the other has gone.”

Decreto approvato dalla legislatura del Kansasnell'anno 1860.B. A. Botkin, A. F. Harlow,"A Treasury of Railroad Folklore"(pp. 381)

Page 3: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

3

PROBLEMI LEGATI AI SEMAFORI

Page 4: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

4

Problema: piazzamento wait()/signal()(Il programmatore ne è direttamente responsabile)

Il programmatore è personalmente responsabile del piazzamento opportuno di wait() e signal().Se la sequenza wait(), sezione critica, signal() non è rispettata, ne succedono di tutti i colori.

Accesso non in mutua esclusione.Stallo dei task.

Page 5: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

5

Errore: accesso multiplo(Si viola la mutua esclusione)

T0 T2

Errore tipico che porta all'accesso multiplo:si invertono signal() e wait().

T1

Page 6: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

6

Errore: accesso multiplo(Si viola la mutua esclusione)

wait(S);<sez. cr.>

T0 acquisisce il semaforo S ed accedealla risorsa in mutua esclusione.

T0 T2T1

Page 7: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

7

Errore: accesso multiplo(Si viola la mutua esclusione)

wait(S);<sez. cr.>

signal(S);<sez. cr.>

T1 rilascia il semaforo S invece di acquisirlo.Di conseguenza, entra in sezione critica.

T0 T2T1

Page 8: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

8

Errore: accesso multiplo(Si viola la mutua esclusione)

wait(S);<sez. cr.>

signal(S);<sez. cr.>

wait(S);<sez. cr.>

La signal() di T1 potrebbe risvegliare unprocesso T2 precedentemente in attesa della

stessa risorsa.

T0 T2T1T0 T2T1

Page 9: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

9

Errore: accesso multiplo(Si viola la mutua esclusione)

wait(S);<sez. cr.>

signal(S);<sez. cr.>

wait(S);<sez. cr.>

Risultato: ben tre task sono riusciti adentrare in sezione critica!

T0 T2T1T0 T2T1

Page 10: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

10

“But wait! There's more”(As Capt. James Tiberius Kirk AKA William Shatner would say)

Page 11: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

11

Errore: stallo(I processi si bloccano inesorabilmente fra di loro)

A seguito di un errore di uso, può capitare che:un insieme di processi attenda il verificarsi di unevento.l'evento in questione può essere causato solo da unodei processi in attesa.

Tale situazione prende il nome di stallo (deadlock).

Page 12: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

12

Errore: stallo(Deadlock di tipo “doppio lock”)

T0 T1

Errore tipico che porta allo stallo:si sostituisce una signal() con una wait().

Page 13: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

13

Errore: stallo(Deadlock doppio lock)

wait(S);<sez.cr.>

T0 acquisisce il semaforo S ed accedealla risorsa in mutua esclusione.

T0 T1

Page 14: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

14

Errore: stallo(Deadlock doppio lock)

wait(S);wait(S);<sez.cr.>

T1 prova ad acquisire il semaforo Se si blocca.

T0 T1

Page 15: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

15

Errore: stallo(Deadlock doppio lock)

wait(S);wait(S);<sez.cr.>wait(S);

T0 invoca wait(S) al posto di signal(S).

T0 T1

Page 16: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

16

Errore: stallo(Deadlock doppio lock)

wait(S);wait(S);<sez.cr.>wait(S);

Risultato: T0 e T1 aspettano lo sblocco,in eterno. DEADLOCK.→

T0 T1

Page 17: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

17

Un esempio concreto(Il sorgente deadlock_doppio_lock_mutex.c)

Il sorgente deadlock_doppio_lock_mutex.c in 13-esempi.tar.bz2 illustra il deadlock di tipo “doppio lock”.Si compili e si esegua il programma.

./deadlock_doppio_lock_mutexOsservate il blocco.

Page 18: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

18

He knows about deadlocks(Satoru Sayama AKA “Tiger Mask”)

Page 19: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

19

Esercizi (2 min.)

1. Con riferimento all'eseguibile:./deadlock_doppio_lock_mutexsi verifichi che il thread è in attesa.

Page 20: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

21

Errore: stallo(Deadlock ABBA)

Errore tipico che porta allo stallo:non viene preservato l'ordine

di richiesta/rilascio delle sezioni critiche.

T0 T1

Page 21: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

22

Errore: stallo(Deadlock ABBA)

wait(S);

T0 prenota due semafori S e Q nell'ordine S, Q.

T0 T1

Page 22: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

23

Errore: stallo(Deadlock ABBA)

wait(S); wait(Q);

T1 prenota due semafori S e Q nell'ordine Q, S.

T0 T1

Page 23: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

24

Errore: stallo(Deadlock ABBA)

wait(S); wait(Q);wait(Q);

T0 si blocca perché T1 ha già preso il lock su Q.

T0 T1

Page 24: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

25

Errore: stallo(Deadlock ABBA)

wait(S); wait(Q);wait(Q); wait(S);

T1 si blocca perché T0 ha già preso il lock su S.

T0 T1

Page 25: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

26

Errore: stallo(Deadlock ABBA)

wait(S); wait(Q);wait(Q); wait(S);

Chi può sbloccare T0? Solo T1.Chi può sbloccare T1? Solo T0.

→ DEADLOCK.

T0 T1

Page 26: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

27

Un esempio concreto(Il sorgente deadlock_abba_mutex.c)

Il sorgente deadlock_abba_mutex.c in13-esempi.tar.bz2 illustra il deadlock di tipo “ABBA”.Si compili e si esegua il programma.

./deadlock_abba_mutexOsservate il blocco.

Page 27: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

28

Warning: it's “A-BI-BI-A”, not “ABBA”!(Please, please, please, guys!)

This is “ABBA” This is “A-BI-BI-A”wait(S);

T0 T1wait(S); wait(Q);wait(Q); wait(S);

Page 28: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

29

Esercizi (2 min.)

2. Con riferimento all'eseguibile:./deadlock_abba_mutexsi verifichi che i thread siano in attesa.

Page 29: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

31

Che fare?(Occorre capire, modellare, riparare/rilevare/inibire/aggirare il deadlock)

Bella domanda!Occorre innanzitutto capire sotto quali condizioni si verifica un deadlock.Possibilmente, occorre anche saper modellare tali condizioni matematicamente, in modo tale da poterle rilevare tramite opportuni algoritmi.Occorre capire come rimuovere un deadlock una volta subito.

Page 30: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

32

CARATTERIZZAZIONEDEL DEADLOCK

Page 31: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

33

Il concetto di risorsa(Entità hardware/software contesa tra e usata dagli utenti)

Un SO multiprogrammato gestisce un insieme di risorse hardware/software.

Hardware: CPU, memoria, disco, rete.Software: descrittori vari, strutture condivise.

I task (processi, thread) competono per l'assegnazione di un sottoinsieme finito di tali risorse.Tipicamente:

numero risorse < numero di task.

Page 32: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

34

Classificazione delle risorse(Una risorsa di un certo tipo Una classe con N istanze)→

Dal punto di vista modellistico, si preferisce raggruppare tutte le risorse simili in una classe.Esempio: un calcolatore ha 1GB di RAM.

Non ha senso dire: il calcolatore ha 1G risorse di 1 bytel'una.Ha senso dire: esiste una singola risorsa (la memoriacentrale) con 1G istanze disponibili.

Tipicamente, un task non è interessato ad una specifica istanza della risorsa.

Va bene una qualunque delle istanze disponibili.

Page 33: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

35

Proprietà delle risorse(Influenzano i meccanismi di prenotazione e rilascio)

Il comportamento delle risorse è caratterizzato caratterizzato da alcune proprietà.

Risorsa riutilizzabile vs. non riutilizzabile.Risorsa con assegnazione statica vs. dinamica.Risorsa con accesso seriale vs. concorrente.Risorsa prerilasciabile vs. non prerilasciabile.

Page 34: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

36

Risorse riutilizzabili e non riutilizzabili(Riutilizzabili Sono allocabili e rilasciabili a più utenti)→

Alcune risorse sono riutilizzabili.Non sono distrutte dopo il loro utilizzo.Il SO determina la loro assegnazione ai processi.Esempi: CPU, canali I/O, memoria centrale.

Altre risorse sono non riutilizzabili.Sono distrutte dopo il loro utilizzo.Possono essere assegnate da processo a processo.Esempi: interruzioni, segnali, messaggi.

Page 35: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

37

Risorse assegnate staticamente e dinamicamente(Assegnazione dinamica Maggiormente soggetta all'accesso concorrente)→

Alcune risorse sono assegnate staticamente.Al momento della creazione di un task.L'assegnazione rimane valida fino alla terminazionedel task.Esempi: descrittori di processo.

Alcune risorse sono assegnate dinamicamente.Dal task durante la sua esecuzione.Sono rilasciate dopo l'uso.Esempi: periferiche I/O.

Page 36: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

38

Risorse con accesso seriale e concorrente(Accesso concorrente Va protetto con i lock)→

Alcune risorse sono accessibili serialmente.Solo da un processo alla volta (mutua esclusione).Esempi: CPU, sezioni critiche.

Alcune risorse sono accessibili in maniera concorrente.

Ossia, da più processi simultaneamente.Esempi: file in sola lettura.

Page 37: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

39

Risorse prerilasciabili e non prerilasciabili(Risorse non prerilasciabili Rischio di deadlock)→

Alcune risorse sono prerilasciabili.Il SO le può “sottrarre” ad un processo prima chequest'ultimo le abbia rilasciate.Il task che subisce il prerilascio si sospende.La risorsa prerilasciata sarà restituita successivamenteal task.Esempi: CPU, pagine di memoria (swap).

Altre risorse non sono prerilasciabili.Il SO non le può sottrarle in anticipo al task.

Page 38: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

40

Modello di accesso e rilascio(Quello classico: lock, uso, unlock)

Su richiesta di un processo, viene assegnata una qualunque istanza della risorsa.Scenario di uso della risorsa.

Richiesta: se non è disponibile una istanza dellarisorsa, il task “attende” fino a che non se ne liberialmeno una.Uso: il task opera sulla risorsa.Rilascio: il task rilascia la risorsa, qualora essa siariutilizzabile.

Page 39: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

41

Tipologie delle richieste(Singola, multipla, bloccante, non bloccante)

Richiesta singola: richiesta di un'unica istanza di un'unica classe di risorsa.

Caso standard.Richiesta multipla: richiesta di più istanze di più classi di risorse.

Deve essere soddisfatta integralmente.Richiesta bloccante: il task richiedente si sospende se non ottiene immediatamente l'assegnazione.Richiesta non bloccante: si notifica al task richiedente la mancata assegnazione della risorsa, senza provocarne la sospensione.

Page 40: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

42

Definizione di deadlock(Semplice e chiara)

Un insieme di task è in deadlock (morsa letale) se si verificano le seguenti condizioni.

Ciascun task è in attesa di un evento ben preciso. Qui,l'evento è il rilascio di una risorsa posseduta da unodei task nell'insieme.L'unico task in grado di scatenare l'evento fa partedell'insieme.

→ Nessuno dei task è in grado di eseguire, rilasciarerisorse, risvegliarsi.

Page 41: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

43

Un'immagine (vale più di 1k parole)

Page 42: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

44

Condizioni necessarie di Coffmann(http://www.ccs.neu.edu/home/pjd/cs7600-s10/Tuesday_January_26_01/p67-coffman.pdf)

Sono quattro condizioni necessarie per la presenza di deadlock.Sono state formalizzate da Ed Coffman nel 1971.

Edward Grant Coffman Jr.(1934-)

Page 43: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

45

Condizioni necessarie e/o sufficienti(Repetita iuvant!)

Le condizioni di Coffman sono NECESSARIE.C'è un deadlock Ci sono le quattro condizioni.→

Le condizioni di Coffman non sono, in generale, SUFFICIENTI.

Ci sono le quattro condizioni Non è detto che ci sia→deadlock!

Page 44: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

46

Le quattro condizioni(In questa slide, le prime tre)

Mutua esclusione: almeno una delle risorse deveessere di tipo seriale.Possesso e attesa: le richieste sono di tipo bloccante, e un processo che ha già ottenuto risorse può chiederne ancora.Impossibilità di prerilascio: le risorse coinvolte non sono prerilasciabili.

Page 45: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

47

Le quattro condizioni(In questa slide, l'ultima)

Attesa circolare: esiste un insieme di task{T0, T1,..., Tn} in cui:

T0 attende una risorsa posseduta da T1.T1 attende una risorsa posseduta da T2.…Tn attende una risorsa posseduta da T0.

Page 46: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

48

Grafo di allocazione di Holt(Modella le prenotazioni e le acquisizioni di risorse)

Grafo orientato e bipartito modellante le relazioni fra task e risorse.

Grafo orientato: gli archi hanno una direzione.Grafo bipartito: i nodi sono suddivisi in duesottoinsiemi, e non esistono archi colleganti nodidello stesso sottoinsieme.

I due sottoinsiemi sono risorse e task. Gli archi sono di due tipologie.

Risorsa task: la risorsa è associata al task.→Task risorsa: il task ha richiesto la risorsa.→

Page 47: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

49

Grafo di allocazione di Holt(Definizione formale in termini di set di vertici e archi)

Formalmente, siano dati:un set di task T={T0, T1,...,Tn}.un set di classi di risorse R={R0, R1,...,Rk}.

Il grafo di allocazione di Holt è un grafo con: un set di vertici V = T U R.

un set di archi E partizionato in due sottoinsiemi.Arco di richiesta: Ti→Rj se un task Ti ha richiestoun'istanza di risorsa Rj.Arco di assegnazione: Rj T→ i se un'istanza di risorsa Rjè stata assegnata al task Ti.

Page 48: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

50

Grafo di allocazione di Holt(Rappresentazione grafica di task, risorse, richieste, assegnazioni)

Risorsariutilizzabile

Risorsa nonriutilizzabile

Istanza di unadata risorsa

Risorsaassegnata

Richiestapendente

T Task

Risorsa chepuò esserecreata da

R R

Page 49: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

51

Grafo di allocazione di Holt(Grafi di esempio)

T1 T2

R1

R2

R3

T2 ottiene R1

T1 T2

R1

R2

R3

Evoluzione per stati successiviStato j Stato j+1

Page 50: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

52

Strategie di gestione del deadlock(Ostrich algorithm, deadlock detection and recovery)

Ostrich algorithm.Si ignora del tutto il problema.Si correggono i deadlock a mano quando capitano.

Deadlock detection and recovery.Si fa evolvere il sistema per stati successivi chepossono condurre al deadlock.Si rileva il deadlock e lo si rimuove.

Page 51: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

53

Strategie di gestione del deadlock(Deadlock avoidance, deadlock prevention)

Deadlock avoidance.Si impedisce al sistema di evolvere verso unacondizione di deadlock.Il deadlock non può mai presentarsi.

Deadlock prevention.Si invalida almeno una delle quattro condizioninecessarie.

Page 52: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

54

IGNORARE IL DEADLOCK

Page 53: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

55

Ostrich algorithm(Ignorare il problema, nella speranza che non si presenti)

L'algoritmo dello struzzo (ostrich algorithm) è semplice: si “mette la testa sotto la sabbia” e si ignora il problema del deadlock.RATIONALE: se la probabilità di ottenere un deadlock è bassa, non vale la pena ingegnarsi per prevenirlo.

Si preferisce identificare la causa del deadlock e →rimuoverla (correggendo il codice sorgente delle applicazioni coinvolte).

Page 54: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

56

“Hi! I'm an ostrich!”(I like to put my head under the sand; not to ignore problems, but to lay eggs)

Page 55: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

57

Correzione manuale di un deadlock(Compilazione con i simboli, uso di gdb, e tanta pazienza)

INPUT: una applicazione che va in deadlock per via di un uso sbagliato dei lock.PROCEDURA.Si ricompila l'applicazione con i simboli di debug.Si carica l'applicazione con un debugger.Si esegue l'applicazione all'interno del debugger fino al deadlock.Si esamina lo “stato” dell'applicazione in deadlock.Si identifica la sequenza di lock che porta al deadlock.Si corregge la sequenza di lock errata.OUTPUT: l'applicazione corretta.

Page 56: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

58

Un esempio concreto(Correzione del deadlock in deadlock_abba_mutex.c)

Nelle slide seguenti si applica la procedura ora vista all'esempio deadlock_abba_mutex.c.

Page 57: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

59

Ricompilazione con i simboli(Opzione -g di gcc)

È possibile ricompilare il programma con una speciale opzione di gcc (-g).gcc -pthread -g -o deadlock_abba_mutex deadlock_abba_mutex.c

Tale opzione crea ed inserisce nel binario eseguibile una tabella dei simboli.Tabella dei simboli: fa corrispondere ad un simbolo diverse informazioni utili in fase di debug.

Posizione (file, riga).Tipo.Indirizzo in memoria centrale.

Page 58: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

60

Esecuzione tramite debugger(gdb programma)

Si carica il programma tramite il debugger.gdb ./deadlock_abba_mutex

Si esegue il programma.run

Si attende il deadlock.

Page 59: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

61

Recupero stato dei thread(Si interrompe l'applicazione e si stampano le stack trace dei thread)

Si interrompe l'applicazione con la sequenza di tasti CTRL-C.Si stampano le stack trace di tutti i thread (con annessi valori delle variabili locali).thread apply all bt full

Grazie alla tabella dei simboli, gdb è in grado di tradurre gli indirizzi nei nomi delle funzioni.

→ Altrimenti, vedreste solo una sfilza di indirizzi esadecimali.

Page 60: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

62

Analisi backtrace: Thread 1(Lo si può trascurare)

Sono presenti tre thread: Thread 1, Thread 2 e Thread 3.Thread 1 sembra essere il programma principale.Nel momento in cui è stato interrotto, Thread 1 stava eseguendo

main() → pthread_join()Thread 1 aspetta due thread in deadlock fra loro; lui non partecipa al deadlock.

→ Si può trascurarlo.

Page 61: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

63

Analisi backtrace: Thread 2, Thread 3(Sono in deadlock fra loro)

Si osservino le backtrace di Thread 2 e Thread 3.Entrambi sono bloccati nella do_work().

Thread 2: do_work() (linea 39).Thread 3: do_work() (linea 51).

Si individui la porzione di codice che contiene tali righe, ad es. con il seguente comando di gdb:list 30,60

Thread 2 e 3 sono bloccati durante l'ottenimento dell'ultimo lock.

Page 62: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

64

Ricostruzione sequenza deadlock(Analisi combinata)

Combinando:il codice sorgente ( cosa viene eseguito)→l'output generato ( in che sequenza temporale)→le stack trace ( dove avviene il blocco)→

si ricostruisce la sequenza di eventi mostrata nelle slide seguenti.OCCHIO: la sequenza si riferisce all'esecuzione del programma sulla macchina del docente.La sequenza potrebbe cambiare in funzione della macchina e delle scelte effettuato dallo scheduler dei processi.

Page 63: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

65

Ricostruzione sequenza deadlock(T2 inizia l'esecuzione)

T2

Page 64: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

66

Ricostruzione sequenza deadlock(T2 chiede il lock sulla risorsa condivisa R1)

T2

R1

OCCHIO: in realtà nel programmadeadlock_abba_mutex non c'èalcuna risorsa condivisa.Immaginiamo che tale risorsa siapresente in singola istanza (ad es.,una variabile intera condivisa).Essa è rappresentata con la labelR1.

Page 65: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

67

Ricostruzione sequenza deadlock(T2 ottiene il lock sulla risorsa condivisa R1)

T2

R1

Page 66: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

68

Ricostruzione sequenza deadlock(T3 inizia l'esecuzione)

T2

R1

T3

Page 67: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

69

Ricostruzione sequenza deadlock(T3 chiede il lock sulla risorsa condivisa R2)

T2

R1

T3

R2

Page 68: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

70

Ricostruzione sequenza deadlock(T3 ottiene il lock sulla risorsa condivisa R2)

T2

R1

T3

R2

Page 69: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

71

Ricostruzione sequenza deadlock(T2 chiede il lock sulla risorsa condivisa R2)

T2

R1

T3

R2

Page 70: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

72

Ricostruzione sequenza deadlock(T3 chiede il lock sulla risorsa condivisa R1)

T2

R1

T3

R2

Page 71: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

73

Ricostruzione sequenza deadlock(T2 attende T3 e T3 attende T2)

T2

R1

T3

R2

T2 attende che T3sblocchi R2.T3 attende che T2sblocchi R1.T2 e T3 si attendonoa vicenda, per sempre.

→ DEADLOCK ABBA.

Page 72: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

74

Esercizi (5 min.)

3. Si corregga deadlock_abba_mutex.c in modo tale da rimuovere il deadlock.

Page 73: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

76

RILEVARE IL DEADLOCK

Page 74: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

77

Deadlock detection(Rilevare il deadlock)

Si mantiene costantemente aggiornato il grafo di allocazione risorse.

Si registrano le richieste di risorse da parte deiprocessi.Si registrano le assegnazioni di processi a risorse.

Si usa un algoritmo di riconoscimento di deadlock sul grafo di allocazione risorse ogniqualvolta esso cambia.Problema: come si riconosce uno stato di deadlock?

Page 75: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

78

Riconoscimento con singola istanza(Ipotesi di Coffman più singola istanza: Deadlock Ciclo nel grafo di Holt)↔

Teorema: siano verificate le seguenti ipotesi.Le risorse

sono presenti in singola istanza;sono accedute in mutua esclusione.

Le richiestesono bloccanti;sono seriali;non sono prerilasciabili.

Allora uno stato è di deadlock se e solo se il grafo di allocazione contiene un ciclo.

Page 76: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

79

Riconoscimento con una sola istanza(Ipotesi di Coffman più singola istanza Deadlock Ciclo nel grafo di Holt)→ ↔

Quindi, nel caso di una sola istanza per classe di risorsa, al SO basta mantenere aggiornato il grafo di allocazione e controllare, periodicamente, la presenza di cicli in tale grafo.Strategia naive: ricerca depth first con marcatura dei nodi.

→ Se si incontra un nodo già marcato, c'è un ciclo.Nel caso di classi di risorse con singola istanza, le condizioni di Coffman da necessarie diventano necessarie e sufficienti.

Page 77: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

80

Riconoscimento con più istanze(Non vale più il teorema precedente)

La presenza di un ciclo nel grafo di allocazione non è più condizione sufficiente per la presenza di un deadlock; è solo necessaria.

T1 T2 T3

R1

R2

CicloDeadlock

Non c'è modo per cuiR1 possa liberare unaistanza da dare a P1(sbloccando, di fatto,il deadlock).

T1 T2 T3

R1

R2

CicloNO Deadlock

Quando P3 finisce diusare R1, la si assegnaa P1, rompendo difatto il ciclo.

Page 78: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

81

Esercizi (10 min.)4. Si copi il programma sorgente deadlock_abba_mutex.c nel programma sorgente abba_molteplici_istanze.c.Si corregga abba_molteplici_istanze.c nel modo seguente:

si sostituisca al mutex lockA un semaforo semA;si inizializzi semA a 2.

Si compili il programma e lo si esegua.C'è deadlock? Se sì, perché? Se no, perché?

Page 79: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

83

Riconoscimento con più istanze(Il concetto di riducibilità permette di stabilire se l'intreccio si scioglie o no)

Un grafo di allocazione è detto riducibile se esiste almeno un nodo task con soli archi entranti.Significato: il task ha terminato di richiedere risorse, e le sta solo possedendo.La procedura di riduzione consiste nell'eliminare tutti gli archi di un siffatto nodo, riassegnando le istanze liberate ad altri processi.Un grafo di allocazione è completamente riducibile se esiste una sequenza di riduzioni tale da eliminare tutti gli archi del grafo.

Page 80: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

84

Motivazioni(Del concetto di riducibilità)

Un nodo con soli archi entranti rappresenta un processo che ha ottenuto tutte le istanze di risorse che voleva.Tale processo, prima o dopo, rilascerà le istanze prenotate.Tale processo non può, per definizione, essere responsabile di un deadlock (non fa parte di un ciclo).Togliendo gli archi al processo, si simula la situazione immediatamente successiva al rilascio.Si vuole capire se le istanze rilasciate sono sufficienti a rimuovere un eventuale deadlock.

Page 81: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

85

Riconoscimento con più istanze(Esempio della riduzione)

Riduzione

T1 T2

R1

R2

Nodo processo con soli archi entranti; si rimuovono gli archi.

Riduzione

T1 T2

R1

R2

Page 82: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

86

Riconoscimento più istanze(Ipotesi di Coffman più multiple istanze: Deadlock Non completa riducibilità)↔

Teorema: siano verificate le seguenti ipotesi.Le risorse

sono presenti in multipla istanza (almeno una risorsa);sono accedute in mutua esclusione.

Le richiestesono bloccanti;sono seriali;non sono prerilasciabili.

Se il grafo di allocazione è completamente riducibile, uno stato non è di deadlock.

Page 83: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

87

Riconoscimento più istanze(Ipotesi di Coffman più multiple istanze Deadlock Incompleta riducibilità)→ ↔

Quindi, nel caso di molteplici istanze per classe di risorsa, il SO:

mantiene aggiornato il grafo di allocazione.calcola le riduzioni.scopre se il grafo è completamente riducibile.deduce la non presenza di un deadlock.

OCCHIO: la condizione è sufficiente, non necessaria.

Se vale sicuramente non c'è deadlock.Se non vale, non è detto che ci sia deadlock!Se non c'è deadlock, non è detto che valga!

Page 84: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

88

Esempio(C'è deadlock?)

R1 R2

R3

T1 T3

T2

T4

Page 85: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

89

Esempio(C'è deadlock?)

R1 R2

R3

Si riduce P1. Siassegna l'istanzadi risorsa liberataa P2.

T1 T3

T2

T4

Page 86: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

90

Esempio(C'è deadlock?)

R1 R2

R3

Si riduce P2. Siassegnano le istanzedi risorse liberatea P3 e P4.

T1 T3

T2

T4

Page 87: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

91

Esempio(C'è deadlock?)

R1 R2

R3

Si riduce P3.

T1 T3

T2

T4

Page 88: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

92

Esempio(C'è deadlock?)

R1 R2

R3

Si riduce P4. Il grafoè completamenteriducibile non c'è→il deadlock.

T1 T3

T2

T4

Page 89: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

93

Esercizi (10 min.)

5. Si disegni il grafo di allocazione di Holt per abba_molteplici_istanze nell'istante in cui i due thread hanno prenotato tutte le loro risorse.Il grafo è completamente riducibile?

Page 90: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

100

Riconoscimento con richieste singole(Il concetto di annodamento permette di stabilire se l'intreccio si scioglie o no)

L'ultimo caso degno di menzione è quello in cui un processo non può mai richiedere più di una risorsa alla volta. In tal caso, si usa la nozione di knot (annodamento) di un grafo.Dato un nodo n di un grafo orientato, l'insieme dei nodi raggiungibili da n viene detto insieme di raggiungibilità R(n).Un knot del grafo è il massimo sottoinsieme non banale di nodi M tale che, n M, R(n)=M.Partendo da un qualunque nodo di M, si possono raggiungere tutti i nodi di M e nessun altro all'infuori di esso.

Page 91: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

101

Riconoscimento con richieste singole(Esempio di grafo generico con e senza knot)

a

b c

d

a

b c

d

{a, c, d} non èun annodamento

{b, c, d} èun annodamento

Page 92: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

102

Grafo di attesa (wait-for)(Il grafo di allocazione senza nodi risorsa e con i Pj connessi direttamente)

Dato un grafo di allocazione di Holt, il grafo di attesa (o grafo wait-for) si ottiene nel seguente modo:

si eliminano tutti i nodi risorsa Rj.se nel grafo di allocazione Ti → Rj T→ j, allora nel grafodi attesa Ti T→ j.

Page 93: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

103

Grafi di allocazione e di attesa(Un esempio vale più di 1000 parole)

T1

R1

R3

T3

R2

T2

Grafo diallocazione

Grafo diattesa

T1

T3

T2

Page 94: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

104

Riconoscimento con richieste singole(Ipotesi di Coffman più richieste singole: Esiste un knot nel grafo Deadlock)→

Teorema: siano verificate le seguenti ipotesi.Le risorse

sono accedute in mutua esclusione.Le richieste

sono bloccanti;sono singole;non sono prerilasciabili.

I taskcon richieste pendenti sono tutti bloccati.

Se esiste un knot nel grafo di attesa allora lo stato è di deadlock.

Page 95: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

105

Esempio(C'è un knot C'è deadlock)→

T1

R1

R3

T3

R2

T2

Grafo diallocazione

Grafo diattesa

T1

T3

T2

C'è unknot!

C'è undeadlock!

Page 96: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

106

Riconoscimento con richieste singole(Ipotesi di Coffman più richieste singole: Esiste un knot nel grafo Deadlock)→

In definitiva, se le richieste sono sempre singole, il SO deve:

mantenere aggiornato il grafo di allocazione.controllare periodicamente la presenza di un knot.decidere della presenza di un deadlock.

OCCHIO: la condizione è sufficiente, non necessaria.

Se vale c'è sicuramente deadlock.Se c'è deadlock, non è detto che valga!

Page 97: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

107

Controesempio(C'è un deadlock ma non c'è un knot)

T1

R1

R3

T3

R2

T2

Grafo diallocazione

Grafo diattesa

T1

T3

T2

Non c'èun knot!

C'è undeadlock!

X

Page 98: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

108

RECAP(Utilissimo)Le risorse

sono accedute in mutua esclusione.Le richieste

sono bloccanti;non sono prerilasciabili.

Se:risorse seriali in singola istanza: deadlock ciclo nel↔grafo di allocazione.risorse seriali, almeno una in multipla istanza: grafo diallocazione completamente riducibile assenza di→deadlock.richieste singole: esiste un knot nel grafo di attesa →deadlock.

Page 99: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

109

Uso degli algoritmi di detection(Quando si usano?)

Ad ogni richiesta di risorsa da parte di un task.Capacità di determinare la richiesta e, dunque, iltask che causa il deadlock.Costo molto elevato.Capacità di intervento tempestivo (non degradaeccessivamente l'utilizzo delle risorse).

Page 100: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

110

Uso degli algoritmi di detection(Quando si usano?)

Su base periodica.Incapacità di determinare la richiesta e, dunque, iltask che causa il deadlock.Costo ridotto.Ridotta capacità di intervento tempestivo (maggioredegradazione dell'utilizzo delle risorse).

Page 101: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

111

Deadlock recovery(Quando si applica?)

Terminazione del task.Approccio non incrementale: si terminano tutti itask coinvolti nel deadlock.Approccio incrementale: si terminano i taskcoinvolti nel deadlock uno alla volta, fino allarisoluzione del deadlock.

Criteri di scelta: priorità, tempo di calcolo, tipo dirisorse occupate (per alcune il rilascio potrebbeessere più semplice di altre).

Page 102: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

112

Deadlock recovery(Quando si applica?)

Prelazione.Deassegnazione di risorse ad un task coinvoltonel deadlock.Occorre selezionare un task vittima e cercare diimpedire il fenomeno di starvation fra task.

Checkpoint/Rollback.Lo stato dei task viene periodicamente salvato sudisco (checkpoint).In caso di deadlock, si ripristina (rollback) uno o piùtask ad uno stato precedente, fino a quando ildeadlock non scompare.

Page 103: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

113

Deadlock recovery: considerazioni(Non è sempre così semplice ripristinare il sistema dopo un deadlock)

Terminare task può essere costoso.Tali task possono essere stati eseguiti per moltotempo (long-lived).Se terminati, dovranno ripartire da capo.

Terminare task può lasciare le risorse in uno stato inconsistente.

Se un task viene terminato nel bel mezzo di unasezione critica.

Operare una prelazione:non sempre è possibile.può richiedere interventi manuali (ad esempio: unastampante).

Page 104: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

114

PREVENIRE IL DEADLOCK

Page 105: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

115

Deadlock prevention(Prevenzione del deadlock; si annulla almeno una condizione di Coffman)

Se sono verificate tutte le condizioni necessarie, c'è rischio di deadlock.Se si invalida almeno una condizione necessaria, il deadlock non può verificarsi.

Page 106: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

116

Rimozione della mutua esclusione(Non sempre fattibile)

Si permette la condivisione delle risorse. Ad esempio: spool di stampa.

Tutti i task credono di usare la stampantecontemporaneamente.

Problemi.Lo spooling non è sempre applicabile (ad esempio, non lo ai descrittori di task).Si sposta il problema verso altre risorse (ad esempio, ildisco nel caso di spool di stampa).Cosa succede se due task che vogliono stampare duedocumenti esauriscono lo spazio su disco?

Page 107: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

117

Rimozione di possesso e attesa(Si riduce l'efficienza del programma)

Si deve garantire che, quando un task richiede una risorsa, non ne possieda già altre.

Un task richiede tutte le risorse che gli servonoall'inizio della computazione.

Non sempre l'insieme delle richieste è noto findall'inizio.Si riduce il parallelismo.

Un task richiede una risorsa solo se non nepossiede nessuna.

Bassa utilizzazione delle risorse.Starvation.

Page 108: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

118

Rimozione dell'impossibilità di prelazione(Non sempre è applicabile)

Se il task possiede risorse e ne richiede un'altra, gli si fanno rilasciare tutte le risorse.

Il task attenderà anche le risorse che possedevaprima del rilascio.

Quando un task richiede risorse, si verifica la loro disponibilità.

Se sono disponibili, vengono assegnate.Se non sono disponibili, si verifica se sono assegnate adun altro task che attende altre risorse.

Se il task attende altre risorse, gli si sottraggonoquelle richieste.

Questo protocollo non sempre è applicabile (ad es.,stampanti, nastri).

Page 109: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

119

Rimozione dell'attesa circolare(Si riduce l'efficienza del programma)

Si impongono:un ordinamento totale all'insieme di tutti i tipi di risorse.un ordinamento crescente di numerazione alle risorserichieste da ciascun task.

Ogni task può richiedere risorse solo in ordine crescente di numerazione.

Tn non può più attendere T0.Altamente inefficiente.

Page 110: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

120

Esercizi (10 min.)

6. Si copi il programma sorgente deadlock_abba_mutex.c nel programma sorgente abba_no_possesso.c.Si riscriva abba_no_possesso.c in modo tale che nessun thread possieda e attenda risorse.

C'è deadlock? Se sì, perché? Se no, perché?

Page 111: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

122

AGGIRARE IL DEADLOCK

Page 112: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

123

Deadlock avoidance(Si impedisce che il sistema arrivi ad uno stato di deadlock)

Prima di assegnare una risorsa ad un task, si controlla se l'operazione può portare al pericolo di deadlock.In tal caso, l'operazione viene ritardata.I task dichiarano l'ordine di prenotazione delle risorse.

Page 113: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

124

A cosa serve la deadlock avoidance(E cosa deve fare il SO per implementarla)

Conoscendo la sequenza completa di richieste e rilascio, si sa per ogni task se esso deve attendere oppure no.Per stabilire se una richiesta possa essere soddisfatta o si debba attendere per evitare un deadlock, il SO deve:

esaminare le risorse attualmente disponibili.esaminare le risorse attualmente assegnate ad ognitask.esaminare le richieste ed i rilasci futuri di ciascuntask.

Page 114: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

125

Stato sicuro e sequenza sicura(Sicuro non può progredire verso un deadlock)→

Stato sicuro: uno stato del sistema si dice sicuro se si possono assegnare risorse a ciascun task in un qualunque ordine, senza il verificarsi di un deadlock.Sequenza sicura: una sequenza di task (T1, T2, ..., Tn) è detta sicura se, per ogni Ti, le risorse di cui Ti necessita sono libere oppure in possesso di processi Tj, j<i.

Page 115: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

126

Deadlock avoidance e stati sicuri(Stato sicuro nessun rischio di deadlock; Stato non sicuro potrebbe esserci)→ →

Uno stato non sicuro non è uno stato di deadlock.Uno stato di deadlock è uno stato non sicuro.Dunque: uno stato non sicuro può condurre ad uno stallo.

Tipicamente, attraverso una sfortunata serie diprenotazioni.

Page 116: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

127

Algoritmi di deadlock avoidance(Partono da uno stato sicuro e mantengono il sistema in stati sicuri)

Il sistema è in uno stato sicuro se esiste almeno una sequenza sicura.Algoritmi per evitare deadlock:

partono da uno stato sicuro.mantengono il sistema in stati sicuri, applicando dellescelte ad ogni richiesta di risorsa.

Page 117: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

128

Suddivisione degli stati(Sicuri, non sicuri, deadlock)

Diagramma di Venn dei possibili stati del sistema.

Stati sicuri

Stati non sicuri

Stati dideadlock

Page 118: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

129

Grafo di allocazione con archi di reclamo(Modellano le future allocazioni Dicono se uno stato è sicuro o no)→

Algoritmo con grafo di allocazione.Si utilizza un nuovo tipo di arco nel grafo di allocazione delle risorse.Arco di reclamo Ti T→ j: Ti può richiedere Rj in un qualsiasi istante futuro.

Quando Ti richiede Rj, l'arco di reclamo diventa un arco dirichiesta.Quando Ti ottiene Rj, l'arco di richiesta diventa un arco diassegnazione.Quando Ti rilascia Rj, l'arco di assegnazione diventa unarco di reclamo.

Page 119: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

130

Alcune osservazioni(Sul costo computazionale)

Gli archi di reclamo devono essere inseriti all'attivazione del processo (necessità di conoscere le risorse di cui il processo può far richiesta).Per verificare la possibilità di trasformare gli archi di reclamo in archi di richiesta, è necessario visitare il grafo di allocazione per ogni richiesta di risorsa.Costo: O(n2) nel numero di task.

Page 120: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

131

Grafo di allocazione con archi di reclamo(Uno schema aggiornato)

Risorsariutilizzabile

Risorsa nonriutilizzabile

Istanza di unadata risorsa

Risorsaassegnata

Richiestapendente

T Task

Risorsa chepuò esserecreata da

R R

Arco di reclamo

Page 121: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

132

Grafo di allocazione con archi di reclamo(Un esempio)

T1 T2

R1

R2

Sia T1 che T2 intendono,durante la loro esecuzione,utilizzare R2.

Page 122: Lezione 13 Deadlock - WEB Lab Grafo di allocazione di Holt (Modella le prenotazioni e le acquisizioni di risorse) Grafo orientato e bipartito modellante le relazioni fra task e risorse

133

Deadlock avoidance(Ipotesi di Coffman più arco di reclamo Deadlock Ciclo nel grafo)→ ↔

Teorema: nell'ipotesi che Ti R→ j, se le risorse sono accedute in mutua esclusione con richieste bloccanti, sono seriali e non sono prerilasciabili:

il sistema è in uno stato sicuro se e solo se la conversionedell'arco di richiesta Ti R→ j in un arco di assegnazioneRj T→ i non introduce un ciclo nel grafo di allocazionedelle risorse con archi di reclamo.Altrimenti, il sistema è in uno stato non sicuro.