In this project, you will be changing the process scheduler in Bionic Beaver. The new scheduler will implement
four Major Levels of queuing for processes. These queues will correspond to the four levels in the tags that you
associated with processes in Project 1. Each Major Level L will be allocated some amount of time to run on the
CPU. The scheduler will use a Round Robin-like scheduling algorithm to allocate time to each Major Level.
When CPU is assigned to a Major Level L, only processes of that Major Level (processes with the tag level L)
can compete for CPU time (and only if they are ready). If there are no processes in a Major Level, then the
system will run an idle process to use up the time allocated to that major level.
The sum of the allocation times for the four levels determines the round robin cycle time for the user processes,
and the time given to a level divided by this total cycle time gives the fraction of CPU time that each level gets.
RRTime = S(Allocation Time)
CPUTime = (Level Time)i / RRTime
You will introduce system calls and library wrapper functions to obtain the amount of time allocated to a Major
Level (any user can call), and to change the amount of time allocated to a Major Level (restricted to root). These
you will document with manual pages. You will then create a short video to demonstrate your code and submit
the project via Canvas.