Cos'è una vittima di deadlock?
Una vittima del deadlock è un utente di computer, che funge da client connesso a un server, la cui connessione l'host del server ha scelto di terminare per risolvere un deadlock. Questo tipo di deadlock si presenta spesso quando due diversi processi stanno tentando di utilizzare le stesse risorse, causando il blocco di entrambi i processi. Per risolvere questo problema, molti sistemi di database di server possono rilevare quando si verifica un deadlock e quindi scegliere di terminare la connessione di uno dei due processi. Una vittima del deadlock può essere scelta arbitrariamente dal programma, sebbene l'utente sia tipicamente scelto come colui che può riconnettersi più facilmente al sistema.
Il termine "vittima del deadlock" viene in genere utilizzato nel messaggio di errore o eccezione visualizzato dal sistema all'utente al termine della connessione. Questo errore si verifica in una situazione comunemente definita deadlock. In generale, si verifica un deadlock quando due utenti connessi a un server stanno tentando di accedere alle stesse risorse in modo da creare un blocco sul sistema. Ad esempio, se l'utente A utilizza la risorsa 1 e deve utilizzare anche la risorsa 2, mentre l'utente B utilizza la risorsa 2 e deve utilizzare anche la risorsa 1, si verifica un deadlock poiché nessuno dei due utenti può completare il proprio processo.
In questo esempio, uno dei due utenti verrebbe scelto dal sistema come vittima del deadlock e la sua connessione al server verrebbe interrotta. Una volta che ciò si verifica, l'altro utente può completare il proprio processo, terminando il deadlock e la vittima del deadlock può riconnettersi al server. La maggior parte dei programmi di database di server sono progettati con il rilevamento di deadlock, che in genere rileva un deadlock dopo un certo periodo di tempo. Anche se un deadlock non è necessariamente un grosso problema, può essere un fastidio per gli utenti, in particolare quelli scelti come vittima del deadlock, e indica uno o più errori nella programmazione del database del server.
Il modo in cui un server sceglie una vittima del deadlock può variare. Alcuni programmi scelgono la vittima su base puramente casuale. Mentre questo può essere abbastanza efficace, poiché qualsiasi scelta porta a una soluzione e alla fine dello stallo, questo non è sempre un metodo ideale. Un server è in genere programmato per valutare i due utenti in modo da scegliere quello che potrebbe riconnettersi più facilmente o che perderà la minima quantità di dati a causa della disconnessione.