Course Introduction

To provide students with a deep understanding of modern operating
system technology, implementation techniques and research issues.

Our approach to achieving this goal is to expose students to advanced
topics in operating systems via interactive lectures that examine
specialist topics, and selected research papers and their
results. Further, students undertake a substantial practical project
where they apply their skills to advanced operating system
construction. Together, both components give students an advanced
theoretical foundation in operating systems, that is re-enforced
through practical application.

This course builds upon the basic operating systems course
(COMP3231/9201/3891/9283), which provides an understanding of the
underlying operating systems which students have implicitly relied
upon in developing applications in foundational courses within
Computer Science and Engineering, and will rely on in their future
careers when developing systems and applications. Advanced operating
systems enables students to specialise in operating systems, giving
them the background to become operating systems or embedded-systems
developers or researchers, either
themselves or as part of a team.

This course contributes to the the students graduate attributes in
the following ways:

The challenging project enables student to further develop the
analytical skills required to manage system complexity, creative
problem solving, and engages student in collaborative and in-depth
application of their operating system skills.

Interactive examination during lectures of relevant research in
the field develops critical thinking, and engages students in examples
of scholarly enquiry.

The project also requires students to develop their skills in
locating the relevant information required complete the project,
evaluate the information's relevance to the project, and when
required, digest and apply the information, and self-evaluate their
own understanding of the material.

Students are expected to be highly competent in programming in
C. Students not familiar with C will be expected to learn it on their
own (very quickly!)

Students are expected to be familiar with assembly
language programming. The project will not require assembly
programming, but for debugging and understanding of calling conventions
this knowledge is required. Furthermore, the lectures will examine
low-level kernel code, some of which is written in assembler.

Students are expected to be familiar with basic computer architecture
concepts and the main characteristics of a modern RISC processor. The
project will use a SABRE Lite iMX.6-based computer (ARM v7 ISA).

We're sensible folk and don't want to exclude smart and hard-working
students lightly. Hence, if you fail to satisfy the above
prerequisites, but still feel you want to take the course, you're up
to it and you're willing to work hard to make up for any missing
prerequisites then talk to the lecturers!

Other topics (as time allows)

Lab work forms a major component of the course. This will be carried
out using a take-home hardware kit that can be used in any of the
School's Linux labs, or on students own machines.

Labs commence right after the lecture in Week 1. Students will be provided with a
Sabre
Lite
which have a Quad-Core ARM Cortex A9 processor.

The Sabre Lites run
seL4, a third-generation microkernel developed from scratch
by Kevin
Elphinstone and his team, part of the
Trustworthy Systems
(formerly ERTOS) group
at NICTA. The kernel is the latest
in a series of L4 microkernels designed
at Karlsruhe, UNSW and NICTA, and has
some revolutionary properties which will be disused in class. Most
famously, it is the world's first (and so far only) OS kernel with a
formal proof
of functional correctness; this was done by the ERTOS
team under the lead
of Gerwin Klein.
The ERTOS engineers and research students are mostly alumni of this
course.

The Sabre Lites are connected to Linux hosts running an L4 development
environment. OS code is developed and compiled there and then
downloaded to the Sabre Lite, which present a minimum environment ideally
suited for low-level systems programming exercises. Documentation as
well as sample code will be provided.

After some ``warm-up'' experiments students will work in groups of two
on a project, which constructs various OS components, with the
ultimate aim of producing a small (and very efficient) operating
system. A series of milestones are defined to aid the implementation.

Milestones and the final project will be demonstrated to School staff
and the code submitted for assessment. Complete system documentation
will form the final deliverable.

Milestones must be demonstrated at the scheduled demonstration time in
the week in which they are due. Both partners must be present and
participate in milestone demonstrations. Milestone deadlines missed by
no more than one week will cause a loss of 25% of the mark for that
particular milestone, if missed by more that one week the penalty is
50%, up to a maximum of two weeks.
No submissions/demos will be accepted later than two weeks after
the deadline. Furthermore, students will not be allowed
to continue with the course unless they have given a satisfactory demonstration
of the first two milestones (m0 and
m1) within one week of the respective due date!

Alternative projects may be given to some students by special
arrangements. The main criteria for this is that the project is at
least as challenging as the standard project, and that I am convinced
that the student(s) are up to it.

There will be a final exam, in the form of a 24h
take-home. Students will be given one day to read and analyse
two recent research papers relevant to the material covered in
the course, and submit a critical report on it. See the previous years' exams for examples.

Supplementary exams will only be awarded in well justified cases, in
accordance with School policy, not as a second chance for
poorly performing students. In particular, it is highly unlikely that
a supplementary will be awarded to students who have actually
submitted an exam. Make up your mind whether or not you are sick
before submitting!

Supplementary exams will either have the same format as the normal
exam, or, at the discretion of the LiC, will be orals. They
will probably be held on the day after the written supplementary exams
held for other courses.

The project is the heart of this course, which is all about learning
about OS design and implementation “hands on”. It will
dominate the workload for the course, and will develop valuable and
highly-sought-after systems skills in students. Consequently, the
project is the dominating assessment component. The project work
counts for 65% of the final mark. Students must
contribute equally to the project work. In the case of
significantly unequal contributions, the marks of the lesser
contributor will be reduced.

The exam contributes 35% of the final mark. A minimum mark of 14
(i.e., 40% of the maximum) is required in the exam to receive a
passing grade. This is to ensure that no-one can pass the course
on project work alone.

We conduct a detailled on-line survey at the end of each session, in
order to identify any shortcomings of the course. This has in the
past helped to maintain and improve the quality of the course.

In order to emphasise that we take student comments very seriously, we
publish all surveys uncensored, with the
possible exception of removing statements other people could find
upsetting (the LiC isn't easily insulted ;-). In some cases they are
accompanied by comments by the LiC.

Lecturer-in-charge is
Kevin
Elphinstone. He and
Gernot Heiser will
deliver most of the lectures.
Some lectures will be delivered by other local researchers, visitors or research students.
Last modified:
27 Jul 2014.