# ES 3 ## Problema * N processi, loop infinito di istruzioni divise in: **sezione critica, sezione non critica**. * Correttezza di una soluzione (algoritmo di mutua esclusione) e' definita da: 1. Rispetto della mutua esclusione 2. Assenza di deadlock 3. Assenza di starvation * Le variabili usate dal protocollo di accesso siano usate solo da esso * E' presente un processo nella sezione critica, inoltre se un processo inizia in SC alla fine terminera'. * Non si richiede progresso di istruzioni non appartenenti alla SC (non analizzato). ## Soluzione 3.2 Singola variabile `turn`: ``` if (turn == 1) P1 takes SC else if (turn == 2) P2 takes SC ``` Pertanto i due processi si bloccano in attesa che la variabile `turn` gli assegni il turno, prima della SC, poi eseguono la SC e passano il turno settando `turn`.