Objectives:
1. Understand CPU scheduler
2. Implement an algorithm
3. Empirical analysis of an algorithm
4. Gain experience with an industry standard OS ,
You chose C# as program language that support GUI, and runs on Windows. Also, the other OS that support GUI desktop, e.g. Gnome and KDE for Linux, are possible
To do that, you need to provide all materials as well as source code, such as run time module, integrated development environment (Visual Studio, .NET or CIO, and any other program to run your program.
You are to implement a multi-level feedback queue scheduler Q. Your implementation of Q should satisfy the following requirements:
• The scheduler Q consists of 3 linear queues, i.e., Q0, Q1, and Q2.
- QO is round robin with time quantum 8 (RR8),
- el is round robin with time quantum 16 (RR16), and
- Q2 is FCFS.
• Process cannot be executed in the lower queue if there are any jobs in all higher queues. For example, QO has 5 processes, Q1 has 1 process, and Q2 has 1 process. Then, first the process in QO should be executed (and completed), and then a process in Q1 is executed. Finally, Q2 will get CPU resource.
• A new process enters queue QO which is served RR8.
• When it gains CPU, a process receives 8 milliseconds.
• If it does not finish in 8 milliseconds, process is moved to queue Q1.
• Process cannot be executed in the lower queue if there are any jobs in all higher queues. For example, QO has 5 processes, Q1 has 1 process, and Q2 has 1 process. Then, first the process in QO should be executed (and completed), and then a process in Q1 is executed. Finally, Q2 will get CPU resource.
• A new process enters queue QO which is served RR8.
• When it gains CPU, a process receives 8 milliseconds.
• If it does not finish in 8 milliseconds, process is moved to queue Q1.
• At Q1 process is again served RR16 and receives 16 additional milliseconds.
• If it still does not complete, it is preempted and moved to queue Q2.
• The processes are to be created with the following fields in the PCB (Process Control Block): Process ID, arrival time, actual execution time, queue number. The creation is done randomly, and includes at j. 20 processes.
• Output should include a time line, i.e., every time step, indicate which processes are created (if any), which ones are completed (if any), processes which moved into different queue, etc. For example,
Time Description
O ms PO is created. PO enters Q0. PO is selected.
3 ms P1 is created. P1 enters QO.
8 ms PO is aged. PO moves to Ql. PO is selected.
Also, you can implement GUI displaying each queue status including queue, current process, and time (Optional).
• Context switching time is ignored in this project.
After completing the implementation and doing a few sample runs, compute the following performance measure.
• Average waiting time.
• Average turnaround time.
• Average response time.
Write-up
You should submit a write-up as well as your program. Your write-up should include analysis of performance measure with various parameter values, any known bugs, limitations, and assumptions in your program. This write-up should be in text-format and titled as 'README'. It should be submitted along with your code. I will use the README file to compile (or install) and run your program. Finally, If I misunderstand something ,I will ask you to explain it.