Your objective is to create a program that simulates Round Robin CPU scheduling. You may write your program in C, C++, Java, or Python. If you choose C, C++, or Java you must include a Makefile. Your program will be tested on a Linux machine. You should test your program on the virtual machine from the first assignment to make sure it will run.
Program Requirements:
The program you will create is used to generate a schedule of processes. The processes are stored in a plaintext file. The program accepts two parameters. The first parameter is the path of the processes file. The second parameter is the time quantum. More on that in the next page.
Your simulation should include the following:
Clock timestamps all events for processes, such as creation time, completion time, etc.
Process Creator creates processes at arrival time
CPU runs processes for a time slice (time quantum)
Queue FIFO ready queue used by both the process creator and CPU
Process Arrival Time arrival time of new processes into the ready queue
Process Service Time amount of time required by the processes to complete execution
Time Quantum time each process can spend in the CPU, before it is removed
Context Switch number of times a process is switched
Your program should also print out the following performance evaluation criteria:
CPU Utilization
Throughput
Average Waiting Time
Average Turnaround Time
Include a README pdf document as your project report. Your report should explain CPU scheduling and how Round Robin works. Your report should detail your project implementation and how to analyze the program output. You must include the resulting output of your program using five different time quantums on the same process list. You can either use screenshots or simply copy the output into your report. The analysis of the results of the five runtimes should exhibit the performance of the algorithm based on the size of the time quantum and how this size impacts the outcome of the scheduling.
Sample Input:
Your program will be tested with an input file that has a certain format. It is a csv (comma space value) format that resembles a table. The three columns are Process ID, Arrival Time and Burst Time. Each row is a process.
Program Execution:
Your program accepts two parameters. The first is that path to the processes text file. The second parameter is the time quantum to be used in the simulation. For example if your program was written in java, the following could be how would test it.
$ javac target.java
$ java target processes.csv 2
Suggestions:
1. Research the Round Robin CPU scheduling algorithm.
2. Understand goals of scheduling:
3. Understand the requirements and plan steps involved to meet the requirements.
4. Set up the environment for the scheduler.
5. Define classes/subclasses used by the scheduler (CPU, clock, process, processUcreator, 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 contextUswitch time.
8. Provide input to your simulator (time quantum, process arrival time, number of process, burst time of each process) processUcreator.
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 five different Time Quantum. Create metrics of the results and get the average of these metrics.
11. Analyze the result.