Part 1a Change the scheduler simulator to make the CPU use cumulative with a decaying average. As it is, when updatePrioities() calls [login to view URL](), the CPU use is added up (from the _history list) and then is erased. So the use is the use for the previous 100 ticks. To make this cumulative, add a _use field to ProcEntry, and have use() calculate the current cpuUse as before and then set _use to (cpuUse + _use)/2. Part 1b Find a scheduler run where the change in Part 1a makes some kind of difference. Consider running big big editor or just bigeditor. The existing use-counting mechanism might need to be tweaked. Problem 2: Heavy CPU Use Part 2a Change the (unmodified, original) scheduler simulator so that on an interrupt, if we haven't used up our time quantum, then the process stays where it is in the scheduler. To do this, call [login to view URL]() where .head() is currently called; this gets the current process but leaves it in the queue. If the process completed its quantum, you can call [login to view URL]() to pop it out of the queue and call [login to view URL]() (as in the original version of the code) to reinsert it. Alternatively (or perhaps in addition), you can keep track of how much of the time quantum remains; add a field to ProcEntry for this. Initially it is the time quantum; before you run() a process again, set an interrupt for the time when the quantum would expire (e.g., currTime + _timeleft). Part 2b Find a scheduler run where the change in Part 2a makes a difference. Give runs showing the difference.
## Deliverables
Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. Complete copyrights to all work purchased.
## Platform
java