1- xv6 OS has a RR scheduling, and I want to change it to priority-based.
2- I want to test the performance after the implementation finishes.
3- I want the project to be documented and commented.
We will replace the original algorithm for xv6, a naïve and simple round-robin scheduler (as in Figure 1) with a priority-based (as in Figure 2), preemptive one, and then compare the performance between these two algorithms. The operating system will assign a fixed priority to each process. Higher priority processes will be given the privilege of preempting any lower priority processes that are already running in addition to being scheduled before lower priority tasks. Our goal is to achieve an improvement in performance of xv6 with a priority-aware scheduler. Our choice of scheduler came down to a few major factors: first, this sort of scheduler is reasonably well documented and we have plenty of resources and examples to look at while conducting our own research; second, compared to some scheduling algorithms this one seemed to us to be reasonably simple while still being realistic and useable in a real-world operating system; and lastly, the priorities may be varied fairly easily in order to open more doors for experimentation. For example, once the prioritization is implemented in the scheduler, we can vary the priorities of user-facing and background tasks in order to determine which settings are the best for responsiveness to the user whenever the system is fairly busy. We will also be able to measure how prioritization in the scheduler can affect the running time for repeatable jobs that we explicitly give a high priority to in comparison with those same jobs running on a busy machine with the round-robin scheduler.
it uses QEMU, a generic and open source machine emulator and virtualizer and Unix terminal commands are required including the GNU Compiler Collection, the linker and assembler distributed with the GNU binutils package, and the GNU Make utility.