System Design and Implementation


In the System Design and Implementation lecture (SDI), you will learn about recent approaches to the design and implementation of operating systems (OSes). The lecture will focus on how to structure and modularize an OS. Further, you will learn how to design the different "building blocks" and services of operating systems in the presence of modularization.

In contrast to the basic lecture on operating systems, we will talk about the environment of operating systems today -- multicore systems and ubiquituous networking -- and discuss how OS research responds to these requirements.

Microkernel-based multiserver systems will be one of the fundamental case studies throughout the lecture. Based on their example, we will discuss both advantages (improved protection and stability, better customizability, etc.) and disadvantages (e.g., overhead caused by explicit communication) of the explicit modularization of that OS model.

In addition to the lecture, we offer the SDI lab where small teams (2-4) of students will gain practical experience in the design and implementation of a large system software project within a team. Each team will focus on one component of a multiserver system and either design and implement that component or improve an existing implementation. If you want to participate in the SDI lab, you have to sign up on our web site.


You attended the lecture System Architecture; so you should have a good understanding of OS concepts. Having attended the lecture Microkernel Construction is certainly helpful, but the initial L4 crash course will be enough to get you started. However, attending Microkernel Construction is recommended to understand the details of in-kernel Whys and Hows. During the course you will write C or C++ code. Basic programming skills in C, C++, or Java are sufficient as prerequisite, however.