Stallo in OperaSistema di automazione: cos'è l'attesa circolare (esempi)
Che cosa è Deadlock?
Deadlock è una situazione che si verifica nel sistema operativo quando un processo entra in stato di attesa perché un altro processo in attesa detiene la risorsa richiesta. Il deadlock è un problema comune nell'elaborazione multipla in cui diversi processi condividono uno specifico tipo di risorsa mutuamente esclusiva nota come soft lock o software.
Esempio di stallo
- Un esempio reale potrebbe essere il traffico, che va solo in una direzione.
- Qui un ponte è considerato una risorsa.
- Quindi, quando si verifica un deadlock, è possibile risolverlo facilmente se un'auto fa retromarcia (prelievo delle risorse e rollback).
- In caso di stallo, potrebbe essere necessario far retromarcia su più auto.
- Quindi morire di fame è possibile.

Cos'è l'attesa circolare?
Un processo sta aspettando la risorsa trattenuta dal secondo processo, che sta anche aspettando la risorsa detenuta dal terzo processo ecc. Ciò continuerà finché l'ultimo processo non attenderà una risorsa detenuta dal primo processo. Questo crea una catena circolare.
Ad esempio, al processo A viene allocata la risorsa B mentre richiede la risorsa A. Allo stesso modo, al processo B viene allocata la risorsa A e richiede 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. Ognuno dei tre processi è in grado di contenere una delle unità USB. Quindi, quando ogni processo richiede un'altra unità, i tre processi avranno una situazione di stallo poiché ogni processo attenderà che l'unità USB venga rilasciata, che è attualmente in uso. Ciò si tradurrà in una catena circolare.
Rilevamento deadlock nel sistema operativo
Un'occorrenza di deadlock può essere rilevata dal resource scheduler. Un resource scheduler aiuta il sistema operativo a tenere traccia di tutte le risorse che sono assegnate a diversi processi. Quindi, quando viene rilevato un deadlock, può essere risolto utilizzando i metodi indicati di seguito:
Prevenzione del deadlock nel sistema operativo
È importante prevenire un deadlock prima che possa verificarsi. Il sistema controlla ogni transazione prima che venga eseguita per assicurarsi che non porti a situazioni di deadlock. In modo che anche una piccola modifica che si verifichi non comporti un'operazione che può portare a un deadlock in futuro, non consenta mai l'esecuzione del processo.
Si tratta di un insieme di metodi per garantire che almeno una delle condizioni non possa verificarsi.
Nessuna azione preventiva
Nessuna prelazione: una risorsa può essere rilasciata solo volontariamente dal processo che la detiene dopo che il processo ha terminato il suo compito
- Se un processo che detiene alcune risorse richiede un'altra risorsa che non può essere immediatamente allocata ad esso, in quella situazione, tutte le risorse verranno rilasciate.
- Le risorse con prenotazione richiedono l'elenco delle risorse per un processo in attesa.
- Il processo verrà riavviato solo se potrà recuperare la sua vecchia risorsa e una nuova richiesta.
- Se il processo richiede qualche altra risorsa, quando è disponibile, significa che è stata data al processo richiedente.
- Se è trattenuto da un altro processo che è in attesa di un'altra risorsa, lo rilasciamo e lo consegniamo al processo richiedente.
Esclusione reciproca
La mutua esclusione è una forma completa di Mutex. È un tipo speciale di semaforo binario utilizzato per controllare l'accesso alla risorsa condivisa. Include un meccanismo di ereditarietà delle priorità per evitare problemi estesi di inversione delle priorità. Consente di mantenere le attività attuali con priorità più elevata nello stato bloccato per il minor tempo possibile.
Le risorse condivise, come i file di sola lettura, non causano mai situazioni di stallo, ma risorse come stampanti e unità nastro necessitano dell'accesso esclusivo da parte di un singolo processo.
Aspetta e aspetta
In questa condizione, i processi devono essere fermati perché non trattengono una o più risorse e allo stesso tempo aspettano una o più altre risorse.
Attesa circolare
Impone un ordinamento totale di tutti i tipi di risorse. L'attesa circolare richiede inoltre che ogni processo richieda risorse in ordine crescente di enumerazione.
Evitare lo stallo Algorithms
È meglio evitare un deadlock anziché agire dopo che il deadlock si è verificato. Sono necessarie informazioni aggiuntive, come ad esempio come dovrebbero essere utilizzate le risorse. L'evitamento del deadlock è il modello più semplice e utile in cui ogni processo dichiara il numero massimo di risorse di ogni tipo di cui potrebbe aver bisogno.
Evitare Algorithms
L'algoritmo per evitare il deadlock consente di valutare dinamicamente lo stato di allocazione delle risorse in modo che non si verifichi mai una situazione di attesa circolare.
Una singola istanza di un tipo di risorsa.
- Utilizza un grafico di allocazione delle risorse
- Sono necessari cicli che sono sufficienti per Deadlock
Più istanze di un tipo di risorsa.
- I cicli sono necessari ma mai sufficienti per lo stallo.
- Usa il L'algoritmo del banchiere
Differenza tra fame e stallo
Ecco alcune importanti differenze tra Deadlock e starvation:
Deadlock | Fame |
---|---|
La situazione di stallo si verifica quando uno dei processi viene bloccato. | La fame è una situazione in cui tutti i processi a bassa priorità vengono bloccati e 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 comporta sempre la fame. | Non ogni carestia comporta necessariamente una situazione di stallo. |
Si verifica un deadlock, quindi esclusione reciproca, hold e wait. Qui, prelazione e attesa circolare non si verificano simultaneamente. | Succede a causa di priorità incontrollate e gestione delle risorse. |
Vantaggi del deadlock
Ecco i pro/benefici dell'utilizzo del metodo Deadlock
- Questa situazione funziona bene per i processi che eseguono una singola sequenza di attività
- Non è richiesta alcuna prelazione per Deadlock.
- Metodo conveniente se applicato a risorse il cui stato può essere salvato e ripristinato facilmente
- È possibile applicarlo tramite controlli in fase di compilazione
- Non richiede calcoli in fase di esecuzione poiché il problema viene risolto nella progettazione del sistema
Svantaggi del deadlock
Ecco gli svantaggi/contro dell'utilizzo del metodo deadlock
- Ritarda l'avvio del processo
- I processi devono conoscere le future necessità di risorse
- Previene più spesso del necessario
- Non consente richieste di risorse incrementali
- Perdite di prelazione intrinseche.
Sommario
- Definizione di stallo: è una situazione che si verifica in OS quando un processo entra in uno stato di attesa perché un altro processo in attesa detiene la risorsa richiesta
- L'attesa circolare si verifica quando un processo attende la risorsa detenuta dal secondo processo, che attende anche la risorsa detenuta dal terzo processo ecc.
- Il verificarsi di un deadlock può essere rilevato dal pianificatore delle risorse.
- È importante prevenire una situazione di stallo prima che si verifichi.
- Una risorsa può essere rilasciata solo volontariamente dal processo che la detiene dopo che quel processo ha terminato il suo compito.
- La mutua esclusione è una forma completa di Mutex. È un tipo speciale di binario semaforo utilizzato per controllare l'accesso alla risorsa condivisa.
- Hold and wait è una condizione in cui è necessario impedire ai processi di trattenere una o più risorse mentre sono in attesa contemporaneamente di una o più altre risorse.
- Il modello più semplice e utile per evitare gli stalli è quello in cui ogni processo dichiara il numero massimo di risorse di ciascun tipo di cui potrebbe aver bisogno.
- L'algoritmo per evitare il deadlock consente di valutare dinamicamente lo stato di allocazione delle risorse in modo che non si verifichi mai una situazione di attesa circolare.
- La situazione di stallo è un processo infinito, mentre la fame è una lunga attesa, ma non un processo infinito.