Project 3: Memory Management

Due: Sunday, July 23rd Tuesday, July 25th before 11:59 pm

You may optionally work with a project partner for this project.


Please post your questions on Piazza so that your classmates with similar problems can benefit from it. However, if the question is about your code, visiting during office hours is the most efficient way of getting help. You should not post your code on Piazza.


There are two parts to this project:

  • Linux Shared Memory: to be done on a CS Linux machine, so you can learn more about programming in C on a typical UNIX-based platform (Linux)
  • xv6 VM Layout: to be done in our xv6 hacking environment.

Click on the above links to learn more about what you should do. READ EACH CAREFULLY!

Handing It In

If you are working in pairs, only one of you need to submit the source code.

Your handin directory is ~cs537-1/handin/$USER/p3 where $USER is your CS login. Copying of these files is accomplished with the cp program, as follows:

shell% cp shm_server.c shm_client.c Makefile ~cs537-1/handin/$USER/p3/linux/

For the C/Linux part of this project (the shell), you should turn the .c files you created. You should copy these .c files into the subdirectory called linux within your handin directory for p3. You should also include a simple Makefile, so we can simply type make and build your testable binary. The binary should be named shm_server and shm_client .

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

Into your p3 directory, put a README file. Describe a little bit about what you did for this project in this file.

Finally, also most importantly, if you are working with a partner, create another file called partner.txt in your p3 directory, where you should only write your partner's CS login. Both of you should create this file to be graded, and again, only one of you need to submit the source files. If there is no such file, we are assuming you are working alone.

For example, if Xiangjin works with Zhewen and let's assume Xiangjin is submitting the source files, then Xiangin will be turning in the source + the partner.txt file and Zhewen will be turning in only the partner.txt file. Xiangjin's partner.txt will contain a single line of Zhewen's CS login and Zhewen's partner.txt will contain only a single line of Xiangjin's CS login.