**Please read attached file for more description
Using GUI will be great for this project.
In this project you will implement the strict, non-priority-preemptive multi-level feedback queue (MLFQ) scheduling algorithm with three queues (Q1, Q2, Q3) for a single-CPU system (see class notes). Your program (mlfq.c or [url removed, login to view] or [url removed, login to view] or [url removed, login to view]) should produce the response time, the turnaround time, the waiting time for each process and the overall turnaround time (makespan) for a given input. It is your responsibility to make sure that your program runs on the department’s computer system.
Assume the following:
1. Arriving jobs can be either batch or regular.
2. Regular processes enter in Q1, and batch processes enter in Q3.
3. I/O requests always take 5 units of time.
4. Assume no context switching overhead.
5. Process selection is strict.
6. Process selection is not priority preemptive.
7. The scheduling algorithms within the queues are as follows
**Q1**: round robin with quantum 3
**Q2**: round robin with quantum 6
**Q3**: first come first served (FIFO)
8. If a process in Q1 or Q2 uses its entire quantum without finishing its CPU burst, it is put at the end of the next lower queue.
9. If the CPU burst is equal to the quantum, it does not move down, it is put at the end of its queue.
[url removed, login to view] returning from I/O, regular processes move up one level and are placed at the end of the queue of the new level.
[url removed, login to view] from Q1 return to Q1, and batch processes return to Q3.
[url removed, login to view] a process blocks on I/O before its quantum has completely expired, the system immediately schedules another process.
[url removed, login to view] program must read from a file (data?.in) and the output should be directed to a file (data?.out) where ? is a number.
C++ in Windows