CS 3733 Operating Systems, Fall 2000 Assignment 2



Warning: This is not for the current semester.


Parts 0 and 1 Due Tuesday, October 3, 2000
Parts 2 and 3 Due Tuesday, October 10, 2000


In this assignment you will explore the topic of CPU scheduling by using the scheduling simulator described in class. You can find out more about the simulator at the web site: http://vip.cs.utsa.edu/nsf/process_scheduling.html.
A copy of the simulator user's guide can be found at http://vip.cs.utsa.edu/nsf/ps_doc/psdoc.html.
These links are also available from the course web page.

You might want to read about the experiences students had with the simulator in a previous semester in a paper available at http://vip.cs.utsa.edu/nsf/pubs/process.html.

Part 0

In this part you will run the simulator remotely and create a remote log file.

Look for the link Run the simulator remotely with log placed on vip on the course web page. Use this link to run the simulator.

Click on the Open Log button. You will be prompted to enter your username. Enter the name you use to log into our Sun network.

Click Open Log again and the button should change to Close Log.

Click on Run Experiment and then Log All Table Data.

Click on Draw Graph and then the Log button on the graph. It may take a few seconds while the graph is converted into a GIF and then sent over the network.

Click on Draw Gantt Chart and choose the first one.

Adjust the size so that the entire chart is shown. You can use the Controls to change the height of the bars.

Click on the Log button on the Gantt chart.

Do the same for the second Gantt chart.

Close the log file and then click on Show Remote Log.

If all went well, the log file should pop up in a new browser window.

Print out the log file and hand it in.

Part 1

If you have not already done so, create a web page for yourself.
The address of your web page should be http://www.cs.utsa.edu/~username. Create a course web page with web address http://www.cs.utsa.edu/~username/cs3733/index.html. This should be globally accessible. Your course web page should be very simple without much graphics so that it will load quickly over a phone line.

Make a cs3733/assign2/part1, directory under your public_html directory. The permissions of the public_html, cs3733, assign2, and part1 directories should be drwxr-xr-x.

Make a directory somewhere in your account for this assignment called assign2. Do not put this under public_html. The permissions of this directory should be set so that only you have access to it. Make a subdirectory called part1. Copy all of the files from /usr/local/courses/java/psfiles/ into your part1 directory. Edit the psconfig file and change my name to yours. Make sure that your path includes /usr/local/courses/java/bin. Run the simulator using runps which is a script in this directory. This will run the simulator using Java 2. A few of the machines in the lab will not run Java 2. If you find a machine that will not, send me a mail message about which machine it is. You can use runps1 on these machines instead.

Run the simulator in the same way you did for Part 0. This will create a log file in your part1 directory along with three GIF files.

Copy these files into your assign2/part1 directory under you public_html. Set the permissions so that they are all world readable. Put a link to the log file in your course web page. Make sure you (and others) can access this log file through your link. Print out the log file and turn it in.

When you have completed Parts 0 and 1 of this assignment, send me email with the subject CS 3733 Assignment 2, Parts 0 and 1 complete.

Part 2

Consider 15 processes all arriving at the same time, all with duration 300. The processes have CPU bursts uniformly distributed between 10 and 20 and I/O bursts uniformly distributed between 100 and 200. Perform an experiment using these processes in which shortest job first (SJF) is compared to preemptive shortest job first (PSJF).

Create an HTML log containing tables of statistics, graphs, and Gantt charts to show the results of the two runs.

Compare the two runs. If there is a significant difference between the performance of these two algorithms on the processes given, explain why. If not, explain why not.

Estimate the load average for each of the runs. The load average is defined as the average number of processes in the ready queue. This information is not directly available from the simulation statistics, but can be calculated as the total waiting time divided by the time for the experiment.

Put everything in one HTML file with your comments and analysis at the end. (You can edit the HTML file with an editor. Just be sure to separate paragraphs with the HTML paragraph separator tag: <p>.)

Turn in a printout of your log file.

Part 3

Think about the conditions under which PSJF will perform significantly better than SJF. Design an experiment to illustrate this. You must have at least 20 processes, each with more than one CPU burst. Try to get as large a ratio as possible for the average waiting times for SJF to PSJF.

As before, create a log file with tables and graphs to show what happened in your experiment. Write a short paragraph which explains in words why PSJF performed so much better than SJF. Put this in your log file and hand in a hard copy.


If you have a machine at home with Java installed, you can run the simulator at home by downloading the simulator code. Click here for more details.