SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007



Documenti analoghi
Deadlock (stallo) Parte III. Deadlock

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Corso di Programmazione Concorrente

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

LA SINCRONIZZAZIONE TRA PROCESSI

Il sistema monetario

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Soluzione dell esercizio del 2 Febbraio 2004

Coordinazione Distribuita

Deadlock e Starvation

Gestione Turni. Introduzione

Pronto Esecuzione Attesa Terminazione

FPf per Windows 3.1. Guida all uso

Organizzazione degli archivi

Funzioni in C. Violetta Lonati

Monitor. Introduzione. Struttura di un TDA Monitor

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Ordinamento degli eventi. Lezione 11. Osservazioni. Relazione verificato prima. Cenni ai sistemi operativi distribuiti 3. Coordinazione distribuita

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Lo scheduling. Tipici schedulatori

Il Sistema Operativo

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Il problema del produttore e del consumatore. Cooperazione tra processi

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Database. Si ringrazia Marco Bertini per le slides

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Dimensione di uno Spazio vettoriale

Sistemi Operativi Kernel

Appunti sulla Macchina di Turing. Macchina di Turing

Presentazione della pratica online

Scheduling della CPU:

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Introduzione ai Metodi Formali

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Il database management system Access

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Strutturazione logica dei dati: i file

Capitolo 2. Operazione di limite

Gestione Risorse Umane Web Work-flow Selezione

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

MODELLISTICA DI IMPIANTI E SISTEMI 2

Informatica (Basi di Dati)

La Gestione delle risorse Renato Agati

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

ARCHITETTURA DI RETE FOLEGNANI ANDREA

4 3 4 = 4 x x x 10 0 aaa

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA

Controllo concorrenza

Gestione della memoria centrale

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Informatica: il sistema operativo

Basi di dati 9 febbraio 2010 Compito A

Informazioni demografiche e socio-economiche sugli Enti Locali

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

Traduzione e adattamento a cura di Gylas per Giochi Rari

Corso di Informatica

Altri metodi di indicizzazione

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Express Import system

Appunti di Sistemi Elettronici

visto il trattato che istituisce la Comunità europea, in particolare l articolo 93, vista la proposta della Commissione,

Amministrazione gruppi (Comunità)

Capitolo II. La forma del valore. 7. La duplice forma in cui si presenta la merce: naturale e di valore.

( x) ( x) 0. Equazioni irrazionali

Il costrutto monitor [Hoare 74]

Lezione 27: L offerta di moneta e la LM

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

SCHEDULATORI DI PROCESSO

Macroeconomia, Esercitazione 2. 1 Esercizi. 1.1 Moneta/ Moneta/ Moneta/3. A cura di Giuseppe Gori (giuseppe.gori@unibo.

Esempio: aggiungere j

Sistema operativo: Gestione della memoria

Corso di Informatica

ZFIDELITY - ZSE Software & Engineering Pag.1 / 11

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Effetto reddito ed effetto sostituzione.

Il sistema monetario

MODULO 02. Iniziamo a usare il computer

1. Limite finito di una funzione in un punto

ATTIVAZIONE SCHEDE ETHERNET PER STAMPANTI SATO SERIE ENHANCED

Calcolo del Valore Attuale Netto (VAN)

Strategia di classificazione della clientela relativamente ai servizi d investimento offerti dalla Banca Nazionale del Lavoro SpA

Transcript:

2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007

Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si verifica (esame del 28-07-2006) Il deadlock o blocco critico si può verificare quando vi sono più processi che competono per l utilizzo di un certo numero di risorse. Si ha deadlock quando un processo P1 possiede una risorsa R1 e richiede la risorsa R2 posseduta da un altro processo P2, trattenendo la propria risorsa. Analogamente, il processo P2 che possiede la risorsa R2, chiede la risorsa R1 in possesso del processo P1 senza rilasciare R2. I due processi rimangono bloccati in quanto per andare avanti hanno necessità della risorsa posseduta dall altro processo, risorsa che non viene rilasciata. Il deadlock può essere schematizzato con il seguente grafo: ogni cerchio del grafo rappresenta un processo e ogni rettangolo rappresenta una risorsa. P1 P2 P3 R1 R2 R3 P1 possiede la risorsa R1, non la rilascia e chiede la risorsa R2 P2 possiede R2, non la rilascia e richiede la risorsa R3 P3 possiede R3, non la rilascia e richiede la risorsa R1 Nell ipotesi che le risorse possedute dai processi possano essere rilasciate solo al termine del loro uso, i processi P1, P2,P3 rimangono bloccati indefinitamente (deadlock) in quanto tutti sono in attesa della risorsa posseduta da un altro processo, risorsa che non può essere rilasciata. Il deadlock dipende dalla velocità relativa di esecuzione dei processi, cioè dall ordine con la quale vengono schedulati dal sistema operativo. Si consideri infatti il seguente esempio: due processi P1 e P2 e due risorse

riusabili R1 e R2 ( una risorsa è riusabile se può essere usata da un solo processo alla volta e poi viene rilasciata per poter essere usata da un altro processo) che devono essere usate in maniera mutuamente esclusiva. Un solo processo alla volta può usare una risorsa. Per garantire la mutua esclusione usiamo due semafori binari MUTEX1 e MUTEX2 inizializzati al valore 1. Il programmatore del processo P1 esprime la necessità di usare prima R1 e poi R2 e di rilasciare nell ordine, R2 e R1. Il programmatore del processo P2 esprime la necessità di usare prima R2 e poi R1 e di rilasciare le due risorse nell ordine R1 e R2. I codici dei due processi sono i seguenti: P1 wait (MUTEX1); <inizio utilizzo di R1>;.. wait(mutex2) <inizio utilizzo di R2>.. signal (MUTEX2); <rilascio di R2> signal(mutex1); <rilascio di R1>; P2 wait (MUTEX2); <inizio utilizzo di R2>;.. wait(mutex1) <inizio utilizzo di R1>.. signal (MUTEX1); <rilascio di R1> signal(mutex2); <rilascio di R2>;

Supponiamo che l ordine di esecuzione dei processi sia il seguente: All istante to viene schedulato P1 che esegue wait(mutex1). Il processo P1 trova MUTEX1=1 (semaforo verde ) e quindi acquisisce la risorsa R1 e la utilizza dopo aver posto MUTEX1=0 (primo semaforo rosso). Prima che P1 possa richiedere la risorsa R2, P1 viene sospeso e viene schedulato P2. All istante t1, P2 esegue wait(mutex2) e trovando MUTEX2=1 (semaforo verde) acquisisce la risorsa R2 e pone MUTEX2=0 (secondo semaforo rosso) All istante t2 viene schedulato P1 che esegue wait(mutex2) ma essendo MUTEX2=0 allora il processo P1 viene bloccato in coda al semaforo MUTEX1. Ora all instante t3 viene schedulato P2, che esegue wait(mutex1) ma trovando MUTEX1=0 (semaforo rosso), viene bloccato in coda al semaforo MUTEX1. Entrambe i processi rimangono bloccati sui semafori MUTEX1 e MUTEX2 per sempre (blocco critico). Qualunque altra sequenza di esecuzione non avrebbe generato un blocco critico. Si pensi per esempio al caso in cui il processo P1 riesca a fare wait (MUTEX1) e wait(mutex2) senza essere interrotto. In questo caso P1 acquisisce entrambe le risorse, il processo P2 rimane bloccato su MUTEX2 ma poi viene risvegliato quando P1 termina di usare la risorsa R2. Questo esempio dimostra come il deadlock dipende dalla velocità relativa dei processi. Vediamo ora quali sono le condizioni affinché si verifichi un deadlock. Consideriamo N processi e M risorse dove per ogni risorsa possono essere definite più istanze (più unità). Si pensi alla risorsa file: un file duplicato costituisce una risorsa con due istanze. Si pensi alla risorsa masterizzatore: più unità di masterizzazione sullo stesso sistema costituiscono più istanze della risorsa masterizzatore. In questo caso la richiesta di quella risorsa può essere soddisfatta da qualunque istanza. Solo se tutte le istanze di una risorsa sono assegnate, la richiesta della risorsa non può essere soddisfatta. In questa situazione generale un blocco critico può verificarsi se sono vere contemporaneamente le seguenti 4 condizioni:

I. Le risorse possono essere usate da un solo processo alla volta (condizione di mutua esclusione) II. III. IV. I processi che possiedono delle risorse, non rilasciano queste risorse e chiedono altre risorse (condizione di possesso e attesa) Le risorse già assegnate ai processi non possono essere a questi sottratte (condizione di mancanza di pre-rilascio) Esistono N processi P1, P2,P3,-----Pn, tali che P1attende una risorsa posseduta da P2, P2 attende una risorsa posseduta da P3, Pn-1 attende una risorsa posseduta da Pn e Pn attende una risorsa posseduta da P1 (condizione di attesa circolare) Le prime tre condizioni sono condizioni necessarie. L attesa circolare è anch essa una condizione necessaria ma diventa sufficiente se esiste una sola istanza per ogni risorsa. Infatti si consideri il seguente esempio: Tre processi P1,P2, P3, due risorse R1 e R2 e la risorsa R1 possiede due istanze. P1 possiede R2 e chiede R1, P2 possiede una istanza di R1 e chiede R2, P3 possiede una istanza di R1. In tal caso pur essendoci un ciclo composto da P1-R1-P2-R2 non c è deadlock in quanto P1 può accedere alla risorsa R1 quando P3 rilascia l istanza di R1. P3 R1 P2 P1 R2

Riepilogando: Se un grafo non contiene cicli certamente non si può verificare un deadlock se esiste una sola istanza per ogni risorsa e c è un ciclo nel grafo allora c è certamente deadlock. Se esistono più istanze della stessa risorsa e c è un ciclo nel grafo si può verificare un deadlock (il deadlock è possibile ma non è certo) Ora qualcuno si chiederà se esistono dei metodi per gestire il deadlock. La risposta è affermativa. Esistono quattro possibilità: 1. Usare delle tecniche di prevenzione che consentono di negare una delle quattro condizioni necessarie affinché si verifichi un deadlock 2. Usare degli algoritmi che consentono, sulla base di alcune informazioni fornite a priori dai processi, di evitare il deadlock allocando le risorse richieste in maniera opportuna. 3. Dare la possibilità che il deadlock si possa verificare, e quando si verifica occorre saperlo rilevare e ripristinare lo stato del sistema. 4. Ignorare la possibilità che si possa verificare un deadlock (Windows e Unix usano questa tecnica). Se si verifica un deadlock il sistema viene riavviato. 2. Si discutano i principali metodi di prevenzione del deadlock (esame del 26-09-2006) Esistono due tecniche di prevenzione del deadlock: prevenzione statica e prevenzione dinamica. Prevenzione statica: consiste nell assicurare, all atto della scrittura dei programmi, che almeno una delle 4 condizioni necessarie affinchè si verifichi un deadlock non possa mai verificarsi. Se si riesce a far in modo che almeno una di queste condizioni non si verifichi allora si è certi che non si potrà verificare un deadlock (si ricorda infatti che per verificarsi un deadlock è necessario che le 4 condizioni si verifichino contemporaneamente). In realtà sulla condizione di mutua esclusione non si può intervenire in quanto la

mutua esclusione è una proprietà fondamentale delle risorse riusabili. Una risorsa è per definizione riusabile se un solo processo alla volta la può utilizzare e non viene distrutta dopo l uso. In seguito il processo rilascia la risorsa per poter essere usata dagli altri processi. Questo significa che si può agire solo sulle altre tre condizioni ovvero: a. Possesso e attesa (hold and wait): deve garantire che un processo non possa trattenere delle risorse e contemporaneamente chiedere nuove risorse. Esistono due possibilità affinchè questa condizione non si verifichi. Prima di iniziare la sua esecuzione il processo deve richiedere tutte le risorse di cui ha necessità. Se tutte le risorse richieste sono disponibili allora il processo può proseguire altrimenti viene bloccato. Si parla in tal caso di metodo RAF (Request All First). Prima che un processo possa richiedere nuove risorse deve aver rilasciato le risorse acquisite in precedenza. Un processo che non ha acquisito risorse in precedenza può quindi richiedere nuove risorse. Questo metodo è detto Release Before Request (RBR). Lo svantaggio di questo metodo di prevenzione è lo scarso utilizzo delle risorse e la possibilità di starvation. Le risorse rimangono assegnate ad un processo per tutto il tempo della sua esecuzione anche se non utilizzate (scarso uso delle risorse). Un processo potrebbe attendere molto tempo prima di iniziare la sua esecuzione. Infatti è costretto ad attendere che tutte le risorse siano libere anche se potrebbe iniziare l esecuzione con quelle libere (starvation). b. Mancanza di prerilascio (non preemption): consiste nel imporre ad un processo, che possiede delle risorse e richiede altre risorse che non gli possono essere assegnate, di rilasciare le proprie risorse. Il processo potrà essere svegliato solo quando tutte le

risorse di cui ha necessità saranno disponibili (le risorse che aveva richiesto e quelle che aveva rilasciato). c. Attesa circolare: consiste nel imporre che le risorse vengano acquisite secondo un determinato ordine. In pratica le risorse sono organizzate secondo diversi livelli gerarchici individuati da una numerazione progressiva (ad ogni risorsa è associato un numero). Ogni processo viene forzato a richiedere le risorse con un ordine crescente di numerazione. Un processo che possiede una risorsa di livello i può richiedere solo risorse di livello K>i. Se richiede una risorsa di livello h<i allora è costretto a rilasciare la risorsa di livello i. Esempio: Consideriamo le seguenti tre risorse organizzate secondo tre livelli gerarchici (numero più basso identifica livello superiore). DISCO = 1 NASTRO = 4 STAMPANTE=7 Un processo che possiede un nastro può richiedere solo la stampante. Se il processo richiede il disco, essendo il disco di livello superiore al nastro, non gli viene assegnato e viene forzato a rilasciare l unità nastro. Si dimostra che in questo modo non è possibile avere deadlock. Si consideri il seguente esempio: Un processo P1 possiede una risorsa Rk e un processo P2 possiede una risorsa Rj. Ipotesi: risorse ordinate secondo due livelli gerarchici che sono k e j. Si verifica deadlock se: P1 possiede Rk e richiede Rj che è in possesso di P2. P2 che possiede Rj chiede Rk che è in possesso di P1. Questo significa che dovrebbero essere verificate le seguenti condizioni: j>k per il processo P1 e K>j per il processo P2. Questo è assurdo. Prevenzione dinamica: non impone vincoli preventivi sull uso delle risorse come fa invece la prevenzione statica. Si basa su opportuni algoritmi in grado di determinare se, a partire da una situazione iniziale di assegnamento delle risorse, assegnando nuove risorse ad un processo, si possa arrivare ad una

situazione di blocco critico. Se l algoritmo determina che l assegnamento della nuova risorsa può portare ad un blocco critico la nuova richiesta non viene soddisfatta dal sistema operativo. Uno di questi algoritmi è l algoritmo del banchiere (per la descrizione si veda la domanda 4). Come esempio della tecnica di prevenzione dinamica consideriamo la situazione rappresentata nella figura che segue: Processo P2 R1 T8 T7 T6 zona 7 zona 6 Zone non possibili A Regione non raggiungibil R2 T5 zona 5 Regione non salva zona 1 zona 2 zona 3 zona 4 T1 T2 T3 T4 R1 Processo P1 R2 Abbiamo due processi P1 e P2 e due risorse riusabili R1 e R2 (risorse mutuamente esclusive). T1 è l istante in cui P1 richiede la risorsa R1; T3 è l istante in cui P1 rilascia la risorsa R1; T2 è l istante in cui P1 richiede la risorsa R2; T4 è l istante in cui P1 rilascia la risorsa R2; T5 è l istante in cui P2 richiede la risorsa R2; T7 è l istante in cui P2 rilascia la risorsa R2; T6 è l istante in cui P2 richiede la risorsa R1; T8 è l istante in cui P2 rilascia la risorsa R1;

Una qualunque sequenza di esecuzione dei processi P1 e P2 che passa per le zone 1-2-3-4 oppure 1-5-6-7 costituisce una sequenza salva ovvero non porta ad un deadlock. Se invece la sequenza di esecuzione dei processi è quella rappresentata in figura con la spezzata, allora certamente si verifica un deadlock. Il sistema operativo deve in questo caso, quando il processo P2 all istante T5 chiede la risorsa R2, rifiutare di assegnare la risorsa. Se infatti il sistema operativo assegnasse la risorsa R2 al processo P2 si entrerebbe in una regione non salva che porterebbe certamente al deadlock (punto A). Il punto A è infatti il punto in cui i due processi che possiedono una risorsa chiedono la risorsa posseduta dall altro processo. Le zone in color amaranto sono regioni impossibili, ovvero in queste zone la traiettoria rappresentativa della sequenza di esecuzione dei processi non può passare in quanto significherebbe aver assegnato una risorsa o entrambe le risorse a tutti e due i processi (violazione della mutua esclusione). Obiettivo quindi della prevenzione dinamica è impedire che un processo entri in una regione non salva. 3. Come funziona il metodo RAF (Request All First) per evitare il deadlock? (esame del 09-05-2007) Prima di descrivere il metodo RAF occorre definire che cosa è un deadlock. Si veda domanda 1. Successivamente è consigliabile descrivere quali sono le condizioni che portano al deadlock. Il deadlock si può verificare se sono vere contemporaneamente le seguenti 4 condizioni: a. Mutua esclusione b. Possesso e attesa c. Mancanza di prerilascio d. Attesa circolare Per i dettagli sulle 4 condizioni si veda la risposta alla domanda 1. Per evitare il deadlock è possibile usare delle tecniche di prevenzione (prevenzione statica e dinamica). Nel caso di prevenzione statica si cerca di evitare che una delle 4 condizioni enunciate sopra possa accadere.

Il metodo RAF (Request All First) è uno dei metodi di prevenzione statica. Fa parte della condizione di possesso e attesa unitamente al metodo Release Before Request (RBR). Il metodo RAF consiste in questo: Prima di iniziare la sua esecuzione il processo deve richiedere tutte le risorse di cui ha necessità. Se tutte le risorse richieste sono disponibili allora il processo può proseguire altrimenti viene bloccato. Gli svantaggi del metodo RAF sono: scarso utilizzo delle risorse e possibilità di starvation. Le risorse rimangono assegnate ad un processo per tutto il tempo della sua esecuzione anche se non utilizzate (scarso uso delle risorse). Un processo potrebbe attendere molto tempo prima di iniziare la sua esecuzione. Infatti è costretto ad attendere che tutte le risorse siano libere anche se potrebbe iniziare l esecuzione con quelle libere (starvation). 4. Si descriva l algoritmo del banchiere per evitare il deadlock (esame del 15-09-2005) L algoritmo del banchiere è un algoritmo usato per evitare il deadlock. Il nome deriva dal fatto che può essere benissimo usato in un sistema bancario per evitare che la banca assegni ai clienti tutto il denaro disponibile. Se ciò avvenisse la banca non potrebbe più soddisfare le richieste di tutti i suoi clienti. Cosi come tutti gli algoritmi usati per evitare il deadlock, l algoritmo richiede alcune informazioni a priori. Il metodo più semplice richiede che ciascun processo dichiari inizialmente il numero massimo di risorse di cui ha bisogno. L algoritmo del banchiere controlla, che a partire da uno stato di allocazione delle risorse, l assegnamento di una nuova risorsa ad un processo lasci il sistema in uno stato sicuro. Uno stato è sicuro se esiste una sequenza di allocazione delle risorse per cui tutti i processi possono essere terminati. Se non esiste questa sequenza il sistema si trova in uno stato non sicuro. Se un sistema è in stato sicuro certamente non ci può essere deadlock. Se il sistema è in stato non sicuro allora si può verificare un deadlock anche se non è certo. La differenza tra stato sicuro e stato non sicuro è che in uno stato sicuro il sistema garantisce che tutti i processi verranno terminati, mentre in uno stato non sicuro non c è garanzia che i processi vengano terminati. La possibilità che a partire da uno stato non sicuro si verifichi un deadlock dipende da come i processi richiederanno le risorse e rilasceranno le risorse.

L algoritmo del banchiere controlla quindi che l assegnamento di una risorsa lasci il sistema in uno stato sicuro. In tal caso la risorsa viene assegnata al processo richiedente altrimenti la richiesta viene rifiutata. L algoritmo si serve delle seguenti informazioni: risorse allocate ai processi, numero massimo di risorse che possono essere richieste da ciascun processo e risorse disponibili nel sistema. Per descrivere l algoritmo si consideri il seguente esempio. Esempio di stato sicuro. Abbiamo tre clienti di una banca che possono richiedere dei prestiti (risorse) garantendo la restituzione del denaro alla fine della attività. La banca è il sistema operativo. I clienti sono i processi. Una unità rappresenta per esempio 10000 euro. La prima colonna identifica la situazione iniziale. Vi sono due risorse disponibili in cassa (20000 euro). Il cliente P ha già ricevuto (risorse assegnate) 4 unità e può richiederne altre 4 (massimo numero di risorse di cui necessita =8). Il cliente Q ha ricevuto 2 unità e può richiederne un altra. Il cliente R ha ricevuto 2 unità e può richiederne altre 7.

Lo stato del sistema in questo caso è sicuro perché esiste una sequenza di allocazione delle risorse per cui il banchiere può garantire le risorse richieste a tutti i clienti. Infatti il banchiere potrà assegnare un unità al cliente Q in modo tale che quando esso termina restituendo le due unità, in cassa saranno disponibili 4 unità. Le 4 unità disponibili potranno essere fornite al cliente P che completerà la sua attività e restituirà le sue 8 unità. Ora in cassa ci saranno 8 unità e quindi potrà essere soddisfatta la richiesta del cliente R (7 unità). Alla fine le 9 unità di R saranno restituite e in cassa ci saranno 10 unità. Tutti i clienti hanno potuto terminare le loro attività. Non c è deadlock. Esempio di stato non sicuro. In questo caso se il cliente R richiede un unità delle 7 che gli servono e questa gli viene assegnata il sistema va in uno stato non sicuro. Infatti assegnando una unità ad R in cassa resta solo 1 unità. Il cliente Q potrebbe essere soddisfatto e quindi termina la sua attività. Restituisce le sue 3 unità e in cassa vi sono ora 3 unità. Queste 3 unità ora non bastano per soddisfare le eventuali 4 richieste di P oppure le eventuali 4 o più richieste di R. Il sistema è in uno stato non sicuro.