Linux核心深度解析

Linux核心深度解析

《Linux核心深度解析》是2019年9月人民郵電出版社出版的圖書,作者是余華兵。

基本介紹

  • 中文名:Linux核心深度解析
  • 作者:余華兵
  • 出版社人民郵電出版社
  • 出版時間:2019年9月
  • 頁數:622 頁
  • 定價:138 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787115504111
內容簡介,圖書目錄,

內容簡介

本書基於4.x版本的Linux核心,介紹了Linux核心的若干關鍵子系統的技術原理。本書主要內容包括核心的引導過程、核心管理和調度進程的技術原理、核心管理虛擬記憶體和物理記憶體的技術原理、核心處理異常和中斷的技術原理,以及系統調用的實現方式等。此外,本書還詳細講解了核心實現的各種保護臨界區的互斥技術,以及核心的檔案系統。本書內容豐富,深入淺出,通過大量的圖例來描述數據結構之間的關係和函式的執行流程,並結合代碼分析,引導讀者閱讀和理解核心原始碼。

圖書目錄

第 1章 核心引導和初始化 1
1.1 到哪裡讀取引導程式 1
1.2 引導程式 1
1.2.1 入口_start 1
1.2.2 標號reset 2
1.2.3 函式_main 4
1.2.4 函式run_main_loop 6
1.3 核心初始化 8
1.3.1 彙編語言部分 8
1.3.2 C語言部分 11
1.3.3 SMP系統的引導 12
1.4 init進程 15
第 2章 進程管理 17
2.1 進程 17
2.2 命名空間 18
2.3 進程標識符 20
2.4 進程關係 21
2.5 啟動程式 23
2.5.1 創建新進程 23
2.5.2 裝載程式 41
2.6 進程退出 48
2.6.1 執行緒組退出 49
2.6.2 終止進程 51
2.6.3 查詢子進程終止原因 53
2.7 進程狀態 55
2.8 進程調度 55
2.8.1 調度策略 55
2.8.2 進程優先權 56
2.8.3 調度類 57
2.8.4 運行佇列 59
2.8.5 任務分組 60
2.8.6 調度進程 65
2.8.7 調度時機 75
2.8.8 頻寬管理 85
2.9 SMP調度 93
2.9.1 進程的處理器親和性 93
2.9.2 對調度器的擴展 96
2.9.3 限期調度類的處理器負載均衡 96
2.9.4 實時調度類的處理器負載均衡 98
2.9.5 公平調度類的處理器負載均衡 99
2.9.6 遷移執行緒 108
2.9.7 隔離處理器 110
2.10 進程的安全上下文 111
第3章 記憶體管理 113
3.1 概述 113
3.2 虛擬地址空間布局 115
3.2.1 虛擬地址空間劃分 115
3.2.2 用戶虛擬地址空間布局 115
3.2.3 核心地址空間布局 121
3.3 物理地址空間 122
3.4 記憶體映射 124
3.4.1 套用編程接口 125
3.4.2 數據結構 129
3.4.3 創建記憶體映射 133
3.4.4 虛擬記憶體過量提交策略 137
3.4.5 刪除記憶體映射 139
3.5 物理記憶體組織 140
3.5.1 體系結構 140
3.5.2 記憶體模型 140
3.5.3 三級結構 141
3.6 引導記憶體分配器 144
3.6.1 bootmem分配器 144
3.6.2 memblock分配器 145
3.6.3 物理記憶體信息 148
3.7 夥伴分配器 151
3.7.1 基本的夥伴分配器 151
3.7.2 分區的夥伴分配器 152
3.7.3 根據可移動性分組 158
3.7.4 每處理器頁集合 162
3.7.5 分配頁 163
3.7.6 釋放頁 181
3.8 塊分配器 184
3.8.1 編程接口 185
3.8.2 SLAB分配器 186
3.8.3 SLUB分配器 197
3.8.4 SLOB分配器 204
3.9 不連續頁分配器 207
3.9.1 編程接口 207
3.9.2 數據結構 208
3.9.3 技術原理 209
3.10 每處理器記憶體分配器 210
3.10.1 編程接口 210
3.10.2 技術原理 212
3.11 頁表 219
3.11.1 統一的頁表框架 219
3.11.2 ARM64處理器的頁表 222
3.12 頁表快取 226
3.12.1 TLB表項格式 226
3.12.2 TLB管理 226
3.12.3 地址空間標識符 228
3.12.4 虛擬機標識符 232
3.13 巨型頁 233
3.13.1 處理器對巨型頁的支持 233
3.13.2 標準巨型頁 235
3.13.3 透明巨型頁 245
3.14 頁錯誤異常處理 257
3.14.1 處理器架構特定部分 257
3.14.2 用戶空間頁錯誤異常 266
3.14.3 核心模式頁錯誤異常 283
3.15 反碎片技術 288
3.15.1 虛擬可移動區域 289
3.15.2 記憶體碎片整理 291
3.16 頁回收 309
3.16.1 數據結構 310
3.16.2 發起頁回收 317
3.16.3 計算掃描的頁數 320
3.16.4 收縮活動頁鍊表 321
3.16.5 回收不活動頁 323
3.16.6 頁交換 325
3.16.7 回收slab快取 335
3.17 記憶體耗盡殺手 338
3.17.1 使用方法 338
3.17.2 技術原理 338
3.18 記憶體資源控制器 340
3.18.1 使用方法 340
3.18.2 技術原理 344
3.19 處理器快取 370
3.19.1 快取結構 370
3.19.2 快取策略 372
3.19.3 快取維護 374
3.19.4 SMP快取一致性 378
3.19.5 利用快取提高性能的編程技巧 383
3.20 連續記憶體分配器 384
3.20.1 使用方法 385
3.20.2 技術原理 386
3.21 userfaultfd 391
3.21.1 使用方法 391
3.21.2 技術原理 395
3.22 記憶體錯誤檢測工具KASAN 401
3.22.1 使用方法 401
3.22.2 技術原理 402
第4章 中斷、異常和系統調用 403
4.1 ARM64異常處理 403
4.1.1 異常級別 403
4.1.2 異常分類 404
4.1.3 異常向量表 405
4.1.4 異常處理 407
4.2 中斷 411
4.2.1 中斷控制器 412
4.2.2 中斷域 413
4.2.3 中斷控制器驅動初始化 415
4.2.4 Linux中斷處理 422
4.2.5 中斷執行緒化 428
4.2.6 禁止/開啟中斷 430
4.2.7 禁止/開啟單箇中斷 431
4.2.8 中斷親和性 431
4.2.9 處理器間中斷 432
4.3 中斷下半部 434
4.3.1 軟中斷 435
4.3.2 小任務 441
4.3.3 工作佇列 444
4.4 系統調用 457
4.4.1 定義系統調用 457
4.4.2 執行系統調用 459
第5章 核心互斥技術 463
5.1 信號量 464
5.2 讀寫信號量 465
5.3 互斥鎖 466
5.4 實時互斥鎖 467
5.5 原子變數 468
5.6 自旋鎖 472
5.7 讀寫自旋鎖 476
5.8 順序鎖 478
5.8.1 完整版的順序鎖 479
5.8.2 只提供序列號的順序鎖 481
5.9 禁止核心搶占 482
5.10 進程和軟中斷互斥 483
5.11 進程和硬中斷互斥 483
5.12 每處理器變數 484
5.12.1 靜態每處理器變數 484
5.12.2 動態每處理器變數 484
5.12.3 訪問每處理器變數 485
5.13 每處理器計數器 485
5.14 記憶體屏障 487
5.14.1 編譯器屏障 488
5.14.2 處理器記憶體屏障 489
5.14.3 MMIO寫屏障 492
5.14.4 隱含記憶體屏障 493
5.14.5 ARM64處理器記憶體屏障 493
5.15 RCU 495
5.15.1 使用方法 496
5.15.2 技術原理 504
5.16 可睡眠RCU 533
5.16.1 使用方法 533
5.16.2 技術原理 534
5.17 死鎖檢測工具lockdep 542
5.17.1 使用方法 543
5.17.2 技術原理 543
第6章 檔案系統 548
6.1 概述 548
6.1.1 用戶空間層面 549
6.1.2 硬體層面 549
6.1.3 核心空間層面 550
6.2 虛擬檔案系統的數據結構 552
6.2.1 超級塊 552
6.2.2 掛載描述符 554
6.2.3 檔案系統類型 555
6.2.4 索引節點 556
6.2.5 項 559
6.2.6 檔案的打開實例和打開檔案表 561
6.3 註冊檔案系統類型 563
6.4 掛載檔案系統 564
6.4.1 系統調用mount 566
6.4.2 綁定掛載 567
6.4.3 掛載命名空間 568
6.4.4 掛載根檔案系統 574
6.5 打開檔案 580
6.5.1 編程接口 580
6.5.2 技術原理 582
6.6 關閉檔案 591
6.7 創建檔案 593
6.7.1 使用方法 593
6.7.2 技術原理 594
6.8 刪除檔案 595
6.8.1 使用方法 595
6.8.2 技術原理 595
6.9 設定檔案許可權 597
6.9.1 使用方法 597
6.9.2 技術原理 598
6.10 頁快取 599
6.10.1 地址空間 600
6.10.2 基數樹 601
6.10.3 編程接口 602
6.11 讀檔案 602
6.11.1 編程接口 602
6.11.2 技術原理 603
6.12 寫檔案 606
6.12.1 編程接口 606
6.12.2 技術原理 607
6.13 檔案回寫 610
6.13.1 編程接口 610
6.13.2 技術原理 610
6.14 DAX 618
6.14.1 使用方法 618
6.14.2 技術原理 618
6.15 常用的檔案系統類型 621
結束語 622

相關詞條

熱門詞條

聯絡我們