Post

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: from OSTEP to the kernel

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.

This post is licensed under CC BY 4.0 by the author.