Table of Contents
Planning
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 Argument Passing task.
Next, implement the practice
and the write
syscall for the STDOUT_FILENO
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 0.
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 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 tests args-*
, bad-*
, stack-align-*
, do-nothing
, iloveos
, practice
.
Checkpoint 2
Building off of Checkpoint 1, complete the remaining File Operation Syscalls and Process Control 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.
Final
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.