Write a CPU scheduling program using Round Robin algorithm.
The simulation should implement:
&bull; Clock &ndash; timestamps all events for processes - creation time, completion time
&bull; Process creator &ndash; creates processes at arrival time (user-specified)
&bull; CPU &ndash; runs processes for a time slice (user-specified).
&bull; A FIFO Ready queue used by both the process creator and CPU
&bull; Process arrival time &ndash; the time between the arrivals of new processes into the ready queue.
&bull; Processes service time &ndash; amount of time required by the processes to complete execution.
&bull; Time quantum &ndash; the time each process can spend in the CPU, before it is removed.
&bull; Context switch &ndash; the number of times a process is switched
Performance Measurement Criteria should include the following:
&bull; Average waiting time
&bull; Average turnaround time
&bull; CPU utilization
Present the result of the performance of the Round Robin scheduling algorithm for four different time quantum.
Note - This CPU scheduling simulator is not required to simulate the I/O operation, I/O waiting state, or interrupts.
1. A properly documented source code and related output
2. A README file that describes the following:
&bull; Introduction: a brief description of the problem and its goals;
&bull; Implantation: a brief description of how to implement the RR scheduling algorithm and the queues involved to measure the performance criteria
&bull; Empirical evaluation: a detailed description of your simulation, performance metrics
&bull; Analysis of the results
1. Understanding of the CPU scheduling algorithm (Round Robin)
2. Goals of scheduling:
&bull; CPU utilization &ndash; keep CPU 100% busy
&bull; CPU throughput - maximize the number of jobs processed
&bull; Turnaround time &ndash; minimize the time executing a process
&bull; Waiting time &ndash; minimize amt of time process waits in the ready queue
&bull; Response time &ndash; min amt of time from when a request is submitted until the first response (not output) is produced
3. Plan steps involved/requirements
4. Set up the environment for the scheduler
5. Define classes/subclasses used by the scheduler (CPU, clock, process, process creator, simulator, etc.), FIFO scheduler, and all the parameters involved.
6. Define queues (i.e., ready queue/FIFO and waiting queue) used by the scheduler, the data structure, and mechanisms used for each queue to determine when and which queue a process should enter, and when to be removed to resume execution or be terminated.
7. Keep track of context-switch time
8. Provide input to your simulator (time quantum, process arrival time, number of process, burst time of each process) process creator&ndash; a configuration file of the processes created at arrival time, can be used as input to the simulator, or a randomly generated process set. Using API, inputs can be entered interactively.
9. Output the sequence of events and show how the algorithm is executed and the performance of your scheduling algorithm for the same set of processes and their associated burst time, but different time quantum, in terms of the turnaround time, waiting time, CPU utilization, and throughput.
10. Empirical evaluation: Full accounting and statistics after the simulation completes - create processes with different arrival time and burst time. Run the scheduling algorithm on these processes (i.e., the same set of processes), with four different Time Quantum. Create metrics of the results and get the average of these metrics.
11. Analyze the result.