The following titles are of value for people who want to understand more about how operating systems work and most of them are a good starting point for someone who would like to do low-level operating systems programming. The "Topical Books" sections contains more advanced titles on operating systems and peripheral issues: some pertain to specific implementations of Unix, others pertain to specialized matters in the area of operating systems, and even others pertain to both.

Please keep in mind that these are not the only resources for operating systems programming available. See here for a large list of on-line documentation on the Linux kernel. Note that the list of books in that file is similar to what follows, but it lacks descriptions of the texts themselves. We hope the descriptions below will help those who don't quite know what they're looking for find what they are. Also check out an up to date list of on-line documentation here and available kernel patches here.

Topical Books about Linux

Understanding the Linux Kernel (2)
Title:Understanding the Linux Kernel (2)
Author:D. P. Bovet & M. Cesati
Publisher: O'Reilly & Associates
Reviewed by:John Levon and Erik Mouw
About:Reviewed by big names like Alan Cox and Rik van Riel, we can safely say this book is a must have. The cover says "From I/O ports to process management", and it is indeed that broad. It starts with an overview of linux, comparing linux to other UNIX systems, but dives into the deep quite soon. Edition 2 of the book covers 2.4. Although the book grew out of the lecture notes for an operating systems course, it is not useful as such because it doesn't explain the basic concepts; but if you want to understand how the linux kernel works: go get it!
More information: Publisher's website

Linux Kernel Architecture
Title:Linux Kernel Architecture
Author:Gary Murphy
Publisher: Sams Publishing
About:This is destined to be released in December 2000. [Update: I think this book is canned]
More information: Bestbookbuys

Linux Internals
Title:Linux Internals
Author:M. Bar
Publisher: McGraw Hill
About:Has anyone read this?
More information: Booksite

Linux Kernel Internals
Title:Linux Kernel Internals
Author:Michael Beck
Publisher: Addison-Wesley
About:I haven't read this one. Perhaps davej can update this.

Linux Device Drivers 2nd edition
Title:Linux Device Drivers 2nd edition
Author:Alessandro Rubini and Jonathan Corbet
Publisher: O'Reilly & Associates
Reviewed by:Rik van Riel (?), Erik Mouw
About:An excellent book on device drivers. It handles everything from simple character device drivers to ethernet drivers. The 2nd edition covers the 2.4 kernel series, make sure to get this edition rather than the first, which is 2.0-based. The book is also available online at Linux Device Drivers.
More information: Publisher's website

Kernel Projects for Linux
Title:Kernel Projects for Linux
Author:Gary Nutt
Publisher: Addison-Wesley
About:This is a fairly thin book with an emphasis on how to approach the design of kernel elements, something that can be lacking in other books. However I haven't read it. Anyone ?
More information:

Linux Core Kernel Commentary
Title:Linux Core Kernel Commentary
Author:Scott Maxwell
Publisher: Coriolis
About:Kernel source code plus commentary. Needs review. Apparently a 2nd edition covering Linux 2.4 is available.
More information: Coriolis

The hitch hikers guide to the galaxy
Title:The hitch hikers guide to the galaxy
Author:Douglas Adams
Publisher: Several
ISBN:Even more
About:It's cool. Every kernel hacker should read it to understand some of the remarks on the various linux related mailinglists. It also helps you to get into the correct kernel hacking mindset. The book has been published by many publishers, so it's not easy to give a single ISBN number (just look it up at your choice of web bookstore). If you want to buy it, go for a version that includes all five books of the trilogy. And of course the real hitch hiker can't live without a copy of the original radio series of The Guide.
More information: Erik Mouw

General O/S books

The Design of the Unix Operating System
Title:The Design of the Unix Operating System
Author:Maurice Bach
Publisher: Prentice Hall
About:Bach used to teach Unix internals at AT&T, so he knows what he's talking about. The text is System V-specific and might be a bit overwhelming if you try to read it without any prior exposure to opererating systems. While you might find the first chapter comprehensible, all of those that follow are not so easy to understand. Nevertheless, its pseudo-code explications of algorithms used in system calls and in the internal operations of the kernel are very useful.

The Design and Implementation of the 4.4BSD Operating System
Title:The Design and Implementation of the 4.4BSD Operating System
Author:Marchall Kirk McKusick, et al.
Publisher: Addison-Wesley
About:Very comprehensive analysis of BSD. Assumes general knowledge of operating systems issues.
More information: Publisher's website

Unix internals: The New Frontiers
Title:Unix internals: The New Frontiers
Author:Uresh Vahalia
Publisher: Prentice Hall
About:I haven't read this one either.

Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers
Title:Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers
Author:Curt Schimmel
Publisher: Addison-Wesley
About:I've only read sections of this. I know other folks on #kernelnewbies have probably read the whole thing and understand it a lot better than I did.

Operating Systems: A Modern Perspective
Title:Operating Systems: A Modern Perspective
Author:Gary Nutt
Publisher: Addison-Wesley
About:Written for undergraduate operating systems courses by a professor at University of Colorado, Boulder, this book doesn't use a particular implementation of Unix as a starting point of discussion (unlike the Bach book mentioned below) and so might be better for someone needing a higher-level overview.
More information: Publisher's website

Modern Operating Systems
Title:Modern Operating Systems
Author:Andrew S. Tanenbaum
Publisher: Prentice Hall
About:Widely regarded as a classic in the field. It's been a few years since I read it though, so I can't comment on it. Someone please update this.

Distributed Operating Systems
Title:Distributed Operating Systems
Author:Andrew S. Tanenbaum
Publisher: Prentice Hall
About:The third in Tanenbaum's trilogy, dealing with the theory and practicalities of designing O/S's for distributed systems, ranging from standard SMP systems to some exotic NUMA machines. Major areas covered are communication systems, synchronisation and mutual exclusion, distributed filesystems (NFS being one of the examples), and models of shared memory. Well written and gets the balance between theory and practice just about right.

In Search of Clusters, Second Edition
Title:In Search of Clusters, Second Edition
Author:Gregory F. Pfister
Publisher: Prentice Hall
About:A text on clustering...
More information: Publisher's website

The Programmer's Guide to SCSI
Title:The Programmer's Guide to SCSI
Author:Brian Sawert
Publisher: Addison-Wesley
About:A bit win32-centric, but a decent overview of SCSI standards, architecture and programming. A good part of the programming is dedicated to Win32 and/or SCRIPTS programming. The Unix coverage consists of an overview of the SCSI subsystem implementations on different Unices, commercial and otherwise. There is a Linux-specific section, but my impression is that it doesn't offer much over and above what you can get by reading the source yourself. The accompanying CD-ROM contains the contents of the SCSI Standards archive (the url for which the book gives is outdated) in a mix of text, Portable Document Format and PostScript formats.

General computing books

Computer Organization and Design: The Harware/Software Interface
Title:Computer Organization and Design: The Harware/Software Interface
Author:David A. Patterson, John L. Hennessey
Publisher: Morgan Kaufmann
ISBN:1-55860-428-6 (cloth), 1-55860-491-X (paper)
About:If you find yourself in need of hardware enlightenment, this book is a good place to start. Covers MIPS assembly programming and computer architecture. I would expect this book to be used as a text in an undergraduate course in computer architecture.

Computer Architecture: A Quantitive Approach (2nd edition)
Title:Computer Architecture: A Quantitive Approach (2nd edition)
Author:David A. Patterson, John L. Hennessey
Publisher: Morgan Kaufmann
Reviewed by:John Levon
About:This is a huge book that discusses the design of computer architecture in depth. Worked examples for several different systems give real-life analyses of the organisation and design of computer architectures. Whilst a lot of this book has no direct application in operating system design, certain sections are useful for gaining a deeper understanding, such as the section on out-of-order processors and ILP. Other topics covered include instruction set design, memory hierarchies, and SMP.

The Cartoon Guide to the Computer
Title:The Cartoon Guide to the Computer
Author:Larry Gonick
Publisher: HarperPerennial
About:(Warning, this book is out of print, but may be found through 0 on Amazon, etc.) The Cartoon Guide to the Computer is a history of computers as the information processing devices they are. It provides a wonderfully funny trail from ancient civilization through to Turing and Von Neumann. Gonick makes no assumptions about the reader's previous knowledge, and thereby avoids leaving painful gaps to frustrate and annoy. After giving 4000 years of history, he settles in to explain the workings of the foundations of computer hardware: the circuits and gates which form registers and the Arithmetic Logic Unit. Unlike most textbooks, the reader is shown how these each work in a way which leaves him or her probably able to explain these things to a non-technical friend over coffee (albeit with the help of a cocktail napkin diagram, perhaps).

Gonick then covers, with the same humor and clarity, the hardware clock, memory and storage devices before introducing the element which brings them all together, "control". The nicest explanation of the instruction cycle (FETCH, DECODE, EVALUATE ADDRESS, FETCH OPERANDS, EXECUTE, STORE) I've seen. The illustration of the instruction cycle makes a natural segue to assembler, so Gonick gives a simple explanation of that as well, which spring-boards him to a little elaboration on higher-level languages, by providing a very basic tutorial on, ahem, BASIC.

Highly recommended for anyone who didn't get the CS degree treatment and wants to get a more solid footing on what computers really are, and how to work with them at a low level, and perhaps for those who already know their stuff, certainly some nice fireside reading.

Introduction to Computing Systems: From Bits and Gates to C and Beyond
Title:Introduction to Computing Systems: From Bits and Gates to C and Beyond
Author:Yale N. Patt, Sanjay J. Patel
Publisher: McGraw-Hill Higher Education
About: Unlike Gonik's Cartoon Guide, which makes the core of a computer accessible to just about anyone, Bits and Gates is written specifically as a textbook for the undergraduate in Computer Science. It is copyrighted 2001, and the authors make it clear that the book is meant to be an antidote to freshmen who know how to "program" in general, but who know nothing of the underpinnings of the machine and the languages they have learned. Bits and Gates does less hand-holding than the Cartoon Guide, but is certainly readable, and as befits a textbook, imparts more detail.

Covered, in rough order are numeric representations (binary, hex, floating point numbers), logic structures (circuits, gates, registers), binary construction of opcodes, and their decoding. A nice point here is the presence of several short programs with complete breakdowns of the control flow diagrams dissection of the opcodes and the addressing modes. These are followed by assembler, traps and I/O. All are demonstrated within the context of an example 16 bit imaginary architecture. The authors spend the second half of the book on the C language, with frequent glances "to the rear" at the assembler code underlying C constructs. The book closes with a brief comparison/listing of the IA32 instruction set, as an example to the student of the conversion from the hypothetical 16 bit arch used in much of the book, to a real architecture. A nice blend of the simplification required for expounding the material to the student, and the practicalities of real world machines the student will almost certainly work on.

For best results, re-read Gonick before each chapter of Bits and Gates. The refresher will keep one in good humour, and aid memorization.