.. |ep| raw:: html

==================== Lab 2: Scheduler ==================== **Handed out Wednesday October 23, 2019** **Due Friday Wednesday November 6, 2019** -------------------- 1. Getting Started -------------------- Download a new directory of starter code of XV6 for Lab2 from this `link `_. To get started, look at the file ``proc.c``. -------------------- 2. Assignment (95%) -------------------- In this part of the assignment, you will change the scheduler from a simple round-robin to a priority scheduler. Add a priority value to each process (lets say taking a range between 0 to 31). The range does not matter, it is just a proof of concept. When scheduling from the ready list you will always schedule the highest priority thread/process first. All the processes should have a default initial priority of 10. Add a system call to change the priority of a process. A process can change its priority at any time. If the priority becomes lower than any process on the ready list, you must switch to that process. **Goals**: Understand how the scheduler works. Understand how to implement a scheduling policy and characterize its impact on performance. Understand priority inversion and a possible solution for it. ---------------------------- 3. Bonus Section (upto 10%) ---------------------------- Implement up to two of the next three items. Each is a 5% bonus. To get credit for a bonus part, you must also develop a user test that will illustrate it. * To avoid starvation, implement aging of priority. If a process waits increase its priority. When it runs, decrease it. (Possible Bonus 1) |ep| * Implement priority donation/priority inheritance. (Possible Bonus 2) |ep| * Add fields to track the scheduling performance of each process. These values should allow you to compute the turnaround time and wait time for each process. Add a system call to extract these values or alternatively print them out when the process exits. (Possible Bonus 3) -------------------------------------- 4. Questions to Explore -------------------------------------- * Explain how the current scheduler works, including interaction with the timer.