This course is intended to give students a thorough understanding of design and implementation issues for modern operating systems.
We will cover key design issues in implementing an operating system, such as memory management, inter-core synchronization, scheduling, protection, inter-process communication, device drivers, and file systems, paying particular attention to system designs that differ from the traditional monolithic arrangements of Unix/Linux and Windows.
The goals of the course are:
- Teach general operating systems principles, using a real research operating system to illustrate them and by reading the research papers which propose some of the ideas that the particular OS builds on.
- Give a broader perspective on operating systems which do not look like Linux, Unix, or Windows.
- Provide exposure to the practical experience of working on OS code on real "metal", including debugging, hardware access, etc. This kind of experience is hard to gain merely from reading books or papers.
- Introduce a sense of the complexity of a real OS, rather than simplified teaching OSes often used in more basic courses.
Prerequisites: This course builds on the operating systems course (CSE 451), the contents of which will be assumed knowledge. Proficiency in C programming is assumed.
Project: The course is structured around a significant project which builds up, over the course of the semester, a fairly complete operating system for NXP's ARMv8-based i.MX 8X hardware. The OS is based on the Barrelfish open-source multikernel originally developed at ETH Zurich in collaboration with Microsoft Research.
Lectures: Where practical, lectures will align with project-related material (to provide more background, knowledge, and time in completing the practical work), and also the prior research ideas that have informed the design of the aspects of Barrelfish relevant to the project milestones. They will also provide comparisons between Barrelfish and other systems such as Unix, Windows, and microkernels like L4.
Discussion: Instead of email, we will use EdStem for class and project discussion and Q&A (access via the class Canvas page).
Readings: There is no textbook for this course, as no published book covers the material in sufficient depth. Instead, reading for the course will consist of research papers and system documentation; this will be posted on Canvas in due course. Lecture notes for the course are also available and will be posted on Canvas.
Grading: Grading is based on the project. Throughout the class, students will be working in groups of 3-4 on the project. The project is sub-divided into milestones that are assigned and graded in weekly intervals (some milestones are multi-week). Each milestone will be individually graded and the final grade is a composition of these grades.
Class schedule
Resources
- AOS Book [pdf]
- AOS Styleguide [pdf]
- Arm Architecture Reference Manual - Armv8, for A-profile architecture [pdf]
- Arm Power State Coordination Interface - Platform Design Document [pdf]
- SMC Calling Convention [pdf]
- i.MX 8DualX/8DualXPlus/8QuadXPlus Applications Processor Reference Manual [pdf]
- Armv8-A Address Translation [pdf]
- SD Simplified Specification Part 1 (Physical Layer) [pdf]
- FAT32 Specification Download [external link]