Esercizio - Algoritmo del banchiere su quattro risorse (eserciziario, esercizio 5)
In questa pagina 4
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 5). Un sistema ha quattro risorse con 8, 2, 7, 2 istanze, allocate all'istante a :
| Assegnate | Massimo | |
|---|---|---|
| 1 0 1 1 | 1 1 1 2 | |
| 2 0 0 0 | 3 1 0 1 | |
| 1 1 1 0 | 1 1 3 1 | |
| 0 1 2 0 | 1 2 2 0 | |
| 3 0 1 1 | 4 0 3 1 |
Con richiesta di (ognuna considerata indipendentemente): (1) ; (2) ; (3) ; (4) ; (5) . Quali sono soddisfacibili? Alla luce delle risposte, lo stato all'istante è sicuro? 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 in totale: ; Available .
Need Massimo Assegnate:
| 0 1 0 1 | |
| 1 1 0 1 | |
| 0 0 2 1 | |
| 1 1 0 0 | |
| 1 0 2 0 |
Lo stato a è sicuro?
Prima di valutare le richieste si verifica la sicurezza dello stato di partenza. Si prova :
| passo | processo | dopo | |
|---|---|---|---|
| inizio | |||
| 1 | sì | ||
| 2 | sì | ||
| 3 | sì | ||
| 4 | sì | ||
| 5 | sì |
Lo stato è sicuro. (Ogni passo restituisce le risorse; alla fine Work è uguale al totale.)
Le cinque richieste
- . Controllo : per e per . Richiesta non valida ( eccede il massimo dichiarato).
- . sì; sì. Simulazione:
Available, . Nessun processo ha : e vogliono e , vuole , vuole e , vuole . Stato non sicuro: non soddisfacibile. - . sì; sì. Simulazione:
Available, . Con il massimo scritto nel testo ( può chiedere 3 di ) e per : nessun processo può finire (a , servono ; a serve ; a serve ): stato non sicuro, non soddisfacibile.- Discrepanza nel materiale del corso. La soluzione del corso dice che questa richiesta è soddisfacibile, con la sequenza sicura : perché usa , cioè un massimo di per pari a 2 invece di 3. Il corso lo ammette in una nota ("nelle soluzioni si considera come valore Massimo di in non 3 ma 2"). Con il testo scritto (3) la risposta è no; con 2 è sì.
- . sì, ma no (: 1 > 0). deve attendere (risorse non disponibili).
- . sì; sì. Simulazione:
Available, . Solo i processi che non chiedono , , potrebbero finire: nessuno ha ( vuole 2 di , vuole 1 di ). Non sicuro: non soddisfacibile.
Ultima domanda. Non ha senso valutare la sicurezza dello stato a in base al fatto che le richieste risultino o meno soddisfacibili: lo stato a è sicuro, come verificato all'inizio, e una richiesta rifiutata non lo rende insicuro (viene solo fatta attendere).
Tutti i calcoli sono stati ricontrollati con un programma Python.
Domande d'esame
Prima di valutare una richiesta, perché si controlla che lo stato corrente sia sicuro? Traccia. L'algoritmo di richiesta assume che lo stato di partenza sia sicuro: se non lo fosse, nessuna assegnazione potrebbe garantire di non cadere in deadlock.
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 ; Available ; Need , , , , .
- Stato a sicuro: (Work , , , , ).
- Richieste: (1) non valida (oltre ); (2) unsafe, no; (3) unsafe con Max (il corso, con 2, dice sì: errore del corso); (4) attende ( non disponibile); (5) unsafe, no.
- Errori tipici: saltare il controllo
Request <= Need; usare il massimo diverso da quello del testo; confondere "attende" (non disponibile) e "rifiutata" (non sicura).