techInterview Discussion

A part of answers to technical interview questions.

Your host: Michael Pryor

Who can recommend a good operating system book?

Need to survive through the tough interviews. What is the best operating system book for the preparation?

Wednesday, December 31, 2008
Tanenbaum is a gem. Just be aware that not everyone shares his fetish for microkernels.
d Send private email
Wednesday, December 31, 2008
Operating Systems: Design & Implementation from Andrew S. Tannenbaum should be your first option. There is a reading list in the last chapter of this book for those who want to study operating systems further.
Rafa Vargas Send private email
Thursday, January 01, 2009
You may also refer to Uresh Vahalia's Unix Internals...
It is a good reference book on many different unix implementations...and last but not the least linux kernel sources to see a real implementation...
Friday, January 02, 2009
I'll presume in my advice you're prepping for forthcoming interviews and not engaged in deep OS study.  I should also note my advice leans more towards UNIX than Windows - but UNIX is the best OS type to learn operating systems from - it has MINIX, an OS designed primarily to teach students how OS's work, and it also has Linux, which is open in a variety of ways, not just the source, but the mailing lists.  And even the version control repositories - not only in a full read-only sense, but in a commit sense, if you write a change that is good enough to get in the kernel.

In terms of reading order, the first book you should read is Tanenbaum and Woodhull's Operating Systems and Design.  This is a good first book that explains a POSIX (UNIX standard) operating system.  If you're in a hurry prepping for an interview in a few weeks, you can skip some parts and come back to them later, like the history of how the semaphore was created.

The second book to read is Linux Kernel Development by Robert Love.  Now in its second edition, with a third edition coming out in a few months.  Go to and pull down the 2.6 kernel version he discusses in the book so you can go over the code when you feel you should.  If you have a Windows desktop, download and burn an Ubuntu LiveCD so that you can have a look at a slightly stunted (since it is booting off a LiveCD) but still functional Linux operating system.

I have only perused the Linux Device Driver books, but they are supposed to be good.  Most people say to read Love's book first though.  A mantra among a lot of kernel developers is that the way to learn the kernel is to start hacking at it.  The method would be read Tanenbaum's book (skipping parts if you're interviewing soon), read Love's book, then pick up one of the device driver books and start hacking on an existing device driver.

While you're hacking a device driver, you can read Understanding the Linux Kernel, which goes over the various Linux kernel sub-systems in depth.

There are books on Linux embedded systems as well, but I have little interest in them and know little about them.

If you know your interview will pertain to Solaris, Solaris Internals is the best book on the Solaris kernel.  You can download OpenSolaris and look at that while reading the book.

As I said, I lean more towards UNIX, but there are books out there on Windows internals, the Windows kernel and developing drivers for Windows as well.
Dennis Send private email
Sunday, January 04, 2009

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz