Taxicab
-
Documento di Presentazione del Progetto
-
Opzioni di compilazione
- gcc -std=c89 -pedantic
-
utilizzo di make
-
Struttura della Simulazione
Master
- raccoglie stats
- ogni secondo stampa lo stato di occupazione delle celle
- alla fine stampa
- n viaggi
- success
- unserved
- aborted
- mappa
- sorgenti
- holes
- top cells
- piú attraversate
- processo taxi
- maggior strada percorsa
- viaggio piú lungo
- servito il maggior numero di richieste
- n viaggi
Generator
- Gestisce Configurazione
- Genera Mappa
- una matrice di struct
cell
- (x,y)
- type - char
- SOURCE
- HOLE
- FREE
- capacity - int
- SO_CAP_MIN <= capacity <= SO_CAP_MAX
- traffic
- <= capacity
- n_visite - int
- incrementato da ogni taxi di passaggio
- una matrice di struct
- Genera SO_TAXI processi figli
- execv taxi.c
- indica uno spawn casuale
- non HOLE
- una cella che non abbia ecceduto la sua CAPACITY
- indica uno spawn casuale
- execv taxi.c
- Predispone Msg Queue
msg
- destinazione (x,y)
- dimensione
- Genera Richieste
- Inserisce Richieste
- Una volta passato SO_DURATION
- termina tutti i processi
- SIGINT a master
- che stampa le statistiche prima di terminare
Taxi(s)
- Si sposta nella Source libera piú vicina
- una volta scelta aumenta subito il suo Traffic
- in modo che i taxi non si rubino il posto a vicenda
- se non ne trova si sposta di una cella verso la piú vicina source e riprova
- una volta scelta aumenta subito il suo Traffic
Config
- SO_TAXI
- n taxi
- SO_SOURCE
- n sources
- SO_HOLES
- n holes
- SO_CAP_MIN
- SO_CAP_MAX
- Capacitá MIN e MAX di ogni cella
- ogni cella ha capacitá casuale
- Capacitá MIN e MAX di ogni cella
- SO_TIMENSEC_MIN
- SO_TIMENSEC_MAX
- MIN e MAX tempo di attraversamento di ogni cella
- SO_TIMEOUT
- ogni processo taxi si chiude dopo questo tempo di inattivitá
- SO_DURATION
- dopo questo tempo il processo Generator invia SIGINT ai figli
- SO_WIDTH
- X
- SO_HEIGHT
- Y