George Vernon

OSTEP book review

I’ve been operating a sort of time-sharing scheme with respect to my reading material, which means throughput is pretty high, but time to completion is poor. The result is that I’ve finished reading Operating Systems: Three Easy Pieces after a very long time. The book is free online and I very highly recommend it.

The title is a reference to Feynman’s Six Easy Pieces, but the authors’ point out that computer science is only half as difficult as physics, and so there are only three easy pieces: virtualisation, concurrency, and persistence.

Linux is used as a reference kernel, and code examples are Linux/xv6 in flavor. It’s been a joy to see what’s going on behind the magic curtain and understand how the computer works from a low level. (The danger is that one might then want to understand computer architecture. How does the electricity do all that, anyway? And so on…)

The book begins by describing virtualisation of the CPU, and the implementation of a process. Filesystems come at the end — this was one of my favorite parts, and unexpectedly so, because I thought filesystems would be mundane. I found that problems which occur in memory management reoccur in the virtual filesystem, and have similar solutions. It caught my interest enough to want to learn filesystems further, so I obtained a dead tree copy of “Practical File System Design with the Be File System”. I’m really looking forward to going through that and understanding a filesystem implementation in greater detail.

Right now, I’m tackling Maurice Bach’s Design and Implementation of the Unix Operating System, which goes in the opposite direction – it begins with an overview of the virtual filesystem before talking about process management. Bach’s book is much heavier on the implementation details in comparison with OSTEP, and less conscientious about explaning concepts or assuming knowledge, so I’m finding that it makes a much better second book.