Junior — Middle
Cos'è un deadlock di risorse e in quali situazioni si verifica nei sistemi?
sobes.tech AI
Risposta dell'AI
Il deadlock (interblocco) è una situazione nei sistemi multitasking in cui due o più processi (o thread) si bloccano reciprocamente per sempre, aspettando di liberare risorse occupate dall'altro.
Si verifica quando tutte e quattro le condizioni sono soddisfatte contemporaneamente:
- Esclusione mutua — una risorsa può essere presa in possesso da un solo processo alla volta.
- Ritenzione e attesa — un processo mantiene una risorsa e ne aspetta un'altra.
- Impossibilità di liberazione forzata — una risorsa non può essere sottratta a un processo finché non la libera volontariamente.
- Attesa ciclica — esiste un ciclo di processi, ognuno dei quali aspetta una risorsa detenuta dal successivo nel ciclo.
Esempio: il processo A ha preso la risorsa 1 e aspetta la risorsa 2, mentre il processo B ha preso la risorsa 2 e aspetta la risorsa 1 — entrambi sono bloccati per sempre.
In iOS e altri sistemi, i deadlock si verificano spesso a causa di un uso scorretto della sincronizzazione, ad esempio, quando si acquisiscono più lock in ordine diverso.
Per prevenire i deadlock si utilizzano:
- ordinamento nell'acquisizione delle risorse;
- timeout di attesa;
- evitare di mantenere risorse mentre si aspetta altre;
- utilizzo di meccanismi di sincronizzazione specializzati.