Taxicab
university, project- 
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