This book has developed from a set of lecture notes we used to teach a graduate two-coursesequence on operating systems. We had difficulties finding a textbook that hadbalanced coverage of concepts and theories and sufficient detail for a graduate-levelclass. The key idea behind the book is to integrate the theory and practice of distributedoperating systems.
Many texts provide an overview of distributed systems with a vaguedescription of the algorithms.
It is difficult to teach an in-depth course from thesebooks. Other texts focus on algorithms. However, it is hard to motivate students to studyalgorithms if they do not have a picture of what is needed in practice. For example,understanding the need for naming and directory services clarifies the need for causalmessage passing and update propagation. It provides a broad discussion of modern operatingsystems.