CS 134

Assignment 5

In this assignment, you'll be making some tweaks to the OS/161 scheduler, and thinking generally about time and timings. Specifically, you will

  • Improve the newly added nanosleep system.
  • Add additional time-tracking instrumentation to OS/161 so you can actually tell whether your scheduler changes/improves performance.
  • Implement wake-at-front for threads that have been sleeping, while avoiding starvation.

As in previous assignments, a significant part of the work will be reading and understanding the existing OS/161 codebase and determining what changes are necessary to implement the required functionality. You'll also need to think about how to test your changes, and how to measure their impact.

Deadlines

  • Released: Monday, October 28
  • Written Part Due: Monday, November 11 at 11:59 PM
  • Documentation Due: Monday, November 11 at 11:59 PM
  • Final Code Due: Monday, November 11 at 11:59 PM
  • Patch Peer Review Due: Sunday, November 17 at 11:59 PM

Getting Started

As usual, you'll need to decide who you're working with for this assignment, and then accept the assignment on GitHub Classroom. You can do that by clicking the link below:

We mentioned suggestions for naming your group in Homework 1; you can go back and check them out if you need a reminder—basically use your names. Because GitHub classroom (strangely) requires you to use a never-before-used groupname, you may need to come up with some twist on your names that hasn't been used before (while still having them recognizable to Prof. Melissa).

Group Work Rules

The same rules about shared ownership of group work apply to this assignment, as described in the course syllabus and previous assignments.

Outline

First, get things set up:

Then, come up to speed on the relevant parts of the OS/161 codebase for this assignment:

Now you get to write code.

After submission, we'll have a peer review process:

(When logged in, completion status appears here.)