To provide students with a deep understanding of modern operating system
technology, implementation techniques and research issues.
Provide in-depth coverage of modern operating system issues, such as:
- microkernels and IPC,
- user-level OS servers,
- design and implementation of microkernel-based systems,
- kernel design and implementation,
- user-level page-fault handlers,
- device drivers,
- scheduling for real-time,
- symmetric multiprocessing,
- effects and control of hardware caches,
- alternative protection and security models,
- alternative OS designs (persistent systems, single-address-space
operating systems) and resulting issues (such as dealing with large,
sparse address spaces).
- Exposing students to current operating systems research and modern
- Providing experience in the construction of a small and efficient
operating system from a minimal microkernel.
- Providing experience in low-level systems programming in a
realistic development environment.
- Providing experience in reading and evaluating research papers.
- Encouraging interest in further study and research in the area.
- Working in an environment and on problems similar to a
professional OS or embedded systems implementor in industry.
Building a whole system almost from the hardware up.
lowest-level OS code and its interaction with hardware.
- Students are expected to be highly competent in programming in
C. Students not familiar with C will be expected to learn it on their
- Students are expected to be familiar with assembly
language programming. Assignments/labs 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 be use a MIPS R4600-based 64-bit computer.
- a credit grade in COMP3231 or COMP9201 Operating
- COMP9211 or COMP3211 Computer
A rough outline of the lectures is (subject to change):
- Introduction and Overview
- Introduction to the L4 Microkernel
L4 system calls and usage (to get you started on the project)
- A close look at selected OS issues
- Protection, capabilities
- Caching, and its implications for OS
- Page tables for wide address spaces
- SMP issues: locking, cache coherence, scheduling
- File systems
- Microkernels and User-level Servers
motivation for microkernel systems, Hydra, Mach, discussion,
experiences; second-generation microkernel systems, L4, Exokernel, Spin;
design and implementation of microkernel-based systems, including
user-level page fault handling and device drivers
- Microkernel Implementation
A detailed look at the internals of a real microkernel (L4Ka::Pistachio).
- Other topics
Candidates are: Embedded systems projects in NICTA, Gelato@UNSW
projects, UNSW Mungi project
Lab work forms a major component of the course. This will be carried out
in the Advanced Systems Teaching (ASysT)
Lab, commencing from Week 1. The lab features locally developed
U4600 computers based on a 64-bit MIPS R4600 processor. These
nodes are set up to run L4Ka::Pistachio,
which has been ported to the MIPS architecture by Carl van Schaik at
UNSW. The U4600's are connected to Linux hosts running an L4 development
environment. OS code is developed and compiled there and then downloaded
to the 64-bit systems, which present a minimum environment ideally
suited for low-level systems programming exercises. Documentation as
well as sample code will be provided.
Students will also be able to run their system on simulated MIPS
hardware, thanks to the locally developed CPU simulator Sulima. Sulima allows you to do most
development and debugging outside the lab (and is certainly highly
recommended due to the faster debugging cycle). However, any project
demonstrations must be done on actual hardware, not on a
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.
Details will be published in due course. Milestones must be demonstrated
at the scheduled demonstration time in the week in which they are
due. 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. Cheating will be severely dealt with.
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 2003 Exam for an example.
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 unlikely that a
supplementary will be awarded to students who have actually sat the
proper exam. Make up your mind whether or not you are sick
before attempting the exam!
Supplementary exams will have the same format as the normal exam, and
will be probably be on the day after the written supplementary exams held for
Project work counts for 65%, the exam for 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.
There is no textbook for this course, as no published book covers the
material in sufficient depth. Plenty of handouts will be provided.
- A. Tannenbaum, A. Woodhull: Operating Systems: Design and
Implementation, 2nd ed. 1997, Prentice Hall.
- Curt Schimmel: UNIX Systems for Modern Architectures, 1994, Addison
- M. Beck, H. Böhme, M. Dziadzka, U. Kunitz, R. Magnus, and
D. Verworner: Linux Kernel Internals, 1997, Addison
- Marshall K. McKusik, Keith Bostic, Michael J. Karels, John
S. Quarterman: The Design and Implementation of the 4.4BSD Operating
System, 1996, Addison Wesley.
- Helen Custer: Inside Windows NT, 1993, Microsoft
2nd version authored by David A. Solomon,
(1998), 3rd version authored by David A. Solomon and Mark
Russinovich titled ``Inside Windows-2000'' (2000).
- Helen Custer: Inside the Windows NT File System, 1994, Microsoft
- Scott Maxwell: Linux Core Kernel Commentary, 1999, CoriolisOpen Press.
- John Lions: Commentary on UNIX 6th edition with source
code, 1996, Peer-to-Peer Communications. (The famous Lions Book,
identical to the 1977 UNSW TR.)
- Selected research papers as referred to in class.
- L4 source code in ~cs9242/l4/.
- L4 Kernel Reference Manual, Version X.2. Hardcopies will be handed
out to students.
- L4 User Manual, API Version X.2 Hardcopies will be handed
out to students.
- MIPS R4700 Reference. Available from the class web site.
- MIPS R4000 User Manual. Available from the class web site.
Lecture notes and other information can be
found under the course's WWW home page at URL
Lecturer-in-charge is Gernot Heiser. He and Kevin Elphinstone will
deliver most of the lectures.
Some lectures may be delivered by visitors or research students.
25 Jul 2003.