DEADLOCK
In elenco le 4 condizioni necessarie affinché possa verificarsi una condizione di deadlock. Negando almeno una delle quattro, un programma non è a rischio deadlock
1 condizione : MUTUA ESCLUSIONE
Ogni risorsa è assegnata ad un solo processo oppure è disponibile
2 condizione : HOLD AND WAIT
Un processo che ha ottenuto delle risorse ne può richiedere altre
PER NEGARE : Un processo prima di iniziare l'esecuzione deve richiedere tutte le risorse di cui ha bisogno...
3 condizione : MANCANZA DI PRERILASCIO
Le risorse già assegnate ad un processo non gli possono essere tolte forzatamente prima che abbia concluso la sua esecuzione
PER NEGARE : Bisognerebbe permettere che un processo possa scavalcare un altro nell'utilizzo di una risorsa contesa (fatto assolutamente inaccettabile nel caso di una stampante o un masterizzatore...)
4 condizione : ATTESA CIRCOLARE
Deve esistere una catena circolare di processi ognuno dei quali aspetta il rilascio di una risorsa da parte del processo che lo segue.
PER NEGARE (tre strategie):
- Posso imporre come regola che ogni processo abbia assegnata ad ogni istante una sola risorsa.
- Fornire una numerazione globale a tutte le risorse. I processi possono richiedere le risorse quando vogliono ma nel richiederle devono seguire l'ordinamento numerico.
- Quando ho già ottenuto una prima risorsa e ne sto chiedendo un'altra, posso limitare il tempo d'attesa della seconda risorsa e se non riesco ad ottenerla entro il tempo previsto rilascio anche la prima in modo da non tenerla occupata per un tempo indefinito.
Torna a Lab Sistemi Operativi
Non ci sono commenti in questa pagina. [Scrivi commento]