Here are some tips for winnowing the available books to a handful of
- Compare the book’s table of contents with the schedule
to make sure the topics mentioned in the schedule (both the section
titles and the lecture titles) appear in the table of contents.
You can also look in the index, but a topic mentioned in the
table of contents suggests more thorough coverage than a topic
mentioned only in the index (although a topic with a sizeable
index entry suggests thorough coverage too).
- Compare test questions and answers in previous versions of
the course to the material covered in the book. The book may not
lay out the answer (you are, after all, dealing with test
questions), but you should be able to piece together the questions
and answers from relevant parts of the book.
Once you have the candidate books, you can use your tastes and preferences
to pick the final one or two books for the course.
Books with call numbers can be found in the library.
Modern Operating Systems by Andrew Tanenbaum from Prentice Hall,
2008. QA 76.76 O63 T359 2008
Operating Systems, 3rd edition, by Harvey and Paul Deitel and David
Choffnes, Prentice Hall, 2004. QA76.76 O63 D46 2004
If Stallings is a machine, the Deitels are a factory.
Operating Systems: A Modern Perspective, 2nd edition, by Gary Nutt
from Addison Wesley, 2002. QA76.76.O63 N89 2002
The first edition of this book was good; later editions get progressively
Operating Systems and Middleware by Max Hailperin
from Thompson, 2007.
About half the chapters are about processes and concurrency, but otherwise a
good intermediate-level textbook. Both editions are available
Operating System Concepts, 8th edition, by Abraham Silberschatz,
Greg Gagne, and Peter Galvin from Wiley, 2009. QA76.76.O63
A good, detailed textbook with programming examples in Java.
Operating Systems: Design and Implementation, 3rd edition, by Andrew
Tanenbaum and Albert Woodhull from Prentice Hall, 2006. QA76.76.O63 T36 1997 (first edition)
This is the Minix book, famous for having inspired Linus Tovalds to develop
the Linux operating system.
Operating Systems Fundamentals by D. Irtegov, Charles River Media,
A terrible book, incomplete and wrong, although it does have a good
discussion of dynamic loading. Avoid.
Operating Systems: Internals and Design Principles, 6th edition, by
William Stallings, Prentice Hall, 2009. QA76.76.O63 S733
Stallings is a machine; he cranks out competent, if not necessarily
An Operating Systems Vade Mecum, 2nd edition, by Raphael Finkel,
Out of date in a lot of respects, but a good, basic introduction to
operating systems. Once you make it through this book, you’ll be
prepared to move on to more up-do-date, advanced books. Available
Principles of Operating Systems by Brian Stuart, Thompson,
Keeps a close relation between theory and practice in real operating
systems, and earns extra points for using the
Inferno operating system
Computer Organization & Design, 2nd
edition, by David Patterson and John Hennessy, Morgan Kaufmann,
1998. QA76.9.C643 P37 2009 (fourth edition)
This is way more book than is needed for a subsidiary, but important, topic
in this class, but it’s a good reference to have on hand.
The Design and Implementation of the 4.4BSD UNIX Operating System
Marshall McKusick, Keith Bostic, Michael Karels, and John Quarterman,
Addison Wesley, 1996.
An excellent companion to a more general-purpose operating-systems textbook.
A more recent version of this book covers FreeBSD
one of the follow-on systems to BSD UNIX.
Developing your own 32-bit operating system
by Richard Burgess, SAMS Publishing, 1995.
What an operating-systems course should be: a multitasking, message-based,
real-time operating system developed step-by-step in assembler.
Operating System Design by Douglas Comer, CRC Press, 2012.
Another book creating an operating system, this time it’s Xinu.
Systems Programming in Parallel Logic Languages
by Ian Foster, Prentice Hall, 1990
Using functional programming to implement an operating system? Using
Prolog?? That’s just crazy talk.
This page last modified on 2012 March 18.