Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Principi del deadlock (s tallo) R ilevamento dello s tallo Trattamento dello s tallo Es clus ione dello s tallo S tarvation
Un esempio di ingorgo
2 3
1 4
Stallo possibile
Sistemi Operativi 11/12 Deadlock
Stallo
2
Un esempio di ingorgo
I quadranti 1-4 sono risorse contese
Lautomobile a destra richiede 1 e 2 Lautomobile in alto richiede 2 e 3 Lautomobile a sinistra richiede 3 e 4 Lautomobile in basso richiede 4 e 1
Deadlock
Deadlock
Esistono potenziali conflitti tra i processi che utilizzano risorse condivise La maggior parte delle risorse prevede un utilizzo esclusivo
Esempi: CD-ROM, plotter
Deadlock
Le risorse
I deadlock possono verificarsi quando i processi ottengono accessi esclusivi a dispositivi (o oggetti software), in generale si parler di risorse Le risorse possono essere di diverso tipo: dispositivi di I/O, memoria, una tupla di un database, ma vengono comunemente classificate in due tipi diversi:
1. risorse con prerilascio: possono essere tolte ai processi senza problemi (memoria, CPU) 2. risorse senza prerilascio: se vengono tolte ai processi si ha il fallimento dell'elaborazione (stampanti, lettori di nastro)
Deadlock
Le risorse
In generale i deadlock coinvolgono risorse senza prerilascio La sequenza di passi necessari per l'uso di una risorsa :
1. Richiesta della risorsa 2. Utilizzo della risorsa 3. Rilascio della risorsa
Se la risorsa non disponibile, il processo viene fatto attendere, in alcuni sistemi il processo viene automaticamente bloccato e poi risvegliato quando la risorsa torna disponibile, in altri il processo che deve esplicitamente gestire la situazione
Deadlock
Definizione di deadlock
Un insieme di processi in deadlock se ogni processo dell'insieme in attesa di un evento che solo un altro processo appartenente allo stesso insieme pu causare
Un processo in deadlock non procede mai e non finisce mai la sua esecuzione, processi in deadlock possono bloccare l'intero sistema
Deadlock
Condizioni necessarie
Coffman e altri (1971) hanno dimostrato che le seguenti sono condizioni necessarie affinch esista un deadlock:
1. Mutua esclusione: un solo processo alla volta pu utilizzare la risorsa 2. Prendi e aspetta (Hold and Wait): i processi che detengono risorse possono chiederne altre 3. Assenza di prerilascio (No Preemption): le risorse possono essere rilasciate solo dal processo che le detiene, il rilascio non pu essere forzato 4. Attesa circolare (Circular Wait): deve esistere una lista circolare di processi/risorse
Deadlock
Gli archi possono solo connettere nodi di tipo diverso. Necessariamente anche gli archi assumono significato diverso:
archi uscenti da processi: il processo ha richiesto la risorsa archi uscenti da risorse: la risorsa allocata al processo
P R
R P
Deadlock
1 2 3 1 4
Deadlock
10
F1
P1
F2
P1
P4
P2
P4
P2
F4
P3
F3
P3
Risorse singole
Risorse multiple
Deadlock
11
R1
R2
R3
Assegnamento
P1
P2
P3
P4
P5
Richiesta
R4
R5
R6
R7
Deadlock
12
R1
esempio di figura
P1 R1 P2 R2 P1, P1 R1 P2 R3 P1
P1
P2 R3
R2
Deadlock
13
R1
P1
P2 R3
R2
sono possibili cicli senza deadlock un deadlock pu verificarsi solo se esiste un ciclo
Deadlock 14
Deadlock
21
Deadlock
22
Deadlock
23
Mutua esclusione
Se non vi sono risorse assegnate in modo esclusivo ad un singolo processo non vi saranno deadlock Un possibile approccio lo Spooling
Occorre un processo daemon (demone) e una directory di spooling Per la stampa di un file, il processo genera l'intero file e lo memorizza nella directory di spooling Il daemon l'unico processo ad avere accesso alla directory di spooling e ha il compito di avviare la stampa Lo spooling viene usato anche nei trasferimenti via rete (posta elettronica, ftp, ... )
Deadlock
24
Spooling
Esempio stampante: Effettuando lo spooling sulle uscite per la stampante, pi processi possono produrre le loro uscite contemporaneamente
Dato che esiste un solo processo che utilizza la stampante fisica e non ha bisogno di altre risorse il deadlock impossibile Non tutti i processi possono essere gestiti attraverso lo spooling (es. la tabella dei processi)
Deadlock
25
Prendi e aspetta
Occorre evitare che processi che detengono risorse rimangano in attesa di ulteriori risorse. Ci possono essere varie soluzioni: Un processo richiede immediatamente tutte le risorse di cui ha bisogno, se non sono disponibili attende Nascono nuovi problemi: Un processo non sempre sa quello di cui ha bisogno nel corso dell'esecuzione L'uso delle risorse non ottimizzato (rimangono risorse spesso inutilizzate) Vi il rischio che un processo che ha bisogno di molte risorse rimanga in attesa per tempi molto lunghi Un modo leggermente diverso quello di imporre che un processo rilasci temporaneamente le risorse detenute prima di una nuova richiesta La terza condizione nessun prerilascio di fatto inutilizzabile
Deadlock
26
Attesa Circolare
L'attesa circolare pu essere eliminata in vari modi: Un processo pu richiedere una sola risorsa per volta Le risorse sono numerate e possono essere richieste solo secondo l'ordine numerico
P4
F1
P1
F2
P2
F3
P3
F4
Il filosofo 4 non pu richiedere la forchetta 4 prima della forchetta 1 Una variante richiede semplicemente che la nuova risorsa debba avere una etichetta maggiore di tutte quelle detenute
Deadlock
27
Attesa circolare
2 3
1 4
Deadlock
28
Attesa circolare
Deadlock
29
Evitare il deadlock
possibile impedire il verificarsi di un deadlock? S se si hanno a disposizione alcune informazioni
Il modello pi semplice e pi utile richiede che ciascun processo dichiari il numero massimo di risorse necessarie Lalgoritmo esamina dinamicamente lo stato di allocazione delle risorse per garantire che non accada mai una attesa circolare Lo stato definito dal numero di risorse disponibili e allocate e dal numero massimo di risorse richieste
Deadlock
30
Stato sicuro
Uno stato si dice sicuro se esiste una sequenza di altri stati che porta tutti i processi ad ottenere le risorse necessarie (e quindi terminare) altrimenti viene detto non sicuro
Per evitare i deadlock quindi sufficiente evitare gli stati non sicuri
Deadlock
31
R1
R1 P2
R1 P2
P1
P1
P1
P2
R2
R2
R2
Stato sicuro
Deadlock
Possibile richiesta
Deadlock
32
Deadlock
33
Deadlock
34
Deadlock
35
Deadlock
36
Algoritmo
Una richiesta viene evasa solo se porta in uno stato ancora sicuro altrimenti il processo deve attendere L'algoritmo descritto applicabile ad un sistema con una singola risorsa multipla, ma pu essere generalizzato al caso di un sistema complesso con molte classi di risorse L'algoritmo del banchiere soffre del solito problema: presuppone una conoscenza completa del sistema comunque un punto di partenza per risolvere i casi concreti
Deadlock
37
Risorse multiple
Dati: allocazione corrente, massima allocazione, risorse disponibili
Occorre calcolare le risorse necessarie
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 2 1 2 0 0 1 0 0 1 0 0 0 0
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 0 0 0 1 1 0 2 2
1 1 2 1 2
Deadlock 39
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 2 1 2
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 1 1 0 2 2
P1 pu terminare
Deadlock
40
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 2 2 2 2 2
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 2 1 3 1 1 1 1 0 2 2
P4 pu terminare
Deadlock
41
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 3 2 2
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 2 1 3 1 1
P2 pu terminare
Deadlock
42
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 3 2 3
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3
P0 pu terminare
Disponibili
3 2 4 2 3
Se esiste una sequenza in cui tutti i processi ottengono tutte le risorse necessarie, allora il sistema in uno stato sicuro
Sistemi Operativi 11/12 Deadlock 43
Risorse multiple
Processi P0 P1 P2 P3 P4 Disponibili
Corrente 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 1 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2
Processi P0 P1 P2 P3 P4 Disponibili
Sistemi Operativi 11/12
Corrente 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1
Deadlock
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 0 1 2 1 2 1 1 1 2 2
Necessaria 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 0 0 1 0 1 1 1 0 2 2
44
Risorse multiple
Corrente 2 0 10 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 2 12 Corrente 2 0 10 0 0 0 0 0 1 0 0 1 0 0 1 2 2 22
Deadlock
Massima 2 0 2 1 3 1 2 1 2 2 2 1 3 1 2 1 1 1 2 2
Necessaria 0 0 1 1 3 0 1 1 1 2 2 1 3 1 1 1 1 0 2 2
Massima 2 0 2 1 3 2 1 3 1 2 1 1 1 2 2
Necessaria 0 0 1 1 3 2 1 3 1 1 1 1 0 2 2
45
Risorse multiple
Processi P0 P2 Disponibili
Corrente 2 0 10 0 0 0 0 0 1 1 2 3 22
Massima 2 0 2 1 3 2 1 3 1 2
Necessaria 0 0 1 1 3 2 1 3 1 1
Deadlock
46
Deadlock
47
Deadlock
48
Deadlock
49
Grafo di allocazione
Deadlock
50
Deadlock
51
Strategie di recovery
Dopo il rilevamento di un deadlock che fare?
preemption rollback terminazione di processi
Ignorare il problema
approccio pi semplice migliori prestazioni e sistema meno restrittivo esempio: Unix, Windows
Deadlock
52
Terminazione di processi
Uccidere tutti i processi coinvolti Uccidere solo un processo alla volta fino a che il ciclo di deadlock non si aperto Problema: quale ordine scegliere:
Priorit del processo Tempo di esecuzione trascorso e/o necessario Risorse usate/necessarie Numero di processi che devono essere terminati Processi interattivi o batch
Deadlock
53
Deadlock
54
memoria utente
memoria assegnata ai processi degli utenti
spazio di swap
spazio destinato su dispositivo di memorizzazione di massa per i processi
Deadlock
55
Soluzione combinata
ordinamento di risorse nelle quattro classi singoli approcci in ogni classe
risorse di sistema
prevenzione: ordinamento allinterno della classe
memoria utente
preemption: swap di un processo su memoria di massa
risorse ai processi
prevenzione: i processi informano prima il S.O: delle risorse che necessitano
spazio di swap
prevenzione: tutte le risorse sono allocate allo stesso tempo (preallocation)
Deadlock
56
Starvation
Un fenomeno simile al deadlock la starvation un processo non pu procedere perch altri processi detengono sempre una risorsa di cui ha bisogno
la richiesta del processo non viene mai soddisfatta
Deadlock
57
Esempi di starvation
processi batch con bassa priorit in un sistema time-sharing attraversare una strada trafficata (trasmissione su bus, protocollo di token) cercare di chiamare il servizio informazioni delle Ferrovie avere accesso a un corso molto gettonato a numero chiuso
Deadlock
58
Starvation
STOP
Lauto allo stop attende allinfinito, perch le auto della strada principale hanno una alta priorit
Deadlock
59
Starvation
Soluzioni: opportunit: ogni processo ha una percentuale adeguata di tutte le risorse tempo: la priorit del processo viene aumentata se il processo aspetta per un tempo troppo lungo
Deadlock
60
Starvation
STOP
Deadlock
61
Esercizio 1
Processo A B C D Totali
U 3 2 1 2 8
M 7 5 6 9 Dire quali richieste sono accettabili da parte del sistema con 12 o 14 risorse a disposizione: (A,2) (B,2) (C,3) (D,4)
Deadlock
63
Processo A B C D Totali
U 5 2 1 2 10
M 7 5 6 9
Deadlock
64
Processo A B C D Totali
U 3 4 1 2 10
M 7 5 6 9
Deadlock
65
Processo A B C D Totali
U 3 2 4 2 11
M 7 5 6 9 Con 12 risorse a disposizione non posso concludere alcun processo Con 14 il processo B
Deadlock
66
Processo A B C D Totali
U 3 2 1 6 12
M 7 5 6 9
Deadlock
67
Esercizio 2
Un sistema ha quattro processi e cinque risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D Disponibili Corrente 1 0 2 1 1 2 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 x 1 1 Massima 1 1 2 1 2 2 2 2 1 0 2 1 5 1 0 1 1 2 2 1
Processi A B C D Disponibili
Corrente 1 0 2 1 1 2 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 x 1 1
Massima 1 1 2 1 2 2 2 2 1 0 2 1 5 1 0 1 1 2 2 1
Necessaria 0 1 0 0 1 0 2 1 0 0 1 0 5 0 0 0 0 1 1 1
Deadlock
69
Processi A B C D Disponibili
Corrente 1 0 2 1 1 2 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1
Massima 1 1 2 1 2 2 2 2 1 0 2 1 5 1 0 1 1 2 2 1
Necessaria 0 1 0 0 1 0 2 1 0 0 1 0 5 0 0 0 0 1 1 1
Deadlock
70
Processi A B C Disponibili
Corrente 1 0 2 1 1 2 0 1 1 0 1 1 0 1 0 1 1 2 2 1
Massima 1 1 2 1 2 2 2 2 1 0 2 1 5 1 0
Necessaria 0 1 0 0 1 0 2 1 0 0 1 0 5 0 0
Deadlock
71
Processi B C Disponibili
Corrente 2 0 1 1 0 1 1 0 1 0 2 1 4 3 2
Massima 2 2 2 1 0 2 1 5 1 0
Necessaria 0 2 1 0 0 1 0 5 0 0
Deadlock
72
Esercizio 2 x=2
Con x=2 (i passi precedenti sono ovviamente uguali)
Processi B C Disponibili Processi B Disponibili Corrente 2 0 1 1 0 1 1 0 1 0 2 1 5 3 2 Corrente 2 0 1 1 0 3 2 5 4 2 Massima 2 2 2 1 0 Necessaria 0 2 1 0 0 Massima 2 2 2 1 0 2 1 5 1 0 Necessaria 0 2 1 0 0 1 0 5 0 0
Deadlock
73
Esercizio 3
Un sistema ha 4 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D Allocate 1111 2010 Massime
Disponibili 1131
Deadlock
74
Esercizio 3
Un sistema ha 4 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D Allocate 1111 2010 2022 0211 Massime 2121 2432 5422 0341 Necessarie 1010 0422 3400 0130
Disponibili 1131
Richiesta B 0110
Deadlock
75
Esercizio 3
Un sistema ha 4 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D Allocate 1111 2120 2022 0211 Massime 2121 2432 5422 0341 Necessarie 1010 0312 3400 0130
Disponibili 1021
Il processo A pu terminare
Sistemi Operativi 11/12 Deadlock 76
Esercizio 3
Un sistema ha 4 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi C D Allocate 2022 0211 Massime 5422 0341 Necessarie 3400 0130
Disponibili 2132
Il processo D pu terminare
Sistemi Operativi 11/12 Deadlock 77
Esercizio 3
Un sistema ha 4 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi B C Disponibili 2343 Processi Allocate 2120 2022 Massime 2432 5422 Necessarie 0312 3400
Il processo B pu terminare
Allocate Massime Necessarie
Disponibili 4463
Sistemi Operativi 11/12
Il processo C pu terminare
Deadlock 78
Esercizio 3
Un sistema ha 5 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D E Disponibili 2 2 10 4
Sistemi Operativi 11/12
Deadlock
79
Esercizio 3
Un sistema ha 5 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi A B C D E Allocate 4X32 80Y2 4000 0032 21Z4 Massime 6456 10 7 6 8 6208 0342 9169 Necessarie 2 4-X 2 4 2 7 6-Y 6 2208 0310 7 0 6-Z 5
Disponibili 2 2 10 4
Deadlock
80
Esercizio 3
Un sistema ha 5 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi B C D E Allocate 80Y2 4000 0032 21Z4 Massime 10 7 6 8 6208 0342 9169 Necessarie 2 7 6-Y 6 2208 0310 7 0 6-Z 5
Disponibili 6 2+X 13 6
D pu terminare
Deadlock
81
Esercizio 3
Un sistema ha 5 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi B C E Allocate 80Y2 4000 21Z4 Massime 10 7 6 8 6208 9169 Necessarie 2 7 6-Y 6 2208 7 0 6-Z 5
Disponibili 6 2+X 16 8
C pu terminare
Deadlock
82
Esercizio 3
Un sistema ha 5 processi e 4 risorse allocabili. Lallocazione corrente e il massimo fabbisogno sono i seguenti:
Processi B E Disponibili 10 2+X 16 8 Processi B Disponibili 12 3+X 16+Z 12
Sistemi Operativi 11/12
Massime 10 7 6 8 9169
E pu terminare 6Z0
Allocate 80Y2 Massime 10 7 6 8 Necessarie 2 7 6-Y 6