Examines 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. This book demonstrates how to apply these concepts to tackle practical system design problems.
Features include: concepts of computer system design guided by fundamental principles (see list on inside cover); 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); and, security (TLS); numerous pseudocode fragments that provide concrete examples of abstract concepts; and, extensive support. The authors and MIT OpenCourseWare provide on-line 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.
Part I
- 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 Performamce
Part II [On-Line]
- Chapter 7 The Network as a System and as a System Component
- Chapter 8 Fault Tolerance : Reliable Systems from Unreliable Components
- Chapter 9 Atomicity : All-or-nothing and Before-or-after
- Chapter 10 Consistency
etc.