Principles of Computer System Design: An Introduction
Author: Jerome H. Saltzer (Author), M. Frans Kaashoek (Author)
Publisher finelybook 出版社: Morgan Kaufmann
Edition: 1st
Publication Date 出版日期: 2009-07-07
Language 语言: English
Print Length: 560 pages
ISBN-10: 0123749573
ISBN-13: 9780123749574
Book Description 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.
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
Review
"This is a unique, ambitious, and important book. It is about computer system design principles, and not the usual mechanics of how things work. These principles are typically embedded in research papers (for those of which are to be found at all), and no book I know of makes so many of them explicit and its focal point." --Joe Pasquale, UC San Diego"The book is a great introduction to system design issues that are only taught at few courses in few universities, even-though they show up in computer systems everywhere. This is a very good and easy read for any one in computer industry. It describes all parts of computer systems and how they interact very well. The extension of the book is online and many chapters are available for free to download. The chapter on Naming is worth the money of the book. I have not seen the discussion of naming in such detail and simple terms anywhere. The authors are very well respected professors at MIT and have experience in operating systems and computer system since its early days. I highly recommend this book to any hardware or software student or professional engineer." --Amazon.com 5 star review THE missing link, January 16, 2010 By clivebaker "clivebaker""[A] unique of several design patterns that are used as building blocks in computer systems. The primary novelty in Saltzer and Kaashoek’s book is the fresh and original presentation of several related topics. The book is logically divided into two parts: Part 1 is included in the hard-copy book; Part 2 is only available online…. I highly recommend this well-written and well-structured book to several groups of readers: undergraduate students can use it as a gentle introduction to computer architecture and OSs, and graduate students and more advanced readers will enjoy its philosophical and design-oriented aspects. In fact, the book may eventually become a classic and a must-read for any computer scientist." --Computing Reviews
Review
The first textbook to take a principles-based approach to the computer system design
From the Back Cover
Principles of Computer System Design
An Introduction
JEROME H. SALTZER
M. FRANS KAASHOEK
Principles of Computer System Design: An Introduction is the first book to identify, examine, and illustrate the fundamental principles and abstractions in computer system design that are common across operating systems, networks, database systems, distributed systems, programming languages, software engineering, and computer architecture. Through carefully analyzed case studies from each of these disciplines, it demonstrates how to apply these principles and abstractions to tackle real system design problems. To support the focus on design, the book identifies and explains abstractions that have proven successful in practice such as, names, remote procedure call, client/service organization, file systems, transactions, replication with repair, read/write coherence, and authenticated and confidential messages. These abstractions allow designers to compose systems with increasingly strong modularity, to protect against failures ranging from accidental programmer errors to malicious adversaries. This book describes how these abstractions are implemented, demonstrates how they are used in different systems, and prepares the reader to apply them in future designs.
F E A T U R E S
Formulates and illustrates the main principles (see list on inside cover) of computer system design.
Presents a cross-disciplinary approach drawing on examples from networking, operating systems, distributed systems, architecture and other disciplines within computer science.
Explores principles and abstractions in-depth with numerous case studies, including Unix (file systems); URL, DNS (naming); NFS (client/service); virtual machines (virtualization); disk arms (scheduling); TLS (security).
Illustrates core concepts using numerous pseudocode examples throughout the text.
Supports on-line open educational resources that include several additional chapters and problem sets, plus MIT Open CourseWare materials, including lecture videos.
A B O U T T H E A U T H O R S
Jerome H. Saltzer has been a faculty member of the Department of Electrical Engineering and Computer Science at MIT since 1966. Prof. Saltzer helped to formulate the undergraduate curriculum in Computer Science at MIT, and developed the core subject on computer systems engineering.
M. Frans Kaashoek is a professor in MIT's EECS department and a member of Computer Science and Artificial Intelligence Laboratory, where he co-leads the parallel and distributed operating systems group (http://www.pdos.lcs.mit.edu/) and is in charge of the subject on computer systems engineering.