For a long time, the most relevant resources to learn about operating systems were the early papers of Fernando Corbató et al.; the book “Operating System Principles” by Per Brinch Hansen; and finally “A Commentary on the Sixth Edition UNIX Operating System” by John Lions, published in 1976. This book is today available on the Internet Archive, with source code, and also as a website.
Sadly, following the release of Unix System 7, AT&T legally blocked teachers from using this book until 1996. This situation forced Andrew Tanenbaum, professor at the Vrije Universiteit Amsterdam to write his own Unix-like operating system, Minix, and its accompanying book, which has now become a classic in its own right.
Legend says that Linus Torvalds would later use Minix as a basis, inspiration, and even as a platform, to start the Linux project in 1991. Minix these days has become one of the most widely deployed operating systems in the world thanks to its inclusion into every motherboard shipped by Intel, as the operating system powering the “Intel ME” unit, something not even Tanenbaum was aware of. Oops.
A fantastic resource to learn about operating systems nowadays is the subject of this month’s Library issue: the “Operating System Concepts” textbook, written by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne, first published in 1983, and (at the time of this article) in its 10th edition, published in 2018. Professor Silberschatz is the Sidney J. Weinberg Professor of Computer Science at Yale University, and recipient of the 2002 Taylor L. Booth Award of the IEEE Computer Society. He has also written articles about technology for various newspapers and publications worldwide.
The textbook is usually referred to as the “Dinosaur Book”, as explained by co-author Peter Galvin:
The general name for the series is “the dinosaur book” although the covers have included non-dinos as well. As far as we know this series is the best-selling operating system textbook.
The critters on the cover indicate both the evolution of operating systems and the ongoing “OS wars”.
(For more information about the aftermath of those “OS wars” of yesteryear, read this month’s main article.)
Indeed, the cover of the first edition has animals labeled with the following operating system names (ordered by animal size): OS/360, SCOPE, Multics, OS/MVS, VMS, Unix, and CP/M. These labels stayed in the second edition, and
The Third Edition updated the creatures and showed the following operating systems on the cover: OS/MVS, Multics, VMS, UNIX, OS/2, Mach, and MS-DOS. For the Fourth Edition we decided to stop labeling the animals on the cover.
This book has become a classic in Computer Science curricula, and this author used the 7th edition (shown on the cover photo of this article) during his studies.
For the many self-taught programmers reading this magazine who might be interested in learning more about operating systems, I can wholeheartedly recommend this book, in any of its editions. The one I have in my hands (released in 2005) features special chapters about Windows XP, Linux, and even “multimedia”–a term still en vogue at the turn of the century. This, in turn, explains the drawing on the cover, where the little dinosaurs are enjoying the new world of handheld devices (PDAs, laptops, and music players) that marked the beginning of the 21st century.
A quick glance at the table of contents of the current edition shows the usual suspect chapters: system calls, process scheduling, concurrency, memory allocation, virtual memory, file systems, security, networking, and more. All concepts are clearly explained with diagrams and figures, with references to many real-world implementations in various operating systems.
“Operating System Concepts” is targeted to college-level undergraduates, and provides a solid foundation to understand how modern computers work. Complement this book with the lecture of the classics mentioned at the beginning of this article, plus a few more: either “The Linux Programming Interface” by Michael Kerrisk (if you are interested in Linux) or “The Old New Thing” by Raymond Chen (if you are interested in learning more about Windows.)
Finally, get your hands dirty and either follow Mike Saunders’ instructions to write your own operating system in NASM, or follow Philipp Oppermann’s and write one in Rust. You might also want to check the source code of both lilith (in Crystal) and tilck (in C) to help you along the way. This quintessential, perennial knowledge will help you build better software, no matter which operating system you build it for (and I am not the only one who thinks that.)
Cover photo by the author.