1 / 32

Il deadlock

Il deadlock. Università degli Studi di Roma “Tor Vergata” Corso di Sistemi Operativi. Risorse (1). Esempi di risorse stampanti Lettori di nastri Tabelle di un DB I processi hanno bisogno delle risorse in un certo ordine.

jewel
Download Presentation

Il deadlock

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Il deadlock Università degli Studi di Roma “Tor Vergata” Corso di Sistemi Operativi

  2. Risorse (1) • Esempi di risorse • stampanti • Lettori di nastri • Tabelle di un DB • I processi hanno bisogno delle risorse in un certo ordine Supponiamo che un processo abbia acquisito una risorsa A e chieda la risorsa B. Se un altro processo ha acquisito la risorsa B e chiede la A si ha uno STALLO

  3. Risorse (2) • Il Deadlock può avvenire quando ad un processo viene garantito l’accesso esclusivo ad una risorsa • Risorse prerilasciabili (preemptable) • Può essere essere tolta la risorsa ad un processo senza effetti disastrosi • Risorse non prerilasciabili (nonpreemptable) • Togliendo la risorsa ad un processo se ne causa il fallimento

  4. Risorse (3) • Sequenza di eventi necessari per l’uso di una risorsa • Richiesta della risorsa • Uso della risorsa • Rilascio della risorsa • Se la risorsa non è disponibile il processo richiedente viene messo in attesa • Alcuni sistemi pongono bloccano automaticamente il processo e lo fanno ripartire quando la risorsa diventa disponibile • Altri sistemi restituiscono un codice di errore

  5. Introduzione al Deadlock • Definizione:Un insieme di processi e in stallo se ogni processo dell’insieme è in attesa di un evento che solo un altro processo dell’insieme può causare • Normalmente l’evento è l’accesso ad una risorsa occupata • Nessun processo può • Andare in esecuzione • Rilasciare la risorsa • Essere sbloccato

  6. Condizioni per il Deadlock • Condizione di mutua esclusione • Ogni risorsa è assegnata ad un processo o è disponibile • Condizione di “Hold and wait” • I processi che detengono risorse possono chiederne altre • Condizione di assenza di prerilascio • Le risorse assegnate non possono essere tolte forzatamente ad un processo • Condizione di attesa circolare • Deve esistere una catena circolare di due o più processi ognuno dei quali è in attesa di una risorsa occupata dal prossimo processo della catena

  7. Modellazione del Deadlock (1) • La risorsa R è asssegnata al processo A • Il processo B richiede/aspetta per la risposta S • I processi C e D sono in stallo sulle risorse T e U

  8. Modellazione del Deadlock (2) • Startegie per il trattamento del Deadlock • Ignorare semplicemente il problema • Rilevare e risolvere • Cercare dinamicamente di evitare lo stallo • Curare l’allocazione delle risorse • Prevenire • Negare una delle quattro condizioni necessarie

  9. Modellazione del Deadlock (3) A B C

  10. (o) (p) (q) Deadlock Modeling (4)

  11. Algoritmo dello struzzo • Fare finta che il rpoblema non esiste • È ragionevole se • Il deadlock è un evento raro • Il costo della sua prevenzione è alto • UNIX e Windows hanno tale approccio • La valutazione da fare è rispetto a • convenienza • correttezza

  12. Identificazione con una risorsa per ogni classe (1) • A occupa R e richiede S • B richiede T • C richiede S • D occupa U e richiede S e T • E occupa T e richiede V • F occupa W e richiede S • G occupa V e richiede U

  13. Identificazione con una risorsa per ogni classe (2) • Il grafo precedente contiene un ciclo • I processi D, E, G sono in stallo • Occorre un algoritmo formale per scoprire i deadlock

  14. Identificazione con una risorsa per ogni classe (3) • Algoritmo di ispezione di un grafo • Termina quando ha trovato un ciclo o quando ha verificato che non ne esistono • Struttura dati: lista di nodi Per un qualunque nodo del grafo preso come punto di partenza: • Inizializza L come lista vuota e definisce tutti gli archi come non marcati • Aggiunge il nodo corrente alla fine di L e verifica che non sia ripetuto. Se L compare due volte = ciclo e termina • Dal nodo corrente guarda se vi sono archi uscenti non marcati. Se si seguita, altrimenti va al punto 5 • Prende a caso un arco non marcato e lo marca, segue l’arco fino al nodo successivo e ritorna al passo 2 • Se non si può proseguire, tornare al nodo precedente, renderlo corrente e tornare al passo 2. Se il nodo è quello di partenza non ci sono cicli, terminare

  15. Rilevazione con risorse multiple per ogni classe (1) Strutture dati necessarie all’algoritmo per la rilevazione del deadlock

  16. Rilevazione con risorse multiple per ogni classe (2) • Per le quattro strutture precedenti vale la regola invariante che ogni risorsa è disponibile o occupata, cioè: • L’algoritmo di rilevazione del deadlock si basa sul confronto tra vettori A e B definendo che A B se per

  17. Rilevazione con risorse multiple per ogni classe (3) • Inizialmente ogni processo è non marcato. Avanzando l’algoritmo marca i processi che possono teminare. Quando l’algoritmo termina i processi non marcati sono in stallo Cerca un processo non marcato Pi per cui l’i-esima riga di R è minore uguale ad A Se si trova un processo di questo tipo, aggiunge l’i-esima riga di C ad A, marca il processo e torna al passo 1 Se non esiste alcun processo di questo tipo l’algoritmo termina

  18. Esempio per l’algoritmo di rilevazione dei deadlock

  19. Risoluzione del Deadlock (1) • Prerilascio • Prendere una risorsa da un altro processo • Dipende dalla natura della risorsa • Ritorno ad uno stato precedente • Punti di controllo periodici sui processi • Salvataggio dello stato del processo in un file • Uso dello stato salvato • Riavvio del processo da un punto di controllo se nello stato di deadlock

  20. Risoluzione del Deadlock (2) • Eliminazione di processi • Modo brutale, ma semplice di risolvere il deadlock • Uccidere uno o più processi nel ciclo di deadlock • Uccidere un processo non appartenente al ciclo che, liberando le sue risorse può sbloccare un processo nel ciclo • Occorre scegliere un processo che possa essere rieseguito dall’inizio

  21. Evitare il Deadlock Traiettorie di risorsa per i processi A e B Numero di istruzioni eseguite dal processo A Numero di istruzioni eseguite dal processo B

  22. Stati sicuri e non sicuri (1) • Uno stato (descritto dai vettori E e A e dalle matrici C e R) è detto sicuro se non è in stallo e c’è un modo per soddisfare tutte le richieste pendenti eseguendo i processi in qualche ordine (a) (b) (c) (d) (e) Dimostrazione che lo stato in (a) è sicuro

  23. Stati sicuri e non sicuri (2) • Uno stato non sicuro non è in stallo e non implica necessariamente uno stallo • In uno stato sicuro il sistema può garantire la terminazione di tutti i processi, in uno stato non sicuro non c’è garanzia (a) (b) (c) (d) Dimostrazione che lo stato in (b) è non sicuro

  24. Algoritmo del banchiere per risorsa singola (Dijkstra ’65) • Prende spunto dal modo in cui un banchiere tratta un gruppo di clienti a cui ha garantito una linea di credito • Il banchiere sa che non tutti I clienti avranno bisogno contemporaneamente del credito massimo ed ha allocato un numero di unità di credito inferiore (10) di quelle totali (22) • Controlla se garantire una richiesta porta ad uno stato non sicuro ed in tal caso rifiuta la richiesta (a) (b) (c) Tre stati di allocazione delle risorse: (a) sicuro (b) sicuro (c) non sicuro

  25. Risorse esistenti Risorse assegnate Risorse disponibili Algoritmo del banchiere per risorse multiple • Si cerca una riga R per la quale le risorse ancora non richieste sono minori o uguali a quelle di A. Se non esiste siamo in stallo • Supponendo che il processo scelto richieda tutte le risorse della riga R e termini, si marca il processo e si aggiunge ad A il vettore delle risorse detenute dal processo fino a quello stato. • Si ripetono i punti 1 e 2 fino a che tutti i processi sono marcati o si trova uno stallo

  26. Prevenzione del Deadlock (1) • Evitare che si verifichi una delle 4 condizioni necessarie per il deadlock Negazione della condizione di mutua esclusione • Su alcuni dispositivi (come le stampanti) si può predisporre uno spool • Solo il daemon di stampa usa le risorse di stampa • Ciò elimina il deadlock sulle stampanti • Non tutti i dispositivi possono essere trattati con lo spooling • Principio: • Evitare di assegnare risorse se non strettamente necessario • Assicurarsi che possano richiedere la risorsa il minor numero di processi

  27. Prevenzione del Deadlock (2) Negazione della condizione hold-and-wait Evitare che un processo che detiene delle risorse ne possa chiedere altre. • Si può raggiungere l’obiettivo obbligando i processi a chiedere tutte le risorse di cui hanno bisogno prima di iniziare l’esecuzione • Molti processi non sanno di quante risorse avranno bisogno • Non viene ottimizzato l’uso delle risorse • In alternativa un processo che richiede una risorsa dovrà rilasciare temporaneamente tutte le risorse detenute fino a quel momento per richiederle insieme alla nuova risorsa

  28. Prevenzione del Deadlock (3) Negazione della condizione di mancanza di prerilascio • Questa soluzione non è praticabile Esempio: Se un processo detiene una stampante ed è a metà di un processo di stampa, non è possibile pensare ad un prerilascio

  29. (a) (b) Prevenzione del Deadlock (4) Negazione della condizione di attesa circolare • Regola imposta che ogni processo possa disporre in ogni istante di una sola risorsa. Prima di prenderne un’altra deve rilasciare la prima. Vincolo troppo forte • Numerare tutte le risorse presenti ed adottare la regola: • I processi possono richiedere le risorse quando vogliono, ma le richieste devono essere fatte seguendo l’ordinamento numerico. In tal caso il grafo di allocazione non può contenere cicli Se i>j A non può richiedere j Se j>i B non può richiedere i

  30. Blocco a due fasi Approccio usato nelle basi dati per richieste di lock su diversi record per operazioni di scrittura • Fase uno • Il processo prova a bloccare tutti I record di cui ha bisogno, uno alla volta • Se non ha successo rilascia i lock e ricomincia • Se ha successo passa alla seconda fase (non viene fatto alcun lavoro reale) • Fase due • Vengono eseguiti gli aggiornamenti • Vengono rilasciati i lock È come richiedere tutte le risorse in anticipo. L’algoritmo lavora bene dove il programmatore ha fatto in modo da poter interrompere e far ripartire il programma nella prima fase

  31. Stallo senza risorse • Possibile fra due processi in attesa che uno dei due faccia qualcosa • Può succedere con i semafori • Ogni processo richiede di fare una down su due semafori (un mutex più un altro) • Se ciò avviene nell’ordine sbagliato si può verificare uno stallo

  32. Starvation Fenomeno per cui un processo non viene mai servito pur non essendo in stallo • Algoritmo di allocazione di una risorsa • Potrebbe essere equo lo shortest job first • Lavora bene quando nel sistema ci sono molti lavori brevi • I lavori lunghi possono essere ritardati indefinitamente • Tecnicamente non sono bloccati • Soluzione • Algoritmo di allocazione First-come, first-served

More Related