Operating systems are an essential part of any computer system. Similarly,
a course on operating systems is an essential part of any computer-science
education. This field is undergoing rapid change, as computers are now
prevalent in virtually every application, from games for children through the
most sophisticated planning tools for governments and multinational firms.
Yet the fundamental concepts remain fairly clear, and it is on these that we base
We wrote this book as a text for an introductory course in operating systems
at the junior or senior undergraduate level or at the first-year graduate level.
We hope that practitioners will also find it useful. It provides a clear description
of the concepts that underlie operating systems. As prerequisites, we assume
that the reader is familiar with basic data structures, computer organization,
and a high-level language, preferably Java. The hardware topics required for
an understanding of operating systems are included in Chapter 1. For code
examples, we use predominantly Java, with some C, but the reader can still
understand the algorithms without a thorough knowledge of these languages.
Concepts are presented using intuitive descriptions. Important theoretical
results are covered, but formal proofs are omitted. The bibliographical notes
at the end of each chapter contain pointers to research papers in which results
were first presented and proved, as well as references to material for further
reading. In place of proofs, figures and examples are used to suggest why we
should expect the result in question to be true.
The fundamental concepts and algorithms covered in the book are often
based on those used in existing commercial operating systems. Our aim
is to present these concepts and algorithms in a general setting that is
not tied to one particular operating system. We present a large number of
examples that pertain to the most popular and the most innovative operating
systems, including Sun Microsystems’ Solaris; Linux; Microsoft Windows
Vista, Windows 2000, and Windows XP; and Apple Mac OS X. When we refer
to Windows XP as an example operating system, we are implying Windows
Vista, Windows XP, and Windows 2000. If a feature exists in a specific release,
we state this explicitly.