Esercizio - Algoritmo del banchiere su tre risorse con richieste (eserciziario, esercizio 4)
In questa pagina 5
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 4). Un sistema ha tre risorse con 10, 3 e 8 istanze. All'istante sono in esecuzione con le allocazioni e le richieste massime seguenti.
| Assegnate | Massimo | |
|---|---|---|
| 3 1 2 | 7 2 4 | |
| 2 0 1 | 2 1 3 | |
| 0 2 1 | 5 2 5 | |
| 1 0 1 | 3 0 2 |
Con l'algoritmo del banchiere: (1) la sequenza è sicura? (2) ? (3) ? (4) ? (5) All'istante lo stato è sicuro? Se sì, quali richieste (da considerare indipendentemente, partendo dallo stato a ) possono essere soddisfatte: (6) , (7) , (8) ? Teoria: Deadlock - condizioni, prevenzione, evitamento e rilevamentoUn deadlock (stallo) è una situazione in cui un insieme di processi attende all'infinito risorse possedute da altri processi dello stesso insieme; può verificarsi solo se valgono insieme quattro condizioni (mutua esclusione, hold and wait, assenza di prelazione, attesa circolare); il grafo di allocazione delle risorse (archi di richiesta P->R e di assegnazione R->P) senza cicli esclude lo stallo, con un ciclo lo implica se ogni risorsa ha una sola istanza, e lo rende solo possibile se ha più istanze; si può prevenire (negare una delle quattro condizioni, per esempio ordinare le risorse per negare l'attesa circolare), evitare (stato sicuro: esiste una sequenza sicura; algoritmo del grafo con archi di rivendicazione per istanza singola, algoritmo del banchiere con Available, Max, Allocation, Need = Max - Allocation e complessità O(m n^2) per istanze multiple), rilevare e ripristinare (grafo wait-for per istanza singola, algoritmo di rilevamento per istanze multiple; terminazione dei processi o prelazione delle risorse con scelta della vittima e rollback), oppure ignorare.Deadlock - condizioni, prevenzione, evitamento e rilevamento →.
Strutture dati
- Assegnate (Allocation): somma per colonna .
- Disponibili totale assegnate .
- Necessità (Need Massimo Assegnate):
| 4 1 2 | |
| 0 1 2 | |
| 5 0 4 | |
| 2 0 1 |
Domande 1-4: verificare una sequenza
Una sequenza è sicura se, partendo da Work = Disponibili, ogni processo ha Need <= Work al suo turno, e poi restituisce le risorse (Work += Allocation).
- : ha bisogno di ma
Worke per : non sicura. (Manca un'istanza di .) - : lo stesso primo passo: non sicura.
- :
| passo | processo | dopo | |
|---|---|---|---|
| inizio | |||
| 1 | sì | ||
| 2 | sì | ||
| 3 | sì | ||
| 4 | sì |
Sicura (alla fine Work totale delle risorse).
4. : dopo Work ma ha bisogno di e per : non sicura.
Domanda 5
Esiste almeno una sequenza sicura (quella del punto 3): lo stato a è sicuro.
Domande 6-8: richieste
Per ogni richiesta di si applica l'algoritmo di richiesta: (i) ? (ii) ? (iii) simulare l'assegnazione e controllare la sicurezza.
- 6. . (i) sì; (ii) sì. Nuovo stato:
Available, , . Si cerca un processo con : solo , . Dopo di luiWork: vuole (1 > 0), vuole , vuole 4 di (4 > 3). Nessuno può proseguire: stato non sicuro, la richiesta non va soddisfatta. - 7. . (i) per : supera la necessità del processo: richiesta non valida (errore, il processo eccede il massimo dichiarato). Le risorse ci sarebbero (), ma la richiesta non si prende in considerazione.
- 8. . (i) sì; (ii) sì. Nuovo stato:
Available, . Solo , , può finire:Work. Nessun altro ( manca a e , vuole 4 di ): non sicuro, non soddisfacibile.
Quindi nessuna delle tre richieste aggiuntive può essere soddisfatta. (Verificato con un programma Python che applica gli algoritmi di sicurezza e di richiesta; i risultati coincidono con quelli del corso.)
Domande d'esame
Una richiesta può essere negata anche se le risorse sono disponibili?
Traccia. Sì: il banchiere nega ( e ) le richieste che porterebbero in stato non sicuro, anche se Request <= Available. Una richiesta oltre il massimo dichiarato () è invece un errore.
Versione ripasso
- Dati: totali ; Assegnate , , , ; Massimo , , , . Teoria: Deadlock - condizioni, prevenzione, evitamento e rilevamentoUn deadlock (stallo) è una situazione in cui un insieme di processi attende all'infinito risorse possedute da altri processi dello stesso insieme; può verificarsi solo se valgono insieme quattro condizioni (mutua esclusione, hold and wait, assenza di prelazione, attesa circolare); il grafo di allocazione delle risorse (archi di richiesta P->R e di assegnazione R->P) senza cicli esclude lo stallo, con un ciclo lo implica se ogni risorsa ha una sola istanza, e lo rende solo possibile se ha più istanze; si può prevenire (negare una delle quattro condizioni, per esempio ordinare le risorse per negare l'attesa circolare), evitare (stato sicuro: esiste una sequenza sicura; algoritmo del grafo con archi di rivendicazione per istanza singola, algoritmo del banchiere con Available, Max, Allocation, Need = Max - Allocation e complessità O(m n^2) per istanze multiple), rilevare e ripristinare (grafo wait-for per istanza singola, algoritmo di rilevamento per istanze multiple; terminazione dei processi o prelazione delle risorse con scelta della vittima e rollback), oppure ignorare.Deadlock - condizioni, prevenzione, evitamento e rilevamento →.
- Calcoli: assegnate ; Disponibili ; Need , , , .
- Sequenze: no (manca ); sicura (Work , , , ); no. Lo stato a è sicuro.
- Richieste di : -> unsafe (dopo Work ), no; -> supera , non valida; -> unsafe, no.
- Errori tipici: confrontare con
Availableprima che conNeed; dimenticare il controllo di sicurezza dopo l'assegnazione simulata; accettare una richiesta oltre il massimo.