Two operating systems classes are most relevant to my work, and I teach both of them. The first, CS 5460/6460, is an introductory class built around xv6, a small re-implementation of an early UNIX kernel that is simple enough to read and understand in full. The second, CS 5465/6465, is an advanced class centered around virtualization: students learn how modern kernels and hypervisors (Linux, Xen, KVM) work, and build their own hypervisor for xv6 using hardware virtualization support (Intel VT-x). Along the way they also work on fast device interfaces, container isolation, unikernels, and fast inter-process communication.

Courses