Skip to content

Operating Systems

I teach from Tanenbaum (Modern OS) but supplement heavily with OSTEP — Arpaci-Dusseau, freely available, and the chapters on virtualisation read better than anything else I have found.

What changed in the last decade

Containers are not virtualisation. They are namespaces and cgroups dressed up. Every year I have to explain this and every year half the cohort forgets by the exam. The clearest demonstration is ps inside vs outside a container.

The lecture order question

Threads before processes? Tanenbaum does processes first. OSTEP does processes first. But the abstraction of a thread is simpler if you have not already built a mental model of a process. I have experimented with both orders and concluded that processes first is correct, mostly because the address space concept is foundational and lands better with the heavier introduction.

On systems programming assignments

I have moved away from xv6 for the project. It is beautiful pedagogically but the build environment fights students more than the code does. Now I use a simpler toy kernel that runs in QEMU and has the entire build in a Dockerfile. Lost some elegance, gained classroom time.