掃一掃
關注中圖網(wǎng)
官方微博
本類五星書更多>
-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰(zhàn)行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調(diào)優(yōu)實踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
深入Linux內(nèi)核架構 版權信息
- ISBN:9787115227430
- 條形碼:9787115227430 ; 978-7-115-22743-0
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
深入Linux內(nèi)核架構 內(nèi)容簡介
本書討論了Linux內(nèi)核的概念、結構和實現(xiàn)。主要內(nèi)容包括多任務、調(diào)度和進程管理,物理內(nèi)存的管理以及內(nèi)核與相關硬件的交互,用戶空間的進程如何訪問虛擬內(nèi)存,如何編寫設備驅(qū)動程序,模塊機制以及虛擬文件系統(tǒng),Ext文件系統(tǒng)屬性和訪問控制表的實現(xiàn)方式,內(nèi)核中網(wǎng)絡的實現(xiàn),系統(tǒng)調(diào)用的實現(xiàn)方式,內(nèi)核對時間相關功能的處理,頁面回收和頁交換的相關機制以及審計的實現(xiàn)等。此外,本書借助內(nèi)核源代碼中**關鍵的部分進行講解,幫助讀者掌握重要的知識點,從而在運用中充分展現(xiàn)Linux系統(tǒng)的魅力。 本書適合Linux內(nèi)核愛好者閱讀。
深入Linux內(nèi)核架構 目錄
目 錄
第 1章 簡介和概述 1
1.1 內(nèi)核的任務 2
1.2 實現(xiàn)策略 2
1.3 內(nèi)核的組成部分 3
1.3.1 進程、進程切換、調(diào)度 3
1.3.2 UNIX進程 4
1.3.3 地址空間與特權級別 6
1.3.4 頁表 9
1.3.5 物理內(nèi)存的分配 11
1.3.6 計時 13
1.3.7 系統(tǒng)調(diào)用 13
1.3.8 設備驅(qū)動程序、塊設備和字符設備 14
1.3.9 網(wǎng)絡 14
1.3.10 文件系統(tǒng) 14
1.3.11 模塊和熱插拔 15
1.3.12 緩存 16
1.3.13 鏈表處理 16
1.3.14 對象管理和引用計數(shù) 17
1.3.15 數(shù)據(jù)類型 20
1.3.16 本書的局限性 22
1.4 為什么內(nèi)核是特別的 23
1.5 行文注記 23
1.6 小結 27
第 2章 進程管理和調(diào)度 28
2.1 進程優(yōu)先級 28
2.2 進程生命周期 30
2.3 進程表示 32
2.3.1 進程類型 37
2.3.2 命名空間 37
2.3.3 進程ID號 43
2.3.4 進程關系 49
2.4 進程管理相關的系統(tǒng)調(diào)用 50
2.4.1 進程復制 50
2.4.2 內(nèi)核線程 62
2.4.3 啟動新程序 63
2.4.4 退出進程 66
2.5 調(diào)度器的實現(xiàn) 67
2.5.1 概觀 67
2.5.2 數(shù)據(jù)結構 69
2.5.3 處理優(yōu)先級 74
2.5.4 核心調(diào)度器 79
2.6 完全公平調(diào)度類 84
2.6.1 數(shù)據(jù)結構 85
2.6.2 CFS操作 85
2.6.3 隊列操作 89
2.6.4 選擇下一個進程 91
2.6.5 處理周期性調(diào)度器 92
2.6.6 喚醒搶占 93
2.6.7 處理新進程 93
2.7 實時調(diào)度類 94
2.7.1 性質(zhì) 94
2.7.2 數(shù)據(jù)結構 95
2.7.3 調(diào)度器操作 96
2.8 調(diào)度器增強 97
2.8.1 SMP調(diào)度 97
2.8.2 調(diào)度域和控制組 101
2.8.3 內(nèi)核搶占和低延遲相關工作 102
2.9 小結 106
第3章 內(nèi)存管理 107
3.1 概述 107
3.2 (N)UMA模型中的內(nèi)存組織 109
3.2.1 概述 109
3.2.2 數(shù)據(jù)結構 111
3.3 頁表 123
3.3.1 數(shù)據(jù)結構 124
3.3.2 頁表項的創(chuàng)建和操作 129
3.4 初始化內(nèi)存管理 129
3.4.1 建立數(shù)據(jù)結構 130
3.4.2 特定于體系結構的設置 135
3.4.3 啟動過程期間的內(nèi)存管理 153
3.5 物理內(nèi)存的管理 159
3.5.1 伙伴系統(tǒng)的結構 159
3.5.2 避免碎片 161
3.5.3 初始化內(nèi)存域和結點數(shù)據(jù)結構 167
3.5.4 分配器API 172
3.5.5 分配頁 177
3.5.6 釋放頁 192
3.5.7 內(nèi)核中不連續(xù)頁的分配 195
3.5.8 內(nèi)核映射 201
3.6 slab分配器 205
3.6.1 備選分配器 206
3.6.2 內(nèi)核中的內(nèi)存管理 207
3.6.3 slab分配的原理 209
3.6.4 實現(xiàn) 212
3.6.5 通用緩存 226
3.7 處理器高速緩存和TLB控制 228
3.8 小結 230
第4章 進程虛擬內(nèi)存 231
4.1 簡介 231
4.2 進程虛擬地址空間 231
4.2.1 進程地址空間的布局 232
4.2.2 建立布局 234
4.3 內(nèi)存映射的原理 237
4.4 數(shù)據(jù)結構 238
4.4.1 樹和鏈表 238
4.4.2 虛擬內(nèi)存區(qū)域的表示 239
4.4.3 優(yōu)先查找樹 241
4.5 對區(qū)域的操作 244
4.5.1 將虛擬地址關聯(lián)到區(qū)域 245
4.5.2 區(qū)域合并 246
4.5.3 插入?yún)^(qū)域 247
4.5.4 創(chuàng)建區(qū)域 248
4.6 地址空間 250
4.7 內(nèi)存映射 251
4.7.1 創(chuàng)建映射 251
4.7.2 刪除映射 253
4.7.3 非線性映射 254
4.8 反向映射 257
4.8.1 數(shù)據(jù)結構 258
4.8.2 建立逆向映射 259
4.8.3 使用逆向映射 259
4.9 堆的管理 261
4.10 缺頁異常的處理 263
4.11 用戶空間缺頁異常的校正 268
4.11.1 按需分配 調(diào)頁 269
4.11.2 匿名頁 271
4.11.3 寫時復制 271
4.11.4 獲取非線性映射 272
4.12 內(nèi)核缺頁異常 272
4.13 在內(nèi)核和用戶空間之間復制數(shù)據(jù) 274
4.14 小結 276
第5章 鎖與進程間通信 277
5.1 控制機制 277
5.1.1 競態(tài)條件 277
5.1.2 臨界區(qū) 278
5.2 內(nèi)核鎖機制 279
5.2.1 對整數(shù)的原子操作 280
5.2.2 自旋鎖 282
5.2.3 信號量 283
5.2.4 RCU機制 284
5.2.5 內(nèi)存和優(yōu)化屏障 286
5.2.6 讀者 寫者鎖 287
5.2.7 大內(nèi)核鎖 288
5.2.8 互斥量 288
5.2.9 近似的per-CPU計數(shù)器 290
5.2.10 鎖競爭與細粒度鎖 291
5.3 System V進程間通信 292
5.3.1 System V機制 292
5.3.2 信號量 292
5.3.3 消息隊列 300
5.3.4 共享內(nèi)存 303
5.4 其他IPC機制 303
5.4.1 信號 303
5.4.2 管道和套接字 310
5.5 小結 311
第6章 設備驅(qū)動程序 312
6.1 I O體系結構 312
6.2 訪問設備 316
6.2.1 設備文件 316
6.2.2 字符設備、塊設備和其他設備 317
6.2.3 使用ioctl進行設備尋址 319
6.2.4 主從設備號的表示 320
6.2.5 注冊 321
6.3 與文件系統(tǒng)關聯(lián) 324
6.3.1 inode中的設備文件成員 324
6.3.2 標準文件操作 325
6.3.3 用于字符設備的標準操作 325
6.3.4 用于塊設備的標準操作 325
6.4 字符設備操作 326
6.4.1 表示字符設備 326
6.4.2 打開設備文件 326
6.4.3 讀寫操作 328
6.5 塊設備操作 329
6.5.1 塊設備的表示 330
6.5.2 數(shù)據(jù)結構 331
6.5.3 向系統(tǒng)添加磁盤和分區(qū) 338
6.5.4 打開塊設備文件 339
6.5.5 請求結構 341
6.5.6 BIO 343
6.5.7 提交請求 345
6.5.8 I O調(diào)度 350
6.5.9 ioctl的實現(xiàn) 352
6.6 資源分配 353
6.6.1 資源管理 353
6.6.2 I O內(nèi)存 355
6.6.3 I O端口 357
6.7 總線系統(tǒng) 358
6.7.1 通用驅(qū)動程序模型 358
6.7.2 PCI總線 363
6.7.3 USB 370
6.8 小結 376
第7章 模塊 377
7.1 概述 377
7.2 使用模塊 378
7.2.1 添加和移除 378
7.2.2 依賴關系 380
7.2.3 查詢模塊信息 381
7.2.4 自動加載 382
7.3 插入和刪除模塊 384
7.3.1 模塊的表示 385
7.3.2 依賴關系和引用 389
7.3.3 模塊的二進制結構 391
7.3.4 插入模塊 396
7.3.5 移除模塊 403
7.4 自動化與熱插拔 404
7.4.1 kmod實現(xiàn)的自動加載 404
7.4.2 熱插拔 405
7.5 版本控制 408
7.5.1 校驗和方法 408
7.5.2 版本控制函數(shù) 411
7.6 小結 412
第8章 虛擬文件系統(tǒng) 413
8.1 文件系統(tǒng)類型 413
8.2 通用文件模型 414
8.2.1 inode 415
8.2.2 鏈接 416
8.2.3 編程接口 416
8.2.4 將文件作為通用接口 417
8.3 VFS的結構 417
8.3.1 結構概觀 418
8.3.2 inode 419
8.3.3 特定于進程的信息 423
8.3.4 文件操作 427
8.3.5 目錄項緩存 431
8.4 處理VFS對象 436
8.4.1 文件系統(tǒng)操作 436
8.4.2 文件操作 450
8.5 標準函數(shù) 456
8.5.1 通用讀取例程 457
8.5.2 失效機制 459
8.5.3 權限檢查 461
8.6 小結 463
第9章 Ext文件系統(tǒng)族 464
9.1 簡介 464
9.2 Ext2文件系統(tǒng) 465
9.2.1 物理結構 465
9.2.2 數(shù)據(jù)結構 470
9.2.3 創(chuàng)建文件系統(tǒng) 484
9.2.4 文件系統(tǒng)操作 485
9.3 Ext3文件系統(tǒng) 507
9.3.1 概念 508
9.3.2 數(shù)據(jù)結構 509
9.4 小結 511
第 10章 無持久存儲的文件系統(tǒng) 512
10.1 proc文件系統(tǒng) 512
10.1.1 proc的內(nèi)容 513
10.1.2 數(shù)據(jù)結構 519
10.1.3 初始化 522
10.1.4 裝載proc文件系統(tǒng) 523
10.1.5 管理 proc數(shù)據(jù)項 525
10.1.6 讀取和寫入信息 528
10.1.7 進程相關的信息 530
10.1.8 系統(tǒng)控制機制 535
10.2 簡單的文件系統(tǒng) 542
10.2.1 順序文件 542
10.2.2 用libfs編寫文件系統(tǒng) 546
10.2.3 調(diào)試文件系統(tǒng) 547
10.2.4 偽文件系統(tǒng) 549
10.3 sysfs 549
10.3.1 概述 550
10.3.2 數(shù)據(jù)結構 550
10.3.3 裝載文件系統(tǒng) 554
10.3.4 文件和目錄操作 556
10.3.5 向sysfs添加內(nèi)容 562
10.4 小結 564
第 11章 擴展屬性和訪問控制表 565
11.1 擴展屬性 565
11.1.1 到虛擬文件系統(tǒng)的接口 566
11.1.2 Ext3中的實現(xiàn) 570
11.1.3 Ext2中的實現(xiàn) 576
11.2 訪問控制表 577
11.2.1 通用實現(xiàn) 577
11.2.2 Ext3中的實現(xiàn) 580
11.2.3 Ext2中的實現(xiàn) 585
11.3 小結 585
第 12章 網(wǎng)絡 586
12.1 互聯(lián)的計算機 586
12.2 ISO OSI和TCP IP參考模型 587
12.3 通過套接字通信 589
12.3.1 創(chuàng)建套接字 590
12.3.2 使用套接字 591
12.3.3 數(shù)據(jù)報套接字 595
12.4 網(wǎng)絡實現(xiàn)的分層模型 595
12.5 網(wǎng)絡命名空間 597
12.6 套接字緩沖區(qū) 599
12.6.1 使用套接字緩沖區(qū)管理數(shù)據(jù) 600
12.6.2 管理套接字緩沖區(qū)數(shù)據(jù) 602
12.7 網(wǎng)絡訪問層 603
12.7.1 網(wǎng)絡設備的表示 603
12.7.2 接收分組 608
12.7.3 發(fā)送分組 614
12.8 網(wǎng)絡層 615
12.8.1 IPv4 615
12.8.2 接收分組 617
12.8.3 交付到本地傳輸層 618
12.8.4 分組轉(zhuǎn)發(fā) 619
12.8.5 發(fā)送分組 620
12.8.6 netfilter 623
12.8.7 IPv6 627
12.9 傳輸層 628
12.9.1 UDP 628
12.9.2 TCP 630
12.10 應用層 640
12.10.1 socket數(shù)據(jù)結構 640
12.10.2 套接字和文件 643
12.10.3 socketcall系統(tǒng)調(diào)用 644
12.10.4 創(chuàng)建套接字 645
12.10.5 接收數(shù)據(jù) 646
12.10.6 發(fā)送數(shù)據(jù) 647
12.11 內(nèi)核內(nèi)部的網(wǎng)絡通信 647
12.11.1 通信函數(shù) 648
12.11.2 netlink機制 649
12.12 小結 654
第 13章 系統(tǒng)調(diào)用 655
13.1 系統(tǒng)程序設計基礎 655
13.1.1 追蹤系統(tǒng)調(diào)用 656
13.1.2 支持的標準 658
13.1.3 重啟系統(tǒng)調(diào)用 659
13.2 可用的系統(tǒng)調(diào)用 660
13.3 系統(tǒng)調(diào)用的實現(xiàn) 663
13.3.1 系統(tǒng)調(diào)用的結構 664
13.3.2 訪問用戶空間 670
13.3.3 追蹤系統(tǒng)調(diào)用 670
13.4 小結 676
第 14章 內(nèi)核活動 678
14.1 中斷 678
14.1.1 中斷類型 678
14.1.2 硬件IRQ 680
14.1.3 處理中斷 680
14.1.4 數(shù)據(jù)結構 682
14.1.5 中斷電流處理 688
14.1.6 初始化和分配IRQ 692
14.1.7 處理IRQ 693
14.2 軟中斷 701
14.2.1 開啟軟中斷處理 702
14.2.2 軟中斷守護進程 703
14.3 tasklet 704
14.3.1 創(chuàng)建tasklet 704
14.3.2 注冊tasklet 704
14.3.3 執(zhí)行tasklet 705
14.4 等待隊列和完成量 706
14.4.1 等待隊列 706
14.4.2 完成量 710
14.4.3 工作隊列 711
14.5 小結 713
第 15章 時間管理 714
15.1 概述 714
15.1.1 定時器的類型 714
15.1.2 配置選項 716
15.2 低分辨率定時器的實現(xiàn) 717
15.2.1 定時器激活與進程統(tǒng)計 717
15.2.2 處理jiffies 719
15.2.3 數(shù)據(jù)結構 720
15.2.4 動態(tài)定時器 721
15.3 通用時間子系統(tǒng) 725
15.3.1 概述 726
15.3.2 配置選項 727
15.3.3 時間表示 727
15.3.4 用于時間管理的對象 728
15.4 高分辨率定時器 736
15.4.1 數(shù)據(jù)結構 736
15.4.2 設置定時器 740
15.4.3 實現(xiàn) 740
15.4.4 周期時鐘仿真 745
15.4.5 切換到高分辨率定時器 746
15.5 動態(tài)時鐘 747
15.5.1 數(shù)據(jù)結構 747
15.5.2 低分辨率系統(tǒng)下的動態(tài)時鐘 749
15.5.3 高分辨率系統(tǒng)下的動態(tài)時鐘 751
15.5.4 停止和啟動周期時鐘 752
15.6 廣播模式 755
15.7 定時器相關系統(tǒng)調(diào)用的實現(xiàn) 756
15.7.1 時間基準 756
15.7.2 alarm和setitimer系統(tǒng)調(diào)用 757
15.7.3 獲取當前時間 758
15.8 管理進程時間 759
15.9 小結 760
第 16章 頁緩存和塊緩存 761
16.1 頁緩存的結構 762
16.1.1 管理和查找緩存的頁 762
16.1.2 回寫修改的數(shù)據(jù) 763
16.2 塊緩存的結構 764
16.3 地址空間 766
16.3.1 數(shù)據(jù)結構 766
16.3.2 頁樹 768
16.3.3 地址空間操作 771
16.4 頁緩存的實現(xiàn) 774
16.4.1 分配頁 774
16.4.2 查找頁 775
16.4.3 在頁上等待 776
16.4.4 對整頁的操作 777
16.4.5 頁緩存預讀 778
16.5 塊緩存的實現(xiàn) 781
16.5.1 數(shù)據(jù)結構 782
16.5.2 操作 783
16.5.3 頁緩存和塊緩存的交互 783
16.5.4 獨立的緩沖區(qū) 787
16.6 小結 792
第 17章 數(shù)據(jù)同步 793
17.1 概述 793
17.2 pdflush機制 795
17.3 啟動新線程 796
17.4 線程初始化 796
17.5 執(zhí)行實際工作 798
17.6 周期性刷出 798
17.7 相關的數(shù)據(jù)結構 799
17.7.1 頁狀態(tài) 799
17.7.2 回寫控制 800
17.7.3 可調(diào)參數(shù) 802
17.8 中央控制 802
17.9 超級塊同步 804
17.10 inode同步 804
17.10.1 遍歷超級塊 805
17.10.2 考察超級塊inode 805
17.10.3 回寫單個inode 807
17.11 擁塞 809
17.11.1 數(shù)據(jù)結構 809
17.11.2 閾值 810
17.11.3 擁塞狀態(tài)的設置和清除 811
17.11.4 在擁塞隊列上等待 812
17.12 強制回寫 813
17.13 膝上模式 814
17.14 用于同步控制的系統(tǒng)調(diào)用 815
17.15 完全同步 815
17.15.1 inode的同步 816
17.15.2 單個文件的同步 818
17.15.3 內(nèi)存映射的同步 819
17.16 小結 820
第 18章 頁面回收和頁交換 821
18.1 概述 821
18.1.1 可換出頁 822
18.1.2 頁顛簸 822
18.1.3 頁交換算法 823
18.2 Linux內(nèi)核中的頁面回收和頁交換 824
18.2.1 交換區(qū)的組織 824
18.2.2 檢查內(nèi)存使用情況 825
18.2.3 選擇要換出的頁 825
18.2.4 處理缺頁異常 826
18.2.5 縮減內(nèi)核緩存 826
18.3 管理交換區(qū) 826
18.3.1 數(shù)據(jù)結構 827
18.3.2 創(chuàng)建交換區(qū) 830
18.3.3 激活交換區(qū) 831
18.4 交換緩存 834
18.4.1 標識換出頁 835
18.4.2 交換緩存的結構 838
18.4.3 添加新頁 839
18.4.4 搜索一頁 843
18.5 數(shù)據(jù)回寫 844
18.6 頁面回收 845
18.6.1 概述 845
18.6.2 數(shù)據(jù)結構 847
18.6.3 確定頁的活動程度 850
18.6.4 收縮內(nèi)存域 853
18.6.5 隔離LRU頁和集中回收 856
18.6.6 收縮活動頁鏈表 859
18.6.7 回收不活動頁 862
18.7 交換令牌 867
18.8 處理交換缺頁異常 870
18.8.1 換入頁 870
18.8.2 讀取數(shù)據(jù) 872
18.8.3 交換預讀 873
18.9 發(fā)起內(nèi)存回收 873
18.9.1 用kswapd進行周期性內(nèi)存回收 873
18.9.2 在嚴重內(nèi)存不足時換出頁 877
18.10 收縮其他緩存 878
18.10.1 數(shù)據(jù)結構 878
18.10.2 注冊和刪除收縮器 879
18.10.3 收縮緩存 879
18.11 小結 880
第 19章 審計 882
19.1 概述 882
19.2 審計規(guī)則 883
19.3 實現(xiàn) 884
19.3.1 數(shù)據(jù)結構 884
19.3.2 初始化 889
19.3.3 處理請求 890
19.3.4 記錄事件 891
19.3.5 系統(tǒng)調(diào)用審計 893
19.4 小結 898
附錄A 體系結構相關知識 899
A.1 概述 899
A.2 數(shù)據(jù)類型 900
A.3 對齊 900
A.4 內(nèi)存頁面 900
A.5 系統(tǒng)調(diào)用 901
A.6 字符串處理 901
A.7 線程表示 902
A.8 位操作和字節(jié)序 914
A.9 頁表 916
A.10 雜項 916
A.11 小結 918
附錄B 使用源代碼 919
B.1 內(nèi)核源代碼的組織 919
B.2 用Kconfig進行配置 920
B.3 用Kbuild編譯內(nèi)核 930
B.4 有用的工具 935
B.5 調(diào)試和分析內(nèi)核 942
B.6 用戶模式Linux 945
B.7 小結 946
附錄C 有關C語言的注記 947
C.1 GNU C編譯器如何工作 947
C.2 內(nèi)核的標準數(shù)據(jù)結構和技術 967
C.3 小結 984
附錄D 系統(tǒng)啟動 985
D.1 IA-32系統(tǒng)上與體系結構相關的設置 985
D.2 高層初始化 986
D.3 小結 998
附錄E ELF二進制格式 999
E.1 布局和結構 999
E.2 內(nèi)核中的數(shù)據(jù)結構 1006
E.3 小結 1018
附錄F 內(nèi)核開發(fā)過程 1019
F.1 簡介 1019
F.2 內(nèi)核代碼樹和開發(fā)的結構 1019
F.3 補丁的結構 1024
F.4 Linux和學術界 1030
F.5 小結 1035
參考文獻 1036
第 1章 簡介和概述 1
1.1 內(nèi)核的任務 2
1.2 實現(xiàn)策略 2
1.3 內(nèi)核的組成部分 3
1.3.1 進程、進程切換、調(diào)度 3
1.3.2 UNIX進程 4
1.3.3 地址空間與特權級別 6
1.3.4 頁表 9
1.3.5 物理內(nèi)存的分配 11
1.3.6 計時 13
1.3.7 系統(tǒng)調(diào)用 13
1.3.8 設備驅(qū)動程序、塊設備和字符設備 14
1.3.9 網(wǎng)絡 14
1.3.10 文件系統(tǒng) 14
1.3.11 模塊和熱插拔 15
1.3.12 緩存 16
1.3.13 鏈表處理 16
1.3.14 對象管理和引用計數(shù) 17
1.3.15 數(shù)據(jù)類型 20
1.3.16 本書的局限性 22
1.4 為什么內(nèi)核是特別的 23
1.5 行文注記 23
1.6 小結 27
第 2章 進程管理和調(diào)度 28
2.1 進程優(yōu)先級 28
2.2 進程生命周期 30
2.3 進程表示 32
2.3.1 進程類型 37
2.3.2 命名空間 37
2.3.3 進程ID號 43
2.3.4 進程關系 49
2.4 進程管理相關的系統(tǒng)調(diào)用 50
2.4.1 進程復制 50
2.4.2 內(nèi)核線程 62
2.4.3 啟動新程序 63
2.4.4 退出進程 66
2.5 調(diào)度器的實現(xiàn) 67
2.5.1 概觀 67
2.5.2 數(shù)據(jù)結構 69
2.5.3 處理優(yōu)先級 74
2.5.4 核心調(diào)度器 79
2.6 完全公平調(diào)度類 84
2.6.1 數(shù)據(jù)結構 85
2.6.2 CFS操作 85
2.6.3 隊列操作 89
2.6.4 選擇下一個進程 91
2.6.5 處理周期性調(diào)度器 92
2.6.6 喚醒搶占 93
2.6.7 處理新進程 93
2.7 實時調(diào)度類 94
2.7.1 性質(zhì) 94
2.7.2 數(shù)據(jù)結構 95
2.7.3 調(diào)度器操作 96
2.8 調(diào)度器增強 97
2.8.1 SMP調(diào)度 97
2.8.2 調(diào)度域和控制組 101
2.8.3 內(nèi)核搶占和低延遲相關工作 102
2.9 小結 106
第3章 內(nèi)存管理 107
3.1 概述 107
3.2 (N)UMA模型中的內(nèi)存組織 109
3.2.1 概述 109
3.2.2 數(shù)據(jù)結構 111
3.3 頁表 123
3.3.1 數(shù)據(jù)結構 124
3.3.2 頁表項的創(chuàng)建和操作 129
3.4 初始化內(nèi)存管理 129
3.4.1 建立數(shù)據(jù)結構 130
3.4.2 特定于體系結構的設置 135
3.4.3 啟動過程期間的內(nèi)存管理 153
3.5 物理內(nèi)存的管理 159
3.5.1 伙伴系統(tǒng)的結構 159
3.5.2 避免碎片 161
3.5.3 初始化內(nèi)存域和結點數(shù)據(jù)結構 167
3.5.4 分配器API 172
3.5.5 分配頁 177
3.5.6 釋放頁 192
3.5.7 內(nèi)核中不連續(xù)頁的分配 195
3.5.8 內(nèi)核映射 201
3.6 slab分配器 205
3.6.1 備選分配器 206
3.6.2 內(nèi)核中的內(nèi)存管理 207
3.6.3 slab分配的原理 209
3.6.4 實現(xiàn) 212
3.6.5 通用緩存 226
3.7 處理器高速緩存和TLB控制 228
3.8 小結 230
第4章 進程虛擬內(nèi)存 231
4.1 簡介 231
4.2 進程虛擬地址空間 231
4.2.1 進程地址空間的布局 232
4.2.2 建立布局 234
4.3 內(nèi)存映射的原理 237
4.4 數(shù)據(jù)結構 238
4.4.1 樹和鏈表 238
4.4.2 虛擬內(nèi)存區(qū)域的表示 239
4.4.3 優(yōu)先查找樹 241
4.5 對區(qū)域的操作 244
4.5.1 將虛擬地址關聯(lián)到區(qū)域 245
4.5.2 區(qū)域合并 246
4.5.3 插入?yún)^(qū)域 247
4.5.4 創(chuàng)建區(qū)域 248
4.6 地址空間 250
4.7 內(nèi)存映射 251
4.7.1 創(chuàng)建映射 251
4.7.2 刪除映射 253
4.7.3 非線性映射 254
4.8 反向映射 257
4.8.1 數(shù)據(jù)結構 258
4.8.2 建立逆向映射 259
4.8.3 使用逆向映射 259
4.9 堆的管理 261
4.10 缺頁異常的處理 263
4.11 用戶空間缺頁異常的校正 268
4.11.1 按需分配 調(diào)頁 269
4.11.2 匿名頁 271
4.11.3 寫時復制 271
4.11.4 獲取非線性映射 272
4.12 內(nèi)核缺頁異常 272
4.13 在內(nèi)核和用戶空間之間復制數(shù)據(jù) 274
4.14 小結 276
第5章 鎖與進程間通信 277
5.1 控制機制 277
5.1.1 競態(tài)條件 277
5.1.2 臨界區(qū) 278
5.2 內(nèi)核鎖機制 279
5.2.1 對整數(shù)的原子操作 280
5.2.2 自旋鎖 282
5.2.3 信號量 283
5.2.4 RCU機制 284
5.2.5 內(nèi)存和優(yōu)化屏障 286
5.2.6 讀者 寫者鎖 287
5.2.7 大內(nèi)核鎖 288
5.2.8 互斥量 288
5.2.9 近似的per-CPU計數(shù)器 290
5.2.10 鎖競爭與細粒度鎖 291
5.3 System V進程間通信 292
5.3.1 System V機制 292
5.3.2 信號量 292
5.3.3 消息隊列 300
5.3.4 共享內(nèi)存 303
5.4 其他IPC機制 303
5.4.1 信號 303
5.4.2 管道和套接字 310
5.5 小結 311
第6章 設備驅(qū)動程序 312
6.1 I O體系結構 312
6.2 訪問設備 316
6.2.1 設備文件 316
6.2.2 字符設備、塊設備和其他設備 317
6.2.3 使用ioctl進行設備尋址 319
6.2.4 主從設備號的表示 320
6.2.5 注冊 321
6.3 與文件系統(tǒng)關聯(lián) 324
6.3.1 inode中的設備文件成員 324
6.3.2 標準文件操作 325
6.3.3 用于字符設備的標準操作 325
6.3.4 用于塊設備的標準操作 325
6.4 字符設備操作 326
6.4.1 表示字符設備 326
6.4.2 打開設備文件 326
6.4.3 讀寫操作 328
6.5 塊設備操作 329
6.5.1 塊設備的表示 330
6.5.2 數(shù)據(jù)結構 331
6.5.3 向系統(tǒng)添加磁盤和分區(qū) 338
6.5.4 打開塊設備文件 339
6.5.5 請求結構 341
6.5.6 BIO 343
6.5.7 提交請求 345
6.5.8 I O調(diào)度 350
6.5.9 ioctl的實現(xiàn) 352
6.6 資源分配 353
6.6.1 資源管理 353
6.6.2 I O內(nèi)存 355
6.6.3 I O端口 357
6.7 總線系統(tǒng) 358
6.7.1 通用驅(qū)動程序模型 358
6.7.2 PCI總線 363
6.7.3 USB 370
6.8 小結 376
第7章 模塊 377
7.1 概述 377
7.2 使用模塊 378
7.2.1 添加和移除 378
7.2.2 依賴關系 380
7.2.3 查詢模塊信息 381
7.2.4 自動加載 382
7.3 插入和刪除模塊 384
7.3.1 模塊的表示 385
7.3.2 依賴關系和引用 389
7.3.3 模塊的二進制結構 391
7.3.4 插入模塊 396
7.3.5 移除模塊 403
7.4 自動化與熱插拔 404
7.4.1 kmod實現(xiàn)的自動加載 404
7.4.2 熱插拔 405
7.5 版本控制 408
7.5.1 校驗和方法 408
7.5.2 版本控制函數(shù) 411
7.6 小結 412
第8章 虛擬文件系統(tǒng) 413
8.1 文件系統(tǒng)類型 413
8.2 通用文件模型 414
8.2.1 inode 415
8.2.2 鏈接 416
8.2.3 編程接口 416
8.2.4 將文件作為通用接口 417
8.3 VFS的結構 417
8.3.1 結構概觀 418
8.3.2 inode 419
8.3.3 特定于進程的信息 423
8.3.4 文件操作 427
8.3.5 目錄項緩存 431
8.4 處理VFS對象 436
8.4.1 文件系統(tǒng)操作 436
8.4.2 文件操作 450
8.5 標準函數(shù) 456
8.5.1 通用讀取例程 457
8.5.2 失效機制 459
8.5.3 權限檢查 461
8.6 小結 463
第9章 Ext文件系統(tǒng)族 464
9.1 簡介 464
9.2 Ext2文件系統(tǒng) 465
9.2.1 物理結構 465
9.2.2 數(shù)據(jù)結構 470
9.2.3 創(chuàng)建文件系統(tǒng) 484
9.2.4 文件系統(tǒng)操作 485
9.3 Ext3文件系統(tǒng) 507
9.3.1 概念 508
9.3.2 數(shù)據(jù)結構 509
9.4 小結 511
第 10章 無持久存儲的文件系統(tǒng) 512
10.1 proc文件系統(tǒng) 512
10.1.1 proc的內(nèi)容 513
10.1.2 數(shù)據(jù)結構 519
10.1.3 初始化 522
10.1.4 裝載proc文件系統(tǒng) 523
10.1.5 管理 proc數(shù)據(jù)項 525
10.1.6 讀取和寫入信息 528
10.1.7 進程相關的信息 530
10.1.8 系統(tǒng)控制機制 535
10.2 簡單的文件系統(tǒng) 542
10.2.1 順序文件 542
10.2.2 用libfs編寫文件系統(tǒng) 546
10.2.3 調(diào)試文件系統(tǒng) 547
10.2.4 偽文件系統(tǒng) 549
10.3 sysfs 549
10.3.1 概述 550
10.3.2 數(shù)據(jù)結構 550
10.3.3 裝載文件系統(tǒng) 554
10.3.4 文件和目錄操作 556
10.3.5 向sysfs添加內(nèi)容 562
10.4 小結 564
第 11章 擴展屬性和訪問控制表 565
11.1 擴展屬性 565
11.1.1 到虛擬文件系統(tǒng)的接口 566
11.1.2 Ext3中的實現(xiàn) 570
11.1.3 Ext2中的實現(xiàn) 576
11.2 訪問控制表 577
11.2.1 通用實現(xiàn) 577
11.2.2 Ext3中的實現(xiàn) 580
11.2.3 Ext2中的實現(xiàn) 585
11.3 小結 585
第 12章 網(wǎng)絡 586
12.1 互聯(lián)的計算機 586
12.2 ISO OSI和TCP IP參考模型 587
12.3 通過套接字通信 589
12.3.1 創(chuàng)建套接字 590
12.3.2 使用套接字 591
12.3.3 數(shù)據(jù)報套接字 595
12.4 網(wǎng)絡實現(xiàn)的分層模型 595
12.5 網(wǎng)絡命名空間 597
12.6 套接字緩沖區(qū) 599
12.6.1 使用套接字緩沖區(qū)管理數(shù)據(jù) 600
12.6.2 管理套接字緩沖區(qū)數(shù)據(jù) 602
12.7 網(wǎng)絡訪問層 603
12.7.1 網(wǎng)絡設備的表示 603
12.7.2 接收分組 608
12.7.3 發(fā)送分組 614
12.8 網(wǎng)絡層 615
12.8.1 IPv4 615
12.8.2 接收分組 617
12.8.3 交付到本地傳輸層 618
12.8.4 分組轉(zhuǎn)發(fā) 619
12.8.5 發(fā)送分組 620
12.8.6 netfilter 623
12.8.7 IPv6 627
12.9 傳輸層 628
12.9.1 UDP 628
12.9.2 TCP 630
12.10 應用層 640
12.10.1 socket數(shù)據(jù)結構 640
12.10.2 套接字和文件 643
12.10.3 socketcall系統(tǒng)調(diào)用 644
12.10.4 創(chuàng)建套接字 645
12.10.5 接收數(shù)據(jù) 646
12.10.6 發(fā)送數(shù)據(jù) 647
12.11 內(nèi)核內(nèi)部的網(wǎng)絡通信 647
12.11.1 通信函數(shù) 648
12.11.2 netlink機制 649
12.12 小結 654
第 13章 系統(tǒng)調(diào)用 655
13.1 系統(tǒng)程序設計基礎 655
13.1.1 追蹤系統(tǒng)調(diào)用 656
13.1.2 支持的標準 658
13.1.3 重啟系統(tǒng)調(diào)用 659
13.2 可用的系統(tǒng)調(diào)用 660
13.3 系統(tǒng)調(diào)用的實現(xiàn) 663
13.3.1 系統(tǒng)調(diào)用的結構 664
13.3.2 訪問用戶空間 670
13.3.3 追蹤系統(tǒng)調(diào)用 670
13.4 小結 676
第 14章 內(nèi)核活動 678
14.1 中斷 678
14.1.1 中斷類型 678
14.1.2 硬件IRQ 680
14.1.3 處理中斷 680
14.1.4 數(shù)據(jù)結構 682
14.1.5 中斷電流處理 688
14.1.6 初始化和分配IRQ 692
14.1.7 處理IRQ 693
14.2 軟中斷 701
14.2.1 開啟軟中斷處理 702
14.2.2 軟中斷守護進程 703
14.3 tasklet 704
14.3.1 創(chuàng)建tasklet 704
14.3.2 注冊tasklet 704
14.3.3 執(zhí)行tasklet 705
14.4 等待隊列和完成量 706
14.4.1 等待隊列 706
14.4.2 完成量 710
14.4.3 工作隊列 711
14.5 小結 713
第 15章 時間管理 714
15.1 概述 714
15.1.1 定時器的類型 714
15.1.2 配置選項 716
15.2 低分辨率定時器的實現(xiàn) 717
15.2.1 定時器激活與進程統(tǒng)計 717
15.2.2 處理jiffies 719
15.2.3 數(shù)據(jù)結構 720
15.2.4 動態(tài)定時器 721
15.3 通用時間子系統(tǒng) 725
15.3.1 概述 726
15.3.2 配置選項 727
15.3.3 時間表示 727
15.3.4 用于時間管理的對象 728
15.4 高分辨率定時器 736
15.4.1 數(shù)據(jù)結構 736
15.4.2 設置定時器 740
15.4.3 實現(xiàn) 740
15.4.4 周期時鐘仿真 745
15.4.5 切換到高分辨率定時器 746
15.5 動態(tài)時鐘 747
15.5.1 數(shù)據(jù)結構 747
15.5.2 低分辨率系統(tǒng)下的動態(tài)時鐘 749
15.5.3 高分辨率系統(tǒng)下的動態(tài)時鐘 751
15.5.4 停止和啟動周期時鐘 752
15.6 廣播模式 755
15.7 定時器相關系統(tǒng)調(diào)用的實現(xiàn) 756
15.7.1 時間基準 756
15.7.2 alarm和setitimer系統(tǒng)調(diào)用 757
15.7.3 獲取當前時間 758
15.8 管理進程時間 759
15.9 小結 760
第 16章 頁緩存和塊緩存 761
16.1 頁緩存的結構 762
16.1.1 管理和查找緩存的頁 762
16.1.2 回寫修改的數(shù)據(jù) 763
16.2 塊緩存的結構 764
16.3 地址空間 766
16.3.1 數(shù)據(jù)結構 766
16.3.2 頁樹 768
16.3.3 地址空間操作 771
16.4 頁緩存的實現(xiàn) 774
16.4.1 分配頁 774
16.4.2 查找頁 775
16.4.3 在頁上等待 776
16.4.4 對整頁的操作 777
16.4.5 頁緩存預讀 778
16.5 塊緩存的實現(xiàn) 781
16.5.1 數(shù)據(jù)結構 782
16.5.2 操作 783
16.5.3 頁緩存和塊緩存的交互 783
16.5.4 獨立的緩沖區(qū) 787
16.6 小結 792
第 17章 數(shù)據(jù)同步 793
17.1 概述 793
17.2 pdflush機制 795
17.3 啟動新線程 796
17.4 線程初始化 796
17.5 執(zhí)行實際工作 798
17.6 周期性刷出 798
17.7 相關的數(shù)據(jù)結構 799
17.7.1 頁狀態(tài) 799
17.7.2 回寫控制 800
17.7.3 可調(diào)參數(shù) 802
17.8 中央控制 802
17.9 超級塊同步 804
17.10 inode同步 804
17.10.1 遍歷超級塊 805
17.10.2 考察超級塊inode 805
17.10.3 回寫單個inode 807
17.11 擁塞 809
17.11.1 數(shù)據(jù)結構 809
17.11.2 閾值 810
17.11.3 擁塞狀態(tài)的設置和清除 811
17.11.4 在擁塞隊列上等待 812
17.12 強制回寫 813
17.13 膝上模式 814
17.14 用于同步控制的系統(tǒng)調(diào)用 815
17.15 完全同步 815
17.15.1 inode的同步 816
17.15.2 單個文件的同步 818
17.15.3 內(nèi)存映射的同步 819
17.16 小結 820
第 18章 頁面回收和頁交換 821
18.1 概述 821
18.1.1 可換出頁 822
18.1.2 頁顛簸 822
18.1.3 頁交換算法 823
18.2 Linux內(nèi)核中的頁面回收和頁交換 824
18.2.1 交換區(qū)的組織 824
18.2.2 檢查內(nèi)存使用情況 825
18.2.3 選擇要換出的頁 825
18.2.4 處理缺頁異常 826
18.2.5 縮減內(nèi)核緩存 826
18.3 管理交換區(qū) 826
18.3.1 數(shù)據(jù)結構 827
18.3.2 創(chuàng)建交換區(qū) 830
18.3.3 激活交換區(qū) 831
18.4 交換緩存 834
18.4.1 標識換出頁 835
18.4.2 交換緩存的結構 838
18.4.3 添加新頁 839
18.4.4 搜索一頁 843
18.5 數(shù)據(jù)回寫 844
18.6 頁面回收 845
18.6.1 概述 845
18.6.2 數(shù)據(jù)結構 847
18.6.3 確定頁的活動程度 850
18.6.4 收縮內(nèi)存域 853
18.6.5 隔離LRU頁和集中回收 856
18.6.6 收縮活動頁鏈表 859
18.6.7 回收不活動頁 862
18.7 交換令牌 867
18.8 處理交換缺頁異常 870
18.8.1 換入頁 870
18.8.2 讀取數(shù)據(jù) 872
18.8.3 交換預讀 873
18.9 發(fā)起內(nèi)存回收 873
18.9.1 用kswapd進行周期性內(nèi)存回收 873
18.9.2 在嚴重內(nèi)存不足時換出頁 877
18.10 收縮其他緩存 878
18.10.1 數(shù)據(jù)結構 878
18.10.2 注冊和刪除收縮器 879
18.10.3 收縮緩存 879
18.11 小結 880
第 19章 審計 882
19.1 概述 882
19.2 審計規(guī)則 883
19.3 實現(xiàn) 884
19.3.1 數(shù)據(jù)結構 884
19.3.2 初始化 889
19.3.3 處理請求 890
19.3.4 記錄事件 891
19.3.5 系統(tǒng)調(diào)用審計 893
19.4 小結 898
附錄A 體系結構相關知識 899
A.1 概述 899
A.2 數(shù)據(jù)類型 900
A.3 對齊 900
A.4 內(nèi)存頁面 900
A.5 系統(tǒng)調(diào)用 901
A.6 字符串處理 901
A.7 線程表示 902
A.8 位操作和字節(jié)序 914
A.9 頁表 916
A.10 雜項 916
A.11 小結 918
附錄B 使用源代碼 919
B.1 內(nèi)核源代碼的組織 919
B.2 用Kconfig進行配置 920
B.3 用Kbuild編譯內(nèi)核 930
B.4 有用的工具 935
B.5 調(diào)試和分析內(nèi)核 942
B.6 用戶模式Linux 945
B.7 小結 946
附錄C 有關C語言的注記 947
C.1 GNU C編譯器如何工作 947
C.2 內(nèi)核的標準數(shù)據(jù)結構和技術 967
C.3 小結 984
附錄D 系統(tǒng)啟動 985
D.1 IA-32系統(tǒng)上與體系結構相關的設置 985
D.2 高層初始化 986
D.3 小結 998
附錄E ELF二進制格式 999
E.1 布局和結構 999
E.2 內(nèi)核中的數(shù)據(jù)結構 1006
E.3 小結 1018
附錄F 內(nèi)核開發(fā)過程 1019
F.1 簡介 1019
F.2 內(nèi)核代碼樹和開發(fā)的結構 1019
F.3 補丁的結構 1024
F.4 Linux和學術界 1030
F.5 小結 1035
參考文獻 1036
展開全部
書友推薦
- >
羅曼·羅蘭讀書隨筆-精裝
- >
伊索寓言-世界文學名著典藏-全譯本
- >
姑媽的寶刀
- >
二體千字文
- >
莉莉和章魚
- >
我從未如此眷戀人間
- >
苦雨齋序跋文-周作人自編集
- >
推拿
本類暢銷