Principles of Computer System Design

Principles of Computer System Design

An Introduction

1st Edition - May 21, 2009

Write a review

  • Authors: Jerome Saltzer, M. Frans Kaashoek
  • Paperback ISBN: 9780123749574
  • eBook ISBN: 9780080959429

Purchase options

Purchase options
DRM-free (PDF, Mobi, EPub)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order


Principles of Computer System Design is the first textbook to take a principles-based approach to the computer system design. It identifies, examines, and illustrates fundamental concepts in computer system design that are common across operating systems, networks, database systems, distributed systems, programming languages, software engineering, security, fault tolerance, and architecture.Through carefully analyzed case studies from each of these disciplines, it demonstrates how to apply these concepts to tackle practical system design problems. To support the focus on design, the text identifies and explains abstractions that have proven successful in practice such as remote procedure call, client/service organization, file systems, data integrity, consistency, and authenticated messages. Most computer systems are built using a handful of such abstractions. The text describes how these abstractions are implemented, demonstrates how they are used in different systems, and prepares the reader to apply them in future designs.The book is recommended for junior and senior undergraduate students in Operating Systems, Distributed Systems, Distributed Operating Systems and/or Computer Systems Design courses; and professional computer systems designers.

Key Features

  • Concepts of computer system design guided by fundamental principles
  • Cross-cutting approach that identifies abstractions common to networking, operating systems, transaction systems, distributed systems, architecture, and software engineering
  • Case studies that make the abstractions real: naming (DNS and the URL); file systems (the UNIX file system); clients and services (NFS); virtualization (virtual machines); scheduling (disk arms); security (TLS)
  • Numerous pseudocode fragments that provide concrete examples of abstract concepts
  • Extensive support. The authors and MIT OpenCourseWare  provide on-line, free of charge, open educational resources, including additional chapters, course syllabi, board layouts and slides, lecture videos, and an archive of lecture schedules, class assignments, and design projects


Junior and Senior undergraduate students in Operating Systems, Distributed Systems, Distributed Operating Systems and/or Computer Systems Design courses. Professional computer systems designers

Table of Contents

  • CHAPTER 1 Systems

    1.1 Systems and Complexity

    1.2 Sources of Complexity

    1.3 Coping with Complexity I

    1.4 Computer Systems are the Same but Different

    1.5 Coping with Complexity II

    CHAPTER 2 Elements of Computer System Organization

    2.1 The Three Fundamental Abstractions

    2.2 Naming in Computer Systems

    2.3 Organizing Computer Systems with Names and Layers

    2.4 Looking Back and Ahead

    2.5 Case Study: UNIX® File System Layering and Naming

    CHAPTER 3 The Design of Naming Schemes

    3.1 Considerations in the Design of Naming Schemes

    3.2 Case Study: The Uniform Resource Locator (URL)

    3.3 War Stories: Pathologies in the Use of Names

    CHAPTER 4 Enforcing Modularity with Clients and Services

    4.1 Client/Service Organization

    4.2 Communication Between Client and Service

    4.3 Summary and The Road Ahead

    4.4 Case Study: The Internet Domain Name System (DNS)

    4.5 Case Study: The Network File System (NFS)

    CHAPTER 5 Enforcing Modularity with Virtualization

    5.1 Client/Server Organization within a Computer Using Virtualization

    5.2 Virtual Links Using SEND, RECEIVE, and a Bounded Buffer

    5.3 Enforcing Modularity with Domains

    5.4 Virtualizing Memory

    5.5 Virtualizing Processors Using Threads

    5.6 Thread Primitives for Sequence Coordination

    5.7 Case Study: Evolution of Enforced Modularity in the Intel x86

    5.8 Application: Enforcing Modularity Using Virtual Machines

    CHAPTER 6 Performance

    6.1 Designing for Performance

    6.2 Multilevel Memories

    6.3 Scheduling


    CHAPTER 7 The Network as a System and as a System Component

    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

    CHAPTER 8 Fault Tolerance: Reliable Systems from Unreliable Components

    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

    CHAPTER 9 Atomicity: All-or-nothing and Before-or-after

    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)

    CHAPTER 10 Consistency

    10.1 Constraints and Interface Consistency

    10.2 Cache Coherence

    10.3 Durable Storage Revisited: Geographically Separated Replicas

    10.4 Reconciliation

    10.5 Perspectives

    CHAPTER 11 Information Security

    11.1 Introduction to Secure Systems

    11.2 Authenticating Principals

    11.3 Authenticating Messages

    11.4 Message Confi dentiality

    11.5 Security Protocols

    11.6 Authorization: Controlled Sharing

    11.7 Advanced Topic: Reasoning about authentication

    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

Product details

  • No. of pages: 560
  • Language: English
  • Copyright: © Morgan Kaufmann 2009
  • Published: May 21, 2009
  • Imprint: Morgan Kaufmann
  • Paperback ISBN: 9780123749574
  • eBook ISBN: 9780080959429

About the Authors

Jerome Saltzer

Affiliations and Expertise

MIT, Cambridge, MA

M. Frans Kaashoek

Affiliations and Expertise

MIT, Cambridge, MA

Ratings and Reviews

Write a review

There are currently no reviews for "Principles of Computer System Design"