Deadlock (blocco critico)
Un deadlock si verifica quando ciascun computer attende una risorsa contenuta in un altro processo. È importante prevenire un deadlock prima che possa verificarsi. La pianificazione attività delle risorse è in grado di rilevare l’occorrenza di un deadlock, consentendo al sistema operativo di tenere traccia delle risorse allocate a processi diversi. Un deadlock può verificarsi se sono soddisfatte contemporaneamente le quattro condizioni seguenti:
•Nessuna azione preventiva: una risorsa può essere rilasciata solo volontariamente dal processo che la blocca dopo il termine della propria attività.
•Esclusione reciproca: tipo speciale di semaforo binario utilizzato per controllare l’accesso alla risorsa condivisa. Consente di mantenere bloccate le attività correnti con priorità più elevata per il più breve tempo possibile.
•Blocca e attendi: in questa condizione, è necessario che i processi non bloccano più risorse singole o multiple mentre attendono una o più risorse di altra natura contemporaneamente.
•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.
Un deadlock può essere gestito in tre modi:
•Non consentire al sistema di entrare in uno stato di deadlock.
•Lasciare che si verifichi il deadlock, quindi tentare di prevenirlo mentre si verifica.
•Se si verifica un deadlock, riavviare il sistema.