精通 Linux 內核開發 (Mastering Linux Kernel Development)

精通 Linux 內核開發 (Mastering Linux Kernel Development)

作者: Raghu Bharadwaj
出版社: 人民郵電
出版在: 2021-09-01
ISBN-13: 9787115566041
ISBN-10: 7115566046
總頁數: 288 頁





內容描述


《精通Linux內核開發》介紹了Linux內核、內核的內部編排與設計,以及內核的各個核心子系統等知識。本書分為11章,具體內容包括:進程、地址空間和線程;進程調度器;信號管理;內存管理和分配器;文件系統和文件I/O;進程間通信;虛擬內存管理;內核同步和鎖;中斷和延遲工作;時鐘和時間管理;模塊管理。
《精通Linux內核開發》篇幅短小精悍,通過大量代碼輔助介紹Linux內核的相關開發工作。通過學習本書,讀者可以深入理解Linux內核的核心服務與機制,瞭解這個集中了集體智慧的Linux內核在保持其良好設計的同時,是如何保持其優雅特性的。
《精通Linux內核開發》適合Linux內核開發人員、底層開發人員閱讀,還適合希望深入理解Linux內核及其各組成部分的系統開發人員學習。高校軟件工程專業的學生也可以將本書當作瞭解Linux內核設計原理的參考指南。


目錄大綱


第 1章 進程、地址空間和線程 1
1.1 進程 1
1.1.1 所謂地址空間的錯覺 2
1.1.2 內核空間和用戶空間 3
1.2 進程描述符 4
1.2.1 進程屬性:關鍵元素 5
1.2.2 進程關係:關鍵元素 8
1.2.3 調度屬性:關鍵元素 9
1.2.4 進程限制:關鍵元素 9
1.2.5 文件描述符表:關鍵元素 11
1.2.6 信號描述符:關鍵元素 11
1.3 內核棧 12
1.4 棧溢出問題 16
1.5 進程創建 17
1.5.1 fork() 17
1.5.2 寫時復制(COW) 18
1.5.3 exec 18
1.5.4 vfork() 19
1.5.5 Linux線程支持 19
1.6 內核線程 21
1.7 進程狀態和終止 29
1.7.1 wait 29
1.7.2 exit 29
1.8 命名空間和cgroup 30
1.8.1 掛載命名空間 30
1.8.2 UTS命名空間 31
1.8.3 IPC命名空間 31
1.8.4 PID命名空間 31
1.8.5 網絡命名空間 31
1.8.6 用戶命名空間 31
1.8.7 cgroup命名空間 32
1.8.8 控制組(cgroup) 32
1.9 小結 33
第 2章 進程調度器 34
2.1 進程調度器 34
2.2 Linux進程調度器設計 35
2.3 運行隊列 39
2.4 調度入口 41
2.5 進程優先級 43
2.6 調度類 44
2.7 完全公平調度類(CFS) 44
2.7.1 CFS計算優先級和時間片 45
2.7.2 CFS運行隊列 45
2.7.3 組調度 46
2.7.4 多核系統下的調度實體 47
2.7.5 調度策略 48
2.8 實時調度類 49
2.8.1 FIFO 49
2.8.2 RR 49
2.8.3 實時組調度 50
2.8.4 deadline調度類(零散任務模型的deadline調度) 50
2.9 調度相關的系統調用 51
2.10 進程搶占 53
2.11 小結 54
第3章 信號管理 55
3.1 信號 55
3.2 信號管理API 58
3.2.1 程序發出信號 61
3.2.2 等待排隊信號 62
3.3 信號數據結構 62
3.3.1 信號描述符 63
3.3.2 被阻塞和掛起的隊列 64
3.3.3 信號處理程序描述符 65
3.4 信號生成和傳遞 66
3.4.1 信號生成調用 66
3.4.2 信號傳遞 69
3.4.3 執行用戶模式處理程序 74
3.4.4 設置用戶模式處理程序幀 75
3.5 重新啟動被中斷的系統調用 78
3.6 小結 80
第4章 內存管理和分配器 81
4.1 初始化操作 81
4.2 區域和節點 87
4.2.1 內存區域 87
4.2.2 內存節點 89
4.3 內存分配 97
4.3.1 頁幀分配器 98
4.3.2 GFP掩碼 105
4.3.3 slab分配器 110
4.3.4 vmalloc 122
4.3.5 連續內存分配器(CMA) 124
4.4 小結 125
第5章 文件系統和文件I/O 126
5.1 文件系統—高層視圖 126
5.1.1 元數據 127
5.1.2 操作 132
5.1.3 附加功能 134
5.2 Linux內核中的文件系統 135
5.3 通用文件系統接口 138
5.4 特殊文件系統 153
5.4.1 procfs 154
5.4.2 sysfs 156
5.4.3 debugfs 157
5.5 小結 157
第6章 進程間通信 158
6.1 管道和FIFO 158
6.2 消息隊列 163
6.2.1 System V消息隊列 163
6.2.2 POSIX消息隊列 165
6.3 共享內存 167
6.3.1 System V共享內存 167
6.3.2 POSIX共享內存 170
6.4 信號量 171
6.4.1 System V信號量 171
6.4.2 POSIX信號量 173
6.5 小結 174
第7章 虛擬內存管理 175
7.1 進程地址空間 175
7.1.1 進程內存描述符 177
7.1.2 頁表 193
7.2 小結 195
第8章 內核同步和鎖 196
8.1 原子操作 196
8.1.1 原子整數操作 197
8.1.2 原子位操作 198
8.2 排斥鎖 199
8.2.1 自旋鎖 199
8.2.2 互斥鎖 207
8.2.3 信號量 217
8.2.4 順序鎖 221
8.2.5 完成鎖 223
8.3 小結 226
第9章 中斷和延遲工作 227
9.1 中斷信號和向量 227
9.2 可編程中斷控制器 229
9.2.1 中斷控制器操作 230
9.2.2 IRQ描述符表 232
9.3 *級中斷管理接口 235
9.3.1 註冊一個中斷處理程序 235
9.3.2 註銷一個中斷處理程序 237
9.3.3 線程化中斷處理程序 237
9.3.4 控制接口 240
9.3.5 中斷棧 241
9.4 延遲工作 241
9.4.1 softirq 242
9.4.2 tasklet 244
9.4.3 工作隊列 248
9.5 小結 252
第 10章 時鐘和時間管理 253
10.1 時間表示 253
10.2 硬件抽象 257
10.3 Linux計時數據結構體、宏以及輔助函數 260
10.3.1 jiffies 260
10.3.2 timeval和timespec 262
10.3.3 跟踪和維護時間 264
10.3.4 節拍和中斷處理 265
10.3.5 節拍設備 267
10.4 軟件定時器和延遲函數 267
10.4.1 動態定時器 268
10.4.2 帶有動態定時器的競爭條件 270
10.4.3 動態定時器處理 271
10.4.4 延遲函數 271
10.5 POSIX時鐘 272
10.6 小結 273
第 11章 模塊管理 274
11.1 內核模塊 274
11.1.1 LKM的要素 274
11.1.2 加載和卸載操作 277
11.2 小結 288


作者介紹


Raghu Bharadwaj是Linux內核領域的顧問、貢獻者兼企業培訓師,具有近20年的從業經驗。
他是一個狂熱的內核愛好者,自20世紀90年代後期以來就一直密切關注Linux內核的發展。
他還是TECH VEDA公司的創辦人,該公司以技術支持、內核貢獻和培訓的形式,專門從事與Linux內核有關的工程和技能服務。
他對Linux有獨到的理解和闡述,而且因為對軟件設計和操作系統架構的狂熱而得到了客戶的特別關注。
在向從事Linux內核、Linux驅動以及嵌入式Linux等工作的工程團隊提供定制的且面向解決方案的培訓計劃這一方面,Raghu頗有心得。
他所服務的客戶有Xilinx(賽靈思)、通用、佳能、富士通、UTC(美國聯合技術公司)、TCS(印度塔塔諮詢服務公司)、博通、Sasken(印度薩斯肯通訊技術公司)、高通、Cognizant(高知特信息技術公司)、意法半導體、Stryker(史賽克)和Lattice(萊迪斯)半導體等公司。




相關書籍

C++嵌入式開發實例精解

作者 Igor Viarheichyk 譯 劉顒

2021-09-01

資料通訊網路, 5/e (Data Communications and Networking, 5/e)

作者 Forouzan 劉金順 譯

2021-09-01

電腦網路:開放源碼導向 (Computer Networks: An Open Source Approach)

作者 Ying-Dar Lin Ren-Hung Hwang Baker 林盈達 黃仁竑 審閱 王志強 譯

2021-09-01