Catalog description: Design and implementation of operating systems, and their use as a foundation for systems programming. Topics include virtual memory; file systems; threads; context switches; kernels; interrupts; system calls; interprocess communication; coordination, and interaction between software and hardware. A multi-processor operating system for RISC-V, xv6, is used to illustrate these topics. Individual laboratory assignments involve extending the xv6 operating system, for example to support sophisticated virtual memory features and network protocols
You may wonder why we are studying xv6, an operating system that resembles Unix v6, instead of the latest and greatest version of Linux, Windows, or BSD Unix. xv6 is big enough to illustrate the basic design and implementation ideas in operating systems. On the other hand, xv6 is far smaller than any modern production O/S, and correspondingly easier to understand. xv6 has a structure similar to many modern operating systems; once you've explored xv6 you will find that much is familiar inside kernels such as Linux.
6.S081/6.828 would not exist today had it not been for a wonderful set of past TAs (Josh Cates, Austin Clements, Russ Cox, Cody Cutler, Bryan Ford, Max Krohn, and Emil Sit). They made this class a reality. Collectively we dedicate 6.828 to the memory of Josh Cates; we hope that many students will be inspired by Josh's enthusiasm for operating systems.
We are also grateful to the students and teaching staff at MIT (including SIPB) and other schools who have adopted xv6 or JOS for their many contributions.
Questions or comments regarding 6.828? Send e-mail to the TAs at firstname.lastname@example.org.