Progetto accademico per il corso di Sistemi Operativi e Laboratorio (SOL), A.A. 2019/2020
MarketThreads è una simulazione realistica del comportamento di un supermercato in cui clienti, casse e direttori interagiscono in un ambiente multithread, utilizzando primitive di sincronizzazione POSIX (pthread, mutex, condition variables) e strutture dati condivise.
- Gestione concorrente di clienti che entrano, fanno acquisti e si mettono in coda.
- Casse multiple, con logica di apertura/chiusura automatica.
- Statistiche su tempo in coda, prodotti acquistati, cambi di cassa.
- Log delle operazioni e report finali.
- Completamente configurabile tramite file
config.txt.
MarketThreads/
├── bin/ # Eseguibili compilati
├── headers/ # Header files (.h)
├── src/ # Sorgenti C (.c)
├── tester.sh # Script di test automatico
├── analisi.sh # Script per analisi output
├── config.txt # File di configurazione
└── descrizione-progettosol.pdf # Specifiche del progetto
Richiede:
- GCC
- Make
- Ambiente Linux con supporto a pthread
Per compilare il progetto, eseguire:
make
L’eseguibile verrà generato nella cartella bin/marketThreads.
Per avviare la simulazione, utilizzare:
./bin/marketThreads config.txt
Assicurati che il file config.txt sia presente nella stessa directory o nel percorso specificato.
| Parametro | Descrizione |
|---|---|
K |
Numero iniziale di casse aperte |
C |
Numero totale di clienti |
SO_SCHEDULING_INTERVAL |
Intervallo controllo casse |
SO_SIMULATION_TIME |
Durata della simulazione in secondi |
Il file config.txt consente di personalizzare il comportamento della simulazione secondo i parametri richiesti dal progetto.
- Thread separati per clienti, casse e direttore.
- Sincronizzazione tramite:
pthread_mutex_tpthread_cond_t
- Coda FIFO per i clienti.
- Logging su file con accesso sincronizzato.
- Script per analisi automatica dei risultati (
analisi.sh).
Al termine della simulazione vengono generati report testuali e CSV che includono:
- Numero clienti serviti per cassa
- Tempo medio di servizio
- Prodotti acquistati
- Numero di cambi cassa per cliente
Questi risultati possono essere analizzati con gli script inclusi o visualizzati direttamente.
Consulta il file descrizione-progettosol.pdf per i requisiti originali forniti dal corso.
Il codice è organizzato in moduli, con header dedicati per la gestione dei thread, la logica delle casse, il logging e il caricamento della configurazione.
Distribuito per scopi didattici.