600.439: Microkernel Architecture and Design
An in-depth look at architecural and design issues in modern microkernels.
600.318/418: Operating Systems (waived for 2007)
or permission of the instructor.
Note that 2007 is the final year this course will be offered by Dr. Shapiro.
Microkernels are commonly used in embedded applications, and have been suggested as a way to better structure general-purpose operating systems. The idea is simple: most of the function of a classical operating system can (and arguably should) be implemented as applications. The practice is quite another matter. Finding a microkernel architecture that effectively supports high performance, robust systems has proven to be a very elusive challenge.
This course examines operating system internals by using an existing, high-performance microkernel as a guide. We start from the moment the machine is powered on and look at each action that the microkernel takes as it starts up. We follow this path until we have worked our way through the first interprocess communication, and then look at how drivers and system structure is initialized. As we work our way through the microkernel's initialization and startup, we examine what is happening at each step, what options exist for the design at that point, and why the particular choice of the actual implementation was made. We will also look at architectural tradeoffs in the design of the operating system.
The end result is a very different look at operating systems than the one presented in OS textbooks. Operating system textbooks are more often driven by considerations of pedagogy than by well-motivated requirements or design principles. A microkernel gives us a unique opportunity to walk through the entire system structure as a manageable entity.
This course is primarily an upper-level discussion course, but it will include two projects: implementation of an application on top of the microkernel system and implementation of a device driver.
There is no textbook for this course.
Selected papers from the literature will be assigned each week.
The Coyotos Microkernel Specification will be a key reference.
The Pentium Processor Manuals will come to be your favorite bedtime reading! AMD has a corresponding set of manuals. Some people feel that they are more readable and better organized than the Intel manuals. It is also possible to order a CD with these documents.
Because the Intel site can be overwhelmed, I have made copies of the Intel documents available locally:
IA-32 Intel® Architecture Software Developer's
Manual, Volume 1: Basic Architecture
IA-32 Intel® Architecture Software Developer's Manual, Volume 2A: Instruction Set Reference, A-M
IA-32 Intel® Architecture Software Developer's Manual, Volume 2B: Instruction Set Reference, N-Z
IA-32 Intel® Architecture Software Developer's Manual, Volume 3: System Programming Guide
IA-32 Intel® Architecture Optimization Reference Manual
When reading these manuals, you should generally ignore discussion of 64-bit mode and IA-32e mode.
There is a class mailing list. You can subscribe at http://www.coyotos.org/mailman/listinfo/cs439.