大学计算机教育国外著名教材系列:计算机系统设计原理(影印版)

PART Ⅰ
List of Sidebars
Preface
Where to find Part Ⅱ and other On-line Materials
Acknowledgments
CHAPTER 1 Systems
Overview
1.1 Systems and Complexity
1.1.1 Common Problems of Systems in Many Fields
1.1.2 Systems, Components, Interfaces, and Environments
1.1.3 Complexity
1.2 Sources of Complexity
1.2.1 Cascading and Interacting Requirements
1.2.2 Maintaining High Utilization
1.3 Coping with Complexity Ⅰ
1.3.1 Modularity
1.3.2 Abstraction
1.3.3 Layering
1.3.4 Hierarchy
1.3.5 Putting it Back Together: Names make Connections
1.4 Computer Systems are the Same but Different
1.4.1 Computer Systems have no Nearby Bounds on Composition
1.4.2 d(technology)/dt is Unprecedented
1.5 Coping with Complexity Ⅱ
1.5.1 Why Modularity, Abstraction, Layering, and Hierarchy arent Enough
1.5.2 Iteration
1.5.3 Keep it Simple
What the Rest of this Book is About
Exercises
CHAPTER 2 Elements of Computer System Organization
Overview
2.1 The Three Fundamental Abstractions
2.1.1 Memory2.1.2 Interpreters
2.1.3 Communication Links
2.2 Naming in Computer Systems
2.2.1 The Naming Model
2.2.2 Default and Explicit Context References
2.2.3 Path Names, Naming Networks, and Recursive Name Resolution
2.2.4 Multiple Lookup: Searching through Layered Contexts
2.2.5 Comparing Names
2.2.6 Name Discovery
2.3 Organizing Computer Systems with Names and Layers
2.3.1 A Hardware Layer: The Bus
2.3.2 A Software Layer: The File Abstraction
2.4 Looking Back andAhead
2.5 Case Study: UNIX File System Layering and Naming
2.5.1 Application Programming Interface for the UNIX File-System
2.5.2 The Block Layer
2.5.3 The File Layer
2.5.4 The Inode Number Layer
2.5.5 The File Name Layer
2.5.6 The Path Name Layer
2.5.7 Links
2.5.8 Renaming
2.5.9 The Absolute Path Name Layer
2.5.10 The Symbolic Link Layer
2.5.11 Implementing the File System API
2.5.12 The Shell and Implied Contexts, Search Paths, and Name Discovery
2.5.13 Suggestions for Further Reading
Exercises
CHAPTER 3 The Design of Naming Schemes
Overview
3.1 Considerations in the Design of Naming Schemes
3.1.1 Modular Sharing
3.1.2 Metadata and Name Overloading
3.1.3 Addresses: Names that Locate Objects
3.1.4 Generating Unique Names
3.1.5 Intended Audience and User-Friendly Names
3.1.6 Relative Lifetimes of Names,Values, and Bindings
3.1.7 Looking Back andAhead: Names are a Basic System Component
3.9 Case Study: The Uniform Resource Locator (URL)
3.2.1 Surfing as a Referential Experience; Name Discovery
3.2.2 Interpretation of the URL
3.2.3 URL Case Sensitivity
3.2.4 Wrong Context References for a Partial URL
3.2.5 Overloading of Names in URLs
3.3 War Stories: Pathologies in the Use of Names
3.3.1 A Name Collision Eliminates Smiling Faces
3.3.2 Fragile Names from Overloading, and a Market Solution...
3.3.3 More Fragile Names from Overloading, with Market Disruption
3.3.4 Case-Sensitivity in User-Friendly Names
3.3.5 Running Out of Telephone Numbers
Exercises
CHAPTER 4 Enforcing Modularity with Clients and Services
Overview
4.1 Client/Service Organization
4.1.1 From Soft Modularity to Enforced Modularity
4.1.2 Client/Service Organization
4.1.3 Multiple Clients and Services
4.1.4 Trusted Intermediaries
4.1.5 A Simple Example Service
4.2 Communication Between Client and Service
4.2.1 Remote Procedure Call (RPC)
4.2.2 RPCs are not Identical to Procedure Calls
4.2.3 Communicating through an Intermediary
4.3 Summary and The RoadAhead
4.4 Case Study: The Interuet Domain Name System (DNS)
4.4.1 Name Resolution in DNS
4.4.2 Hierarchical Name Management
4.4.3 Other Features of DNS
4.4.4 Name Discovery in DNS
4.4.5 Trustworthiness of DNS Responses
4.5 Case Study: The Network File System (NFS)
4.5.1 Naming Remote Files and Directories
4.5.2 The NFS Remote Procedure Calls
4.5.3 Extending the unix File System to Support NFS
4.5.4 Coherence
4.5.5 NFS Version 3 and Beyond
Exercises
CHAPTER 5 Enforcing Modularity with Virtualization
Overview
5.1 Client/Server Organization within a Computer Using Virtualization
5.1.1 Abstractions for Virtualizing Computers
5.1.2 Emulation and Virtual Machines
5.1.3 Roadmap: Step-by-StepVirtualization
5.2 Virtual Links Using SEND, RECEIVE, and a Bounded Buffer
5.2.1 An Interface for SEND and RECEIVE with Bounded Buffers
5.2.2 Sequence Coordination with a Bounded Buffer
5.2.3 Race Conditions
5.2.4 Locks and Before-or-AfterActions
5.2.5 Deadlock
5.2.6 Implementing ACQUIRE and RELEASE
5.2.7 Implementing a Before-or-AfterAction Using the One-Writer Principle
5.2.8 Coordination between Synchronous Islands with Asynchronous Connections
5.3 Enforcing Modularity in Memory
5.3.1 Enforcing Modularity with Domains
5.3.2 Controlled Sharing Using Several Domains
5.3.3 More Enforced Modularity with Kernel and User Mode
5.3.4 Gates and Changing Modes
5.3.5 Enforcing Modularity for Bounded Buffers
5.3.6 The Kernel
5.4 Virtualizing Memory
5.4.1 Virtualizing Addresses
5.4.2 Translating Addresses Using a Page Map
5.4.3 VirtualAddress Spaces
5.4.4 Hardware versus Software and the Translation Look-Aside Buffer
5.4.5 Segments (Advanced Topic)
5.5 Virtualizing Processors Using Threads
5.5.1 Sharing a ProcessorAmong Multiple Threads
5.5.2 Implementing YIELD
5.5.3 Creating and Terminating Threads
5.5.4 Enforcing Modularity with Threads: Preemptive Scheduling
5.5.5 Enforcing Modularity with Threads andAddress Spaces
5.5.6 Layering Threads
……
PARTⅡ ON-LINE
Suggestions for Further Reading
Problem Sets
Glossary
Complete Index to Parts Ⅰ and Ⅱ
List of Sidebars
Preface
Where to find Part Ⅱ and other On-line Materials
Acknowledgments
CHAPTER 1 Systems
Overview
1.1 Systems and Complexity
1.1.1 Common Problems of Systems in Many Fields
1.1.2 Systems, Components, Interfaces, and Environments
1.1.3 Complexity
1.2 Sources of Complexity
1.2.1 Cascading and Interacting Requirements
1.2.2 Maintaining High Utilization
1.3 Coping with Complexity Ⅰ
1.3.1 Modularity
1.3.2 Abstraction
1.3.3 Layering
1.3.4 Hierarchy
1.3.5 Putting it Back Together: Names make Connections
1.4 Computer Systems are the Same but Different
1.4.1 Computer Systems have no Nearby Bounds on Composition
1.4.2 d(technology)/dt is Unprecedented
1.5 Coping with Complexity Ⅱ
1.5.1 Why Modularity, Abstraction, Layering, and Hierarchy arent Enough
1.5.2 Iteration
1.5.3 Keep it Simple
What the Rest of this Book is About
Exercises
CHAPTER 2 Elements of Computer System Organization
Overview
2.1 The Three Fundamental Abstractions
2.1.1 Memory2.1.2 Interpreters
2.1.3 Communication Links
2.2 Naming in Computer Systems
2.2.1 The Naming Model
2.2.2 Default and Explicit Context References
2.2.3 Path Names, Naming Networks, and Recursive Name Resolution
2.2.4 Multiple Lookup: Searching through Layered Contexts
2.2.5 Comparing Names
2.2.6 Name Discovery
2.3 Organizing Computer Systems with Names and Layers
2.3.1 A Hardware Layer: The Bus
2.3.2 A Software Layer: The File Abstraction
2.4 Looking Back andAhead
2.5 Case Study: UNIX File System Layering and Naming
2.5.1 Application Programming Interface for the UNIX File-System
2.5.2 The Block Layer
2.5.3 The File Layer
2.5.4 The Inode Number Layer
2.5.5 The File Name Layer
2.5.6 The Path Name Layer
2.5.7 Links
2.5.8 Renaming
2.5.9 The Absolute Path Name Layer
2.5.10 The Symbolic Link Layer
2.5.11 Implementing the File System API
2.5.12 The Shell and Implied Contexts, Search Paths, and Name Discovery
2.5.13 Suggestions for Further Reading
Exercises
CHAPTER 3 The Design of Naming Schemes
Overview
3.1 Considerations in the Design of Naming Schemes
3.1.1 Modular Sharing
3.1.2 Metadata and Name Overloading
3.1.3 Addresses: Names that Locate Objects
3.1.4 Generating Unique Names
3.1.5 Intended Audience and User-Friendly Names
3.1.6 Relative Lifetimes of Names,Values, and Bindings
3.1.7 Looking Back andAhead: Names are a Basic System Component
3.9 Case Study: The Uniform Resource Locator (URL)
3.2.1 Surfing as a Referential Experience; Name Discovery
3.2.2 Interpretation of the URL
3.2.3 URL Case Sensitivity
3.2.4 Wrong Context References for a Partial URL
3.2.5 Overloading of Names in URLs
3.3 War Stories: Pathologies in the Use of Names
3.3.1 A Name Collision Eliminates Smiling Faces
3.3.2 Fragile Names from Overloading, and a Market Solution...
3.3.3 More Fragile Names from Overloading, with Market Disruption
3.3.4 Case-Sensitivity in User-Friendly Names
3.3.5 Running Out of Telephone Numbers
Exercises
CHAPTER 4 Enforcing Modularity with Clients and Services
Overview
4.1 Client/Service Organization
4.1.1 From Soft Modularity to Enforced Modularity
4.1.2 Client/Service Organization
4.1.3 Multiple Clients and Services
4.1.4 Trusted Intermediaries
4.1.5 A Simple Example Service
4.2 Communication Between Client and Service
4.2.1 Remote Procedure Call (RPC)
4.2.2 RPCs are not Identical to Procedure Calls
4.2.3 Communicating through an Intermediary
4.3 Summary and The RoadAhead
4.4 Case Study: The Interuet Domain Name System (DNS)
4.4.1 Name Resolution in DNS
4.4.2 Hierarchical Name Management
4.4.3 Other Features of DNS
4.4.4 Name Discovery in DNS
4.4.5 Trustworthiness of DNS Responses
4.5 Case Study: The Network File System (NFS)
4.5.1 Naming Remote Files and Directories
4.5.2 The NFS Remote Procedure Calls
4.5.3 Extending the unix File System to Support NFS
4.5.4 Coherence
4.5.5 NFS Version 3 and Beyond
Exercises
CHAPTER 5 Enforcing Modularity with Virtualization
Overview
5.1 Client/Server Organization within a Computer Using Virtualization
5.1.1 Abstractions for Virtualizing Computers
5.1.2 Emulation and Virtual Machines
5.1.3 Roadmap: Step-by-StepVirtualization
5.2 Virtual Links Using SEND, RECEIVE, and a Bounded Buffer
5.2.1 An Interface for SEND and RECEIVE with Bounded Buffers
5.2.2 Sequence Coordination with a Bounded Buffer
5.2.3 Race Conditions
5.2.4 Locks and Before-or-AfterActions
5.2.5 Deadlock
5.2.6 Implementing ACQUIRE and RELEASE
5.2.7 Implementing a Before-or-AfterAction Using the One-Writer Principle
5.2.8 Coordination between Synchronous Islands with Asynchronous Connections
5.3 Enforcing Modularity in Memory
5.3.1 Enforcing Modularity with Domains
5.3.2 Controlled Sharing Using Several Domains
5.3.3 More Enforced Modularity with Kernel and User Mode
5.3.4 Gates and Changing Modes
5.3.5 Enforcing Modularity for Bounded Buffers
5.3.6 The Kernel
5.4 Virtualizing Memory
5.4.1 Virtualizing Addresses
5.4.2 Translating Addresses Using a Page Map
5.4.3 VirtualAddress Spaces
5.4.4 Hardware versus Software and the Translation Look-Aside Buffer
5.4.5 Segments (Advanced Topic)
5.5 Virtualizing Processors Using Threads
5.5.1 Sharing a ProcessorAmong Multiple Threads
5.5.2 Implementing YIELD
5.5.3 Creating and Terminating Threads
5.5.4 Enforcing Modularity with Threads: Preemptive Scheduling
5.5.5 Enforcing Modularity with Threads andAddress Spaces
5.5.6 Layering Threads
……
PARTⅡ ON-LINE
Suggestions for Further Reading
Problem Sets
Glossary
Complete Index to Parts Ⅰ and Ⅱ
Jerome H.Saltzer received the degree of Sc.D.in the field of ElectricaI Engineering in 1 966 from the Massachusetts Institute of Technology.Since 1966 he has been a faculty member in M.I.I.s Department of ElectricaI Engineering and Computer Science,where he helped to formulate the original undergraduate curriculum in Computer Science.At the M.I.T Computer Science and ArtificiaI Intelligence Laboratory he designed one of the earliest widely-used wo rd..processing systems;he participated in the development of the Multics system,for which he designed the kerneI thread package and with students and colleagues developed the secu rity mechanisms and what would today be known as a microkernel;together with David Clark and David Reed.he articulated the end-to-end argument.a key organizing principle of the Internet;and he was also involved in the design of a token.passing ring IocaI area network.the networking of personal computers,the Kerberos single login authentication system.and digital library systems.Professo r Saltzer was TechnicaI Director of M.I.T Project Athena.a system for undergraduate education and an ea rly example of a system of organization now called"cloud computing".Th roughout his work.he has had a particular interest in the impact of computer systems on privacy and the risks of depending on fragile technology.Professor Saltzer is a member of the NationaI Academy of Engineering.a Fellow of the IEEE and the AAAS,a member of the Association for Computing Machinery.the ACM Committee on Computers and Public Policy.the Catalog Raisonne Schola rs Association,a former member of the Computer Science and TelecommunicatiOns Board of the National Resea rch Council.and a former member of the Mayors Telecommunications Advisory Board for the City of Newton.Massachusetts.
M.Frans Kaashoek received his Ph.D.in 1992 from the Vriie Universiteit in Amsterdam.The Netherlands.fOr his work on g roup communication in the Amoeba distributed operating system,under the supervision of A.S.Tanenbaum.Since 1 993 he has been a facuity member in M.I.Ts Department of ElectricaI Enqineering and Compute r Science.where he and Professor Saltzer co-developed the core undergraduate subject on fhe design of computer systems.Professor Kaashoek is a membe r of the Computer Science and Artificial Intelligence Laboratory.whe re his principal field of inte rest is designing and building compute r systems.He co.1eads the paralleI and distributed operating systems group.His past research in collaboration with colleaques and students includes the exokernel operating system,the Click modular router,the RON overlay.the self.certifying file system,the Chord distributed hash table,and the Asbestos secure operating system.He also participated in starting two successfulIT companies.Professor Kaashoek is a member of the NationaI Academy of Engineering and the recipient of several awards.including the inaugural ACM SIGOPS Mark Weiser award for demonstrating creativity and innovation in operating systems research.
M.Frans Kaashoek received his Ph.D.in 1992 from the Vriie Universiteit in Amsterdam.The Netherlands.fOr his work on g roup communication in the Amoeba distributed operating system,under the supervision of A.S.Tanenbaum.Since 1 993 he has been a facuity member in M.I.Ts Department of ElectricaI Enqineering and Compute r Science.where he and Professor Saltzer co-developed the core undergraduate subject on fhe design of computer systems.Professor Kaashoek is a membe r of the Computer Science and Artificial Intelligence Laboratory.whe re his principal field of inte rest is designing and building compute r systems.He co.1eads the paralleI and distributed operating systems group.His past research in collaboration with colleaques and students includes the exokernel operating system,the Click modular router,the RON overlay.the self.certifying file system,the Chord distributed hash table,and the Asbestos secure operating system.He also participated in starting two successfulIT companies.Professor Kaashoek is a member of the NationaI Academy of Engineering and the recipient of several awards.including the inaugural ACM SIGOPS Mark Weiser award for demonstrating creativity and innovation in operating systems research.
《计算机系统设计原理(影印版)》由计算机系统设计的权威专家、美国麻省理工学院Saltzer和Kaashoek教授编写。《计算机系统设计原理(影印版)》是第一本阐述计算机系统设计中的基本原理和抽象的教材,是麻省理工开放式课程计划(MIT Open Courseware)中“计算机系统工程”课程的主教材。计算机系统的基本原理横跨于操作系统、网络、数据库、分布式系统、程序设计语言、软件工程以及计算机体系结构等方面。通过详细分析每个基本原理的案例,《计算机系统设计原理(影印版)》演示了如何应用这些原理和抽象来解决实际的计算机系统设计问题。《计算机系统设计原理(影印版)》的重点是计算机系统的设计,因此,《计算机系统设计原理(影印版)》阐述了那些在实践中已证明是成功的抽象概念,如命令、远程过程调用、客户/服务器组织结构、文件系统、事务处理、修复复制、读/写一致性,以及认证与保密消息等概念。这些抽象概念使得计算机系统设计者可以用功能日益强大的模块来构建计算机系统,保护计算机系统避免从意外的编程错误到恶意入侵在内的各种故障。《计算机系统设计原理(影印版)》描述了如何实现这些抽象概念,演示了如何把它们应用于不同的系统,为读者日后的设计工作打下基础。
比价列表
公众号、微信群

微信公众号

实时获取购书优惠