Esempio di esecuzione dell'algoritmo per risolvere il problema dei 5 filosofi (vedi codice nei lucidi)

La tabella illustra lo stato interno dei 5 filosofi durante una possibile esecuzione durante la quale
prima il filosofo 0 e 2 mangiano insieme mentre 4 e' bloccato (4 e 0 hanno una forchetta in comune),
poi 0 finisce e lascia mangiare 4 (esegue una "up" sul semaforo s[4]) mentre 2 continua a mangiare.

L'evoluzione temporale e' rappresentata tramite lettura della tabella dall'alto in basso
(le caselle vuote indicano che il filosofo non ha fatto nulla fino al prossimo evento)


Filos. 0 Filos. 1 Filos. 2 Filos. 3 Filos. 4
Stato Think Think Think Think Think
Semaphor  S 0 0 0 0 0
Istruzione take_fork(0) take_fork(1) take_fork(2) take_fork(3) take_fork(4)
 

 

 

Hungry



0
test(0)   (mutex=0)
Eating
1
down(S[0]) (mutex=0)

Eating
1
down(S[2]) (mutex=0)

Hungry
0
test(4)  (mutex=1)
Hungry
0
down(s[4]) --> blocked
Eating Eating
0 0
eat() eat()
Thinking
0
put_fork(4) -> test(4)--> up(s[4])

Eating
0
eat()