会员   密码 您忘记密码了吗?
1,583,363 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > FreeBSD操作系統設計與實現(原書第2版)
FreeBSD操作系統設計與實現(原書第2版)
上一张
下一张
prev next

FreeBSD操作系統設計與實現(原書第2版)

作者: (美)馬歇爾·柯克·麥庫西克,(美)喬治·V.內維爾-尼爾,(美)羅伯特·N.M.沃森
出版社: 機械工業出版社
出版日期: 2021-10-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT1194.00
市场价格: RM214.65
本店售价: RM191.04
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書由FreeBSD系統的三位元引領者撰寫,在上一版基礎上做了大幅更新,涵蓋FreeBSD5和FreeBSD11之間的所有重大改進,如使用FreeBSDJail的高度可擴展和羽量級虛擬化、使用Xen和Virtio設備半虛擬化的虛擬機器加速、Capsicum沙箱和GELI加密磁片保護以及DTrace內核調試技巧等。
 
全書從介面到內核再到硬體逐層深入,詳細闡述實現每個重要系統元件——進程管理、安全、虛擬記憶體、I/O系統、檔案系統、socketIPC和網路等——所使用的概念、資料結構和演算法。


作者介紹


目錄

第一部分 概述
第1章 BSD系統的歷史和目標 2
1.1 UNIX系統的歷史 2
1.1.1 UNIX系統的起源 2
1.1.2 Research小組的UNIX系統 3
1.1.3 AT&T UNIX System Ⅲ和System V 4
1.1.4 伯克利軟體發佈 5
1.1.5 UNIX無處不在 6
1.2 BSD和其他系統 6
1.3 BSD向開放原始程式碼的轉變 8
1.3.1 Networking Release 28
1.3.2 法律訴訟 10
1.3.3 4.4BSD 11
1.3.4 4.4BSD-Lite Release 211
1.4 FreeBSD的開發模式 12
第2章 FreeBSD設計概述 16
2.1 FreeBSD的功能和內核 16
2.2 內核結構 17
2.3 內核服務 20
2.4 進程管理 21
2.4.1 信號 22
2.4.2 進程組和會話 23
2.5 安全 23
2.5.1 進程憑證 24
2.5.2 特權模型 25
2.5.3 自主存取控制 25
2.5.4 能力模型 25
2.5.5 Jail輕型虛擬化 26
2.5.6 強制存取控制 27
2.5.7 事件審計 27
2.5.8 密碼學與亂數產生器 28
2.6 記憶體管理 28
2.6.1 BSD記憶體管理設計要點 29
2.6.2 內核中的記憶體管理 30
2.7 I/O系統概述 31
2.7.1 描述符與I/O 31
2.7.2 描述符管理 33
2.7.3 設備 34
2.7.4 通訊端IPC 34
2.7.5 分散-收集I/O 35
2.7.6 多檔案系統支持 35
2.8 設備 36
2.9 快速檔案系統 36
2.10 Zettabyte檔案系統 40
2.11 網路檔案系統 41
2.12 進程間通信 41
2.13 網路層協定 42
2.14 傳輸層協議 43
2.15 系統啟動和停止 43
習題 44
第3章 內核服務 45
3.1 內核結構 45
3.1.1 系統進程 45
3.1.2 系統入口 46
3.1.3 運行時的內核結構 46
3.1.4 內核的入口 48
3.1.5 從內核返回 49
3.2 系統調用 49
3.2.1 調用結果的處理 49
3.2.2 從系統調用返回 50
3.3 陷阱和中斷 51
3.3.1 I/O設備中斷 51
3.3.2 軟體插斷 51
3.4 時鐘中斷 52
3.4.1 統計和進程調度 53
3.4.2 超時 54
3.5 記憶體管理服務 55
3.6 時間服務 58
3.6.1 真實時間 59
3.6.2 外部表示 59
3.6.3 調整時間 59
3.6.4 時間間隔 60
3.7 資源服務 60
3.7.1 進程優先順序 60
3.7.2 資源利用 61
3.7.3 資源限制 61
3.7.4 檔案系統配額 62
3.8 內核跟蹤工具 62
3.8.1 系統調用跟蹤 62
3.8.2 DTrace 63
3.8.3 內核跟蹤 66
習題 68

第二部分 進程
第4章 進程管理 70
4.1 進程管理概述 70
4.1.1 多道程序設計 71
4.1.2 調度 72
4.2 進程狀態 73
4.2.1 進程結構 75
4.2.2 執行緒結構 78
4.3 上下文切換 79
4.3.1 執行緒狀態 79
4.3.2 底層上下文切換 80
4.3.3 主動上下文切換 80
4.3.4 同步 84
4.3.5 互斥鎖同步 85
4.3.6 互斥鎖介面 87
4.3.7 鎖同步 88
4.3.8 鎖死預防 89
4.4 執行緒調度 91
4.4.1 低級調度器 91
4.4.2 執行緒運行佇列和上下文切換 92
4.4.3 分時執行緒調度 93
4.4.4 多處理器調度 98
4.4.5 自我調整空閒 100
4.4.6 傳統的分時執行緒調度 100
4.5 創建進程 101
4.6 終止進程 102
4.7 信號 103
4.7.1 發送信號 106
4.7.2 傳輸信號 108
4.8 進程組和會話 110
4.8.1 進程組 110
4.8.2 會話 111
4.8.3 作業控制 112
4.9 進程的調試 114
習題 116
第5章 安全性 118
5.1 作業系統安全 119
5.2 安全模型 120
5.2.1 進程模型 120
5.2.2 自主與強制存取控制 120
5.2.3 可信計算基 121
5.2.4 其他內核安全特性 121
5.3 進程憑證 121
5.3.1 憑證結構 122
5.3.2 憑證記憶體模型 123
5.3.3 存取控制校驗 124
5.4 用戶和組 124
5.5 特權模型 126
5.5.1 隱式特權 127
5.5.2 顯式特權 127
5.6 進程間存取控制 128
5.6.1 可見性 129
5.6.2 信號 129
5.6.3 調度控制 129
5.6.4 等待進程終止 130
5.6.5 調試 130
5.7 自主存取控制 130
5.7.1 虛擬檔案系統介面與DAC 131
5.7.2 對象屬主與組 132
5.7.3 UNIX許可權 132
5.7.4 存取控制清單 134
5.7.5 POSIX.1e存取控制清單 136
5.7.6 NFSv4存取控制清單 138
5.8 Capsicum能力模型 141
5.8.1 Capsicum應用體系結構 142
5.8.2 能力系統 142
5.8.3 能力 143
5.8.4 能力模型 145
5.9 Jail 146
5.10 強制存取控制框架 151
5.10.1 強制策略 151
5.10.2 設計的指導原則 152
5.10.3 MAC框架的體系結構 153
5.10.4 啟動框架 154
5.10.5 策略註冊 155
5.10.6 框架入口點設計考慮 155
5.10.7 策略入口點設計考慮 156
5.10.8 內核服務入口點調用 157
5.10.9 策略組合 158
5.10.10 給對象打標籤 159
5.10.11 標籤的生命週期與存儲管理 159
5.10.12 標籤同步 162
5.10.13 從用戶空間進行策略無關的標籤管理 163
5.11 安全事件審計 163
5.11.1 審計事件與記錄 164
5.11.2 BSM審計記錄與審計跟蹤 165
5.11.3 內核審計的實現 166
5.12 加密服務 168
5.12.1 加密框架 168
5.12.2 亂數產生器 170
5.13 GELI全磁片加密 173
5.13.1 機密性和完整性保護 173
5.13.2 金鑰管理 174
5.13.3 啟動GELI 174
5.13.4 加密塊保護 175
5.13.5 I/O模型 176
5.13.6 不足 176
習題 177
第6章 存儲管理 178
6.1 術語 178
6.1.1 進程與記憶體 179
6.1.2 調頁機制 180
6.1.3 替換演算法 180
6.1.4 工作集模型 181
6.1.5 交換機制 181
6.1.6 虛擬記憶體的優點 182
6.1.7 虛擬記憶體的硬體要求 182
6.2 FreeBSD 虛擬記憶體系統概述 183
6.3 內核的存儲管理 185
6.3.1 內核映射和子映射 186
6.3.2 內核位址空間的分配 188
6.3.3 slab分配器 190
6.3.4 keg分配器 191
6.3.5 zone分配器 192
6.3.6 內核malloc 194
6.3.7 內核zone分配器 196
6.4 進程獨立擁有的資源 197
6.4.1 FreeBSD的進程虛擬位址空間 197
6.4.2 缺頁處理 199
6.4.3 映射到vm_object 199
6.4.4 vm_object 201
6.4.5 vm_object到頁面 201
6.5 共用記憶體 202
6.5.1 mmap模型 203
6.5.2 共用映射 205
6.5.3 私有映射 205
6.5.4 壓縮影子鏈 207
6.5.5 私有快照 208
6.6 創建新進程 209
6.6.1 預留內核資源 210
6.6.2 複製用戶位址空間 211
6.6.3 不通過複製創建新進程 211
6.7 執行一個檔 212
6.8 操作進程位址空間 213
6.8.1 改變進程大小 213
6.8.2 文件映射 214
6.8.3 改變保護許可權 215
6.9 終止進程 215
6.10 調頁器介面 216
6.10.1 vnode調頁器 218
6.10.2 設備調頁器 219
6.10.3 實體記憶體調頁器 220
6.10.4 交換調頁器 221
6.11 調頁機制 224
6.11.1 硬體快取記憶體的設計 228
6.11.2 硬體記憶體管理 229
6.11.3 超級頁 231
6.12 頁面替換 235
6.12.1 調頁參數 237
6.12.2 pageout守護進程 237
6.12.3 交換機制 240
6.12.4 換入進程 242
6.13 可攜性 243
6.13.1 pmap模組的作用 243
6.13.2 初始化和啟動 245
6.13.3 分配和釋放映射 248
6.13.4 改變映射的訪問和wiring屬性 249
6.13.5 物理頁面使用資訊的維護 251
6.13.6 初始化物理頁面 251
6.13.7 管理內部資料結構 252
習題 252

第三部分 I/O系統
第7章 I/O系統概述 256
7.1 描述符管理和服務 257
7.1.1 打開文件條目 258
7.1.2 描述符管理 260
7.1.3 非同步I/O 261
7.1.4 檔描述符鎖 261
7.1.5 描述符的多路I/O複用 263
7.1.6 select的實現 265
7.1.7 kqueue和kevent 267
7.1.8 資料在內核中的遷移 269
7.2 本地進程間交互 270
7.2.1 信號量 272
7.2.2 訊息佇列 273
7.2.3 共用記憶體 274
7.3 虛擬檔介面 275
7.3.1 vnode的內容 275
7.3.2 vnode的操作 277
7.3.3 路徑名的轉換 278
7.3.4 匯出檔案系統服務 278
7.4 獨立於檔案系統的服務 279
7.4.1 名字緩存 281
7.4.2 緩衝區管理 282
7.4.3 緩衝區管理的實現 284
7.5 可堆疊的檔案系統 285
7.5.1 簡單的檔案系統層 287
7.5.2 聯合檔案系統 288
7.5.3 其他檔案系統 290
習題 291
第8章 設備 292
8.1 設備概述 292
8.1.1 PC I/O體系結構 293
8.1.2 FreeBSD大型存放區I/O子系統的結構 295
8.1.3 設備命名和訪問 296
8.2 從使用者到設備的I/O映射 297
8.2.1 設備驅動程式 298
8.2.2 I/O佇列 299
8.2.3 中斷處理 299
8.3 字元設備 299
8.3.1 原始設備和物理I/O 301
8.3.2 面向字元的設備 302
8.3.3 字元設備驅動程式入口點 302
8.4 磁片設備 303
8.4.1 磁片設備驅動程式入口點 303
8.4.2 磁片I/O請求排序 303
8.4.3 磁片標籤 304
8.5 網路設備 305
8.5.1 網路設備驅動程式入口點 306
8.5.2 配置與控制 306
8.5.3 資料包接收 307
8.5.4 資料包傳輸 309
8.6 終端處理 309
8.6.1 終端處理模式 310
8.6.2 使用者介面 312
8.6.3 進程組、會話和終端控制 313
8.6.4 終端操作 313
8.6.5 終端輸出(上半部分) 314
8.6.6 終端輸出(下半部分) 315
8.6.7 終端輸入 315
8.6.8 關閉終端設備 316
8.7 GEOM層 316
8.7.1 術語和拓撲規則 317
8.7.2 改變拓撲 318
8.7.3 操作 320
8.7.4 拓撲靈活性 321
8.8 CAM層 322
8.8.1 通過CAM子系統的SCSI I/O請求的路徑 323
8.8.2 ATA磁片 325
8.9 設備配置 325
8.9.1 設備標識 327
8.9.2 自動配置資料結構 329
8.9.3 資源管理 333
8.10 設備虛擬化 334
8.10.1 與虛擬機器監控程序的交互 335
8.10.2 Virtio 336
8.10.3 Xen 339
8.10.4 設備直通 346
習題 346
第9章 快速檔案系統 348
9.1 階層式檔案系統管理 348
9.2 inode結構 350
9.2.1 inode格式的改變 351
9.2.2 擴展屬性 352
9.2.3 新的檔案系統功能 354
9.2.4 檔標誌 355
9.2.5 動態inode 356
9.2.6 inode管理 357
9.3 命名 359
9.3.1 目錄 359
9.3.2 在目錄中查找名稱 360
9.3.3 路徑名轉換 362
9.3.4 連結 363
9.4 配額 365
9.5 文件鎖定 368
9.6 軟更新 372
9.6.1 在檔案系統中的更新依賴 373
9.6.2 依賴的結構 376
9.6.3 點陣圖依賴跟蹤 378
9.6.4 inode依賴跟蹤 378
9.6.5 直接塊依賴跟蹤 379
9.6.6 間接塊依賴跟蹤 380
9.6.7 新間接塊的依賴跟蹤 381
9.6.8 新目錄入口的依賴跟蹤 382
9.6.9 新目錄依賴跟蹤 384
9.6.10 目錄入口移除依賴項跟蹤 385
9.6.11 文件截斷 385
9.6.12 檔和目錄inode回收 385
9.6.13 目錄入口重命名依賴關係跟蹤 386
9.6.14 軟更新的fsync請求 386
9.6.15 軟更新的檔刪除要求 387
9.6.16 fsck的軟更新要求 389
9.7 檔案系統快照 389
9.7.1 創建一個檔案系統快照 389
9.7.2 維護檔案系統快照 391
9.7.3 大檔案系統快照 392
9.7.4 後臺fsck 393
9.7.5 用戶可見的快照 394
9.7.6 即時轉儲 394
9.8 日誌軟更新 394
9.8.1 背景和簡介 395
9.8.2 與其他實現的相容性 395
9.8.3 日誌格式 395
9.8.4 需要日誌記錄的修改 396
9.8.5 日誌的額外需求 397
9.8.6 恢復進程 398
9.8.7 性能 399
9.8.8 未來工作 400
9.8.9 跟蹤檔移除依賴 400
9.9 本地檔存儲 402
9.9.1 檔存儲概述 402
9.9.2 用戶I/O到一個檔的過程 404
9.10 伯克利快速檔案系統 406
9.10.1 伯克利快速檔案系統的組織 406
9.10.2 啟動塊 408
9.10.3 優化存儲利用率 408
9.10.4 對檔進行讀寫 409
9.10.5 佈局策略 411
9.10.6 分配機制 413
9.10.7 塊聚類 416
9.10.8 基於分區的分配 418
習題 419
第10章 Zettabyte檔案系統 421
第11章 網路檔案系統 422
11.1 概述 422
11.2 結構和操作 424
11.2.1 FreeBSD NFS的實現 428
11.2.2 用戶端-伺服器端交互 432
11.2.3 安全問題 432
11.2.4 性能提升技巧 433
11.3 NFS演進 435
11.3.1 命名空間 439
11.3.2 屬性 440
11.3.3 存取控制清單 441
11.3.4 緩存、代理和回檔 441
11.3.5 鎖 447
11.3.6 安全 448
11.3.7 崩潰恢復 450
習題 451

第四部分 進程間通信
第12章 進程間通信 454
12.1 進程間交互模型 454
12.2 實現結構和概述 458
12.3 記憶體管理 460
12.3.1 mbuf 460
12.3.2 存儲管理演算法 463
12.3.3 mbuf實用常式 463
12.4 IPC資料結構 464
12.4.1 通訊端地址 468
12.4.2 鎖 469
12.5 建立連接 469
12.6 資料傳輸 471
12.6.1 傳輸資料 471
12.6.2 接收資料 473
12.7 關閉通訊端 475
12.8 網路通信協定的內部結構 476
12.8.1 資料流程 477
12.8.2 通信協議 478
12.9 通訊端到協定介面 480
12.9.1 使用者請求協定常式 481
12.9.2 控制輸出協定常式 483
12.10 協定到協定的介面 484
12.10.1 pr_output 484
12.10.2 pr_input 485
12.10.3 pr_ctlinput 485
12.11 協定到網路的介面 486
12.11.1 網路介面和鏈路層協定 486
12.11.2 資料包傳輸 492
12.11.3 資料包接收 492
12.12 緩衝和流控 493
12.12.1 緩衝協議策略 494
12.12.2 佇列限制 494
12.13 網路虛擬化 494
習題 496
第13章 網路層協定 498
13.1 IPv 4498
13.1.1 IPv4地址 500
13.1.2 廣播地址 501
13.1.3 Internet組播 502
13.1.4 鏈路層地址解析 503
13.2 ICMP 504
13.3 IPv 6506
13.3.1 IPv6地址 507
13.3.2 IPv6資料包格式 509
13.3.3 切換到通訊端API 510
13.3.4 自動配置 511
13.4 Internet協定代碼結構 515
13.4.1 輸出 515
13.4.2 輸入 517
13.4.3 轉發 518
13.5 路由 519
13.5.1 內核路由表 520
13.5.2 路由選擇查詢 522
13.5.3 路由選擇復位向 525
13.5.4 路由表介面 525
13.5.5 用戶級路由選擇策略 526
13.5.6 使用者級路由選擇介面:路由選擇通訊端 526
13.6 原始通訊端 527
13.6.1 控制塊 528
13.6.2 輸入處理 528
13.6.3 輸出處理 529
13.7 安全 529
13.7.1 IPSec概述 530
13.7.2 安全協議 531
13.7.3 金鑰管理 533
13.7.4 IPSec實現 537
13.8 資料包處理框架 539
13.8.1 伯克利數據包篩檢程式 539
13.8.2 IP防火牆 540
13.8.3 IPFW和Dummynet 541
13.8.4 數據包篩檢程式 544
13.8.5 netgraph 545
13.8.6 netmap 549
習題 551
第14章 傳輸層協議 553
14.1 Internet埠與關聯 553
14.2 使用者資料包通訊協定 554
14.2.1 初始化 555
14.2.2 輸出 555
14.2.3 輸入 555
14.2.4 控制操作 556
14.3 傳輸控制協議 556
14.3.1 TCP連接狀態 558
14.3.2 序列變數 561
14.4 TCP演算法 562
14.4.1 計時器 563
14.4.2 往返時間的估計 565
14.4.3 建立連接 565
14.4.4 SYN緩存 567
14.4.5 SYN cookie 568
14.4.6 關閉連接 569
14.5 TCP輸入處理 569
14.6 TCP輸出處理 572
14.6.1 發送資料 573
14.6.2 避免糊塗視窗綜合征 573
14.6.3 避免小資料包 574
14.6.4 延遲確認與窗口更新 575
14.6.5 選擇性確認 575
14.6.6 重傳狀態 577
14.6.7 慢啟動 578
14.6.8 緩衝區與窗口大小 579
14.6.9 使用慢啟動進行擁塞避免 580
14.6.10 快速重傳 581
14.6.11 模組化擁塞控制 582
14.6.12 Vegas演算法 584
14.6.13 Cubic演算法 584
14.7 流控制傳輸協議 585
14.7.1 大資料塊 585
14.7.2 關聯建立 586
14.7.3 資料傳輸 587
14.7.4 關聯關閉 589
14.7.5 多宿主和心跳 589
習題 591

第五部分 系統運行
第15章 系統啟動與關閉 594
術語表
參考文獻