We have long felt that the traditional approach to teaching about Operating Systems
(OSs) was not the best approach. The purpose of this book is to support a different
approach to this task. When studying any complex domain of knowledge, the order
in which one learns the hierarchy of principles, laws, ideas, and concepts can make
the process easier or more diffi cult. The most common technique is to partition the
subject into major topics and then study each one in great detail. For OSs, this has
traditionally meant that after a brief introduction to some terms and an overview, a
student studied isolated topics in depth—processes and process management, then
memory management, then fi le systems, and so on. We can call this a depth-oriented
approach or a vertical approach. After learning a great mass of unrelated details in
these isolated topic areas, the student then examined case studies, examples of real
OSs, and fi nally saw how the different topics fi t together to make a real OS.
We believe that a better model is that followed by children when learning a
language: learn a few words, a little grammar, a little sentence structure, and then
cycle (or spiral) through; more words, more grammar, more sentence structure. By
continuing to spiral through the same sequence, the complexity of the language is
mastered. We can call this a breadth-oriented or spiral approach.
We have taken this approach to the subject of OSs. The fi rst few chapters give
some basic background and defi nitions. We then begin to describe a very simple
OS in a simple system—early PCs—and evolve toward more complex systems with
more features: fi rst limited background tasks (such as simultaneous printing), then
multitasking, and so on. In each case we try to show how the increasing requirements
caused each system to be designed the way it was. This is not specifi cally a historical
order of OS development. Rather, we choose a representative system at each
complexity level in order to see how the different OS components interact with and
infl uence one another. It is our belief that this approach will give the student a greater
appreciation of how the various features of each level of OS were put together.
Part of the motivation for this approach has to do with why Computing Science
students are told they must study OSs at all. It is highly unlikely that many of these
students will work on the development of OSs. However, virtually every system that
they do work on will run on top of an OS, though perhaps a very few will work on
embedded systems with no OS. For the rest of them, the OS will stand between the
applications and the hardware, and failure to thoroughly understand the nature of the
OS will mean that these applications will be underperforming at best and hazardous
at worst. We believe that our approach will lead students to a better understanding of
the entire architecture of modern OSs than does the traditional approach.