This course is intended to give students a thorough understanding of design and implementation issues for modern multicore 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 course is structured around a significant project which builds up, over the course of the semester, a fairly complete, full-featured multicore operating system for the ARM-based PandaBoard hardware. The OS is based on the Barrelfish open-source multikernel developed at ETHZ in collaboration with Microsoft Research.
The goals of the course are:
This course builds on the ETHZ undergraduate courses in Computer Architecture and Systems Programming (252-0061-00), the contents of which will be assumed knowledge. Proficiency in C programming is assumed.
Lectures will focus on 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.
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 this web site in due course.
Week | Lecture | Project work due (by book chapter) | Due date* |
---|---|---|---|
1 | Introduction | - | |
2 | Chapter 2: Getting started | 27th Feb | |
3 | - | - | |
4 | Chapter 3: Capabilities | 12th Mar | |
5 | Chapter 4: Process Creation | 19th Mar | |
6 | Self-Paging (Recording | Notes) | Chapter 5: Message Passing | 26th Mar |
7 | Q&A Session (Recording) | - | - |
8 |
Chapter 6: Self-Paging | 8th Apr | |
9 | Caches (Recording) | No classes | |
10 | UMP (Recording | Slides) | Chapter 7: Booting and using the 2nd core | 23rd Apr |
11 | Chapter 8: Message Passing between cores | 29th April | |
12 | Scheduling (Recording) | - | - |
13 | Q&A Session (Recording) | - |
- |
14 | - |
- |
|
15 | Demo Session (Recording) | Chapters 9-13: Demo, integrated code, final report | 29th May |
Each project work package ("milestone") is due at 23:59 local time on the date indicated in the table above. The presentations are on the following morning. For the code submissions, we will accept git commits (see below for details) with commit date and time before 23:59 local time on the due date. So for milestone 0, we will accept commits created before Thursday, 27th of March 2019, 23:59 local time. The milestones in weeks 8 and 11 are due on a Wednesday and will be graded on a Thursday as the Fridays in those weeks are Good Friday and Labour Day respectively.
The AOS Book [pdf]. We will update the linked PDF throughout the course, so check back regularly if you choose to download and/or print the book.
The i.MX 8QXP Applications Processor Reference [pdf]
The Colibri iMX8X Module Datasheet [pdf]
The Aster Carrier Board Datasheet [pdf]
The ARMv8 Architecture Reference Manual [pdf]
SD Host Controller Specification [pdf]
FAT32 Specification [pdf]
Use your nethz credentials to access the protected resources.
Questions of general concern about the course or the project work can be directed to aos-students@lists.inf.ethz.ch (goes to all students and staff of the course). Administrative questions can be sent to aos-support@lists.inf.ethz.ch (course staff only). There is now also a Moodle Forum.
First use git to clone the handout repository that is available on D-INFK GitLab. If you do not have access to this repository, send us an email giving your nethz login, so we can give you read access to the repository.
$ git clone git@gitlab.inf.ethz.ch:COURSE-AOS2020/hand-out.git
To add your hand-in repository (see Project submission for details on how to get a group repository), you can tell git to use your group repository as the default remote ("origin") as follows:
$ cd /path/to/aos/code
$ git remote rename origin handout
$ git remote add origin git@gitlab.inf.ethz.ch:COURSE-AOS2020
/X-hand-in.git
If you are using Ubuntu, you can make your life easier by installing custom udev rules to give unprivileged users access to the Colibri board's USB ports. Copy the following into /etc/udev/rules.d/60-colibri.rules
# USB OTG
SUBSYSTEM=="usb", ATTR{idVendor}=="0525", ATTR{idProduct}=="4026", MODE="0666"
# Serial USB device
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", MODE="0666"
# Serial TTY device
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
The final assessment will be a combination of project milestone grades, final project report grade, and grades derived from tests run on the final code submission.
Lecture: | Thursdays |
13:00 to 15:00, CAB G 51 |
Project marking/consultation: |
Fridays |
10:00 to 12:00, CAB H 56 10:00 to 12:00, CAB H 57 |
To help us load-balance questions, send all questions to aos-support@lists.inf.ethz.ch or if they are of general concern to aos-students@lists.inf.ethz.ch.
We thank Toradex and ARM for helping us to realize this course.