FreeBSD操作係統設計與實現 第2版 英文版

FreeBSD操作係統設計與實現 第2版 英文版 pdf epub mobi txt 電子書 下載 2026

[美] 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係統的首選

評分

4.4 5.2 的都買過瞭, 雖然沒怎麼看, 新版的必須入手

評分

質量應該是好的,就是紙張顔色白裏發烏,我寜可他是乳白色。

評分

最近買瞭很多書,真是很劃算

評分

夠看一陣子瞭

評分

非常內涵,經典之作

評分

買到英文版本的瞭,還以為是中文的

評分

非常內涵,經典之作

相關圖書

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

© 2026 book.tinynews.org All Rights Reserved. 静思书屋 版权所有