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 thatwe base
this book.
We wrote this book as a text for an introductory course in operating systems
at the junior or senior undergraduate 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 familiarwith
basic data structures, computer organization, and a high-level language, such
as C or Java. The hardware topics required for an understanding of operating
systems are included in Chapter 1. For code examples, we use predominantly
C, with some Java, 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 7, Windows
2000, andWindows XP; and AppleMac OS X.When we refer toWindows XP as
an example operating system, we mean Windows XP and Windows 2000. If a
feature exists in a specific release, we state this explicitly.