Skip to main content

Cos'è una vittima di deadlock?

Una vittima di deadlock è un utente del computer, che funge da client connesso a un server, la cui connessione l'host del server ha scelto di terminare per risolvere uno stallo.Questo tipo di deadlock sorge spesso quando due diversi processi stanno tentando di utilizzare le stesse risorse, il che provoca il blocco di entrambi i processi.Per risolvere questo problema, molti sistemi di database dei server possono rilevare quando si verifica uno stallo e quindi scegliere di terminare la connessione di uno dei due processi.Una vittima di deadlock può essere scelta arbitrariamente dal programma, sebbene l'utente sia in genere scelto come quello che può più facilmente riconnettersi al sistema.

Il termine "vittima di deadlock" viene generalmente utilizzato nell'errore o nel messaggio di eccezione visualizzato dal sistemaall'utente quando la sua connessione è terminata.Questo errore si verifica in una situazione comunemente indicata come un deadlock.In generale, si verifica uno stallo 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 anche utilizzare la risorsa 2, mentre l'utente B utilizza anche la risorsa 2 e deve utilizzare anche la risorsa 1, si verifica uno stallo poiché nessuno degli utenti può finire il proprio processo.

Questo esempio, uno dei due utenti verrebbe scelto dal sistema come vittima di deadlock e la sua connessione al server verrebbero terminate.Una volta che ciò si verifica, l'altro utente può finire il proprio processo, terminando lo stallo e la vittima di deadlock può riconnettersi al server.La maggior parte dei programmi di database dei server sono progettati con il rilevamento del deadlock, che in genere rileva un deadlock dopo un certo periodo di tempo.Anche se una situazione di stallo non è necessariamente un grosso problema, può essere un fastidio per gli utenti, in particolare quelli scelti come vittima di deadlock, e indica uno o più errori nella programmazione del database del server.

Il modo in cui un server sceglie una vittima di deadlockpuò variare.Alcuni programmi scelgono la vittima su base puramente casuale.Sebbene ciò possa essere abbastanza efficace, poiché qualsiasi scelta porta a una soluzione e alla fine del deadlock, questo non è sempre un metodo ideale.Un server è in genere programmato per valutare i due utenti per scegliere quello che potrebbe più facilmente riconnettersi o che perderà il minor numero di dati a causa della disconnessione.