Esercizio - Grafo di allocazione delle risorse e individuazione dei cicli (eserciziario, esercizi 20, 21, 56, 106 e 109)
In questa pagina 6
Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD). Convenzione dei grafi: processi come cerchi, risorse come rettangoli (un punto per istanza); arco di richiesta , arco di assegnazione , arco di richiesta futura (rivendicazione) tratteggiato . Per cercare un ciclo in un grafo diretto si veda Grafi diretti e ordinamento topologicoGrafi diretti (archi orientati, grado entrante e uscente, cammini e cicli diretti), visite su grafi diretti e tipi di archi; DAG; ordinamento topologico con l'algoritmo basato sui gradi entranti e con la DFS (reverse postorder), correttezza e costo Theta(n+m); esempio svolto.Grafi diretti e ordinamento topologico → e Visite di grafi - BFS e DFSVisite in ampiezza (BFS) e in profondità (DFS) come design pattern; etichette discovery, cross e back edge; BFS tree e distanze; complessità Theta(n+m) con liste di adiacenza; applicazioni (connettività, componenti, spanning tree, cammini minimi non pesati, cicli, vertici a distanza al più d); esempio svolto su un grafo di 7 vertici.Visite di grafi - BFS e DFS →. 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 →.
- Esercizio 20. Sette processi e sei risorse , ognuna con una sola istanza. Stato: usa e ; è in attesa di ; attende ; usa e attende e ; usa e attende ; usa e attende ; usa e attende . Il sistema è in deadlock?
- Esercizio 21. Sette processi, sei risorse a istanza singola. Stato a : attende ; usa e ; usa e attende ; attende ; attende e ; usa ; usa e attende . Inoltre e dichiarano che in futuro accederanno a , e che accederà a . Domande: (1) disegnare il grafo (assegnazione, richiesta e richiesta futura) e mostrare che non c'è deadlock; (2) come si gestisce a una richiesta di per ; (3) una richiesta di per ; (4) una richiesta di per ; (5) una richiesta di per .
- Esercizio 56. Quattro processi e quattro risorse: a istanza singola, con 3 istanze. Allocazioni e massimi (colonne ): assegnate massimo ; , ; , ; , . Il sistema è in deadlock? Con il banchiere, si può soddisfare una richiesta di di ?
- Esercizio 106. Sette processi e sei risorse , ciascuna in singola istanza e ad accesso mutuamente esclusivo. Stato: occupa e richiede ; non occupa risorse e richiede ; occupa ; occupa e richiede e ; occupa e richiede ; occupa e richiede ; occupa e richiede . Si determini con il grafo di allocazione se c'è stallo e quali processi e risorse sono coinvolti.
- Esercizio 109. Sette processi e nove risorse; solo ha 2 istanze. occupa , richiede ; occupa , richiede ; occupa una istanza di ; richiede ; occupa e , richiede ; occupa , richiede ; occupa una istanza di e , richiede . Si determini con il grafo di allocazione se il sistema è in stallo, motivando per tutti i cicli; se c'è deadlock, quali processi e risorse sono coinvolti. (Nota: l'elenco è un'istantanea, non una sequenza cronologica: " richiede " significa che non è assegnata a .)
Esercizio 20
Archi di assegnazione : , , , , , . Archi di richiesta : , , , , , , .
Ricerca di un ciclo seguendo gli archi da un processo "in attesa": . È un ciclo: attende , posseduta da ; attende , posseduta da ; attende , posseduta da . Tutte le risorse hanno una sola istanza, quindi il ciclo è sufficiente: deadlock tra .
Gli altri processi: e aspettano (posseduta dal deadlock): sono bloccati indirettamente ma non nel ciclo; attende , posseduta da , che non attende nulla e prima o poi la rilascia: non è in stallo. Verificato con una ricerca dei cicli: il grafo contiene un solo ciclo.
Esercizio 21
Archi di assegnazione: , , , , . Richiesta: , , , , , . Richiesta futura: , , .
(1) Nessun deadlock. Il grafo (con i soli archi veri, senza quelli tratteggiati) non contiene cicli: i cammini sono , , e , e non attende nessuno. Ordine di completamento possibile: , poi e , poi , , . Con istanza singola, niente cicli = niente deadlock.
(2) Richiesta di per a . è libera, ma assegnarla trasformerebbe in e creerebbe il ciclo (contando l'arco di richiesta futura ). Lo stato diventerebbe non sicuro: la richiesta non può essere soddisfatta, anche se la risorsa è disponibile; attende.
(3) Richiesta di per . è già assegnata a : non soddisfacibile, deve attendere (la richiesta è consentita perché esiste l'arco di richiesta futura).
(4) Richiesta di per . Non esiste in un arco di richiesta futura verso : la richiesta eccede quanto aveva dichiarato ed è non valida.
(5) Richiesta di per . è libera e l'arco di richiesta futura esiste. Convertire in non crea cicli (da non partono archi di richiesta veri, e da l'unico arco va a ): la richiesta viene soddisfatta.
Esercizio 56
R4 ha tre istanze, quindi un ciclo non basta a concludere il deadlock. Si usa il banchiere (colonne ): totali .
- Assegnate in totale ;
Available. - Need Massimo Assegnate: , , , .
Sequenza di sicurezza:
| passo | processo | dopo | |
|---|---|---|---|
| inizio | |||
| 1 | sì | ||
| 2 | sì | ||
| 3 | sì | ||
| 4 | sì |
La sequenza è sicura: nessun deadlock.
Richiesta di per , cioè : sì; sì. Nuovo stato: Available , , . può finire subito e restituire , e da lì in poi la stessa sequenza funziona (, , ): lo stato resta sicuro e la richiesta può essere soddisfatta. Il materiale del corso aggiunge che il testo della slide parla di "deadlock" per un grafo con più cicli come : con a più istanze quel ciclo è solo necessario, non sufficiente.
Esercizio 106
Archi di assegnazione: , , , , , . Archi di richiesta: , , , , , , .
Ciclo: (è il ciclo in rosso del grafo del corso, e la soluzione scrive: " sono in deadlock"). attende (di ), attende (di ), attende (di ). Tutte le risorse del ciclo sono a istanza singola: deadlock tra con le risorse . Il grafo ha un solo ciclo (controllato con una ricerca di cicli): , aspettano , posseduta da che non attende nulla e prima o poi la rilascia, quindi non sono in stallo; attende (in mano a , che è nel deadlock) ed è bloccato indirettamente, senza far parte del ciclo.
Esercizio 109
Archi di assegnazione: , , , , , , , . Archi di richiesta: , , , , , .
Ciclo (diretto): . Lo si controlla seguendo gli archi: attende (di ), attende (di ), attende (di ), attende (di ), attende (di ). Le risorse del ciclo () hanno tutte una sola istanza: deadlock tra . (attende ) è bloccato dal deadlock ma non ne fa parte; non attende nulla e non è coinvolto.
La soluzione del corso parla di due cicli, "stallo nel ciclo giallo" e "nel ciclo rosso c'è con 2 risorse". Il secondo è il giro : in senso diretto non è un ciclo, perché non richiede (la possiede); cercando i cicli diretti, l'unico è quello giallo. In ogni caso, se lo si volesse considerare, passa per che ha due istanze (una è di , che non è bloccato): non produrrebbe stallo.
Domande d'esame
Con più istanze per risorsa, un ciclo implica deadlock? Traccia. No, solo se le istanze di tutte le risorse del ciclo sono tutte assegnate a processi del ciclo; se un'istanza è posseduta da un processo fuori dal ciclo, può liberarsi e sciogliere l'attesa. Si usa il banchiere (o l'algoritmo di rilevamento) come in Esercizio - Algoritmo del banchiere su tre risorse con richieste (eserciziario, esercizio 4).
Versione ripasso
- Convenzione: processi = cerchi, risorse = rettangoli; richiesta , assegnazione , richiesta futura tratteggiata. Istanza singola: ciclo deadlock; più istanze: ciclo solo necessario. 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 →, Grafi diretti e ordinamento topologicoGrafi diretti (archi orientati, grado entrante e uscente, cammini e cicli diretti), visite su grafi diretti e tipi di archi; DAG; ordinamento topologico con l'algoritmo basato sui gradi entranti e con la DFS (reverse postorder), correttezza e costo Theta(n+m); esempio svolto.Grafi diretti e ordinamento topologico →.
- 20 / 106: ciclo , tutte istanze singole: deadlock ; in 20 , bloccati indirettamente e attende ma la rilascia; in 106 , aspettano di (che finisce) e è bloccato indirettamente.
- 21: nessun ciclo nessun deadlock. per : no (ciclo ); per : no ( di ); per : non valida; per : sì (nessun ciclo).
- 56: a 3 istanze; Available , Need , , , ; sequenza sicura; richiesta di per : sì.
- 109: ciclo (istanze singole): deadlock ; il "ciclo rosso" con non è un ciclo diretto e ha 2 istanze.
- Metodo: (1) elencare gli archi di assegnazione da "occupa" e di richiesta da "richiede"; (2) cercare un ciclo seguendo gli archi partendo da un processo in attesa; (3) controllare le istanze delle risorse nel ciclo; (4) distinguere i processi nel ciclo da quelli solo bloccati indirettamente.
- 20 (archi): assegnazione , , , , ; richiesta , , , , , .
- 21, regola: una richiesta si accetta solo se convertire l'arco di richiesta futura in assegnazione non crea un ciclo (contando anche gli archi tratteggiati); senza arco tratteggiato la richiesta è non valida; se la risorsa è già assegnata il processo attende.
- 56, banchiere: totali ; assegnate ; Available ; Work: dopo , dopo , dopo , dopo . Un ciclo con a più istanze non è deadlock.
- 109, contare le istanze: il ciclo coinvolge solo risorse a istanza singola deadlock; (2 istanze) è fuori dal ciclo diretto; e non fanno parte dello stallo.
- Errori tipici: invertire le direzioni degli archi; dire "deadlock" per un ciclo con risorse a più istanze; includere nel deadlock i processi solo bloccati indirettamente.