Skip to main content Link Menu Expand (external link) Document Search Copy Copied


Table of contents

  1. Checkpoint 1
  2. Checkpoint 2
  3. Final

We provide you a suggested order of implementation as well as the specifications for each checkpoint based on our and past students’ experiences. However, this is merely a suggestion and you may elect to approach the project entirely differently.

Keep in mind that checkpoints are not graded.

Checkpoint 1

Start the project by implementing the write syscall for the STDOUT file descriptor. Once you’ve done this, the stack-align-1 test should pass, assuming you build on the code you have at the end of Project Pregame.

Next, implement practice syscall and the Argument Passing task.

Finally, make sure that the exit(-1) message is printed even if a process exits due to a fault. Currently the exit code is printed (see line 26 of /pintos/src/userprog/syscall.c) when the exit syscall is made from userspace, but not if it the process exits due to an invalid memory access.

After this checkpoint, you should be passing the args-*, bad-*, stack-align-*, do-nothing, iloveos, practice.

Checkpoint 2

Building off of Checkpoint 1, complete the remaining Process Control Syscalls and File Operation Syscalls.

After this checkpoint, you should be passing all tests except for fp-* and kernel/fp-*. If you’re not passing the no-vm/multi-oom test, feel free to skip it for now. It is a harder test to debug that can often only be done by examining your code, so you should return to it after you’ve implemented all the other functionalities.


Finish the project with Floating Point Operations. Make sure to fix the multi-oom test if you skipped that during Checkpoint 2. You should be passing all tests.