Operating systems: from OSTEP to the kernel
The OS path: OSTEP as the spine, xv6 and MIT 6.1810 for building, TLPI for the Linux interface, and where kernel-adjacent engineering knowledge pays off.
Operating systems knowledge compounds better than almost anything else in the stack: schedulers, virtual memory, and file systems reappear as thread pools, caches, and storage engines in every system you’ll ever build. Two projects on this site — a paged KV cache and a continuous-batching scheduler — are OS ideas transplanted into LLM serving, which is exactly the point.
The spine
- Operating Systems: Three Easy Pieces (OSTEP) — Remzi and Andrea Arpaci-Dusseau. Free online, and the best-written textbook in systems: virtualization, concurrency, persistence, one honest chapter at a time with real homework. If you read one OS book, it’s this one.
- xv6 — MIT’s teaching kernel: a complete Unix-like OS in ~10k lines of readable C with a commentary book. Reading a whole kernel end to end demystifies the machine like nothing else.
- MIT 6.1810 (formerly 6.S081) — the labs that go with xv6: implement page tables, traps, copy-on-write fork, and a file system. All materials public. Doing three or four of these labs is worth more than reading any five books.
The Linux layer
- The Linux Programming Interface — Michael Kerrisk. 1,500 pages and worth its shelf space: the definitive reference on syscalls, processes, signals, and IPC, by the maintainer of the man-pages project. Use it as an encyclopedia.
- Linux Kernel Development — Robert Love. Dated in specifics, still the friendliest guided tour of how the scheduler, memory management, and interrupts hang together.
- LWN.net — where kernel development is actually documented. The kernel index and merge-window summaries are how you stay current after the books.
The practical layer
- Julia Evans’ zines and blog — strace, /proc, signals, containers — short, precise, and immediately usable. The fastest route from “book knowledge” to “debugging a live process at 2am.”
- Brendan Gregg’s site — covered fully in the systems performance post, but his Linux performance page belongs here too: the diagram of observability tools per subsystem is the map.
A path that works
OSTEP cover to cover with homework → xv6 book alongside the source → two or three 6.1810 labs → TLPI as reference forever after. Six months of evenings, and the payoff is permanent: every “mysterious” production behavior — a hung process, a memory blow-up, a slow fsync — becomes a question you know how to decompose.