Online Textbook

Guide to Parts I & II

  • Table of Contents of Parts I & II (PDF)
  • Design Principles (PDF)
  • Glossary of Terms Used in Computer Systems (PDF)
  • Index to Parts I & II (PDF)

Part I

Part I: (not on-line, chapter titles for reference only)
Front-End Matter (title page, contents, etc.)
Chapter 1: Systems
Chapter 2: Elements of Computer System Organization
Chapter 3: The Design of Naming Schemes
Chapter 4: Enforcing Modularity with Clients and Services
Chapter 5: Enforcing Modularity with Virtualization
Chapter 6: Performance
Suggestions for Further Reading
Glossary
Problem Sets
Index of Concepts
Errata for Part I (PDF) [updated March 2017]

Part II

Part II: Chapters 7-11 (Version 5.0, June 2009)

Front-End Matter (PDF)

Title page, contents, list of sidebars, preface, acknowledgements, computer system design principles

Errata for Part II (PDF) [updated March 2017]
Chapter 7: The Network as a System and as a System Component (PDF)
  Slides of chapter 7 figures (zipped Keynote) (PPT) (PDF)
Overview
7.1 Interesting properties of networks
7.2 Getting organized: layers
7.3 The link layer
7.4 The network layer
7.5 The end-to-end layer
7.6 A network system design issue: congestion control
7.7 Wrapping up networks
7.8 Case study: mapping the Internet to the Ethernet
7.9 War stories: surprises in protocol design
Exercises
Chapter 8: Fault Tolerance: Reliable Systems from Unreliable Components (PDF)
  Slides of chapter 8 figures (zipped Keynote) (PPT) (PDF)
Overview
8.1 Faults, failures, and fault-tolerant design
8.2 Measures of reliability and failure tolerance
8.3 Tolerating active faults
8.4 Systematically applying redundancy
8.5 Applying redundancy to software and data
8.6 Wrapping up reliability
8.7 Application: A fault tolerance model for CMOS RAM
8.8 War stories: fault-tolerant systems that failed
Exercises
Chapter 9: Atomicity: All-or-nothing and Before-or-after (PDF)
  Slides of chapter 9 figures (zipped Keynote) (PPT) (PDF - 1.1MB)
Overview
9.1 Atomicity
9.2 All-or-nothing atomicity I: concepts
9.3 All-or-nothing atomicity II: pragmatics
9.4 Before-or-after atomicity I: concepts
9.5 Before-or-after atomicity II: pragmatics
9.6 Atomicity across layers and multiple sites
9.7 Case studies: machine language atomicity
9.8 A more complete model of disk failure (advanced topic)
Exercises
Chapter 10: Consistency (PDF)
  Slides of chapter 10 figures (zipped Keynote) (PPT) (PDF)
Overview
10.1 Constraints and interface consistency
10.2 Cache coherence
10.3 Durable storage revisited: geographically separated replicas
10.4 Reconciliation
10.5 Perspectives
Exercises
Chapter 11: Information Security (PDF)
  Slides of chapter 11 figures (zipped Keynote) (PPT) (PDF)
Overview
11.1 Introduction to secure systems
11.2 Authenticating principals
11.3 Authenticating messages
11.4 Message confidentiality
11.5 Security protocols
11.6 Authorization: controlled sharing
11.7 Reasoning about authentication (advanced topic)
11.8 Summary
11.9 Cryptography as a building block (advanced topic)
11.10 Case study: Transport Layer Security (TLS) for the Web
11.11 War stories: security system breaches
Exercises
Suggestions for Further Reading (PDF)
Glossary (PDF)
Problem Sets (PDF - 1.1MB)
Index of Concepts (PDF)
All of Part II in a single file
Principles of Computer System Design: An Introduction
Part II - 826 pages
(PDF - 4.2 MB)

Availability

Saltzer, Jerome H., and M. Frans Kaashoek. Principles of Computer System Design: An Introduction, Part I.

  • Buy at Amazon Print edition San Francisco, CA: Morgan Kaufman/Elsevier, 2009. ISBN: 9780123749574.
  • e-book Science Direct (Elsevier B.V.)