This graduate course motivates and explains basic and advanced operating system concepts using the x86 architecture as platform and the educational operating system Pintos as example. Students develop solutions to modified Pintos assignments on a virtual machine and host their software on GitHub. We thank GitHub for supporting us!
The course provides an introduction to basic and advanced operating system concepts. Covered topics are bootstrapping, interrupt handling, IO handling, device drivers, threads, scheduling, kernel space, user space, system calls, processes, virtual memory, file systems, multiprocessing, real time, and virtualization.
The course is not based on any existing textbook. Instead the course uses online material whenever appropriate and otherwise focuses on explaining the motivation, principles, and implementation of basic operating system concepts. The x86 architecture is introduced first. The Pintos source code serves as example for explaining everything up to file systems.
At the end of the course students will be able to appreciate principled engineering of operating systems but also know how to engineer one and, as a consequence, through insights in concurrency, memory, file, and system management that only an operating system can offer, become fundamentally better programmers and computer scientists.
The final exam will be on January 29, 2015.