Advanced Operating Systems - Spring 2019


  • 2019-04-29: We updated the book with the grading scheme and statistics (see Resources).
  • 2019-04-29: We updated the book with content for the report chapter (see Resources).
  • 2019-04-26: We fixed a bug in the code handout (see GitLab).
  • 2019-04-01: We fixed a bug in the code handout (see GitLab).
  • 2019-03-14: We fixed a bug in the code handout (see GitLab).
  • 2019-03-06: We fixed a bug in the handout for milestone 1 (see GitLab).
  • 2019-03-01: The handouts for the remaining milestones are out (see GitLab).
  • 2019-03-01: The schedule for the rest of the semester is online. Note that from now on milestones are due Thursdays, 23:59, except for the one before Good Friday which is due on a Wednesday, 23:59. (see Schedule)
  • 2019-02-25: Updated the book with the current lab machine configuration (see Resources)
  • 2019-02-21: The slides for week 1 are online (see Schedule)
  • 2019-02-21: The handout for milestone 0 is out (see GitLab)
  • 2019-02-21: The book and other useful resources are available now (see Resources)


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:

  • 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.  

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  1st Mar
 3    Chapter 3: Capabilities  7th Mar
 4    -  -
 5    Chapter 4: Process Creation  21st Mar
 6    Chapter 5: Message Passing  28th Mar
 7    Chapter 6: Self-Paging  4th Apr


   -  -
 9    Chapter 7: Booting and using the 2nd core  17th Apr
 10    No classes  
 11    Chapter 8: Message Passing between cores  2nd May
 12    -  -
 13    -


 14    -


 15   Chapters 9-13: Demo, integrated code, final report  30th May


*Project due date and time

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 1, we will accept commits created before Thursday, 7th of March 2019, 23:59 local time. The milestone in week 9 is due on a Wednesday and will be graded on a Thursday as the Friday in that week is Good Friday.


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 OMAP4460 Reference Manual [pdf]

The PandaboardES Reference Manual [pdf]

The ARMv7-AR Architecture Reference Manual [pdf]

FAT32 Specification [pdf]

Use your nethz credentials to access the protected resources.

Questions about the course or the project work can be directed to

Getting the project handout

First use git to clone the handout repository that is available on ETH 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

To add your group 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

Tips and tricks for Ubuntu

If you are using Ubuntu, you can make your life easier by doing the following configuration changes:

1. Add your user to the 'dialout' group. With this change you can use picocom without 'sudo'.

$ sudo usermod -aG dialout <your-username>

2. Install custom udev rules to give unprivileged users access to the Pandaboard usb port. Copy the following into /etc/udev/rules.d/60-pandaboard.rules

# Pandaboard ES
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="d010", MODE:="0666"

Project submission

  • This year, AOS projects will be submitted using git.
  • Each group will be provided a group git repository on The repository URLs will follow the format, where 'x' will be replaced by the group's group letter as assigned at sign-up.
    Once you have formed a group, inform us by email to or in the consultation session, so we can give you access to a group repository.
  • Each project milestone must be submitted by email to and must include the full git SHA1 hash of the commit that constitutes the milestone submission. All submission commits must be reachable from the master branch. Git tags or branches will not be accepted as milestone submissions. Make sure to clearly indicate the group for the milestone submissions.
    A commit's full git SHA1 hash can be generated using the command git rev-parse <rev>, where <rev> can be any of the options referring to a commit as discussed in the git documentation.
    Alternatively, most GUI git clients will show a commit's SHA1 hash somewhere. On GitLab there's an icon labelled "Copy commit SHA to clipboard" which also produces the right result.
  • Milestone submissions with a git commit date (not to be confused with author date) made after a milestone deadline will be marked late. The penalties for late submissions are: 25% reduction in points for one week late, 50% reduction in points for two weeks late. Submissions more than two weeks late will not be accepted.
  • There must be a single submission per milestone and group (except for milestone 0, see below). In particular, we will not accept multiple submissions for the final milestone where each group member will work on a different project.
  • For milestone 0 each group member has to publish their submission commit on a branch called "milestone0_<nethzid>" in the group repository. <nethzid> must be the group member's nethz login. All other rules apply (late penalty, SHA1, ...).
  • The contents of the group repository must be self-contained, and must be buildable as described in section 3.6 of the course book.
  • The group will be graded by the code found in the git commit identified by the SHA1 commit hash provided as the milestone submission for the final milestone plus the written report which is to be handed in as PDF via email together with the SHA1 hash for the last milestone.
  • Attempting to edit git history, or otherwise circumventing the submission process is misconduct and will be penalised.


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. 

Course Hours

Lecture: Thursdays 13:00 to 15:00, CAB G 51
Consultations (optional):  
Project marking:

Fridays 10:00 to 12:00, CAB H 56

             10:00 to 12:00, CAB H 57




We thank Texas Instruments and ARM for helping us to realize this course.