Stallo (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix wl
Riga 37:
Per esempio:
#Annullando la condizione di mutua esclusione e permettendo l'accesso contemporaneo ad una stessa risorsa da parte di diversi processi (es. file aperti in lettura). Può essere impossibile come nei casi di scrittura su file o accesso ad una risorsa senza [[spool]]ing.
#Si può richiedere ad un processo di richiedere tutte le risorse di cui dovrà disporre all'avvio oppure con la convenzione di rilasciare una risorsa prima di richiederne un'altra. Spesso questa soluzione non è praticabile o poco efficace. Tuttavia è utilizzata nei database che fanno uso di [[Twotwo-phase Phase Lockinglocking]].
#Permettere la prelazione, il che quindi permetterebbe a un processo di rilasciare la risorsa detenuta da un altro processo: ciò può lasciare l'applicazione ''vittima'' in uno stato inconsistente, dato che finisce per perdere una risorsa che stava utilizzando.
#L'attesa circolare si può risolvere permettendo ad ogni processo di richiedere solo una risorsa alla volta oppure imponendo un ordinamento (o una gerarchia) sui processi e prevenire in tal modo la formazione di cicli nel grafo delle attese.
Riga 47:
 
=== Deadlock distribuiti ===
In presenza di un [[sistema distribuito]] (come per esempio un database risiedente su diversi server), riconoscere una situazione di potenziale deadlock si rende ancora più complessa. In genere la rivelazione del possibile stato insicuro può essere effettuata solo ricostruendo il [[grafo delle attese]] globale a partire da quelli locali o con particolari algoritmi (vedi la variante distribuita del [[Twotwo-phase Phase Lockinglocking]]).
 
Tuttavia, la possibilità che il grafo delle attese globale non rifletta sempre correttamente l'effettivo stato del sistema distribuito, può rivelare dei ''deadlock inesistenti'' (''Phantom Deadlocks'') che sono già stati risolti perché uno dei processi ha terminato la sua esecuzione nel frattempo o che non sono mai esistiti realmente.