Stallo in OperaSistema di automazione: cos'รจ l'attesa circolare (esempi)
โก Riepilogo intelligente
In un sistema operativo, si verifica un deadlock quando un insieme di processi si blocca perchรฉ ciascuno di essi detiene una risorsa e attende di poterne utilizzare un'altra, detenuta da un altro processo, creando un circolo vizioso in cui nessun processo puรฒ proseguire.

Che cosa รจ Deadlock?
Deadlock รจ una situazione che si verifica in un sistema operativo Il deadlock si verifica quando un processo entra in uno stato di attesa perchรฉ un altro processo in attesa sta occupando la risorsa richiesta. Il deadlock รจ un problema comune nel multiprocessing, dove diversi processi condividono un tipo specifico di risorsa mutuamente esclusiva, nota come soft lock o software lock.
Quando si verifica un deadlock, nessuno dei processi coinvolti puรฒ proseguire, quindi il lavoro interessato si interrompe fino all'intervento del sistema operativo.
Esempio di stallo
- Un esempio concreto potrebbe essere il traffico che si muove in un'unica direzione.
- Qui un ponte รจ considerato una risorsa.
- Quindi, quando si verifica una situazione di stallo, รจ possibile risolverla se una delle auto fa retromarcia (prelazione delle risorse e rollback).
- In caso di stallo, potrebbe essere necessario far retromarcia su piรน auto.
- Quindi, la fame รจ possibile.
Esempio di stallo
Cos'รจ l'attesa circolare?
Un processo รจ in attesa di una risorsa detenuta da un secondo processo, il quale a sua volta รจ in attesa di una risorsa detenuta da un terzo processo, e cosรฌ via. Questo continua finchรฉ l'ultimo processo non รจ in attesa di una risorsa detenuta dal primo processo. Si crea cosรฌ una catena circolare.
Ad esempio, al processo A viene assegnata la risorsa B mentre sta richiedendo la risorsa A. Allo stesso modo, al processo B viene assegnata la risorsa A mentre sta richiedendo la risorsa B. Questo crea un ciclo di attesa circolare.
Esempio di attesa circolare
Ad esempio, un computer ha tre unitร USB e tre processi. Ciascuno dei tre processi occupa una delle unitร USB. Pertanto, quando un processo richiede un'altra unitร , i tre processi raggiungono una situazione di deadlock, poichรฉ ognuno attende che un'unitร USB venga rilasciata mentre รจ ancora in uso. Ciรฒ si traduce in una catena circolare.
Esempio di attesa circolare
Rilevamento deadlock nel sistema operativo
Un evento di deadlock puรฒ essere rilevato dallo scheduler delle risorse. Uno scheduler delle risorse aiuta il sistema operativo a mantenere track di tutte le risorse allocate ai diversi processi. Una volta rilevato un deadlock, questo puรฒ essere risolto mediante la prelazione delle risorse, il rollback di un processo o la terminazione di uno o piรน processi in deadlock.
Prevenzione del deadlock nel sistema operativo
ร fondamentale prevenire un deadlock prima che si verifichi. Il sistema controlla ogni transazione prima dell'esecuzione per assicurarsi che non porti a un deadlock. Anche una piccola operazione che potrebbe causare un deadlock in futuro non viene mai autorizzata all'esecuzione.
La prevenzione del deadlock รจ un insieme di metodi per garantire che almeno una delle quattro condizioni necessarie non possa verificarsi.
Nessuna prelazione
Una risorsa puรฒ essere rilasciata solo volontariamente dal processo che la detiene, dopo che tale processo ha terminato la sua attivitร .
- Se un processo che detiene delle risorse richiede un'altra risorsa che non puรฒ essergli assegnata immediatamente, tutte le sue risorse vengono rilasciate.
- Le risorse interrotte vengono aggiunte all'elenco delle risorse per le quali il processo รจ in attesa.
- Il processo viene riavviato solo quando รจ in grado di recuperare sia le risorse precedenti che quelle nuove richieste.
Esclusione reciproca
Mutua Esclusione รจ la forma estesa di Mutex. ร un tipo speciale di esclusione binaria semaforo che viene utilizzato per controllare l'accesso a una risorsa condivisa. Include un meccanismo di ereditarietร della prioritร per evitare problemi di inversione di prioritร prolungata e mantiene bloccate le attivitร a prioritร piรน elevata per il minor tempo possibile.
Le risorse condivise, come i file di sola lettura, non causano mai deadlock, ma risorse come stampanti e unitร a nastro necessitano dell'accesso esclusivo da parte di un singolo processo.
Aspetta e aspetta
In questa condizione, i processi devono essere interrotti mentre occupano una o piรน risorse e sono contemporaneamente in attesa di una o piรน altre.
Attesa circolare
Questo metodo impone un ordinamento totale di tutti i tipi di risorse. La prevenzione delle attese circolari richiede inoltre che ogni processo richieda le risorse in un ordine di enumerazione crescente.
Evitare lo stallo Algorithms
ร preferibile evitare una situazione di stallo piuttosto che intervenire dopo che si รจ verificata. La prevenzione richiede informazioni aggiuntive, come ad esempio le modalitร di utilizzo delle risorse. Un modello utile per la prevenzione degli stalli รจ quello in cui ogni processo dichiara il numero massimo di risorse di ciascun tipo di cui potrebbe aver bisogno.
Evitare Algorithms
L'algoritmo di prevenzione del deadlock valuta dinamicamente lo stato di allocazione delle risorse in modo che non si verifichi mai una situazione di attesa circolare.
Per una singola istanza di un tipo di risorsa:
- Utilizzare un grafico di allocazione delle risorse.
- Per raggiungere un deadlock รจ necessario e sufficiente un ciclo nel grafico.
Per piรน istanze di un tipo di risorsa:
- Un ciclo รจ necessario ma non sufficiente per una situazione di stallo.
- Usa il Algoritmo del banchiere.
Differenza tra fame e stallo
Ecco alcune importanti differenze tra stallo e fame:
| Deadlock | Fame |
|---|---|
| La situazione di deadlock si verifica quando uno dei processi si blocca. | La starvation รจ una situazione in cui tutti i processi a bassa prioritร vengono bloccati mentre i processi ad alta prioritร vengono eseguiti. |
| La situazione di stallo รจ un processo infinito. | La fame รจ una lunga attesa, ma non un processo infinito. |
| Ogni situazione di stallo porta sempre alla fame. | Non ogni carestia porta necessariamente a una situazione di stallo. |
| La situazione di stallo si verifica a causa della coesistenza di esclusione reciproca, attesa e mantenimento, nessuna prelazione e attesa circolare. | Ciรฒ accade a causa di prioritร non controllate e di una gestione inadeguata delle risorse. |
Vantaggi del deadlock
Ecco i vantaggi dell'utilizzo del metodo di gestione del deadlock:
- Questa situazione funziona bene per i processi che eseguono un singolo picco di attivitร .
- Non รจ necessaria alcuna prelazione in caso di stallo.
- Si tratta di un metodo conveniente se applicato a risorse il cui stato puรฒ essere salvato e ripristinato facilmente.
- ร possibile imporre tale limitazione tramite controlli in fase di compilazione.
- Non richiede calcoli in fase di esecuzione, poichรฉ il problema รจ risolto giร nella fase di progettazione del sistema.
Svantaggi del deadlock
Ecco gli svantaggi dell'utilizzo del metodo di gestione del deadlock:
- Ciรฒ ritarda l'avvio del processo.
- I processi devono conoscere in anticipo il loro fabbisogno futuro di risorse.
- Interviene piรน spesso del necessario.
- Non consente richieste incrementali di risorse.
- Presenta perdite intrinseche dovute alla prelazione.


