. In this project you will design a software package that simulates CPU schedulers in operating systems for a single CPU system. Your system should include modules for workload generator, schedule simulator, and schedule performance analyzer.
**Workload generator** should allow two types of inputs: 1) trace file, which contains information about the execution of a set of processes. For each process, the following items are included in the file: time of arrival, a sequence of CPU burst lengths and I/O burst lengths; 2) dynamically generated load with a specified simulation period: at random time interval, the generator produces a process with a sequence of CPU burst times and I/O burst times. To simulate multiprogramming/multi-user environment, you may want to use multithread in the generator.
**CPU schedule simulator** should contain different sub-modules for different scheduling algorithms, such as FCFS, SJF and RR. Parameters for the scheduling algorithms should be configurable at run time.
**Schedule performance analyzer** should produce the statistic result for the performance measures such as CPU utilization, throughput, turnaround, waiting time and response time for each simulation.
## Deliverables
1. A copy of your program and traces of several (at least two) test runs that illustrate all of the required and interesting features of your program.
2. A project report containing design ideas and discussion of the system architecture, major algorithms, major data structures and modules used in your project. A brief evaluation and discussion of your results should also be included. For a team project, each member of the team should report his/her own contribution to and observations from the project.
In this project you will design a software package that simulates CPU schedulers in operating systems for a single CPU system. Your system should include modules for workload generator, schedule simulator, and schedule performance analyzer.
It must be either C++ and Java programming language.
## Platform
The programs needs to run on Unix operating system