All MPs will be graded using the most recent code on your main branch, uploaded on or before the deadline listed below. Submit your MPs by pushing the latest code to your main branch before the deadlines below.
For each MP that is autograded, we will run the autograder at least once before the deadline. These runs will be to verify your code's interface with the autograder, but the final grading run may include additional tests.
You must create an account and repository at the following link:
In this individual assignment, you will familiarize yourself with the development environment. You will learn how to compile, assemble and link your code; how to load and execute it in QEMU, and how to debug it using GDB.
In this individual assignment, you will write a screensaver in RISC-V assembly language.
This is a two-part individual assignment. For the first checkpoint, you will implement an interrupt-based serial port driver and a VirtIO driver for the entropy device. For the second checkpoint, you will implement kernel threads and condition variables.
[Files will be added here]
This is a three-part group assignment—you will work with two other students. For the first checkpoint, you will implement program loading, a block device driver, locks, a cache, and a read-only file system. For the second checkpoint, you will enable virtual memory protection, implement system calls, and make your file system writable. For the third checkpoint, you will implement the fork system call, pipes, and a shell.
[Files will be added here]