Realizzare in C programma "due cassiere".
Ciao ragazzi, mi aiutate con questo programma, non so come procedere!
Grazie!
Ad un supermercato ci sono due casse. Vi sono due cassiere
che possono: aspettare i clienti o operare ad una delle casse.
Ogni cassiera lavora sempre alla stessa cassa.
I clienti giungono al supermercato, se vi sono casse libere si dirigono verso una di
esse e si fermano e la cassiera addetta a quella cassa riempie le buste della spesa.
Finito l'imbustamento il cliente chiede il costo del conto. La cassiera comunica
l'ammontare della spesa. Il cliente paga e la cassiera prende i soldi.
Fatto cio` il cliente esce. La cassiera porta i soldi alla cassaforte (che e` unica), li
deposita e torna ad aspettare il prossimo cliente.
Se non vi sono casse libere il cliente aspetta che una cassa si liberi.
Concluso l'ultimo cliente le due cassiere devono dividersi l'incasso (che è in cassaforte) della giornata e
"chiudere" il supermercato.
Risolvere con i semafori per la sincronizzazione e la mutua esclusione.
La comunicazione tra la cassiera e i il cliente deve avvenire utilizzando o delle code di messaggi
o delle memorie condivise, anche entrambe se possibile.
Considerare un numero prefissato X di clienti (specificato da una costante oppure da un argomento da comando).
NB:
- il codice deve chiaro e commentato;
- adeguata gestione errori e anomalie (come un fallimento
nella chiamata ad una system call), con una messaggistica di errore su eventuali anomalie accadute a tempo di esecuzione;
(se l'errore impone di terminare l'esecuzione, disallocare le risorse allocate).
- inserire un Makefile che permetta la compilazione e la generazione degli eseguibili.
- si evitino processi zombie e deadlock;
- per tutti i processi che terminano, le risorse e strutture di comunicazione dei processi devono essere de-allocate;
Nessun processo deve essere "ucciso" con volontà da un altro processo, ma terminare normalmente l'esecuzione;
- Inserire nel progetto una relazione di poche righe con le scelte effettuate e la descrizione dei comandi con le opzioni da utilizzare per gli eseguibili.
Grazie!
Ad un supermercato ci sono due casse. Vi sono due cassiere
che possono: aspettare i clienti o operare ad una delle casse.
Ogni cassiera lavora sempre alla stessa cassa.
I clienti giungono al supermercato, se vi sono casse libere si dirigono verso una di
esse e si fermano e la cassiera addetta a quella cassa riempie le buste della spesa.
Finito l'imbustamento il cliente chiede il costo del conto. La cassiera comunica
l'ammontare della spesa. Il cliente paga e la cassiera prende i soldi.
Fatto cio` il cliente esce. La cassiera porta i soldi alla cassaforte (che e` unica), li
deposita e torna ad aspettare il prossimo cliente.
Se non vi sono casse libere il cliente aspetta che una cassa si liberi.
Concluso l'ultimo cliente le due cassiere devono dividersi l'incasso (che è in cassaforte) della giornata e
"chiudere" il supermercato.
Risolvere con i semafori per la sincronizzazione e la mutua esclusione.
La comunicazione tra la cassiera e i il cliente deve avvenire utilizzando o delle code di messaggi
o delle memorie condivise, anche entrambe se possibile.
Considerare un numero prefissato X di clienti (specificato da una costante oppure da un argomento da comando).

NB:
- il codice deve chiaro e commentato;
- adeguata gestione errori e anomalie (come un fallimento
nella chiamata ad una system call), con una messaggistica di errore su eventuali anomalie accadute a tempo di esecuzione;
(se l'errore impone di terminare l'esecuzione, disallocare le risorse allocate).
- inserire un Makefile che permetta la compilazione e la generazione degli eseguibili.
- si evitino processi zombie e deadlock;
- per tutti i processi che terminano, le risorse e strutture di comunicazione dei processi devono essere de-allocate;
Nessun processo deve essere "ucciso" con volontà da un altro processo, ma terminare normalmente l'esecuzione;
- Inserire nel progetto una relazione di poche righe con le scelte effettuate e la descrizione dei comandi con le opzioni da utilizzare per gli eseguibili.
Risposte
Quali sono le tue difficoltà? Che cosa sei riuscito a fare finora? Tieni presente che in questo forum non si forniscono soluzioni.