Books and Booklets About Operating Systems

Gary Nutt
Department of Computer Science
University of Colorado

The Collection

About this Collection

Today there is a wide spectrum of types of computers: some machines are tiny machines that are part of a larger system, such as sensor nodes in a sensor network, or and embedded system in a missile guidance system. Others machines provide as much storage or as many processing cycles as possible so that the machine can solve very large problems such as decoding DNA sequences or predicting the weather. Naturally the software environments for such a broad spectrum of machines varies widely. Some machines execute a single program written in assembly language or "high level assembly language" (that is, C). Other machines are designed to execute C, C++, or Java programs, and yet others are intended to execute programs written in High Performance Fortran on a collection of concurrent abstract machines.

Even a decade ago, it was possible to describe the mainstream of operating system technology and in so doing, to provide the essential material and perspective for a person to understand any OS. At that time I wrote the first edition of my general OS textbook that focused on mainstream technologies that appear in operating systems. That book is now in its third edition, and certainly reflects the critical issues and technologies for uniprocessor systems such as notebooks, desktops, workstations, and small servers (although many of these now employ transparent multicore hardware). Today, the gap between the system software that controls a sprinkler system and the OS software that controls a large multiprocessor is just too large to describe both of them in a cogent thread of explanation in a single textbook.

Over time I found that some people wanted to look more carefully at kernel and runtime internals. The pute textbooks in this collection focus on concepts, while some of the supplementary books ( Kernel Projects for Linux, Operating System Projects Using Windows NT, and Distributed Virtual Machines: Inside the Rotor CLI) focus on detailed design and implementation of particular systems.

In the past few years I have experimented with alternative ways to describe system software for small, communicating computers. The approach that I like best uses a hierarchy to characterize "very small," "small," and "moderate sized" operating systems.

I used this hierarchical description as the basis of a manuscript about operating systems for small, communicating computers. The book was tested in a couple of classes at the University of Colorado between 2004 and 2007. Some students liked this organization of material very much, and in the process they learned a great deal about the role and importance of interrupt and CPU mode bit hardware. Others complained that the manuscript was written so that it had 3 different chapters for scheduling, for memory management, and so on; they did not like the fact that all the information about a particularly technology (like scheduling) was distributed across multiple chapters. The manuscript was also reviewed by a prospective publisher, but was ultimately rejected because it did not fit within the existing curriculum in an EE or Computer Science department.

About the Open Books in the Collection

The open textbooks in the collection are freely available for anyone to read and use. Please read the material published here, use it, and give me feedback about its weak and strong points. These books are the main aspect of an experimental way of disseminating educational information into markets that are too small for commercial publication.

There are many practical barriers that work against innovation in textbooks in today's undergraduate curriculum [ Nutt, 2006]. Perhaps the most pervasive problem is related to the cost of publishing in small markets. Today it is difficult for a publisher to produce a technical book for an undergraduate computer science course (a relatively small market and high production cost) for less than $100. These costs essentially eliminate the possibility of publication for emerging and evolving materials.

As a result, I have started experimenting with alternative models for making leading edge, small market instructional materials available to students. As a means of modest compensation to the author (me, in this case), I have launched a commercial site that has lecture notes, examples, short explanations of key concepts, traditional exercises, and lab exercises. Currently, this site is also experimental (and free), although at some time in the future I plan to charge a small fee for its use. While the site focuses on supplementary materials for the free books, most of the supplementary materials can also be used with any OS course.

I also encourage others to modify and enhance the free books using an open textbook authoring model. If you would like to contribute to these books, please contact me.

Thanks,
Gary Nutt

Gary DOT Nutt AT colorado DOT edu