This course is intended to give students a thorough understanding of design and implementation issues for modern operating systems, with a particular emphasis on the challenges of modern hardware features. We will cover key design issues in implementing an operating system, such as memory management, scheduling, protection, inter-process communication, device drivers, and file systems.
Learning objective
The goals of the course are, firstly, to give students:
1. A broader perspective on OS design than that provided by knowledge of Unix or Windows, building on the material in a standard undergraduate operating systems class
2. Practical experience in dealing directly with the concurrency, resource management, and abstraction problems confronting OS designers and implementers
3. A glimpse into future directions for the evolution of OS and computer hardware design
Content
The course is based on practical implementation work, in C and assembly language, and requires solid knowledge of both. The work is mostly carried out in teams of 3-4, using real hardware, and is a mixture of team milestones and individual projects which fit together into a complete system at the end. Emphasis is also placed on a final report which details the complete finished artifact, evaluates its performance, and discusses the choices the team made while building it.
Prerequisites / Notice
The course is based around a milestone-oriented project, where students work in small groups to implement major components of a microkernel-based operating system. The final assessment will be a combination grades awarded for milestones during the course of the project, a final written report on the work, and a set of test cases run on the final code.
Performance assessment
Performance assessment information (valid until the course unit is held again)
Repetition only possible after re-enrolling for the course unit.
Additional information on mode of examination
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.