Esercizio - Assegnare risorse a un processo e mantenere lo stato sicuro (eserciziario, esercizio 117)
In questa pagina 3
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD, esercizio 117). Dato il sistema seguente (in stato sicuro), si determini se l'assegnazione di 6 istanze aggiuntive di a garantisce il mantenimento dello stato sicuro. 4 processi ; 3 tipi di risorse: (5 istanze), (8), (16).
| Assegnate | Massimo | |
|---|---|---|
| 0 1 4 | 4 1 4 | |
| 2 0 1 | 3 1 4 | |
| 1 2 1 | 5 7 13 | |
| 1 0 3 | 1 1 6 |
Stato di partenza
Assegnate in totale: : ; : ; : . Available .
Need Massimo Assegnate: , , , .
Lo stato è sicuro (come dice il testo): sequenza : () Work ; () ; () ; () .
Assegnazione di 6 istanze di a
Controllo la richiesta : sì; sì. Si simula:
- (la riga di diventa 1 2 7);
Available;- .
Tutti i bisogni ora: , , , .
Si cerca un processo con :
- : : , no;
- : : , no;
- : : , no;
- : : , no.
Nessun processo può terminare: stato non sicuro. Quindi l'assegnazione non garantisce il mantenimento dello stato sicuro e non va fatta; attende. (Il corso spiega: chiede 4 di ma ne resta 1; tutti gli altri chiedono più di 1 istanza di e ne rimane una sola.)
Verificato con un programma Python.
Domande d'esame
Si può dare a solo 2 istanze di ?
Traccia. Con : Available , . () finisce: , : , : , (): sì, stato sicuro. La quantità conta: 6 sì rompe, 2 no.
Versione ripasso
- Dati: totali ; Assegnate , , , ; Massimo , , , . Richiesta: 6 istanze di a . 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 →.
- Prima: Available ; Need , , , ; sicuro ().
- Dopo la simulazione: Available ; Need ; nessun processo ha ( vuole 4 di ; gli altri più di 1 di ).
- Esito: stato non sicuro, l'assegnazione non si fa. (Con 2 istanze sarebbe sicuro.)
- Errori tipici: dimenticare di aggiornare anche
Need; fermarsi aRequest <= Availablesenza il controllo di sicurezza.