Multithreaded elevator simulation for Saint Louis University CS 3500 Operating Systems.
Build with make elevators
Usage:
elevators [-e nelevators] [-s speed] [-g]
This program simulates a building with elevators. The building has 11 floors numbered from 0 to 10. People enter the building on floor 1 at various times. They take elevators to various floors, spend time working on those floors, and eventually exit the building on floor 1.
-e nelevators: Set the number of elevators in the simulation-s speed: The simulation proceeds with discrete time ticks, and each tick takesspeedseconds.-g: Use output formatted for graphics, see below.
Each event that occurs in the simulation will be indicated by one line of output.
The people and their behavior are described by a series of single line text records fed to the simulation on stdin.
Each person’s record is a line:
name starttime floor1 worktime1 ... floorN worktimeN
The person will enter the first floor at starttime, proceed to floor1,
work for worktime1, then proceed to floor2 and so on until floorN, where they work
for worktimeN and then take an elevator to the first floor to exit.
There are a few .eld files in the distribution for testing. You might run the program with:
elevators < oneguy.eld
to direct the oneguy.eld file to elevators standard input.
There is a utility program people.py that will generate random person records.
Usage:
people.py [-p people] [-t trips] [-d delaymax]
For example,
people.py -p3 -t8 -d10 | elevators
will generate 3 people, each of which takes 8 trips and works for up to 10 ticks between trips, then pipe the output into elevators.
The file egraphics.py is a graphical front end to the simulation. The elevators
simulation, when run with the -g option, produces output that can be fed to the input
of egraphics.py with a pipe. For example,
elevators -e3 -s0.5 -g < tenpeople.eld | egraphics.py
This is an assignment for CS 3500 at Saint Louis University. As such, the simulation does not actually work yet.
The assignment is available at: http://mathcs.slu.edu/~clair/os