Project 3: Memory Management and Concurrency

Important Dates

Questions about the project? USE PIAZZA. For many reasons, 537-help@cs is being retired. A sad day in this history? Yes. A sad day for you? Definitely quite the opposite; you love Piazza!

Due: Monday 3/19 by whenever you turn it in, even past midnight! (but TAs might have to leave because they need sleep you know).


See this for xv6 hint on updating page tables.


There are two parts to this project. On the Linux side, you are doing an introduction to concurrency; on the xv6 side, you are doing a virtual memory project. Click below for details, and READ EACH CAREFULLY:


This project is to be done in groups of size one or two (not three or more or zero) . Now, within a group, you can share as much as you like. However, as always, copying code across groups is considered cheating. Read this for more info on what is OK and what is not.

Contest: Yes! As mentioned in class, the fastest parallel zip will be up for grabs. Give it a shot! Winner(s) will get a fabulous T-shirt, or as most people will call it, just a T-shirt.

Handing It In

The handin directory is ~cs537-1/handin/login/p3a and ~cs537-1/handin/login/p3a where login is your login.

For the Linux part of the project, copy pzip.c into the p3a/ directory.

For the xv6 part of the project, copy all of your source files (but not .o files, please, or binaries!) into the p3b/ directory. A simple way to do this is to copy everything into the destination directory directory, then type make to make sure it builds, and then type make clean to remove those unwanted files.

In each p3a/p3b directory, please include a README file. In there, describe what you did a little bit, but not too much.

Finally, if you have a partner, please create a file called partner.login in both the p3a/ and p3b/ directories that contains only your partner's CS login (and nothing else). Both partners should create the partner.login file, but only one partner should submit code.