27 lines
828 B
Markdown
27 lines
828 B
Markdown
|
# 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`.
|