Phil Alverson (pma7) EECS 338 Assignment 5 This assignment was compiled and tested on the volatile.case.edu unix machine using g++, as defined in the Makefile. The program does not display the current state of a queue as suggested by the assignment since the program does not create and handle it's own queue but rather uses a separate semaphore to act as a queue for the readers and writers. The program can be run either with command line options or the -r option. With -r, the program will randomly start the 4 readers and 3 writers. Without it, it will start them in the following sequence: W, R, R, R, W, R, W. Also, rather than displaying the system time, it displays the number of microseconds that have passed since some point before the processes were forked. The semaphores are handled by a class defined in as5.h, and a shared memory class is also defined there. The program works by creating 2 sets of semaphores, one which each child process waits on to know when it should start, and one set with 3 semaphores (a queue, mutex and write semaphore) which works to implement the fair readers/writers problem in a FIFO manner. If you have any questions/problems feel free to email me at pma7@case.edu