Spero che qualcuno abbia modo di darmi una mano
ELABORATO DI SISTEMI OPERATIVI
Realizzare due implementazioni in C che realizzino con Semafori e Monitor una soluzione
concorrente al seguente problema:
Gli spalatori di neve
Il comune di Cesena manda N operatori a spalare la neve dal cortile dell’università .
Per poter spalare la neve gli operatori devono ottenere una pala e due guanti (il guanto
destro e il guanto sinistro sono indifferenti tra loro), ma le pale in tutto sono M (M < N) e
i guanti disponibili sono in numero pari e sono in tutto P (P < N).
Gli operatori alternano momenti in cui spalano la neve a momenti in cui vanno al punto
ristoro a prendere il caffè alla macchinetta per potersi scaldare.
Quando va a prendere il caffè, l’operatore rilascia la pala e i guanti e un altro operatore
può ottenerli per poter continuare a spalare.
Quando l'operatore ha finito di bere il caffè si mette in attesa di una pala e di due
guanti liberi per poter continuare a spalare. Inizialmente tutte le pale e i guanti sono
liberi e tutti gli operatori stanno bevendo il primo caffè della giornata.
La soluzione proposta deve assicurare il massimo grado di parallelismo, non deve usare
busy waiting, ne generare deadlock o starvation.
Commentare in modo chiaro il codice.