Politecnico di MilanoW.Fornaciari Deadlock Corso di Calcolatori Elettronici AA
W.FornaciariCalcolatori Elettronici, AA Sommario Le risorse Condizioni necessarie per il deadlock Modello tramite grafo orientato Deadlock Detection Deadlock Avoidance Deadlock Prevention Starvation Deadlock in ambiente distribuito (cenni)
W.FornaciariCalcolatori Elettronici, AA Risorse Risorsa: hw o sw usabile in modo esclusivo da un processo (file, record in un db, device, licenze sw,...) Ris. Preemptable: può essere tolta senza effetti disastrosi Ris. Non-preemptable: se tolta danneggia la computazione Ciclo di uso di una risorsa da parte di un processo Richiesta Uso risorsa Rilascio risorsa Attesa Processo bloccato, ev. Effettua diversi tentativi
W.FornaciariCalcolatori Elettronici, AA Condizioni per il deadlock Un insieme di processi è in deadlock se ognuno di essi è bloccato in attesa di un evento che solo altri (a loro volta bloccati) possono generare Condizioni necessarie per avere deadlock Mutua esclusione:risorse allocate o disponibili Hold&Wait:processi che già detengono risorse possono chiederne altre No preemption:solo rilascio spontaneo delle risorse Attesa circolare:deve esistere un loop di processi, ognuno in attesa per risorse detenute dal successivo Le presenza delle condizioni non implica che il sistema necessariamente entrerà in deadlock, è solo a rischio; tutto dipende dallordinamento temporale delle richieste
W.FornaciariCalcolatori Elettronici, AA Modello a grafo orientato I cicli nel grafo orientato sono situazioni di deadlock Aggiornando il grafo ad ogni richiesta, si può monitorare la presenza di deadlock nel sistema Es. P1, P2, R1 e R3 sono coinvolti nel deadlock RisorsaProcessoRisorsaProcesso Il processo è bloccato, in attesa delle risorsaIl processo detiene la risorsa R1 R2 R3 P1 P2 P3
W.FornaciariCalcolatori Elettronici, AA Gestione deadlock Ignorare:non gestito.Trade-off fra costi ripristino e danni possibili; applicabile se poco frequente e non mission critical Detection & recovery: lascio che accada, ho però metodi per individuarlo e risolverlo Detection con 1 ris. per ogni tipo: costruisco grafo, se esistono cicli ho deadlock; individuo anche processi e risorse coinvolte Detection con ris. Multiple (indistinguibili) per ogni tipo: n processi P 1, P n m classi risorsedi cardinalità E i (1 i m) E [E 1,... E i,... E m ] vettore delle risorse esistenti A [A 1,... A i,... A m ]vettore delle risorse disponibili C [c ij ] nxm matrice di allocazione corrente c ij numero di istanze di classe j detenute da P i R [r ij ] nxm matrice delle richieste, r ij risorse di classe j chieste da P i
W.FornaciariCalcolatori Elettronici, AA Detection con risorse multiple Ogni risorsa è disponibile o allocata Nota: A è vettorialmente minore di B se lo sono tutte le sue componenti: A i B i i, 1 i m Cerca un processo P i non marcato, tale che i-esima riga di R sia A A= A + i-esima riga di C marca P i I P i non marcati (se esistono) sono in deadlock fine esiste Il processo può essere soddisfatto con le risorse disponibili Simulo restituzione delle risorse al termine uso da parte del processo non esiste
W.FornaciariCalcolatori Elettronici, AA Recovery Recovery Mediante preemption Tolgo una risorsa per darla ad altro processo, la scelta dipende dalla facilità di restituzione risorsa Generalmente si interviene manualmente Mediante roll-back I processi dispongono di checkpoint periodici (immagine memoria P + stato delle risorse lui assegnate) Rilevato il deadlock, si identificano le ris. necessarie e si effettua roll-back dei processi che le detengono sino allistante precedente la loro acquisizione. Le risorse così liberate sono assegnate ai P in deadlock Il lavoro svolto sino al checkpoint è perso; tradeoff fra freq deadlock e freq dei checkpoint Mediante uccisione dei processi Elimino (incrementalmente) i processi appartenenti al ciclo Elimino processi non appartenenti al ciclo ma che detengono risorse necessarie ai P i del ciclo Candidati: P ripristinabili senza conseguenze (es compilatori), P che hanno svolto poco lavoro, P coinvolti in più cicli
W.FornaciariCalcolatori Elettronici, AA Gestione deadlock: avoidance Stato sicuro:non è in deadlock ed esiste un modo per soddisfare le richieste pendenti eseguendo in un qualche ordine i processi Stato non-sicuro:i processi possono evolvere, ma non è garantito che tutti potranno terminare (diverso da deadlock) In generale il sistema consente di allocare le risorse solo se rimane in uno stato sicuro Algoritmo del banchiere (risorse singole) Ogni P ha definito un #max di risorse prendibili Le richieste si considerano nel loro ordine di arrivo, se portano in uno stato non sicuro P viene messo in attesa Problema: predicibilità delle risorse necessarie, #P i varia dinamicamente, la disponibilità risorse può mutare (es. guasto)
W.FornaciariCalcolatori Elettronici, AA DL avoidance (2) Algoritmo del banchiere per risorse multiple E vett risorse esistentiP vett risorse prese A vett ris. Libere E-P=A Algoritmo per sapere se uno stato è sicuro ( con R matrice richieste) Cerca riga (pocesso) di R che sia A Scelta a caso una riga, supporre che il suo P termini e le sue risorse siano rese (ovvero sommare la riga ad A) Marcare la riga (processo) Sono marcate tutte le righe di R? Il sistema entrerà in deadlock poichè nessun processo terminerà Lo stato è sicuro no esiste non esiste si
W.FornaciariCalcolatori Elettronici, AA Deadlock prevention Si cerca di rendere strutturalmente impossibile il DL, violando una delle 4 condizioni necessarie Mutua esclusione Rendere (quando possibile) condivisibili le risorse Spooler: processo (demone) unico gestore di un device che incamera e accoda le risorse (es stampante) Non tutti i device possono essere gestiti tramite spooler Hold&Wait I P debbono chiedere in anticipo (prima della loro esecuzione) le risorse necessarie, altrimenti vengono sospesi Difficile conoscere in anticipo tutte le necessità; possibile uso non ottimale delle risorse causa sovradimensionamento richieste Variante: prima di chiedere risorsa, il P rilascia temporaneamente quelle che possiede, poi cerca di acquisirle tutte in blocco
W.FornaciariCalcolatori Elettronici, AA Deadlock prevention (2) Assenza preemption Praticabile solo in casi molto particolari Attesa circolare Assegno ordine numerico alle risorse, ogni processo può detenere una sola risorsa alla volta Se i P potranno effettuano richieste solo seguendo tale ordine il grafo è acicilico; ad ogni istante un processo non potrà infatti richiedere una risorsa già assegnata Sono pochi i casi nei quali un ordine soddisfa tutti i processi Luso di una sola risorsa alla volta rende impossibili semplici operazioni come copia da disco a nastro
W.FornaciariCalcolatori Elettronici, AA Deadlock prevention (3) Two-phase locking (DB) 1.Cerco di bloccare tutti i record in modo atomico (metto i lock) 2.Aggiorno i record del DB, poi rilascio i lock Se vi sono record occupati nella prima fase, rilascio i lock presi e riparto Applicabile per processi che possono essere fatti ripartire senza problemi (es difficile se ho letto o scritto da rete) Per le operazioni su DB è facile capire le risorse necessarie in anticipo
W.FornaciariCalcolatori Elettronici, AA Starvation Alcuni processi, anche se non in deadlock, non vengono mai serviti (es. gestore di stampe che privilegia il job più corto) È un problema tipicamente legato alla presenza di politiche di gestione con priorità Politiche tipo prima arrivato prima servito (FCFS) o round- robin lo evitano
W.FornaciariCalcolatori Elettronici, AA DL in ambiente distribuito Le informazioni sono frammentate su più macchine Origine situazioni di deadlock Comunicazione:circolarità nel cercare di inviare msg (es per mancanza buffer) Risorse:condivisione per accesso esclusivo Strategie di gestione Ignorare:sempre possibile Rilevazione e risoluzione: è il più usato Prevenzione:possibile, soprattutto nei sistemi transazionali Evitato per costruzione: quasi mai usato causa mancanza di info in anticipo su uso delle risorse
W.FornaciariCalcolatori Elettronici, AA Rilevazione in amb. distribuito Strategie di gestione Normali sistemi:rilevo ed effettuo kill di processi Sistemi con transazioni:rilevo ed effettuo abort ripristinando stato precedente Algoritmo centralizzato Esiste una macchina coordinatrice che raccoglie e fonde i grafi di allocazione di ogni macch. del sistema; se rileva un ciclo ammazza dei processi per spezzarlo Necessità di msg di aggiornamento Ogni volta che un grafo si modifica Periodicamente invio aggiornamento msg precedente Invio su richiesta del coordinatore Problemi di falsi deadlock causa ritardi e incoerenze nellaggiornamento del grafo globale Necessità di un tempo globale (molto costoso); se si sospetta DL si inviano msg di richiesta info alle macchine interessate con meccanismi di timestamping per avere situazione realmente aggiornata
W.FornaciariCalcolatori Elettronici, AA Rilevaz. in amb. Distribuito (2) Algoritmo distribuito Lalgoritmo è invocato quando un P deve attendere per delle risorse Si genera msg di probe da inviare ai P i che detengono risorse Msg= (id_P bloccato, id_P mittente del msg, id_P destinatario) Quando msg arriva, il P ricevente Se esso stesso è in attesa per altre risorse, invia un msg verso i processi che lo stanno bloccando, mantenendo il primo campo Se il msg ritorna al primo mittente (il primo campo) esiste un ciclo ovvero DL Risoluzione Il P che ha lanciato msg probe si suicida (se ho molti probe contemporaneamente nel sistema si hanno fenomeni di strage) Ogni P aggiunge il proprio id a msg probe; il primo mittente ha lista di P coinvolti per scegliere quale ammazzare (msg kill)
W.FornaciariCalcolatori Elettronici, AA Prevenzione in amb. Distribuito Si cerca un ordinamento nella richiesta e acquisizione delle risorse che renda impossibili i cicli Sistemi con tempo globale e transazioni (T) Ogni T ha associato t start diverso dagli altri Un P che necessita risorsa detenuta da altro, verifica il suo timestamp, ev se non può bloccarsi si uccide Wait-die: un P si blocca se e solo se è più vecchio rispetto a quello che lo obbliga ad attendere; i timestamp crescono, assenza di cicli –Variante: un P può attendere solo per P più giovani –In generale è meglio dare priorità ai più vecchi per perdere meno lavoro svolto –Ok per sistemi transazionali che posso essere fatti ripartire in modo sicuro senza side-effect Wound-wait: si consente ai P più vecchi di fare preemption sui più giovani. I più giovani possono solo mettersi in attesa su quelli più vecchi dopo il loro re-start. Rispetto a wait-die il più giovane non viene ucciso ma messo in attesa
W.FornaciariCalcolatori Elettronici, AA Valutazione algoritmi detection per sistemi distribuiti Condizioni da verificare Tutti i DL debbono essere rilevato in un t finito Non debbono essere rilevati falsi DL (es problemi ritardi in msg) Prestazioni algoritmo t persistenza del DL (intervallo fa detection e risoluzione DL) Requisiti di memoria e computazionali Numerosità e dimensione dei msg scambiati Metodi di analisi Analitici Empirici Tramite simulazione