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.
Lernziel
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
Inhalt
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.
Voraussetzungen / Besonderes
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.
Leistungskontrolle
Information zur Leistungskontrolle (gültig bis die Lerneinheit neu gelesen wird)
Repetition nur nach erneuter Belegung der Lerneinheit möglich.
Zusatzinformation zum Prüfungsmodus
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.