Concorrenza (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 13:
 
* '''Corse critiche ([[Race condition]]s)'''<br />In alcuni sistemi può accadere che i processi in esecuzione condividano una risorsa comune di qualsiasi natura (sia essa un'area di memoria condivisa o una periferica). In particolare se si verifica che il risultato finale dell'esecuzione di più processi dipende dall'ordine in cui essi vengono eseguiti, questa è una ''condizione di corsa critica'' (race condition). Il risultato dell'esecuzione nel caso di corse critiche è assolutamente impredicibile.
Il problema delle "corse critiche" può essere evitato impedendo che più di un processo per volta acceda a risorse condivise. Con la '''[[mutua esclusione]]''' si evita che più processi che contendono una risorsa riescano ad accedervi contemporaneamente.
 
* '''Stallo ([[Deadlock]])'''<br />Quando ad un processo viene garantito l'accesso esclusivo (ad esempio tramite una mutua esclusione) ad una risorsa, possono crearsi situazioni di stallo. Formalmente un insieme di processi è in stallo (''deadlock'') quando ogni processo dell'insieme attende un evento che può avvenire soltanto tramite un altro processo dell'insieme. Essendo tutti i processi in attesa, nessuno potrà mai creare l'evento di sblocco protraendo l'attesa all'infinito. Le tecniche per individuare situazioni di stallo prevedono l'analisi di grafi delle risorse allocate oppure mediante la creazione di cosiddette "matrici di allocazione". La risoluzione degli stalli può essere affrontata in vari modi. Concettualmente si possono suddividere in: