Deadlock (blocco critico)
Per “deadlock” si intende una situazione in cui ciascun processo del computer attende una risorsa assegnata a un altro processo. In questo caso, i processi vengono eseguiti se la risorsa richiesta è bloccata da un altro processo che è in attesa del rilascio di un’altra risorsa. È importante prevenire un deadlock prima che si verifichi. L’occorrenza di un deadlock può essere rilevata da uno strumento di pianificazione attività incentrato su risorse che aiuta il sistema operativo a tenere traccia di tutte le risorse assegnate a processi diversi. Un deadlock può verificarsi se si avverano contemporaneamente le seguenti quattro condizioni:
•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 un deadlock, quindi eseguire la precedenza per gestirlo quando si verifica.
•Se si verifica un deadlock, riavviare il sistema.