Here are some guidelines for winnowing the available books to a handful of
   candidates:
     
     -  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
Guggenheim Library.  Linked material from
the ACM or the IEEE can be downloaded for free from the library within the
monmouth.edu domain.
   
   
  
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
  less good.
  
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
  
on-line.
  
Operating System Concepts, 8th edition, by Abraham Silberschatz,
  Greg Gagne, and Peter Galvin from Wiley, 2009. QA76.76.O63
  S5583 2009
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,
   2003.
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
   2009
Stallings is a machine; he cranks out competent, if not necessarily
   inspiring, books.
  
An Operating Systems Vade Mecum, 2nd edition, by Raphael Finkel,
   Prentice-Hall, 1988.
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
   
on-line Principles of Operating Systems by Brian Stuart, Thompson,
   2009.
Keeps a close relation between theory and practice in real operating
   systems, and earns extra points for using the
   
Inferno operating system.
  
A Comparison of Three Distributed File System Architectures: vnode, Sprite,
   and Plan 9 by Brent Welch in Computing Systems, Spring 1994.
A comparison of three significantly different ways of providing remote file
   systems.  
 
Alphonse, Wait Here For My
   Signal! by Stephen Hartley in Proceedings of the Thirteenth Technical
   Symposium on Computer Science Education, March 1999.
One of the may cruel tricks Java plays is presenting monitors as if they
   were the typical high-level concurrency control mechanism when they are, in
   fact, low-level misbehaving beasts.  This paper illustrates the point.  
 
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
   by 
   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.  
 
The Expected
   Lifetime of Single-Address-Space Operating Systems by David Kotz and
   Preston Crow in Computing Systems, Summer, 1996.
Imagine there’s only one address space for all processes in an
   operating system.  How long would such an operating system last before
   there’s no more address space available?  The answer is, as always,
   “it depends.”
   
Java’s Insecure
   Parallelism by in Per Brinch Hansen ACM Sigplan Notices, April,
   1999.
How Javas synchronized classes are a poor implementation of monitors
Lottery Scheduling: Flexible Proportional-Share Resource Management by Carl
  Waldspurger and William Weihl in
  First Symposium on Operating Systems Design and Implementation, November,
  1994.
Lottery scheduling is a flexible randomized scheduling protocol.
Operating System Design by Douglas Comer, CRC Press, 2012.
Another book creating an operating system, this time it’s Xinu.  
  
 
Plan
   9 from Bell Labs by Rob Pike, Dave Presotto, Sean Doward, Bob Flandrena,
   Ken Thompson, Howard Trickey and Phil Winterbottom in Computing Systems, Summer,
   1995.
Plan 9 is the follow-on to Unix.  It came, but alas, it came too late.
   Never the less, it contains ideas worth learning well enough to steal.
A Survey of Processors with
   Explicit Multithreading by Theo Ungerer, Borut Robič, and Jurijin
   Šilc in ACM Computing Surveys, March, 2003.
What has happened to CPU architectures since physics made following
   Moore’s law an impractically expensive way to improve performance.
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.
 
Threads without the Pain
   by Andreas Gustaffsson in ACM Queue,
   November, 2005.
We love threads because concurrency; we hate threads because concurrency.
   It doesn’t have to be this way.
The Virtual File System Interface in 4.4BSD by Marshall Kirk McKusick in
   Computing Systems, Winter 1995.
The 4.4BSD virtual filesystem interface which provides operations to manage
   the hierarchical file system name space and to manage the flat file store,
   including the always helpful stacking file systems.  
 
  
  | This page last modified on 2014 October 10. | 
      |