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.
Principles of Computer System Design: An Introduction
1. Systems
2. Elements of Computer System Organization
3. The Design of Naming Schemes
4. Enforcing Modularity with Clients and Services
5. Enforcing Modularity with Virtualization
6. Performance
7. The Network as a System and as a System Component
8. Fault Tolerance: Reliable Systems from Unreliable Components
9. Atomicity: All-or-Nothing and Before-or-After
10. Information Security
11. Suggestions for Further Reading
Glossary
Problem Sets
Index of Concepts