
A book list for OS kernel developers and device driver writers (2006) - ingve
http://jdebp.eu./FGA/operating-system-books.html
======
bigtimber
Great snapshot for the turn of millenium. Thanks for posting and triggering
the trip down memory lane. Especially nostalgic for me personally as I was in
the midst of coding early Windows and OS/2 kernel mode device drivers for
scientific instruments, not to mention having written my own multi-tasking
RTOS for the 186, at the peak of my career at that time. I remember most of
these books, and had dog-eared copies of a few of them (particularly Baker's
Device Driver book.) The only other book on Operating Systems that I see
missing from this list, and probably would have included at the time, would be
Donovan's.

~~~
JdeBP
Dekker's and Newcomer's book was missing. I've just added it. I used it
regularly.

------
JdeBP
As I said at
[https://news.ycombinator.com/item?id=18439917](https://news.ycombinator.com/item?id=18439917)
, the list is out of date, my having gained some more books that I need to add
to it in the intervening decade and a bit, and I have still to get around to
writing the reviews. (-:

------
NotANaN
"Linux Kernel in a Nutshell" was indispensable when hacking on the kernel in
my Operating Systems class back when I was in college. It's really a shame it
hasn't been updated since 2006.

------
n_t
Here is my list, which is biased towards Linux. Almost all the books mentioned
here are dated and primarily written for 2.6 based kernels. Although many
concepts are still applicable and in certain subsystems, the code will be as
is with minor changes. So, despite them being old they are still good
references.

* Design and implementation of the FreeBSD operating system: Good and thorough deep dive in FreeBSD OS. Must have.

* FreeBSD Device Drivers: A Guide for the Intrepid: Didn't quite read it all but looks fine for FreeBSD.

* Mac OSX internals - a systems approach by Amit Singh: It was good back in days but now outdated.

* Linux Device Drivers, 3ed : Very dated but still good to grasp Linux device drivers in general. The code examples are bit silly but good enough. There are some GitHub repos which have updated code for latest kernels.

* Essential Linux Device Drivers by S Venkateswaran: It complements LDD3 book quite nicely. Has some real device examples and very exhaustive. Must have.

* Linux kernel development by Robert Love: Very good for short/quick intro. Best for preparing before interviews ;)

* Professional Linux kernel architecture by Wolfgang Mauerer: As other book, its dated but some of the explanations about interrupts, PCI, etc are good. His callgraph approach was very handy in understanding things.

* The Linux programming interface by Michael Kerrisk: Not really about OS but next thing close to it - system programming (the real system programming). Must have.

* Understanding Linux virtual memory manager by Mel Gorman: As other books, it's dated but still one of the best available to get a handle on memory management under Linux. Must have.

* Understanding the Linux kernel: Dated but still my go to book to refresh certain subsystems. Must have.

* Linux Kernel Programming by Michael Beck: Mentioned for historical reasons, else most out dated book here (2.4 based). Horrible editing and English but heck! I loved it back in the days :)

* Linux kernel networking by Rami Rosen: Never read it but quite dated.

* Understanding Linux network internals by Christian Benvenuti: A real bible of Linux networking. If nothing else, your jaw drops at the effort author made to write this book. Dated but unlike more generic Linux kernel things, network stack is still same in its core. Must have.

* The Linux kernel primer: A top-down approach for x86 and PowerPC Architecture: Very dated book but good to read from PPC perspective. Lot of things have changed since its publication.

* See MIPS Run by Dominic Sweetman: dated but gives good idea about MIPS internals and how Linux uses it.

* IA-64 Linux Kernel: Design and Implementation: Its dated not just w.r.t code but also w.r.t. hardware. Nonetheless, it gives a good insight into IA-64 architecture and Linux from non-x86 perspective.

* Definitive guide to Xen hypervisor: this is the only book on virtual machine which is not just from user perspective. While best way to learn VM is through reading architecture spec and code, this book still satisfied me w.r.t. virtual machine internals.

Every other book on amazon about Linux kernel is more or less useless. For
more academic book, "Operating systems - three easy pieces" is good.

~~~
senozhatsky
Impressive! Did you read all of them? It took me quite a while to finish
"Understanding the Linux kernel" and "Linux kernel development".

-ss

------
Annatar
Curiously, neither of these is listed:

[https://illumos.org/books/wdd/eqbqn.html](https://illumos.org/books/wdd/eqbqn.html)

[https://www.amazon.com/Solaris-Internals-OpenSolaris-
Archite...](https://www.amazon.com/Solaris-Internals-OpenSolaris-Architecture-
paperback/dp/0134185978)

~~~
bjpbakker
Since the article is from 2006 (as is the Solaris book) it's not that curious.

------
woodrowbarlow
i got my first software development job three years into my bachelor's -
nearly all of the technologies i had learned in school were for web app or
mobile app development, but my first job was writing kernel drivers for i2c
peripherals on a proprietary embedded linux SoC. at first i was very lost, but
right away i fell in love with embedded.

"linux device drivers"[1] was a godsend. this book is written with utter
clarity and very well organized. my only wish is that corbet will update it --
i am convinced that there are many embedded devices in the wild still running
the 2.6 kernel simply because this book is so damn helpful.

[1] available online for free!
[https://lwn.net/Kernel/LDD3/](https://lwn.net/Kernel/LDD3/)

------
blojayble
Any suggestions of some more recent books for someone who wants to take a dip
in this topic?

~~~
JdeBP
I have a whole load. (-:

Recent does not always equate to better, note. There are exercises in Bach
that are still relevant today. Milenkovic's 1987 book has a fairly interesting
angle on design that one does not find elsewhere.

And several comparative operating systems books do not have the wide range of
case studies that such books used to have.

That said: There are some interesting books on Solaris and MacOS internals
that I did not have (and indeed that did not exist) when that FGA was written.
The Windows NT Internals book is now two books (parts 1 and 2) and on its 7th
edition (with a slightly unfortunate cover design, per
[https://news.ycombinator.com/item?id=14321672](https://news.ycombinator.com/item?id=14321672)).
And of course there is a FreeBSD D&I book.

I've also bought an interesting _old_ book on VMS internals, since then. It
discusses ODS.

~~~
happy-dude
I love this list, and would love to see an updated list so I can add the
recommendations to my reading list :)

Have you ever checked out OSTEP: Three Easy Pieces?
([http://pages.cs.wisc.edu/~remzi/OSTEP/](http://pages.cs.wisc.edu/~remzi/OSTEP/))
I am finding that a much more accessible, organized, and easy-to-ready
resource than Tanenbaum's Modern Operating Systems. What do you think of it?

Also, I've recently got my hands on "Practical Filesystem Design," written by
the developer of the BeOS filesystem. A PDF is available here:
[http://www.nobius.org/dbg/practical-file-system-
design.pdf](http://www.nobius.org/dbg/practical-file-system-design.pdf)

~~~
JdeBP
As you can see now, I bought a copy of the BeFS book.

