The CPU scheduler is an important component of the operating system. Processes must be properly scheduled, or else the system will make inefficient use of its resources. Different operating systems have different scheduling requirements, for example a supercomputer aims to finish as many jobs as it can in the minimum amount of time, but an interactive multi-user system such as a Windows terminal server aims to rapidly switch the CPU between each user in order to give users the illusion that they each have their own dedicated CPU.

Which is the best CPU scheduling algorithm? There is no hard-and-fast answer, but one way to find out is to simulate different scheduling algorithms with the type of jobs your system is going to be getting, and see which one is the best. This is what you will be doing for this assignment.

There are two parts to this assignment:

  • Implementation of a CPU scheduler simulation to compare two schedules described in Chapter 5 (use any programming language that you like); and
  • Create a 1-2 page report describing your evaluation of these different scheduling algorithms. Did one work better then the other? Which algorithm might be better then another for a given purpose?

The Simulator

A job can be defined by an arrival time and a burst time. For example, heres a sequence of jobs:

< 0, 100 >, < 2, 55 >, < 2, 45 >, < 5, 10 >...

The first job arrives at time 0 and requires 100ms of CPU time to complete; the second job arrives at time 2 and requires 55ms of CPU time; the third job arrives at time 2 and requires 45ms; and so on. You can assume that time is divided into millisecond units.

Your simulator should first generate a sequence of jobs. The burst lengths can be determined by selecting a random number from an exponential distribution.

There should also be a minimum job length of 2ms, so that the total burst duration for a job is 2ms plus the value selected from the exponential distribution (which should be between 0 and 40). So the shortest job will require for 2ms of CPU time and the longest, 42ms.

Your program should simulate the arrival of jobs for up to n milliseconds and then stop.

Once the jobs have been generated, you will need to compare the performance of different scheduling algorithms on the same set of jobs. You can write one program that runs both algorithms or write two separate programs.

For each scheduling algorithm, your program should measure at least (1) the CPU utilization, (2) the average job throughput per second, and (3) the average job turnaround time.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.