Advanced Operating Systems - Fall 2017


  • 2017-09-22: Added tips and tricks for setting up Ubuntu
  • 2017-09-22: Added instructions for getting project handout on website
  • 2017-09-21: Updated Project submission guidelines for milestone 0
  • 2017-09-21: Book chapters 1 - 4 available (see Resources)


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) and Operating Systems and Networking (252-0062-00), the contents of which will be assumed knowledge. Proficiency in C programming is assumed.


Week Lecture Project Handout
 1  Introduction  Familiarization



The AOS Book (nethz login necessary)

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 the department's 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 grade will only be based on the project.

Course Hours

Lecture: Thursdays 10:00 to 12:00, CAB G 59
Consultations (optional): TBA
Project marking:

Fridays 10:00 to 12:00, CAB H 57
Please make sure you are ready to demonstrate your milestone by 10:15 at the latest, as we will need the full session to mark everyone.




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