CS 134

Assignment 6

In this assignment, you'll be modifying the OS/161 virtual memory system. A large patch has been applied that replaces the “dumbvm” VM system with a more sophisticated one that supports paging, but there are some important missing features.

  • Currently page replacement uses a simple FIFO algorithm, you will:
    • Implement a TLB-aware page replacement algorithm.
    • Implement a random page replacement algorithm.
    • Implement the Clock Algorithm with Page Aging.
  • Currently vm_object_setsize is not implemented, which means sbrk barely works. You will implement this function.

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: Thursday, November 14
  • Written Part Due: Monday, November 18 at 11:59 PM
  • Preliminary Code Due: Sunday, November 24 at 11:59 PM
  • Documentation Due: Wednesday, December 4 at 11:59 PM
  • Final Code Due: Wednesday, December 4 at 11:59 PM
  • Patch Peer Review Due: Sunday, December 8 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.

Collect some statistics about the performance of your virtual-memory algorithms.

When you're done:

  • Use submit-this to submit your work as usual.

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

(When logged in, completion status appears here.)