Starting from:

$29.99

 Assignment 5: Disk Scheduling Simulation CSC 139 Operating System Principles Solution

1          Objectives
In this assignment, you will implement three different algorithms for scheduling the disk head on a hard disk. That is, you will simulate the motion of the disk head by taking a set of requests for cylinders/tracks to read and then determining the order in which they will be read. You will then report the total “distance” the disk head had to travel.

2          Description
The disk scheduling algorithms to implement in this assignment are first-come-first-served (FCFS), shortestseek-time-first (SSTF), and LOOK. The detailed algorithms are already described in class slides and textbook Chapter 10.

2.1     Part A

Write a C program called fcfs.c that implements the FCFS disk scheduling algorithm. Assume the disk arm starts at cylinder/track 50. The set of “requests” to the disk (cylinders/tracks to be read) should be provided as command-line arguments to your program (note: it is safe for your program to assume that the inputs are all well-formed integers between 0 and 100). The output of your program should show the order in which the cylinders/tracks are read, and the total distance traveled. For instance, if your program were executed like this:

./fcfs 5 28 10 7 39 20 45 67 36 35, then the output should look like this:

Reading track 5

Reading track 28

Reading track 10

Reading track 7

Reading track 39

Reading track 20

Reading track 45

Reading track 67

Reading track 36

Reading track 35

Total distance: 219

1

2.2     Part B

Write a C program called sstf.c that implements the SSTF disk scheduling algorithm. As in Part A, the set of “requests” to the disk (cylinders/tracks to be read) should be provided as command-line arguments to your program, and the output of your program should show the order in which the cylinders/tracks are read, and the total distance traveled. Assume the disk arm starts at cylinder/track 50.

Note: the SSTF algorithm looks for the track closest to where the disk arm currently is positioned, not to where it started. In the case where two tracks are both equally as close to the current position, you can choose either one (the higher one or the lower one), as long as it’s a “local” decision (i.e., you do not consider what you’ll do after that).

2.3     Part C

Write a C program called look.c that implements the LOOK disk scheduling algorithm. As in Parts A and B, the set of “requests” to the disk (cylinders/tracks to be read) should be provided as command-line arguments to your program, and the output of your program should show the order in which the cylinders/tracks are read, and the total distance traveled. Assume the disk arm starts at cylinder/track 50.

Note: assume that the disk arm is moving down at the start of your program.

3          Deliverables
Make sure your code can be compiled and work on Athena server correctly. Upload to Canvas the following: • All source codes/files that you have added/modified and the demonstrative results.

A README.TXT file that briefly describes each file, how to compile the file(s), and how to run the file.
These files should be placed in a directory called <ECS username-asgmt5.
Use tar command to place all the files in a single file called <ECS username-asgmt5.tar.
Assuming you are in the directory <ECS username-asgmt5 do the following:

Goto the parent directory: cd ..
tar the files:
tar -cvf <ECS username-asgmt5.tar ./<ECS username-asgmt5

Verify the files have been placed in a tar file:
tar -tvf <ECS username-asgmt5.tar

Compress the files using gzip: gzip <ECS username-asgmt5.tar
Verify that the gzipped file exists: ls <ECS username-asgmt5.tar.gz
2

More products