FreeBSD操作系统设计与实现 第2版 英文版

FreeBSD操作系统设计与实现 第2版 英文版 pdf epub mobi txt 电子书 下载 2025

[美] Marshall Kirk McKusick,George V.Neville-Neil,Robert N.M.Watson 著
图书标签:
  • FreeBSD
  • 操作系统
  • 设计
  • 实现
  • 内核
  • Unix
  • 技术
  • 编程
  • 英文
  • 计算机科学
  • 系统编程
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115413499
版次:1
商品编码:11892504
品牌:异步图书
包装:平装
开本:16开
出版时间:2016-03-01
页数:846
正文语种:中文

具体描述

编辑推荐

FreeBSD技术专家精品力作
FreeBSD操作系统的集大成者
全面剖析FreeBSD的内核架构

本书是FreeBSD内核完整的技术指南,在上一版的基础上进行了全面更新,以涵盖版本FreeBSD 5和版本11之间的所有重大改进。本书大约有1/3的内容是全新的,还有1/3的内容进行了完全重写。
在本书中,三位FreeBSD项目领导人先概述了FreeBSD内核的当前设计和实现,接下来从系统调用级别开始向下(从接口到内核再到硬件)讲解了FreeBSD内核。本书先解释了关键的设计决策,然后剖析了在实现每一个重要系统组件(包括进程管理、安全、虚拟内存、I/O系统、文件系统、socket IPC和网络等)时使用的概念、数据结构和算法。
读者可将本书用作工作参考,或者是深入研究当代杰出的可移植开源操作系统的学习资料。技术和销售支持人员也可以在本书中发现FreeBSD的功能以及局限性;应用开发人员将学到如何有效、高效地与FreeBSD进行交互;系统管理员将学到维护、调优和配置FreeBSD的方法;系统程序员则学到扩展、增强FreebSD以及与FreeBSD进行交互的方法。
本书涵盖了如下内容。
使用FreeBSD jail讲解高度可扩展和轻量级的虚拟化,以及使用Xen和Virtio设备半虚拟化进行虚拟设备加速;
讲解了新的安全特性,比如Capsicum沙箱和GELI加密磁盘保护;
全面支持NFSv4和Open Solaris ZFS;
介绍了FreeBSD增强的卷管理和新的日志软更新;
解释了DTrace精细的过程调试/分析;
讲解了在网络、无线和USB支持方面的主要更新。

内容简介

《FreeBSD操作系统设计与实现(第2版)英文版》是迄今为止对FreeBSD操作系统的介绍全面、丰富的学习资料。
《FreeBSD操作系统设计与实现(第2版)英文版》分为5部分,总计15章。第1部分为概述性内容,对FreeBSD操作系统的历史发展、设计和内核服务进行了简单介绍。第2部分讲解了进程相关的内容,包括进程管理、安全和存储管理等。第3部分讲解了I/O系统相关的内容,包括I/O设备、快速文件系统、泽字节文件系统、网络文件系统等。第4部分讲解了进程间通信相关的内容,包括进程间通信、网络层协议和传输层协议等。第5部分讲解了系统操作相关的内容,主要涉及了系统的启动和关闭。术语表给出了本书涉及的一些常用术语及其解释。
《FreeBSD操作系统设计与实现(第2版)英文版》既可以作为一本FreeBSD实践指南,又可作为深入研究当代可移值的开放源代码操作系统的参考书。本书适合FreeBSD操作系统技术支持人员、应用程序开发人员、系统管理员和系统程序员阅读,也可供对学习FreeBSD感兴趣的读者参考。

作者简介

Marshall Kirk McKusick编写了与UNIX和BSD主题相关的许多资料,并提供相应的咨询和教学服务。当在加州大学伯克利分校时,他实现了4.2BSD快速文件系统。他曾经是伯克利计算机系统研究组(CSRG)的一名计算机科学家,监督4.3BSD和4.4BSD的开发与发布。他当前是FreebSD基金会的董事会成员,也是一名长期的FreeBSD贡献者。他曾经担任过两次Usenix协会的主席,还是ACM、IEEE和AAAS的成员。
George V.Neville-Neil编写了与安全、网络和操作系统相关的许多资料,并提供相应的咨询和教学服务。作为FreeBSD基金会的董事会成员,他为FreeBSD核心团队服务了4年之久。从2004年起,他为Queue和Communications of the ACM写作“Kode Vicious”专栏。他当前是ACM执业委员会的副主席,也是Usenix协会、ACM、IEEE和AAAS的成员。
Robert N.M.Watson是剑桥大学计算机实验室安全研究组的一名大学讲师,负责讲授系统、安全和架构课程。他监督在计算机架构、编译器、程序分析、操作系统、网络和安全方面的高级研究。作为FreeBSD基金会的董事局成员,他为FreeBSD核心团队服务了10年之久,而且当了15年的贡献者。他是Usenix协会和ACM的会员。

目录

Part I Overview 1
第1部分 概述
Chapter 1 History and Goals 3
第1章 历史和目标
1.1 History of the UNIX System / UNIX系统的历史 3
Origins / 起源 3
Research UNIX / 研究UNIX 4
AT&T; UNIX System III and System V / AT&T; UNIX System III
和System V 5
Berkeley Software Distributions / 伯克利软件分发 6
UNIX in the World / 世界上的UNIX 7
1.2 BSD and Other Systems / BSD和其他系统 7
The Influence of the User Community / 用户社区的影响 8
1.3 The Transition of BSD to Open Source / BSD向开源的过渡 9
Networking Release 2 / 网络发布2 10
The Lawsuit / 诉讼 11
4.4BSD / 4.4BSD 13
4.4BSD-Lite Release 2 / 4.4BSD-Lite版本2 13
1.4 The FreeBSD Development Model / FreeBSD开发模型 14
References / 参考文献 17
Chapter 2 Design Overview of FreeBSD 21
第2章 FreeBSD设计概述
2.1 FreeBSD Facilities and the Kernel / FreeBSD组件与内核 21
The Kernel / 内核 22
2.2 Kernel Organization / 内核组织 23
2.3 Kernel Services / 内核服务 26
2.4 Process Management / 进程管理 26
Signals / 信号 28
Process Groups and Sessions / 进程组和会话 29
2.5 Security / 安全 29
Process Credentials / 进程凭证 31
Privilege Model / 特权模式 31
Discretionary Access Control / 自由访问控制 32
Capability Model / 能力模型 32
Jail Lightweight Virtualization / Jail轻型虚拟化 32
Mandatory Access Control / 强制访问控制 34
Event Auditing / 事件审计 35
Cryptography and Random-Number Generators / 35
加密和随机数生成器
2.6 Memory Management / 存储管理 36
BSD Memory-Management Design Decisions / 36
BSD存储管理设计决策
Memory Management Inside the Kernel / 内核中的存储管理 38
2.7 I/O System Overview / I/O系统概述 39
Descriptors and I/O / 描述符和I/O 39
Descriptor Management / 描述符管理 41
Devices / 设备 42
Socket IPC / 套接字IPC 42
Scatter-Gather I/O / 分散-收集I/O 43
Multiple Filesystem Support / 多文件系统支持 43
2.8 Devices / 设备 44
2.9 The Fast Filesystem / 快速文件系统 45
Filestores / 文件存储 48
2.10 The Zettabyte Filesystem / 泽字节文件系统 49
2.11 The Network Filesystem / 网络文件系统 50
2.12 Interprocess Communication / 进程间通信 50
2.13 Network-Layer Protocols / 网络层协议 51
2.14 Transport-Layer Protocols / 传输层协议 52
2.15 System Startup and Shutdown / 系统启动与关闭 52
Exercises / 练习 54
References / 参考文献 54
Chapter 3 Kernel Services 57
第3章 内核服务
3.1 Kernel Organization / 内核组织 57
System Processes / 系统进程 57
System Entry / 系统入口 58
Run-Time Organization / 运行时管理 59
Entry to the Kernel / 内核入口 60
Return from the Kernel / 从内核返回 61
3.2 System Calls / 系统调用 62
Result Handling / 返回处理机制 62
Returning from a System Call / 从系统调用返回 63
3.3 Traps and Interrupts / 陷阱和中断 64
I/O Device Interrupts / I/O设备中断 64
Software Interrupts / 软件中断 65
3.4 Clock Interrupts / 时钟中断 65
Statistics and Process Scheduling / 统计和进程调度机制 66
Timeouts / 超时 67
3.5 Memory-Management Services / 存储管理服务 69
3.6 Timing Services / 计时服务 73
Real Time / 实时 73
External Representation / 外部表示 73
Adjustment of the Time / 时间调整 74
Interval Time / 间隔时间 74
3.7 Resource Services / 资源服务 75
Process Priorities / 进程优先级 75
Resource Utilization / 资源利用 75
Resource Limits / 资源限制 76
Filesystem Quotas / 文件系统配额 77
3.8 Kernel Tracing Facilities / 内核跟踪组件 77
System-Call Tracing / 系统调用跟踪 77
DTrace / DTrace 78
Kernel Tracing / 内核跟踪 82
Exercises / 练习 84
References / 参考文献 85
Part II Processes 87
第II部分 进程
Chapter 4 Process Management 89
第4章 进程管理
4.1 Introduction to Process Management / 进程管理简介 89
Multiprogramming / 多程序设计 90
Scheduling / 调度机制 91
4.2 Process State / 进程状态 92
The Process Structure / 进程架构 94
The Thread Structure / 线程架构 98
4.3 Context Switching / 上下文切换 99
Thread State / 线程状态 100
Low-Level Context Switching / 低层上下文切换 100
Voluntary Context Switching / 自愿上下文切换 101
Synchronization / 同步 106
Mutex Synchronization / 互斥同步 107
Mutex Interface / 互斥接口 109
Lock Synchronization / 锁同步 110
Deadlock Prevention / 死锁预防 112
4.4 Thread Scheduling / 线程调度机制 114
The Low-Level Scheduler / 低层调度器 114
Thread Run Queues and Context Switching / 115
线程运行队列和上下文切换
Timeshare Thread Scheduling / 分时线程调度 117
Multiprocessor Scheduling / 多处理器调度 122
Adaptive Idle / 自适应空闲 125
Traditional Timeshare Thread Scheduling / 125
传统的分时线程调度
4.5 Process Creation / 创建进程 126
4.6 Process Termination / 终止进程 128
4.7 Signals / 信号 129
Posting of a Signal / 发出信号 132
Delivering a Signal / 传输信号 135
4.8 Process Groups and Sessions / 进程组和会话 136
Process Groups / 进程组 137
Sessions / 会话 138
Job Control / 作业控制 139
4.9 Process Debugging / 进程调试 142
Exercises / 练习 144
References / 参考文献 146
Chapter 5 Security 147
第5章 安全
5.1 Operating-System Security / 操作系统安全 148
5.2 Security Model / 安全模型 149
Process Model / 进程模型 149
Discretionary and Mandatory Access Control 150
自由和强制访问控制
Trusted Computing Base (TCB) / 受信计算基(TCB) 151
Other Kernel-Security Features / 其他内核安全特性 151
5.3 Process Credentials / 进程凭证 151
The Credential Structure / 凭证架构 152
Credential Memory Model / 凭证存储模型 153
Access-Control Checks / 访问控制校验 153
5.4 Users and Groups / 用户和组 154
Setuid and Setgid Binaries / Setuid和Setgid二进制 155
5.5 Privilege Model / 特权模型 157
Implicit Privilege / 隐式特权 157
Explicit Privilege / 显式特权 157
5.6 Interprocess Access Control / 进程间访问控制 159
Visibility / 可见性 160
Signals / 信号 160
Scheduling Control / 调度控制 160
Waiting on Process Termination / 等待进程终止 161
Debugging / 调试 161
5.7 Discretionary Access Control / 自由访问控制 161
The Virtual-Filesystem Interface and DAC / 162
虚拟文件系统接口和DAC
Object Owners and Groups / 对象属主和组 163
UNIX Permissions / UNIX权限 164
Access Control Lists (ACLs) / 访问控制列表(ACL) 165
POSIX.1e Access Control Lists / POSIX.1e访问控制列表 168
NFSv4 Access Control Lists / NFSv4访问控制列表 171
5.8 Capsicum Capability Model / Capsicum能力模型 174
Capsicum Application Structure / Capsicum应用架构 175
Capability Systems / 能力系统 176
Capabilities / 能力 177
Capability Mode / 能力模型 179
5.9 Jails / Jail 180
5.10 Mandatory Access-Control Framework / 强制访问控制框架 184
Mandatory Policies / 强制策略 186
Guiding Design Principles / 设计原则指导 187
Architecture of the MAC Framework / MAC框架的架构 188
Framework Startup / 启动框架 189
Policy Registration / 策略注册 190
Framework Entry-Point Design Considerations / 191
框架入口点设计考量
Policy Entry-Point Considerations / 策略入口点考量 192
Kernel Service Entry-Point Invocation / 内核服务入口点调用 193
Policy Composition / 策略组成 194
Object Labelling / 给对象打标签 195
Label Life Cycle and Memory Management / 196
标签生命周期和存储管理
Label Synchronization / 标签同步 199
Policy-Agnostic Label Management from Userspace / 199
从用户空间进行策略无关的标签管理
5.11 Security Event Auditing / 安全事件审计 200
Audit Events and Records / 审计事件和记录 201
BSM Audit Records and Audit Trails / 202
BSM审计记录和审计跟踪
Kernel-Audit Implementation / 内核审计的实施 203
5.12 Cryptographic Services / 加密服务 206
Cryptographic Framework / 加密框架 206
Random-Number Generator / 随机数生成器 208
5.13 GELI Full-Disk Encryption / GELI全磁盘加密 212
Confidentiality and Integrity Protection / 保密性和完整性保护 212
Key Management / 密钥管理 213
Starting GELI / 启动GELI 214
Cryptographic Block Protection / 加密块保护 215
I/O Model / I/O模型 216
Limitations / 限制 216
Exercises / 练习 217
References / 参考文献 217
Chapter 6 Memory Management 221
第6章 存储管理
6.1 Terminology / 术语 221
Processes and Memory / 进程和存储 222
Paging / 分页 223
Replacement Algorithms / 替换算法 224
Working-Set Model / 工作集模型 225
Swapping / 交换 225
Advantages of Virtual Memory / 虚拟存储的优势 225
Hardware Requirements for Virtual Memory / 226
虚拟存储的硬件需求
6.2 Overview of the FreeBSD Virtual-Memory System / 227
FreeBSD虚拟存储系统概述
User Address-Space Management / 用户地址空间管理 228
6.3 Kernel Memory Management / 内核存储管理 230
Kernel Maps and Submaps / 内核映射和子映射 231
Kernel Address-Space Allocation / 内核地址空间分配 233
The Slab Allocator / Slab分配器 236
The Keg Allocator / Keg分配器 238
The Zone Allocator / Zone分配器 239
Kernel Malloc / Malloc内核 241
Kernel Zone Allocator / 内核Zone分配器 243
6.4 Per-Process Resources / 每进程资源 244
FreeBSD Process Virtual-Address Space / 245
FreeBSD进程虚拟地址空间
Page-Fault Dispatch / 页面故障调度 245
Mapping to Vm_objects / 映射到Vm_objects 247
Vm_objects / Vm_objects 249
Vm_objects to Pages / Vm_object到页面 249
6.5 Shared Memory / 共享存储 250
Mmap Model / Mmap模型 251
Shared Mapping / 共享映射 253
Private Mapping / 私有映射 254
Collapsing of Shadow Chains / 阴影链的崩溃 257
Private Snapshots / 私有快照 258
6.6 Creation of a New Process / 创建一个新的进程 258
Reserving Kernel Resources / 预留内核资源 259
Duplication of the User Address Space / 用户地址空间的重复 260
Creation of a New Process Without Copying / 261
不使用复制的方式来创建新的进程
6.7 Execution of a File / 执行文件 262
6.8 Process Manipulation of Its Address Space / 263
进程以及地址空间的操作
Change of Process Size / 改变进程的大小 263
File Mapping / 文件映射 264
Change of Protection / 改变保护 266
6.9 Termination of a Process / 终止进程 266
6.10 The Pager Interface / 分页器接口 267
Vnode Pager / Vnode分页器 269
Device Pager / 设备分页器 270
Physical-Memory Pager / 物理存储分页器 272
Swap Pager / 交换分页器 272
6.11 Paging / 分页机制 276
Hardware-Cache Design / 硬件缓存设计 280
Hardware Memory Management / 硬件存储管理 282
Superpages / 超级页面 284
6.12 Page Replacement / 页面替换 289
Paging Parameters / 分页参数 291
The Pageout Daemon / 分页守护进程 292
Swapping / 交换 295
The Swap-In Process / 进程内的交换 296
6.13 Portability / 可移植性 298
The Role of the pmap Module / pmap模块的角色 299
Initialization and Startup / 初始化和启动 301
Mapping Allocation and Deallocation / 映射分配和释放 304
Change of Access and Wiring Attributes for Mappings / 306
更改映射的访问和布线属性
Maintenance of Physical Page-Usage Information / 307
物理页面使用信息的维护
Initialization of Physical Pages / 物理页面的初始化 308
Management of Internal Data Structures / 内部数据结构的管理 308
Exercises / 练习 308
References / 参考文献 310
Part III I/O System 313
第III部分 I/O系统
Chapter 7 I/O System Overview 315
第7章 I/O系统概述
7.1 Descriptor Management and Services / 描述符管理和服务 316
Open File Entries / 开放文件入口 318
Management of Descriptors / 描述符管理 319
Asynchronous I/O / 异步I/O 321
File-Descriptor Locking / 文件描述符锁定 322
Multiplexing I/O on Descriptors / 描述符上的多路复用I/O 324
Implementation of Select / Select的实现 327
Kqueues and Kevents / Kqueues和Kevents 329
Movement of Data Inside the Kernel / 数据在内核中的移动 332
7.2 Local Interprocess Communication / 本地进程间通信 333
Semaphores / 信号量 335
Message Queues / 消息队列 337
Shared Memory / 共享存储 338
7.3 The Virtual-Filesystem Interface / 虚拟文件系统接口 339
Contents of a Vnode / Vnode的内容 339
Vnode Operations / Vnode的操作 342
Pathname Translation / 路径名的转换 342
Exported Filesystem Services / 导出文件系统服务 343
7.4 Filesystem-Independent Services / 独立于文件系统的服务 344
The Name Cache / 名称缓存 346
Buffer Management / 缓冲管理 347
Implementation of Buffer Management / 缓冲管理的实现 350
7.5 Stackable Filesystems / 可堆叠的文件系统 352
Simple Filesystem Layers / 简单的文件系统层 354
The Union Filesystem / 联合文件系统 355
Other Filesystems / 其他文件系统 357
Exercises / 练习 358
References / 参考文献 359
Chapter 8 Devices 361
第8章 设备
8.1 Device Overview / 设备概述 361
The PC I/O Architecture / PC I/O架构 362
The Structure of the FreeBSD Mass Storage I/O Subsystem / 364
FreeBSD海量存储I/O子系统的架构
Device Naming and Access / 设备命名和访问 366
8.2 I/O Mapping from User to Device / 从用户到设备的I/O映射 367
Device Drivers / 设备驱动 368
I/O Queueing / I/O队列机制 369
Interrupt Handling / 中断处理 370
8.3 Character Devices / 字符设备 370
Raw Devices and Physical I/O / 原始设备和物理I/O 372
Character-Oriented Devices / 面向字符的设备 373
Entry Points for Character Device Drivers / 373
字符设备驱动的入口点
8.4 Disk Devices / 磁盘设备 374
Entry Points for Disk Device Drivers / 374
磁盘设备驱动的入口点
Sorting of Disk I/O Requests / 磁盘I/O请求的排序 375
Disk Labels / 磁盘卷标 376
8.5 Network Devices / 网络设备 378
Entry Points for Network Drivers / 网络驱动的入口点 378
Configuration and Control / 配置和控制 379
Packet Reception / 接收数据包 380
Packet Transmission / 传输数据包 381
8.6 Terminal Handling / 终端处理 382
Terminal-Processing Modes / 终端进程模型 383
User Interface / 用户接口 385
Process Groups, Sessions, and Terminal Control / 387
进程组、会话和终端控制
Terminal Operations / 终端的操作 388
Terminal Output (Upper Half) / 终端输出(上半部分) 388
Terminal Output (Lower Half) / 终端输出(下半部分) 389
Terminal Input / 终端输入 390
Closing of Terminal Devices / 关闭终端设备 391
8.7 The GEOM Layer / GEOM层 391
Terminology and Topology Rules / 术语和拓扑规则 392
Changing Topology / 更改拓扑 393
Operation / 操作 396
Topological Flexibility / 拓扑的灵活性 397
8.8 The CAM Layer / CAM层 399
The Path of a SCSI I/O Request Through the CAM Subsystem / 400
通过CAM子系统的SSCI I/O请求路径
ATA Disks / ATA磁盘 402
8.9 Device Configuration / 设备配置 402
Device Identification / 设备识别 405
Autoconfiguration Data Structures / 自动配置数据结构 407
Resource Management / 资源管理 412
8.10 Device Virtualization / 设备虚拟化 414
Interaction with the Hypervisor / 与Hypervisor进行交互 414
Virtio / Virtio 415
Xen / Xen 419
Device Pass-Through / 设备直通 427
Exercises / 练习 428
References / 参考文献 429
Chapter 9 The Fast Filesystem 431
第9章 快速文件系统
9.1 Hierarchical Filesystem Management / 分层的文件系统管理 431
9.2 Structure of an Inode / Inode的架构 433
Changes to the Inode Format / 更改Inode格式 435
Extended Attributes / 扩展属性 436
New Filesystem Capabilities / 新的文件系统能力 438
File Flags / 文件标记 439
Dynamic Inodes / 动态Inode 441
Inode Management / Inode管理 442
9.3 Naming / 命名 443
Directories / 目录 444
Finding of Names in Directories / 在目录中查找名字 446
Pathname Translation / 路径名转换 447
Links / 链接 449
9.4 Quotas / 配额 451
9.5 File Locking / 文件锁定 454
9.6 Soft Updates / 软更新 459
Update Dependencies in the Filesystem / 460
在文件系统中更新依赖
Dependency Structures / 依赖的架构 464
Bitmap Dependency Tracking / 位图依赖跟踪 466
Inode Dependency Tracking / Inode依赖跟踪 467
Direct-Block Dependency Tracking / 直接块依赖跟踪 469
Indirect-Block Dependency Tracking / 间接块依赖跟踪 470
Dependency Tracking for New Indirect Blocks 471
新间接块的依赖跟踪
New Directory-Entry Dependency Tracking 472
新目录入口的依赖跟踪
New Directory Dependency Tracking / 新的目录依赖跟踪 474
Directory-Entry Removal-Dependency Tracking / 475
目录入口移除依赖跟踪
File Truncation / 文件截断 476
File and Directory Inode Reclamation / 476
文件和目录Inode复垦
Directory-Entry Renaming Dependency Tracking / 476
目录入口重命名依赖跟踪
Fsync Requirements for Soft Updates / 软更新的Fsync请求 477
File-Removal Requirements for Soft Updates / 478
软更新的文件移除需求
Soft-Updates Requirements for fsck / fsck的软更新需求 480
9.7 Filesystem Snapshots / 文件系统快照 480
Creating a Filesystem Snapshot / 创建一个文件系统快照 481
Maintaining a Filesystem Snapshot / 维护一个文件系统快照 483
Large Filesystem Snapshots / 大型文件系统快照 484
Background fsck / fsck的背景知识 486
User-Visible Snapshots / 用户可见的快照 487
Live Dumps / 实时转储 487
9.8 Journaled Soft Updates / 记录软更新 487
Background and Introduction / 背景和简介 487
Compatibility with Other Implementations / 488
与其他实现的兼容
Journal Format / 记录的格式 488
Modifications That Require Journaling / 需要进行记录的修改 489
Additional Requirements of Journaling / 490
与记录相关的额外需求
The Recovery Process / 恢复进程 492
Performance / 性能 493
Future Work / 后续工作 494
Tracking File-Removal Dependencies / 跟踪文件移除依赖 495
9.9 The Local Filestore / 本地文件存储 496
Overview of the Filestore / 文件存储概述 497
User I/O to a File / 用户对文件的I/O 499
9.10 The Berkeley Fast Filesystem / 伯克利快速文件系统 501
Organization of the Berkeley Fast Filesystem / 502
伯克利快速文件系统的组织
Boot Blocks / 引导块 503
Optimization of Storage Utilization / 存储利用的优化 504
Reading and Writing to a File / 读写文件 505
Layout Policies / 布局策略 507
Allocation Mechanisms / 分配机制 510
Block Clustering / 块聚类 514
Extent-Based Allocation / 基于分区的分配 516
Exercises / 练习 517
References / 参考文献 519
Chapter 10 The Zettabyte Filesystem 523
第10章 泽字节文件系统
10.1 Introduction / 简介 523
10.2 ZFS Organization / ZFS的组织 527
ZFS Dnode / ZFS Dnode 528
ZFS Block Pointers / ZFS块指针 529
ZFS objset Structure / ZFS objset架构 531
10.3 ZFS Structure / ZFS架构 532
The MOS Layer / MOS层 533
The Object-Set Layer / 对象集层 534
10.4 ZFS Operation / ZFS操作 535
Writing New Data to Disk / 将新的数据写入磁盘 536
Logging / 记录日志 538
RAIDZ / RAIDZ 540
Snapshots / 快照 542
ZFS Block Allocation / ZFS块分配 542
Freeing Blocks / 释放块 543
Deduplication / 删除重复数据 545
Remote Replication / 远程复制 546
10.5 ZFS Design Tradeoffs / ZFS设计权衡 547
Exercises / 练习 549
References / 参考文献 549
Chapter 11 The Network Filesystem 551
第11章 网络文件系统
11.1 Overview / 概述 551
11.2 Structure and Operation / 架构和操作 553
The FreeBSD NFS Implementation / FreeBSD FNS的实现 558
Client–Server Interactions / 客户端与服务器的交互 562
Security Issues / 安全问题 564
Techniques for Improving Performance / 565
用于提升性能的技术
11.3 NFS Evolution / NFS的演进 567
Namespace / 名称空间 572
Attributes / 属性 572
Access Control Lists / 访问控制列表 574
Caching, Delegation, and Callbacks / 缓存、委派和回调 574
Locking / 锁定 581
Security / 安全 583
Crash Recovery / 崩溃恢复 584
Exercises / 练习 586
References / 参考文献 587
Part IV Interprocess Communication 591
第IV部分 进程间通信
Chapter 12 Interprocess Communication 593
第12章 进程间通信
12.1 Interprocess-Communication Model / 进程间通信模型 593
Use of Sockets / 使用套接字 596
12.2 Implementation Structure and Overview / 实现架构和概述 599
12.3 Memory Management / 存储管理 601
Mbufs / Mbufs 601
Storage-Management Algorithms / 存储管理算法 605
Mbuf Utility Routines / Mbuf实用例程 606
12.4 IPC Data Structures / IPC数据结构 606
Socket Addresses / 套接字地址 611
Locks / 锁 612
12.5 Connection Setup / 连接建立 612
12.6 Data Transfer / 数据传输 615
Transmitting Data / 传输数据 616
Receiving Data / 接收数据 617
12.7 Socket Shutdown / 关闭套接字 620
12.8 Network-Communication Protocol Internal Structure / 621
网络通信协议内部架构
Data Flow / 数据流 623
Communication Protocols / 通信协议 624
12.9 Socket-to-Protocol Interface / 套接字与协议之间的接口 626
Protocol User-Request Routines / 协议用户请求例程 627
Protocol Control-Output Routine / 协议控制输出例程 630
12.10 Protocol-to-Protocol Interface / 协议与协议的接口 631
pr_output / pr_output 632
pr_input / pr_input 632
pr_ctlinput / pr_ctlinput 633
12.11 Protocol-to-Network Interface / 协议与网路的接口 634
Network Interfaces and Link-Layer Protocols / 634
网络接口与链路层协议
Packet Transmission / 数据包传输 641
Packet Reception / 数据包接收 642
12.12 Buffering and Flow Control / 缓冲和流控制 643
Protocol Buffering Policies / 协议缓冲策略 643
Queue Limiting / 队列限制 643
12.13 Network Virtualization / 网络虚拟化 644
Exercises / 练习 646
References / 参考文献 648
Chapter 13 Network-Layer Protocols 649
第13章 网络层协议
13.1 Internet Protocol Version 4 / IPv4 650
IPv4 Addresses / IPv4地址 652
Broadcast Addresses / 广播地址 653
Internet Multicast / Internet多播 654
Link-Layer Address Resolution / 链路层地址解析 655
13.2 Internet Control Message Protocols (ICMP) / 657
Internet控制消息协议(ICMP)
13.3 Internet Protocol Version 6 / IPv6 659
IPv6 Addresses / IPv6地址 660
IPv6 Packet Formats / IPv6数据包格式 662
Changes to the Socket API / 更改套接字API 664
Autoconfiguration / 自动配置 666
13.4 Internet Protocols Code Structure / IP代码结构 670
Output / 输出 671
Input / 输入 673
Forwarding / 转发 674
13.5 Routing / 路由 675
Kernel Routing Tables / 内核路由表 677
Routing Lookup / 路由查找 680
Routing Redirects / 路由重定向 683
Routing-Table Interface / 路由表接口 683
User-Level Routing Policies / 用户级路由策略 684
User-Level Routing Interface: Routing Socket / 685
用户级路由接口:路由套接字
13.6 Raw Sockets / 原始套接字 686
Control Blocks / 控制块 686
Input Processing / 输入处理 687
Output Processing / 输出处理 687
13.7 Security / 安全 688
IPSec Overview / IPSec概述 689
Security Protocols / 安全协议 690
Key Management / 密钥管理 693
IPSec Implementation / IPSec实施 698
13.8 Packet-Processing Frameworks / 数据包处理框架 700
Berkeley Packet Filter / 伯克利数据包过滤器 700
IP Firewalls / IP防火墙 701
IPFW and Dummynet / IPFW和Dummynet 702
Packet Filter (PF) / 数据包过滤器(PF) 706
Netgraph / Netgraph 707
Netmap / Netmap 712
Exercises / 练习 715
References / 参考文献 717
Chapter 14 Transport-Layer Protocols 721
第14章 传输层协议
14.1 Internet Ports and Associations / Internet端口和关联 721
Protocol Control Blocks / 协议控制块 722
14.2 User Datagram Protocol (UDP) / 用户数据报协议(UDP) 723
Initialization / 初始化 723
Output / 输出 724
Input / 输入 724
Control Operations / 控制操作 725
14.3 Transmission Control Protocol (TCP) / 传输控制协议(TCP) 725
TCP Connection States / TCP连接状态 727
Sequence Variables / 序列变量 730
14.4 TCP Algorithms / TCP算法 732
Timers / 计时器 733
Estimation of Round-Trip Time / 估算往返时间 735
Connection Establishment / 连接建立 736
SYN Cache / SYN缓存 739
SYN Cookies / SYN Cookie 739
Connection Shutdown / 连接关闭 740
14.5 TCP Input Processing / TCP输入处理 741
14.6 TCP Output Processing / TCP输出处理 745
Sending Data / 发送数据 746
Avoidance of the Silly-Window Syndrome / 746
避免笨窗口综合征
Avoidance of Small Packets / 避免小数据包 747
Delayed Acknowledgments and Window Updates / 748
延迟确认和窗口更新
Selective Acknowledgment / 选择性确认 749
Retransmit State / 重传状态 751
Slow Start / 慢启动 752
Buffer and Window Sizing / 缓存和窗口大小 754
Avoidance of Congestion with Slow Start / 755
带有慢启动的拥塞避免
Fast Retransmission / 快速重传 756
Modular Congestion Control / 模块化拥塞控制 758
The Vegas Algorithm / Vegas算法 759
The Cubic Algorithm / Cubic算法 760
14.7 Stream Control Transmission Protocol (SCTP) / 761
流控传输协议(SCTP)
Chunks / 大数据块 762
Association Setup / 关联建立 762
Data Transfer / 数据传输 764
Association Shutdown / 关联关闭 766
Multihoming and Heartbeats / 多宿主和心跳 767
Exercises / 练习 768
References / 参考文献 770
Part V System Operation 773
第V部分 系统操作
Chapter 15 System Startup and Shutdown 775
第15章 系统启动和关闭
15.1 Firmware and BIOSes / 固件和BIOS 776
15.2 Boot Loaders / 引导加载程序 777
Master Boot Record and Globally Unique Identifier Partition Table / 778
主引导记录和全局唯一标识分区表
The Second-Stage Boot Loader: gptboot /
二级引导加载程序:gptboot 779
The Final-Stage Boot Loader: /boot/loader /
末级引导加载程序:/boot/loader 779
Boot Loading on Embedded Platforms /
在嵌入式平台上引导加载 781
15.3 Kernel Boot / 内核引导 782
Assembly-Language Startup / 启动汇编语言 783
Platform-Specific C-Language Startup /
启动特定于平台的C语言 784
Modular Kernel Design / 模块化内核设计 785
Module Initialization / 模块初始化 785
Basic Kernel Services / 基本的内核服务 787
Kernel-Thread Initialization / 内核线程初始化 792
Device-Module Initialization / 设备模块初始化 794
Loadable Kernel Modules / 可加载的内核模块 796
15.4 User-Level Initialization / 用户级初始化 798
/sbin/init / /sbin/init 798
System Startup Scripts / 系统启动脚本 798
/usr/libexec/getty / /usr/libexec/getty 799
/usr/bin/login / /usr/bin/login 799
15.5 System Operation / 系统操作 800
Kernel Configuration / 内核配置 800
System Shutdown and Autoreboot / 关闭和自动重启系统 801
System Debugging / 系统调试 802
Passage of Information To and From the Kernel / 803
信息在内核中的传递
Exercises / 练习 805
References / 参考文献 806
Glossary 807
术语表

前言/序言


《FreeBSD 操作系统设计与实现》(第二版) 探寻现代操作系统的核心奥秘 在信息技术飞速发展的今天,操作系统作为连接硬件与软件的桥梁,其重要性不言而喻。而 FreeBSD,作为一款稳定、高效、功能强大的开源类 Unix 操作系统,凭借其卓越的设计理念和坚实的代码实现,在服务器、嵌入式设备、网络设备等众多领域赢得了广泛的赞誉。对于希望深入理解操作系统底层机制、掌握系统设计精髓的开发者、系统管理员以及计算机科学的学生而言,《FreeBSD 操作系统设计与实现》(第二版)无疑是一本不可多得的宝贵财富。 本书并非一本简单的 FreeBSD 使用手册,它以精妙的视角,带领读者深入 FreeBSD 的心脏地带,解剖其精巧的架构,剖析其核心的设计思想,并详尽地阐述其实现细节。作者凭借其深厚的专业知识和丰富的实践经验,将 FreeBSD 复杂的内部工作原理娓娓道来,使其变得清晰易懂,引人入胜。 全景式剖析,构建知识体系 本书的编写风格严谨而系统,从宏观的整体架构到微观的模块实现,都进行了全面的覆盖。读者将有机会从以下几个核心层面,系统地构建对 FreeBSD 操作系统的认知: 内核架构与组织: 深入理解 FreeBSD 内核的整体设计,包括其模块化结构、核心服务的功能划分,以及不同子系统之间的相互作用。本书将详细介绍内核的引导过程,以及它如何管理系统资源。 进程管理与调度: 探索 FreeBSD 如何创建、管理和销毁进程,以及其精密的进程调度算法。理解进程的生命周期、上下文切换的机制,以及多任务环境下 CPU 资源的有效分配,对于优化系统性能至关重要。 内存管理: 揭示 FreeBSD 如何高效地管理物理内存和虚拟内存。本书将详细讲解内存分配、分页、交换、缓存等关键概念,并深入分析其实现策略,帮助读者理解内存管理对系统性能的影响。 文件系统: 剖析 FreeBSD 的文件系统设计,包括 UFS、ZFS 等主流文件系统的结构、操作和优化。理解文件系统的作用,以及它如何组织和访问存储设备上的数据,是理解 I/O 操作的基础。 设备驱动与 I/O 管理: 深入了解 FreeBSD 如何与硬件设备进行交互。本书将详细介绍设备驱动程序的编写、加载和管理,以及 I/O 请求的处理流程,让读者理解应用程序如何通过操作系统访问硬件。 网络协议栈: 揭秘 FreeBSD 强大的网络功能是如何实现的。本书将详细讲解 TCP/IP 协议栈的各个层次,包括套接字接口、数据包的发送与接收、拥塞控制等,为网络编程和系统优化打下坚实基础。 系统调用接口: 剖析应用程序与内核之间进行通信的桥梁——系统调用。本书将详细介绍常见的系统调用及其工作原理,帮助读者理解用户空间与内核空间之间的界限和交互方式。 线程与并发: 探索 FreeBSD 如何支持多线程编程,以及其线程模型和同步机制。理解并发编程是现代高性能应用开发的关键,本书将提供深入的指导。 深度挖掘,洞察设计智慧 《FreeBSD 操作系统设计与实现》(第二版)的价值不仅仅在于其内容的全面性,更在于其对 FreeBSD 设计理念的深刻洞察。作者在阐述具体实现细节的同时,会追溯其背后的设计决策,解释为什么 FreeBSD 会选择这样的实现方式,以及这些设计如何权衡了性能、可靠性、可扩展性等诸多因素。 例如,在讨论内存管理时,本书不会仅仅罗列算法,而是会分析不同内存管理策略的优缺点,以及 FreeBSD 在特定场景下为何选择了最优的方案。在讲解网络协议栈时,作者会深入剖析 TCP 的复杂机制,解释其在不同网络条件下的行为表现,以及 FreeBSD 如何进行优化以提升网络吞吐量和降低延迟。 这种“知其然,更知其所以然”的讲解方式,能够帮助读者超越简单的代码学习,真正理解操作系统的设计哲学,从而在未来的开发和系统设计中,能够做出更明智的决策。 面向读者,赋能实践 本书的读者群体广泛,涵盖了: 操作系统研究者与开发者: 对于希望深入理解类 Unix 内核原理,或参与 FreeBSD 核心开发的人员,本书提供了宝贵的参考资料和技术指导。 系统管理员: 能够帮助系统管理员更深入地理解 FreeBSD 的内部机制,从而更有效地进行系统调优、故障排查和安全加固。 网络工程师: 深入理解 FreeBSD 的网络协议栈,将有助于网络工程师更好地设计和管理网络基础设施。 计算机科学专业的学生: 是学习操作系统原理的理想教材,能够帮助学生建立扎实的理论基础,为未来的学习和职业发展奠定坚实基础。 对操作系统原理感兴趣的开发者: 即使不是 FreeBSD 的用户,本书也能提供深刻的操作系统设计思想,帮助读者理解通用操作系统的工作原理。 精炼语言,匠心独运 本书的语言风格清晰、准确且富有逻辑性。作者善于将复杂的概念转化为易于理解的叙述,并通过大量的图示和代码示例来辅助说明。即使是晦涩的技术细节,在作者的笔下也变得生动而形象。 第二版相较于第一版,在内容上进行了大量的更新和补充,反映了 FreeBSD 在过去几年中取得的进步和发展。新增了对 ZFS 文件系统的更深入探讨,以及对现代硬件特性的支持等内容,使其更具时效性和前瞻性。 结语 《FreeBSD 操作系统设计与实现》(第二版)是一本集学术性、实用性和前瞻性于一体的经典之作。它不仅仅是一本技术书籍,更是一扇通往操作系统世界深处的大门。通过阅读本书,您将不仅能够掌握 FreeBSD 操作系统的设计精髓,更能培养出对操作系统底层运作的深刻理解,为您的技术之路注入强大的动力。无论您是希望精通 FreeBSD 的专家,还是希望夯实操作系统基础的学生,抑或是对计算机底层原理充满好奇的开发者,这本书都将是您不可或缺的伙伴。翻开它,踏上这段精彩的操作系统探索之旅吧!

用户评价

评分

我必须承认,在翻开《FreeBSD操作系统设计与实现(第二版)》之前,我对“操作系统设计”这个话题多少有些敬畏。我习惯了在应用层面上工作,对底层的实现细节了解不多。然而,这本书以其独特的视角和严谨的论证,彻底改变了我的看法。作者并没有仅仅堆砌枯燥的代码和API,而是着重于解释“为什么”和“如何”。例如,在讲解网络堆栈时,他详细地阐述了 TCP/IP 协议族的演进和 FreeBSD 在其中的实现策略,包括一些高级的调优技巧。我惊喜地发现,那些我过去只是机械地配置的参数,原来背后有着如此精妙的设计理念。书中的图示也非常到位,它们帮助我直观地理解了复杂的系统流程,比如上下文切换、中断处理等。我特别欣赏的是,作者在讨论设计决策时,会提及不同的权衡和取舍,这让我认识到操作系统设计并非是银弹,而是在满足特定需求和性能目标时所做出的最优选择。这本书的阅读体验,更像是一次与经验丰富的工程师进行深入交流,他耐心地引导你一步步揭开操作系统的神秘面纱。

评分

坦白说,一开始我选择《FreeBSD操作系统设计与实现(第二版)》是带着一丝“挑战自我”的心态。我并非计算机科学科班出身,对操作系统的概念总是感觉有些模糊。但是,这本书的叙述方式非常人性化,作者似乎非常了解读者的可能遇到的困惑,并提前做好了准备。他用类比、故事以及循序渐进的讲解方式,将那些抽象的概念变得生动起来。例如,在解释锁机制时,他会用生活中的例子来比喻互斥锁和信号量,让我瞬间豁然开朗。而且,这本书的结构设计也十分合理,每一章都围绕一个核心主题展开,并且在前一章的基础上进行延伸。我尤其喜欢的是,书中不仅仅是理论的堆砌,还会穿插一些 FreeBSD 实际代码的引用,虽然我不会深入到每一个字节,但这些代码片段的存在,让我感觉这本书是“活”的,它连接着理论与现实。这本书让我对 FreeBSD 的系统架构有了更全面的认识,也让我更加敬佩 FreeBSD 社区的智慧和贡献。

评分

对于那些渴望突破“用户”界限,成为 FreeBSD 系统的“建造者”或“优化者”的读者而言,《FreeBSD操作系统设计与实现(第二版)》无疑是一剂强心针。这本书并没有止步于对现有实现的描述,而是充满了对未来发展方向的探讨,以及对性能瓶颈的分析。我尤其对书中关于 I/O 子系统性能优化的章节印象深刻,其中对异步 I/O(AIO)和内存映射文件(mmap)的深入解析,为我解决实际工作中遇到的 I/O 密集型应用的性能问题提供了宝贵的思路。作者在分析问题的过程中,大量引用了实际的性能测试数据和代码片段,这使得讨论更具说服力,也更容易被实际应用。此外,本书对于 FreeBSD 在虚拟化、容器化等新兴技术领域的应用和设计考量也有涉及,这对于我们这些需要紧跟技术潮流的开发者来说,无疑是极具价值的。我发现,阅读这本书不仅仅是学习知识,更是在学习一种解决问题的方法论,一种对系统进行深入剖析和优化的思维方式。

评分

终于有机会拜读这本《FreeBSD操作系统设计与实现(第二版)》了!作为一名长期使用 FreeBSD 的开发者,这本书对我来说简直是宝藏。尽管我已经对 FreeBSD 的日常使用得心应手,但总感觉自己只是在“使用”它,而非真正“理解”它。这本书就像一把钥匙,为我打开了理解 FreeBSD 内核运作机制的大门。我特别喜欢其中对内存管理、进程调度以及文件系统设计的详细阐述。作者用非常清晰的逻辑和深入浅出的语言,将那些原本枯燥晦涩的底层概念一一剖析,让我得以窥见 FreeBSD 在设计上的巧妙之处。阅读的过程中,我时常会拿出自己的 FreeBSD 系统进行对比和实验,印证书中的理论,这种学以致用的感觉非常棒。而且,书中还包含了很多最新的技术和改进,尤其是关于 NUMA(非统一内存访问)架构的支持,这对于我们这种部署在大型服务器上的应用来说至关重要。这本书绝对是任何想要深入理解 FreeBSD 或进行系统级开发的人的必备读物,它不仅提供了知识,更培养了一种对系统本质的深刻洞察力。

评分

作为一名多年 FreeBSD 用户,我一直对 FreeBSD 的稳定性和高性能赞叹不已。然而,在接触《FreeBSD操作系统设计与实现(第二版)》之前,我对这种优越性背后的技术细节知之甚少。《FreeBSD操作系统设计与实现(第二版)》这本书,恰恰填补了我在这方面的知识空白。它不仅仅是一本技术手册,更像是一次深入 FreeBSD 核心的探险。我特别喜欢书中关于安全机制的阐述,例如权限模型、系统调用过滤以及沙盒技术等。这些内容让我看到了 FreeBSD 在保障系统安全方面所做的努力和设计考量。同时,作者对 C++ 语言在 FreeBSD 内核开发中的应用也进行了一些探讨,这对于我这个 C++ 开发者来说,非常有启发性。这本书的语言风格朴实而不失严谨,即使是一些复杂的概念,在作者的笔下也变得清晰易懂。我强烈推荐这本书给任何对 FreeBSD 操作系统有深入了解的需求的读者,它一定会让你对 FreeBSD 的认知提升到新的高度。

评分

挺好的,挺好的,挺好的

评分

一直都很喜欢FreeBSD,开源,学院派.这本书很专业,系统的讲解FreeBSD OS的设计实现.也喜欢看原版的书.

评分

大于20个字 拿逗豆大于20个字 拿逗豆大于20个字 拿逗豆

评分

够看一阵子了

评分

freebsd的新版,质量不错

评分

一直都很喜欢FreeBSD,开源,学院派.这本书很专业,系统的讲解FreeBSD OS的设计实现.也喜欢看原版的书.

评分

质量好,送货速度快,一般都在京东进行采购

评分

商品特别喜欢,物流也超级快!

评分

质量不错 内容很丰富

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.qciss.net All Rights Reserved. 图书大百科 版权所有