Race condition

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

La situazione di corsa, o più semplicemente corsa (in inglese: race condition), è un fenomeno che si presenta nei sistemi concorrenti quando, in un sistema basato su processi multipli, il risultato finale dell'esecuzione di una serie di processi dipende dalla temporizzazione o dalla sequenza con cui vengono eseguiti.

Spesso, una situazione di corsa è un effetto indesiderato e genera malfunzionamenti. In questo caso, essa è denominata corsa critica per il sistema.

Elettronica[modifica | modifica wikitesto]

Race condition.svg

In elettronica, esistono alcune interessanti applicazioni delle situazioni di corsa. Ad esempio, il circuito logico mostrato in figura è spesso utilizzato per ottenere un impulso, corrispondente al fronte di salita del segnale originale A. Il ritardo di commutazione, introdotto dalla porta logica invertente, crea un ritardo nella determinazione del corretto stato logico della porta AND. Così facendo, ogni qual volta ci sarà un fronte di salita sul segnale A, in uscita dal circuito si otterrà un impulso di durata Δt1.

La competizione tra il segnale originale A ed il segnale ritardato Ā genera una situazione di corsa per determinare lo stato finale del circuito logico.

Informatica[modifica | modifica wikitesto]

Per evitare il verificarsi di situazioni di corsa quando si impiegano memorie, file o risorse in condivisione, sono stati studiati diversi algoritmi che prevedono la mutua esclusione, ovvero garantiscono che, quando la risorsa condivisa è interessata un processo, nessun altro processo possa accedervi.

Se più processi hanno la possibilità di accedere ad una risorsa in modalità di scrittura, è importante prevedere ed includere l'utilizzo di questi algoritmi, dei quali si può invece fare a meno se la risorsa è accessibile solamente in modalità di lettura, perché i processi non possono influenzare lo stato della risorsa, quindi non è fisicamente possibile la realizzazione di situazioni di corsa.

Casi reali[modifica | modifica wikitesto]

Un caso divenuto noto in cui una situazione di corsa ha generato malfunzionamenti molto pericolosi è stato quello del Therac-25, un macchinario per la radioterapia prodotto ed impiegato in America settentrionale negli anni '80. Esso era equipaggiato per emettere sia elettroni a bassa energia in maniera diretta, sia raggi X ad alta energia con l'attivazione di alcuni dispositivi meccanici di protezione; quando veniva impartita una determinata sequenza di comandi, apparentemente normale in condizioni di operatività ordinaria, si manifestava una situazione di corsa nel software di controllo della macchina che causava l'emissione di raggi X senza le protezioni, e ciò causo la somministrazione di una dose di radiazioni 100 volte superiore a quella prevista a sei persone, tre delle quali morirono a causa di ciò.

Voci correlate[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica