Advanced Operating Systems - Fall 2017

News

  • 2017-12-08: FAT32 Specification now available (Resources)
  • 2017-11-23: Draft book chapters 9 - 14 and week 10 handout are available.
  • 2017-11-09: Book chapter 8 and week 8 handout are available.
  • 2017-11-09: Updated grading schedule as announced in lecture.
  • 2017-11-07: Book chapter 7: now with background sections.
  • 2017-11-02: Book chapter 7: project instructions are available, background sections coming soon.
  • 2017-10-26: Small update to book chapter 6.
  • 2017-10-19: Book chapter 6 is now available.
  • 2017-10-13: Added a paragraph in section 4.8 which clarifies the procedure of adding a new binary to the boot image.
  • 2017-10-12: There is a small bugfix handout in branch week4 in the handout repository on GitLab. Many thanks to group C for the bug report.
  • 2017-10-04: Uploaded new book PDF which includes chapter 5.
  • 2017-10-03: Added ARMv7-AR reference manual (see Resources).
  • 2017-09-28: New book PDF with minor corrections in chapters 1 - 4.
  • 2017-09-27: Added project milestones and associated due dates to schedule
  • 2017-09-26: Directly link AOS book from course webpage (see Resources)
  • 2017-09-26: Make OMAP4460 TRM and PandaboardES TRM available (see Resources)
  • 2017-09-26: You will now need to login using your ETH account to access the slides and other reference materials.
  • 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)

Overview

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.


 

Schedule

Week Lecture Project work due (by book chapter) Due date*
 1  Introduction    -
 2    Chapter 2: Getting started  29. Sept
 3    Chapter 3: Capabilities  6. Oct
 4    -  -
 5    Chapter 4: Process Creation  20. Oct
 6    Chapter 5: Message Passing  27. Oct
 7    Chapter 6: Self-Paging  3. Nov

 8

   -  -
 9    Chapter 7: Booting and using the second core  19. Nov
 10    Chapter 8: Message Passing between cores  24. Nov
 11    -  -
 12    -  -
 13    -  -
 14    Chapters 9-13: Demo, integrated code, and final report

 22. Dec

 Demo TBA

 

 

*Project due date and time

Each project work package ("milestone") is due at the beginning of the marking session on the Friday indicated in the table above. 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 Friday, 29th of September 2017, 23:59 local time.


Resources

The AOS Book [pdf]. We will update the linked PDF throughout the course when additional chapters are ready, 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]

Questions about the course or the project work can be directed to aos-support@lists.inf.ethz.ch.

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 git@gitlab.inf.ethz.ch:COURSE-AOS/handout.git

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 git@gitlab.inf.ethz.ch:COURSE-AOS/groupX.git

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 gitlab.inf.ethz.ch. The repository URLs will follow the format https://gitlab.inf.ethz.ch/COURSE-AOS/groupx, 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 aos-support@lists.inf.ethz.ch or in the consultation session, so we can give you access to a group repository.
  • Each project milestone must be submitted by email to aos-support@lists.inf.ethz.ch 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.

Examination

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.

Staff

 


Acknowledgments

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