Deadlock.

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Meccanismi di IPC Problemi classici di IPC
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
Il Sistema Operativo.
1 Semantica Operazionale di un frammento di Java: lo stato.
Il problema dello stallo
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Frontespizio Economia Monetaria Anno Accademico
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Algoritmi e Strutture Dati
Training On Line – CONA. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Annuali > Nuova Richiesta Si accede alla pagina di Richiesta.
Realizzazione del file system
Silberschatz, Galvin and Gagne Operating System ConceptsDeadlock Modello del sistema Caratterizzazione dei deadlock Metodi per la gestione dei.
Deadlock Modello del sistema Caratterizzazione dei deadlock
Scheduling della CPU Concetti fondamentali Criteri di scheduling
Scheduling della CPU Concetti di base Criteri di scheduling
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
3. Processi Stocastici Un processo stocastico è una funzione del tempo i cui valori x(t) ad ogni istante di tempo t sono v.a. Notazione: X : insieme di.
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Ordini Parziali - Reticoli
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
EIE 06/07 II / 1 Strumenti delle politiche agricole in economia aperta equilibrio di mercato in economia aperta politiche di un paese importatore politiche.
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
eliana minicozzi linguaggi1a.a lezione2
Risorse e Stallo.
Gestione dei processi Un sistema operativo multitasking è in grado di gestire più processi Un processo corrisponde ad un programma in esecuzione. Un programma.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Corso di Programmazione Concorrente Stallo Valter Crescenzi nz.
Tabelle hash.
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
Sincronizzazione fra thread
Sistemi Operativi SCHEDULING DELLA CPU.
Strutture di controllo in C -- Flow Chart --
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
Portale Capacità STOGIT
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Requisiti precedenti Contenuti Verifiche Bibliografia Maura Zini.
MACCHINARI SICURI WORKSHOP FASCICOLO TECNICO E ANALISI DEI RISCHI
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Sincronizzazione dei processi
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
TRASFORMATA DI FOURIER
I processi.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Gestione del processore (Scheduler)
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
Il Sistema Operativo Processi e Risorse
Transcript della presentazione:

Deadlock

Deadlock Il problema del deadlock Modello del sistema Caratterizzazione dei deadlock Metodi per la gestione dei deadlock Prevenire i deadlock Evitare i deadlock Rilevare i deadlock Ripristino da situazioni di deadlock Oggi c’è un traffico tremendo…

Il problema del deadlock  1 In un ambiente multiprogrammato più processi possono entrare in competizione per ottenere un numero finito di risorse Deadlock o stallo  insieme di processi bloccati: ciascun processo “possiede” una risorsa ed attende di acquisire una risorsa allocata ad un altro processo dell’insieme

Il problema del deadlock  2 Esempio 1 Nel sistema sono presenti due stampanti P1 e P2 si sono assicurati una stampante ciascuno ed entrambi richiedono anche l’altra Esempio 2 Semafori A e B, inizializzati a 1: P1 P2 wait (A); wait(B); wait (B); wait(A);

Esempio: attraversamento di un ponte In ogni istante, sul ponte possono transitare autoveicoli solo in una direzione Ciascuna sezione del ponte può essere immaginata come una risorsa Se si verifica un deadlock, il recovery può essere effettuato se un’auto torna indietro (rilascia la risorsa ed esegue un roll back) In caso di deadlock, può essere necessario che più auto debbano tornare indietro È possibile si verifichi starvation (attesa indefinita)

Esempio: leggi ferroviarie in Kansas Testo della legge approvata dalla legislazione del Kansas (inizi XX secolo): “Quando due treni convergono ad un incrocio, ambedue devono arrestarsi, e nessuno dei due può ripartire prima che l’altro si sia mosso”

Modello di sistema Tipi di risorse R1, R2,…,Rm Cicli di CPU, spazio di memoria, file, dispositivi di I/O Ciascun tipo di risorsa Ri ha Wi istanze Il protocollo di accesso alle risorse da parte dei processi prevede… Richiesta  se la richiesta non può essere soddisfatta immediatamente, causa diverso utilizzo della risorsa, il processo richiedente deve attendere fino all’acquisizione della risorsa Utilizzo Rilascio Richiesta/rilascio realizzati con apposite system call: request/ release device, open/close file, allocate/free memory o con wait/signal su opportuni semafori

Caratterizzazione del deadlock Una situazione di deadlock può verificarsi solo se valgono simultaneamente le seguenti condizioni: Mutua esclusione: esiste almeno una risorsa non condivisibile, cioè un solo processo alla volta può usare quella risorsa Possesso ed attesa: un processo, che possiede almeno una risorsa, attende di acquisire ulteriori risorse possedute da altri processi Impossibilità di prelazione: una risorsa può essere rilasciata dal processo che la possiede solo volontariamente, al termine della sua esecuzione Attesa circolare: esiste un insieme {P0,P1,…,Pn} di processi in attesa, tali che P0 è in attesa di una risorsa che è posseduta da P1, P1 è in attesa di una risorsa posseduta da P2,…, Pn–1 è in attesa di una risorsa posseduta da Pn, e Pn è in attesa di una risorsa posseduta da P0

Grafo di allocazione risorse  1 Un grafo è costituito da un insieme di vertici (o nodi) V variamente connessi per mezzo di un insieme di archi E Nel grafo di allocazione risorse… L’insieme V è partizionato in due sottoinsiemi: P  {P1,P2,…,Pn} è l’insieme costituito da tutti i processi del sistema R  {R1,R2,…,Rm} è l’insieme di tutti i tipi di risorse del sistema Arco di richiesta: Pi  Rj Arco di assegnazione: Rj  Pi

Grafo di allocazione risorse  2 Processo Tipo di risorsa con 4 istanze Pi richiede un’istanza di Rj Pi possiede un’istanza di Rj Arco di richiesta Pi Rj Arco di assegnazione Pi Rj

Esempi di grafo di allocazione risorse  1 Grafo di allocazione risorse con deadlock

Esempi di grafo di allocazione risorse  2 Se il grafo non contiene cicli non ci sono deadlock Se il grafo contiene un ciclo Se vi è una sola istanza per ogni tipo di risorsa, allora si ha un deadlock Se si hanno più istanze per tipo di risorsa, allora il deadlock è possibile (ma non certo) Grafo di allocazione risorse con un ciclo, ma privo di deadlock Il ciclo c’è, ma il deadlock no…

Metodi per la gestione del deadlock  1 Assicurare che il sistema non entri mai in uno stato di deadlock Prevenire i deadlock: evitare che si verifichino contemporaneamente mutua esclusione, possesso e attesa, impossibilità di prelazione e attesa circolare basso utilizzo risorse e throughput ridotto Evitare i deadlock: evitare gli stati del sistema a partire dai quali si può evolvere verso il deadlock

Metodi per la gestione del deadlock  2 Permettere al sistema di entrare in uno stato di deadlock, quindi ripristinare il sistema Determinare la presenza di un deadlock Ripristinare il sistema da un deadlock Ignorare il problema e fingere che i deadlock non avvengano mai nel sistema; impiegato dalla maggior parte dei SO, inclusi Windows e UNIX

Prevenire i deadlock  1 Limitare le modalità di richiesta/accesso delle/alle risorse Mutua esclusione  non è richiesta per risorse condivisibili; deve valere invece per risorse che non possono essere condivise, quindi non può essere prevenuta Possesso e attesa  occorre garantire che, quando un processo richiede una risorsa, non ne possieda altre Richiedere ad un processo di stabilire ed allocare tutte le risorse necessarie prima che inizi l’esecuzione, o consentire la richiesta di risorse solo quando il processo non ne possiede alcuna Basso impiego delle risorse; possibile l’attesa indefinita per processi con forti richieste di risorse

Prevenire i deadlock  2 Impossibilità di prelazione Se un processo, che possiede alcune risorse, richiede un’altra risorsa, che non gli può essere allocata immediatamente, allora rilascia tutte le risorse possedute Le risorse rilasciate (prelazionate al processo) vengono aggiunte alla lista delle risorse che il processo sta attendendo Il processo viene avviato nuovamente solo quando può ottenere sia le risorse precedentemente possedute sia quelle attualmente richieste Alternativamente, le risorse possono essere assegnate al processo che le richiede, qualora siano attualmente possedute da un altro processo in attesa Protocollo adatto per risorse il cui stato si può salvare e recuperare facilmente (registri, memoria; non per dispositivi di I/O)

f(R1)f(R2)… f(Rn) f(R1) Prevenire i deadlock  3 Attesa circolare  si impone un ordinamento totale su tutti i tipi di risorsa, f :RN, e si pretende che ciascun processo richieda le risorse in ordine crescente In alternativa, ogni processo, prima di richiedere un’istanza di Rj, deve rilasciare tutte le istanze di Ri, tale che f(Ri) f(Rj) Supponiamo che, avendo imposto l’ordinamento suddetto, si verifichi comunque l’attesa circolare Siano {P1,P2,…,Pn} i processi coinvolti nell’attesa circolare, dove Pi attende la risorsa Ri posseduta dal processo Pi+1 Poiché il processo Pi+1 possiede la risorsa Ri mentre richiede la risorsa Ri+1, i, vale la condizione f(R1)f(R2)… f(Rn) f(R1) assurdo!

Evitare i deadlock Presuppone che il sistema conosca a priori informazioni addizionali sulle richieste future dei processi Il modello più semplice e utile richiede che ciascun processo dichiari il numero massimo di risorse di ciascun tipo di cui può usufruire L’algoritmo di deadlockavoidance esamina dinamicamente lo stato di allocazione delle risorse per assicurare che non si possa verificare mai una condizione di attesa circolare Lo stato di allocazione delle risorse è definito dal numero di risorse disponibili ed allocate, e dal massimo numero di richieste dei processi

Stato sicuro  1 Quando un processo richiede una risorsa disponibile, il sistema deve decidere se l’allocazione immediata lasci il sistema in stato sicuro Il sistema si trova in uno stato sicuro se esiste una sequenza sicura di esecuzione di tutti i processi La sequenza <P1,P2,…,Pn > è sicura se, per ogni Pi, le risorse che Pi può ancora richiedere possono essergli allocate sfruttando le risorse disponibili, più le risorse possedute da tutti i Pj, con j  i

Stato sicuro  2 Cioè… Se le richieste di Pi non possono essere soddisfatte immediatamente, allora Pi può attendere finché tutti i Pj abbiano terminato Quando Pj ha terminato, Pi può ottenere le risorse richieste, eseguire i suoi compiti, restituire le risorse allocate e terminare Quando Pi termina, Pi+1 può ottenere le risorse richieste, etc.

Stato sicuro  3 Se un sistema è in stato sicuro non si evolve verso il deadlock Se un sistema è in stato non sicuro si può evolvere in deadlock In stato non sicuro, il SO non può impedire ai processi di richiedere risorse la cui allocazione porta al deadlock Deadlockavoidance garantisce che un sistema non evolva mai verso uno stato non sicuro Se un processo richiede una risorsa disponibile, può dovere attendere  scarso utilizzo delle risorse del sistema

Stato sicuro  4 Esempio Stato sicuro: <P1, P0, P2> 12 istanze di una risorsa complessivamente disponibili Al tempo t0 Stato sicuro: <P1, P0, P2> Se all’istante t1 il processo P2 richiede un’ulteriore unità, e questa gli viene assegnata, lo stato diventa non sicuro (solo P1 può terminare) Processo Richiesta max Unità possedute P0 10 5 P1 4 2 P2 9 3 unità disponibili

Algoritmi per evitare i deadlock Risorse ad istanza singola: utilizzo del grafo di allocazione risorse Risorse ad istanza multipla: algoritmo del banchiere

Algoritmo con grafo di allocazione risorse  1 Un arco di reclamo Pi  Rj (rappresentato da una linea tratteggiata) indica che il processo Pi può richiedere la risorsa Rj in futuro Un arco di reclamo viene convertito in un arco di richiesta quando il processo Pi richiede effettivamente la risorsa Rj Un arco di richiesta viene convertito in un arco di assegnamento quando la risorsa viene allocata al processo Quando una risorsa viene rilasciata da un processo, l’arco di assegnamento viene riconvertito in un arco di reclamo Le risorse devono venir reclamate a priori nel sistema Prima che il processo Pi inizi l’esecuzione, tutti i suoi archi di reclamo devono essere già inseriti nel grafo di allocazione risorse

Algoritmo con grafo di allocazione risorse  2 Supponiamo che il processo Pi richieda una risorsa Rj La richiesta può essere accordata solo se la conversione dell’arco di richiesta in arco di assegnamento non provoca il formarsi di un ciclo nel grafo di allocazione delle risorse

Algoritmo con grafo di allocazione risorse  3 Stato non sicuro in un grafo di allocazione risorse

Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell’algoritmo con grafo di allocazione risorse) Ciascun processo deve dichiarare a priori il massimo impiego di risorse Quando un processo richiede una risorsa può non venir servito istantaneamente Quando ad un processo vengono allocate tutte le risorse deve restituirle in un tempo finito

Strutture dati per l’algoritmo del banchiere Sia n il numero dei processi presenti nel sistema ed m il numero dei tipi di risorse Available : Vettore di lunghezza m; se Available[j]k, vi sono k istanze disponibili del tipo di risorsa Rj Max : matrice nm; se Max[i,j]k, il processo Pi può richiedere al più k istanze del tipo di risorsa Rj Allocation: matrice nm; se Allocation[i,j]k, a Pi sono attualmente allocate k istanze di Rj Need : matrice nm; se Need[i,j]k, Pi può richiedere k ulteriori istanze di Rj per completare il proprio task Need[i,j]Max[i,j]Allocation[i,j]

Algoritmo di verifica della sicurezza Siano Work e Finish vettori di lunghezza m ed n, rispettivamente; si inizializzi WorkAvailable Finish[i]false, per i1,2,…,n Si cerchi i tale che valgano contemporaneamente: Finish[i]false Needi  Work Se tale i non esiste, si esegua il passo 4. WorkWorkAllocationi Finish[i]true si torni al passo 2. Se Finish[i]true per ogni i, il sistema è in stato sicuro

Algoritmo di richiesta delle risorse per il processo Pi Sia Requesti il vettore delle richieste per il processo Pi Se Requesti[j]k, il processo Pi richiede k istanze del tipo di risorsa Rj Se Requesti Needi, si vada al passo 2.; altrimenti, si riporti una condizione di errore, poiché il processo ha ecceduto il massimo numero di richieste Se RequestiAvailable, si vada al passo 3.; altrimenti Pi deve attendere, poiché le risorse non sono disponibili Il sistema simula l’allocazione a Pi delle risorse richieste, modificando lo stato di allocazione come segue: AvailableAvailableRequesti Allocationi AllocationiRequesti NeediNeediRequesti Se lo stato è sicuro  le risorse vengono definitivamente allocate a Pi Se lo stato è non sicuro  Pi deve attendere, e viene ripristinato il vecchio stato di allocazione delle risorse

Esempio di applicazione dell’algoritmo del banchiere 5 processi, da P0 a P4 3 tipi di risorse: A (10 istanze), B (5 istanze) e C (7 istanze) Istantanea al tempo T0: Allocation Max Available A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 P1 2 0 0 3 2 2 P2 3 0 2 9 0 2 P3 2 1 1 2 2 2 P4 0 0 2 4 3 3

Esempio (Cont.) La matrice Need è definita come NeedMaxAllocation A B C P0 7 4 3 P1 1 2 2 P2 6 0 0 P3 0 1 1 P4 4 3 1 Il sistema è in stato sicuro, dato che la sequenza <P1,P3,P4,P2,P0> soddisfa i criteri di sicurezza

Esempio (Cont.) P1 richiede (1,0,2) Allocation Need Available Verificare che RequestAvailable (cioè, (1,0,2)  (3,3,2)) Allocation Need Available A B C A B C A B C P0 0 1 0 7 4 3 2 3 0 P1 3 0 2 0 2 0 P2 3 0 2 6 0 0 P3 2 1 1 0 1 1 P4 0 0 2 4 3 1 L’esecuzione dell’algoritmo di sicurezza mostra che la sequenza <P1,P3,P4,P0,P2> soddisfa i requisiti di sicurezza La richiesta di P1 viene soddisfatta immediatamente Può essere soddisfatta la richiesta di P4 per (3,3,0) ? Può essere soddisfatta la richiesta di P0 per (0,2,0) ?

Rilevamento del deadlock Si permette al sistema di entrare in uno stato di deadlock Per ripristinarne le funzionalità, sono necessari… …un algoritmo di rilevamento del deadlock e, successivamente, un algoritmo di ripristino dal deadlock Costi aggiuntivi per la memorizzazione delle informazioni necessarie al ripristino

Istanza singola di ciascun tipo di risorsa Impiega un grafo di attesa I nodi rappresentano i processi L’arco PiPj esiste se Pi è in attesa che Pj rilasci una risorsa che gli occorre Periodicamente viene richiamato un algoritmo che verifica la presenza di cicli nel grafo Un algoritmo per rilevare cicli in un grafo richiede un numero di operazioni dell’ordine di n2, dove n è il numero di vertici del grafo

Grafo di allocazione risorse e grafo di attesa Un arco PiPj esiste nel grafo di attesa se e solo se il corrispondente grafo di allocazione risorse contiene i due archi PiRq , RqPj per una qualche risorsa Rq Grafo di allocazione risorse Grafo di attesa corrispondente

Più istanze per ciascun tipo di risorsa Available : vettore di lunghezza m, indica il numero di risorse disponibili di ciascun tipo Allocation : matrice nm, definisce il numero di risorse di ciascun tipo attualmente allocate a ciascun processo Request : matrice nm, indica la richiesta corrente di ciascun processo; se Request[i,j]k, il processo Pi richiede k istanze supplementari della risorsa Rj L’algoritmo di rilevamento indaga su ogni possibile sequenza di assegnazione per i processi da completare

Algoritmo di rilevamento  1 Siano Work e Finish due vettori di lunghezza m e n, rispettivamente; inizialmente sia: WorkAvailable Per i1,2,…,n, se Allocationi0, Finish[i]false; altrimenti, Finish[i]true Si trovi un indice i tale che valgano entrambe le condizioni: Finish[i]false Requesti Work Se tale i non esiste, si vada al passo 4. WorkWorkAllocationi Finish[i]true si vada al passo 2. Se Finish[i]false, per qualche i, 1in, il sistema è in uno stato di deadlock; inoltre, se Finish[i]false, Pi è in deadlock

Algoritmo di rilevamento  2 Note L’algoritmo richiede un numero di operazioni dell’ordine di O(mn2) per determinare se il sistema è in uno stato di deadlock Si ipotizza (ottimisticamente) che Pi non intenda richiedere altre risorse per completare il proprio compito, ma piuttosto che restituisca in tempo finito quelle che già possiede Se ciò non accade, può verificarsi uno stallo, che verrà rilevato alla prossima verifica sul sistema

Esempio di applicazione dell’algoritmo di rilevamento 5 processi, da P0 a P4 3 tipi di risorse: A (7 istanze), B (2 istanze) e C (6 istanze) Istantanea al tempo T0: Allocation Request Available A B C A B C A B C P0 0 1 0 0 0 0 0 0 0 P1 2 0 0 2 0 2 P2 3 0 3 0 0 0 P3 2 1 1 1 0 0 P4 0 0 2 0 0 2 La sequenza <P0,P2,P3,P1,P4> conduce a Finish[i]true per ogni i

Esempio (Cont.) P2 richiede un’istanza supplementare della risorsa C Request A B C P0 0 0 0 P1 2 0 1 P2 0 0 1 P3 1 0 0 P4 0 0 2 Qual è lo stato del sistema? Può reclamare le risorse possedute dal processo P0, ma il numero di risorse disponibili non è sufficiente a soddisfare gli altri processi  deadlock: coinvolge i processi P1, P2, P3 e P4

Impiego dell’algoritmo di rilevamento Quando e quanto spesso richiamare l’algoritmo di rilevamento dipende da: Frequenza (presunta) con la quale si verificano i deadlock Numero di processi che vengono eventualmente influenzati dal deadlock (e sui quali occorre effettuare un roll back) Almeno un processo per ciascun ciclo Se l’algoritmo viene richiamato con frequenza casuale, possono essere presenti molti cicli nel grafo delle risorse  non si può stabilire quale dei processi coinvolti nel ciclo abbia “causato” il deadlock Alternativamente, l’algoritmo può essere richiamato ogni volta che una richiesta non può essere soddisfatta immediatamente o quando l’utilizzo della CPU scende al di sotto del 40%

Ripristino dal deadlock: terminazione di processi Terminazione in abort di tutti i processi in deadlock Terminazione in abort di un processo alla volta fino all’eliminazione del ciclo di deadlock In quale ordine si decide di terminare i processi? I fattori significativi sono: La priorità del processo Il tempo di computazione trascorso e il tempo ancora necessario al completamento del processo Quantità e tipo di risorse impiegate Risorse ulteriori necessarie al processo per terminare il proprio compito Numero di processi che devono essere terminati Tipo di processo: interattivo o batch

Ripristino dal deadlock: prelazione di risorse Selezione di una vittima  È necessario stabilire l’ordine di prelazione per minimizzare i costi Roll back  Un processo a cui sia stata prelazionata una risorsa deve ritornare ad uno stato sicuro, da cui ripartire Starvation  Alcuni processi possono essere sempre selezionati come vittime della prelazione: includere il numero di roll back nel fattore di costo