Operating Systems--Spring 2005

    Home | | Schedule | | Assignments | | Lecture Notes

    Project 3 Part 3: SRTN simulator

    Part 3: SRTN simulator (30 points) due: Friday, April 29

    For information about the overview of the entire project and about input and output formats, review the project description.

    Part 3: Implement the SRTN simulator along with the appropriate output code (for the appropriate flags) and the required statistics ( the CPU utilization (NOT CPU efficiency), the total time required to execute the set of processes, and the service time (or CPU time), I/O time, and turnaround time for each individual process.)

    Your implementation should fulfill the following requirements:

    • The SRTN simulation code should be in one file, named "srtn.cc", to be used in conjunction with the driver contained in driver.cc. You may want to start with a copy of your fcfs.cc file. Name the copied file, "srtn.cc" and modify it to implement the srtn scheduling algorithm instead of the fcfs algorithm.
    • Your srtn.cc file does not need to duplicate the functions that are the same for both algorithms (and that you have defined in fcfs.cc). In fact, if you duplicate these functions you will get compiler errors indicating there is a re-definition of the function. For example the initEventQueue( ) function probably doesn't change for the two algorithms, so simSRTN can use the one defined in fcfs.cc.
    • Any functions that differ between the two algorithms you will need to include in your srtn.cc code. You need to give these functions different names than you gave them in fcfs.cc. For example, you may have handle_ready_run( ) in fcfs.cc, and a similar function named handle_ready_run2( ) in srtn.cc. That way you can avoid compiler problems.
    • All enum definitions and struct definitions should be in a file, "sim.h", that should be included in both driver.cc and srtn.cc
    • The main( ) function will still be in driver.cc.
    • Use #include "srtn.cc" in your driver.cc file. You can then compile with a single command:
      g++ driver.cc -o sim
      This will put the executable code into a file named "sim".
    • The srtn( ) function should be short. It should initialize necessary variables, call a function to initialize the event queue, and then enter the getNextEvent loop.
    • Your SRTN simulation will need to use the same functions as the FCFS simulation, although some of them will be changed to run the SRTN algorithm. You need only include the modified functions (with new names as described above) in the srtn.cc file. In addition, you will need a function "handle_run_ready( )" to handle cases when a process is preempted.
    • We discussed in class what needs to be modified in fcfs.cc to make srtn.cc run. Use lots of cout statements for testing purposes (you can remove them later) and test each modification as you write it.

    In addition to your code, you must also turn in:

    • A short essay (2-3 paragraphs) that explains how your solution works and any assumptions you made. (If you make any assumption because you think the problem is not well specified, make sure to discuss these assumptions.)
    • If the driver to your simulation does not function as the specifications above request, then include information to execute each individual scheduling algorithm without using a driver.
    • The answers to the following four questions:
      1. Does your simulator include process switch overhead for the first ready state to running state transition? Explain.
      2. Does your simulator include process switch overhead if a process moves from ready state to running state and the CPU is idle? Explain.
      3. Does your simulator include process switch overhead if a process moves from running state to blocked state? Explain.

    You are encouraged to discuss the problem with fellow students. You are not allowed to share code with any other student.

    It would be wise to start early.

    Turning in your project:

    Part 3, final version:

    • Turn a hard copy of your srtn.cc and sim.h files. by Friday, April 29 in class.
    • If you use any associated files (e.g. list.h and list.cc), note that in the program header of your printout. If the files are not the ones provided in the project3 directory, include printouts of the files you used.
    • Before class, submit a soft copy of driver.cc, srtn.cc, fcfs.cc and sim.h by typing:
      ~csci346/bin/submit csci346 proj3part3
    • If you used files other than those provided in the project3 directory, please email the associated files to me at croyden@mathcs.holycross.edu before class on the due date.
    • Turn in the typed essay and answers to the four questions outlined above.


    Home | | Schedule | | Assignments | | Lecture Notes


    Constance Royden--croyden@mathcs.holycross.edu
    Computer Science 346--Operating Systems
    Date Created: January 9, 2004
    Last Modified: February 10, 2005
    Page Expires: January 8, 2006