Problema della sezione critica

Per evitare il problema delle race condition si introduce l’idea di sezione critica: una sezione critica è un segmento di codice nel quale il processo può modificare variabili comuni, scrivere un file, aggiornare tabelle, ..

Quando un processo è in esecuzione nella propria sezione critica non si deve consentire a nessun altro processo di entrare in esecuzione nella propria sezione critica

L’esecuzione delle sezioni critiche da parte dei processi è mutuamente esclusiva nel tempo: n processi in competizione per l’uso di dati condivisi

Ciascun processo ha un segmento di codice chiamato sezione critica, in cui avviene l’accesso ai dati condivisi

Problema: assicurare che quando un processo P esegue la sua sezione critica nessun altro processo Q possa eseguire la propria sezione critica

Il problema della sezione critica si affronta progettando un protocollo che i processi possono usare per cooperare

Ogni processo deve chiedere il permesso di entrare nella propria sezione critica

La sezione di codice che realizza questa richiesta si chiama sezione di ingresso

La sezione critica può essere seguita da una sezione di uscita, e la restante parte del codice è detta sezione non critica

Soluzione al problema della sezione critica

Per risolvere il problema della sezione critica, occorre soddisfare i tre seguenti requisiti:

Soluzione per due processi

Solo 2 processi, $P_0$ e $P_1$

Struttura generale di un tipico processo P:

do
{
	sezione di ingresso
	sezione critica
	sezione di uscita
	sezione non critica
} while (true);

I processi possono utilizzare delle variabili condivise per sincronizzarsi