本书提供了最新和最全面的UNIX系统技术内幕资料。全书讨论了UNIX的开发技术和原理,考察了现代UNIX系统的最新发展,比较分析了由最重要的UNIX系统和变体所提供的最新特性。本书涵盖的内容包括体现了20世纪90年代UNIX系统结构特色的多项技术:多线程内核、多处理机和实时系统,以及分布式文件系统。本书还讨论了内核的几个重要组成部分,比较了它们在几种不同UNIX变体中的设计,论述了其间的诸多权衡考虑,并且介绍了已被广泛采用的那些特性。\r\n 本书可作为大学计算机科学系高年级本科生和研究生的教材或参考书。本书也为专业UNIX程序员、系统管理员提供了极有价值的参考资料。\r\n
1 INTRODUCTION\r\n 1.1 Introduction\r\n 1.2 Th Mandate for Change\r\n 1.3 Looking Back, Looking Forward\r\n 1.4 The Scope of this Book\r\n 1.5 References\r\n2 THE PROCESS AND THE KERNEL\r\n 2.1 Introduction\r\n 2.2 Mode, Space, and Context\r\n 2.3 The Process Abstraction\r\n 2.4 Executing in Kernel Mode\r\n 2.5 Synchronization\r\n 2.6 Process Scheduling\r\n 2.7 Signals\r\n 2.8 New Processes and Programs\r\n 2.9 Summary\r\n 2.10 Exercises\r\n 2.11 References\r\n3 THREADS AND LIGHTWEIGHT PROCESSES\r\n 3.1 Introduction\r\n 3.2 Fundamental Abstractions\r\n 3.3 Lightweight Process Design--Issues to Consider\r\n 3.4 User-Level Threads Libraries\r\n 3.5 Scheduler Activations\r\n 3.6 Multithreading in Solarie and SVR4\r\n 3.7 Threads in Mach\r\n 3.8 Digital UNIX\r\n 3.9 Mach 3.0 Continuations\r\n 3.10 Summary\r\n 3.11 Exercises\r\n 3.12 References\r\n4 SIGNALS AND SESSION MANAGEMENT\r\n 4.1 Introduction\r\n 4.2 Signal Generation and Handling\r\n 4.3 Unreliable Signals\r\n 4.4 Reliable Signals\r\n 4.5 Signals in SVR4\r\n 4.6 Signals Implementation\r\n 4.7 Exceptions\r\n 4.8 Mach Exception Handling\r\n 4.9 Process Groups and Terminal Management\r\n 4.10 The SVR4 Sessions Architecture\r\n 4.11 Summary\r\n 4.12 Exercises\r\n 4.13 References\r\n5 PROCESS SCHEDULING\r\n 5.1 Introduction\r\n 5.2 Clock Interrupt Handling\r\n 5.3 Scheduler Goals\r\n 5.4 Traditional UNIX Scheduling\r\n 5.5 The SVR4 Scheduler\r\n 5.6 Solaris 2.x Scheduling Enhancements\r\n 5.7 Scheduling in Mach\r\n 5.8 The Digital UNIX Real-Time Scheduler\r\n 5.9 Other Scheduling Implementations\r\n 5.10 Summary\r\n 5.11 Exercises\r\n 5.12 References\r\n6 INTERPROCESS COMMUNICATIONS\r\n 6.1 Introduction\r\n 6.2 Universal IPC Facilities\r\n 6.3 System V IPC\r\n 6.4 Mach IPC\r\n 6.5 Messages\r\n 6.6 Ports\r\n 6.7 Message Passing\r\n 6.8 Port Operations\r\n 6.9 Extensibility\r\n 6.10 Mach 3.0 Enhancements\r\n 6.11 Discussion\r\n 6.12 Summary\r\n 6.13 Exercises\r\n 6.14 References\r\n7 SYNCHRONIZATION AND MULTIPROCESSING\r\n 7.1 Introduction\r\n 7.2 Synchronization in Traditional UNIX Kernels\r\n 7.3 Multiprocessor Systems\r\n 7.4 Multiprocessor Synchronization Issues\r\n 7.5 Semaphores\r\n 7.6 Spin Locks\r\n 7.7 Condition Variables\r\n 7.8 Resd-Writs Locks\r\n 7.9 Reference Counts\r\n 7.10 Other Considerations\r\n 7.11 Case Studies\r\n 7.12 Summary\r\n 7.13 Exercises\r\n 7.14 References\r\n8 FILE SYSTEM INTERFACE AND FRAMEWORK\r\n 8.1 Introduction\r\n 8.2 The User Interface to Files\r\n 8.3 File Systems\r\n 8.4 Special Files\r\n 8.5 File System Framework\r\n 8.6 The Vnode/Vfs Architecture\r\n 8.7 Implementation Overview\r\n 8.8 File-System-Dependent Objects\r\n 8.9 Mounting a File System\r\n 8.10 Operations on Files\r\n 8.11 Analysis\r\n 8.12 Summary\r\n 8.13 Exercises\r\n 8.14 References\r\n9 FILE SYSTEM IMPLEMENTATIONS\r\n 9.1 Introduction\r\n 9.2 The System V File System (s5fs)\r\n 9.3 S5fs Kernel Organization\r\n 9.4 Analysis of s5fs\r\n 9.5 The Berkeley Fast File System\r\n 9.6 Hard Disk Structure\r\n 9.7 On-Disk Organization\r\n 9.8 FFS Functionality Enhancements\r\n 9.9 Analysis\r\n 9.10 Temporary File Systems\r\n 9.11 Special-Purpose File Systems\r\n 9.12 The Old Buffer Cache\r\n 9.13 Summary\r\n 9.14 Exercises\r\n 9.15 References\r\n10 DISTRIBUTED FILE SYSTEMS\r\n 10.1 Introduction\r\n 10.2 General Characteristics of Distributed File Systems\r\n 10.3 Network File System (NFS)\r\n 10.4 The Protocol Suite\r\n 10.5 NFS Implementation\r\n 10.6 UNIX Semantics\r\n 10.7 NFS Performance\r\n 10.8 Dedicated NFS Servers\r\n 10.9 NFS Security\r\n 10.10 NFS Version 3\r\n 10.11 Remote File Sharing (RFS)\r\n 10.12 RFS Architecture\r\n 10.13 RFS Implementation\r\n 10.14 Client-Side Caching\r\n 10.15 The Andrew File System\r\n 10.16 AFS Implementation\r\n 10.17 AFS Shortcomings\r\n 10.18 The DCE Distributed File System (DCE DFS)\r\n 10.19 Summary\r\n 10.20 Exercises\r\n 10.21 References\r\n11 ADVANCED FILE SYSTEMS\r\n 11.1 Introduction\r\n 11.2 Limitations of Traditional File Systems\r\n 11.3 File System Clustering (Sun-FFS)\r\n 11.4 The Journaling Approach\r\n 11.5 Log-Structured File Systems\r\n 1l.6 The 4.4BSD Log-Structured File System\r\n 11.7 Metedata Logging\r\n 11.8 The Episode File System\r\n 11.9 Watchdogs\r\n 11.10 The 4.4BSD Portal File System\r\n 11.11 Stackable File System Layers\r\n 11.12 The 4.4BSD File System Interface\r\n 11.13 Summary\r\n 11.14 Exercises\r\n 11.15 References\r\n12 KERNEL MEMORY ALLOCATION\r\n 12.1 Introduction\r\n 12.2 Functional Requirements\r\n 12.3 Resource Map Allocator\r\n 12.4 Simple Power-of-Two Free Lists\r\n 12.5 The McKusick-Karels Allocator\r\n 12.6 The Buddy System\r\n 12.7 The SVR4 Lazy Buddy Algorithm\r\n 12.8 The Mach-OSF/1 Zone Allocator\r\n 12.9 A Hierarchical Allocator for Multiprocessors\r\n 12.10 The Solaris 2.4 Slab Allocator\r\n 12.11 Summary\r\n 12.12 Exercises\r\n 12.13 References\r\n13 VIRTUAL MEMORY\r\n 13.1 Introduction\r\n 13.2 Demand Paging\r\n 13.3 Hardware Requirements\r\n 13.4 4.3BSD- A Case Study\r\n 13.5 4.3BSD Memory Management Operations\r\n 13.6 Analysis\r\n 13.7 Exercises\r\n 13.8 References\r\n14 THE SVR4 VM ARCHITECTURE\r\n 14.1 Motivation\r\n 14.2 Memory-Mapped Files\r\n 14.3 VM Design Principles\r\n 14.4 Fundamental Abstractions\r\n 14.5 Segment Drivers\r\n 14.6 The Swap Layer\r\n 14.7 VM Operations\r\n 14.8 Interaction with the Vnode Subsystem\r\n 14.9 Virtual Swap Space in Solaris\r\n 14.10 Analysis\r\n 14.11 Performance Improvements\r\n 14.12 Summary\r\n 14.13 Exercises\r\n 14.14 References\r\n15 MORE MEMORY MANAGEMENT TOPICS\r\n 15.1 Introduction\r\n 15.2 Mach Memory Management Design\r\n 15.3 Memory Sharing Facilities\r\n 15.4 Memory Objects and Pagers\r\n 15.5 External and Internal Pagers\r\n 15.6 Page Replacement\r\n 15.7 Analysis\r\n 15.8 Memory Management in 4.4BSD\r\n 15.9 Translation Lookaside Buffer (TLB) Consistency\r\n 15.10 TLB Shootdown in Mach\r\n 15.11 TLB Consistency in SVR4 and SVR4.2 UNIX\r\n 15.12 Other TLB Consistency Algorithms\r\n 15.13 Virtually Addressed Caches\r\n 15.14 Exercises\r\n 15.15 References\r\n16 DEVICE DRIVERS AND I/O\r\n 16.1 Introduction\r\n 16.2 Overview\r\n 16.3 Device Driver Framework\r\n 16.4 The I/O Subsystem\r\n 16.5 The poll System Call\r\n 16.6 Block I/O\r\n 16.7 The DDI/DKI Specification\r\n 16.8 Newer SVR4 Releases\r\n 16.9 Future Directions\r\n 16.10 Summary\r\n 16.11 Exercises\r\n 16.12 References\r\n17 STREAMS\r\n 17.1 Motivation\r\n 17.2 Overview\r\n 17.3 Messages and Queues\r\n 17.4 Stream I/O\r\n 17.5 Configuration and Setup\r\n 17.6 STREAMS ioctls\r\n 17.7 Memory Allocation\r\n 17.8 Multiplexing\r\n 17.9 FIFOs and Pipes\r\n 17.10 Networking Interfaces\r\n 17.11 Summary\r\n 17.12 Exercises\r\n 17.13 References\r\nIndex\r\n
无封面