Labs mostly revolve around assignments in which you will write a simple but working operating system. The lab sessions are held in a lecture room (instead of a computer lab) and are intended for discussion about past, ongoing and upcoming assignments.
Whenever a new assignment is published, you are expected to familiarize yourself with the assignment so that we can focus on particular problems or pitfalls.
Even though the initial (individual) assignments are fairly simple, the team assignments will get gradually more difficult. Part of the complexity is due to the cumulative nature of the assignments — your solution to a particular assignment will be built on top of previous assignments.
Because you will have to live with your code for most of the semester, you should strive to make the code readable and easy to understand. To this end, pay attention to use of higher-level abstractions, functional decomposition, and proper naming.
Assignments
The following table lists the assignments that you will need to complete, along with the deadlines. The download information refers to a directory in the individual or team repository in which you will find the assignment specification and skeleton implementation.
In general, you should start working on each assignment as soon as possible. If you discover the difficult parts early on, there is time to discuss them within the team and during the lab sessions. This is much more difficult to do few hours before deadline. Use the calendar on the schedule page to keep track of the assignment deadlines and plan your work accordingly.
Date | Title | Downloads |
---|---|---|
2022-09-26 - 2022-10-09 | A00: C language refresher | student / a00-c-language |
2022-10-03 - 2022-10-16 | A01: Introduction to kernel | student / a01-kernel-intro |
2022-10-17 - 2022-11-06 | A02: Kernel memory management | team / README-a02.md |
2022-10-31 - 2022-11-20 | A03: Cooperative scheduler and threads | team / README-a03.md |
2022-11-14 - 2022-12-11 | A04: Preemptive scheduler and synchronization | team / README-a04.md |
2022-12-05 - 2023-01-08 | A05: Virtual memory management | team / README-a05.md |
2022-12-19 - 2023-01-22 | A06: Userspace | team / README-a06.md |
Videos
For some of the assignments, a short video is available to help with the first steps. These can be found in a Sharepoint folder that you can access using the information system (SIS) credentials.
Manuals
- MIPS R4000 Microprocessor User’s Manual (2nd Edition)
- System V Application Binary Interface, MIPS RISC Processor Supplement (3rd Edition)
- Intel 64 and IA-32 Architectures Software Developer’s Manual (Version 325462-075)
Miscellaneous
- Virtual memory and TLB on R4000 (slides from the labs)