書(shū)馨卡幫你省薪 2024個(gè)人購(gòu)書(shū)報(bào)告 2024中圖網(wǎng)年度報(bào)告
歡迎光臨中圖網(wǎng) 請(qǐng) | 注冊(cè)

奔跑吧Linux 內(nèi)核 入門(mén)篇

作者:張?zhí)祜w
出版社:人民郵電出版社出版時(shí)間:2019-02-01
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 365
中 圖 價(jià):¥69.4(7.8折) 定價(jià)  ¥89.0 登錄后可看到會(huì)員價(jià)
加入購(gòu)物車(chē) 收藏
運(yùn)費(fèi)6元,滿39元免運(yùn)費(fèi)
?新疆、西藏除外
本類五星書(shū)更多>
買(mǎi)過(guò)本商品的人還買(mǎi)了

奔跑吧Linux 內(nèi)核 入門(mén)篇 版權(quán)信息

奔跑吧Linux 內(nèi)核 入門(mén)篇 本書(shū)特色

1.原理+基礎(chǔ),從調(diào)試Linux內(nèi)核到動(dòng)手編寫(xiě)一個(gè)簡(jiǎn)單的內(nèi)核模塊,真正從零開(kāi)始學(xué)習(xí)Linux內(nèi)核。 2.實(shí)驗(yàn)+案例,70余個(gè)創(chuàng)新實(shí)驗(yàn)貫穿全書(shū),與你分享業(yè)內(nèi)一線項(xiàng)目經(jīng)驗(yàn)。 3.課件+視頻,教學(xué)資源豐富,視頻講解透徹,與你共享精品在線配套資源(可在異步社區(qū)下載)。 4.涵蓋當(dāng)前Linux社區(qū)中新的開(kāi)發(fā)工具和社區(qū)運(yùn)作方式,反映Linux內(nèi)核社區(qū)新發(fā)展。

奔跑吧Linux 內(nèi)核 入門(mén)篇 內(nèi)容簡(jiǎn)介

本書(shū)是一本介紹Linux內(nèi)核實(shí)踐的入門(mén)書(shū),基于Linux 4.0內(nèi)核,重點(diǎn)講解Linux內(nèi)核的理論和實(shí)驗(yàn)。本書(shū)分為12章,包括Linux系統(tǒng)入門(mén)、Linux內(nèi)核基礎(chǔ)知識(shí)、內(nèi)核編譯和調(diào)試、內(nèi)核模塊、簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)、系統(tǒng)調(diào)用、內(nèi)存管理、進(jìn)程管理、同步管理、中斷管理、調(diào)試和性能優(yōu)化,以及如何參與開(kāi)源社區(qū)等內(nèi)容。此外,本書(shū)還介紹了Linux內(nèi)核社區(qū)常用的開(kāi)發(fā)工具和理論,如Vim 8和git工具等。書(shū)中包括70多個(gè)實(shí)驗(yàn),幫助讀者深入理解Linux內(nèi)核。

奔跑吧Linux 內(nèi)核 入門(mén)篇 目錄

第 1章 Linux系統(tǒng)入門(mén)1
1.1 Linux的發(fā)展歷史 1
1.2 Linux發(fā)行版 2
1.2.1 Red Hat Linux 2
1.2.2 Debian Linux 3
1.2.3 SuSE Linux 4
1.2.4 優(yōu)麒麟Linux 4
1.3 Linux內(nèi)核 5
1.3.1 宏內(nèi)核和微內(nèi)核 5
1.3.2 Linux內(nèi)核概貌 6
1.4 如何學(xué)習(xí)Linux內(nèi)核 9
1.5 Linux內(nèi)核實(shí)驗(yàn)入門(mén) 10
1.5.1 實(shí)驗(yàn)1:在虛擬機(jī)中安裝優(yōu)麒麟Linux 18.04系統(tǒng) 10
1.5.2 實(shí)驗(yàn)2:給優(yōu)麒麟Linux系統(tǒng)更換“心臟” 14
1.5.3 實(shí)驗(yàn)3:使用定制的內(nèi)核runninglinuxkernel 15
1.5.4 實(shí)驗(yàn)4:如何編譯和運(yùn)行一個(gè)ARM Linux內(nèi)核 19
第 2章 Linux內(nèi)核基礎(chǔ)知識(shí) 22
2.1 Linux常用的編譯工具 22
2.1.1 GCC工具 22
2.1.2 ARM GCC 23
2.1.3 GCC編譯 24
2.2 Linux內(nèi)核中常用的C語(yǔ)言技巧 25
2.3 Linux內(nèi)核中常用的數(shù)據(jù)結(jié)構(gòu)和算法 31
2.3.1 鏈表 31
2.3.2 紅黑樹(shù) 34
2.3.3 無(wú)鎖環(huán)形緩沖區(qū) 36
2.4 Vim工具的使用 38
2.4.1 Vim 8介紹 38
2.4.2 Vim的基本模式 38
2.4.3 Vim中3種模式的切換 39
2.4.4 Vim光標(biāo)的移動(dòng) 40
2.4.5 刪除、復(fù)制和粘貼 41
2.4.6 查找和替換 41
2.4.7 文件相關(guān) 41
2.5 git工具的使用 42
2.5.1 安裝git 43
2.5.2 git基本操作 43
2.5.3 分支管理 46
2.6 實(shí)驗(yàn) 48
2.6.1 實(shí)驗(yàn)1:GCC編譯 48
2.6.2 實(shí)驗(yàn)2:內(nèi)核鏈表 51
2.6.3 實(shí)驗(yàn)3:紅黑樹(shù) 52
2.6.4 實(shí)驗(yàn)4:使用Vim工具 52
2.6.5 實(shí)驗(yàn)5:把Vim打造成一個(gè)強(qiáng)大的IDE編輯工具 52
2.6.6 實(shí)驗(yàn)6:建立一個(gè)git本地倉(cāng)庫(kù) 60
2.6.7 實(shí)驗(yàn)7:解決合并分支沖突 62
2.6.8 實(shí)驗(yàn)8:利用git來(lái)管理Linux內(nèi)核開(kāi)發(fā) 65
2.6.9 實(shí)驗(yàn)9:利用git來(lái)管理項(xiàng)目代碼 67
第3章 內(nèi)核編譯和調(diào)試 73
3.1 內(nèi)核配置 73
3.1.1 內(nèi)核配置工具 73
3.1.2 .config文件 74
3.2 實(shí)驗(yàn)1:通過(guò)QEMU調(diào)試ARM Linux內(nèi)核 76
3.3 實(shí)驗(yàn)2:通過(guò)QEMU調(diào)試ARMv8的Linux內(nèi)核 78
3.4 實(shí)驗(yàn)3:通過(guò)Eclipse+QEMU單步調(diào)試內(nèi)核 81
3.5 實(shí)驗(yàn)4:在QEMU中添加文件系統(tǒng)的支持 85
第4章 內(nèi)核模塊 86
4.1 從一個(gè)內(nèi)核模塊開(kāi)始 86
4.2 模塊參數(shù) 90
4.3 符號(hào)共享 92
4.4 實(shí)驗(yàn) 93
4.4.1 實(shí)驗(yàn)1:編寫(xiě)一個(gè)簡(jiǎn)單的內(nèi)核模塊 93
4.4.2 實(shí)驗(yàn)2:向內(nèi)核模塊傳遞參數(shù) 95
4.4.3 實(shí)驗(yàn)3:在模塊之間導(dǎo)出符號(hào) 95
第5章 簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng) 96
5.1 實(shí)驗(yàn)1:從一個(gè)簡(jiǎn)單的字符設(shè)備開(kāi)始 97
5.2 字符設(shè)備驅(qū)動(dòng)詳解 102
5.2.1 字符設(shè)備驅(qū)動(dòng)的抽象 102
5.2.2 設(shè)備號(hào)的管理 104
5.2.3 設(shè)備節(jié)點(diǎn) 104
5.2.4 字符設(shè)備操作方法集 105
5.3 實(shí)驗(yàn)2:使用misc機(jī)制來(lái)創(chuàng)建設(shè)備 107
5.4 一個(gè)簡(jiǎn)單的虛擬設(shè)備 109
5.4.1 實(shí)驗(yàn)3:為虛擬設(shè)備編寫(xiě)驅(qū)動(dòng) 109
5.4.2 實(shí)驗(yàn)4:使用KFIFO改進(jìn)設(shè)備驅(qū)動(dòng) 112
5.5 阻塞I O和非阻塞I O 115
5.5.1 實(shí)驗(yàn)5:把虛擬設(shè)備驅(qū)動(dòng)改成非阻塞模式 115
5.5.2 實(shí)驗(yàn)6:把虛擬設(shè)備驅(qū)動(dòng)改成阻塞模式 118
5.6 I O多路復(fù)用 122
5.6.1 Linux的I O多路復(fù)用 122
5.6.2 實(shí)驗(yàn)7:向虛擬設(shè)備中添加I O多路復(fù)用支持 123
5.7 實(shí)驗(yàn)8:為什么不能喚醒讀寫(xiě)進(jìn)程 128
5.8 實(shí)驗(yàn)9:向虛擬設(shè)備中添加異步通知 129
5.9 本章小結(jié) 133
第6章 系統(tǒng)調(diào)用 134
6.1 系統(tǒng)調(diào)用概念 134
6.1.1 系統(tǒng)調(diào)用和POSIX標(biāo)準(zhǔn) 135
6.1.2 系統(tǒng)調(diào)用表 135
6.1.3 用程序訪問(wèn)系統(tǒng)調(diào)用 136
6.1.4 新增系統(tǒng)調(diào)用 137
6.2 實(shí)驗(yàn) 137
6.2.1 實(shí)驗(yàn)1:在ARM32機(jī)器上新增一個(gè)系統(tǒng)調(diào)用 137
6.2.2 實(shí)驗(yàn)2:在優(yōu)麒麟Linux機(jī)器上新增一個(gè)系統(tǒng)調(diào)用 138

第7章 內(nèi)存管理 139
7.1 從硬件角度看內(nèi)存管理 139
7.1.1 內(nèi)存管理的“遠(yuǎn)古時(shí)代” 139
7.1.2 分段機(jī)制 141
7.1.3 分頁(yè)機(jī)制 142
7.1.4 虛擬地址到物理地址的轉(zhuǎn)換 143
7.2 從軟件角度看內(nèi)存管理 144
7.2.1 free命令 144
7.2.2 從應(yīng)用編程角度看內(nèi)存管理 145
7.2.3 從內(nèi)存布局圖角度看內(nèi)存管理 146
7.2.4 從進(jìn)程角度看內(nèi)存管理 150
7.3 物理內(nèi)存管理 154
7.3.1 物理頁(yè)面 155
7.3.2 內(nèi)存管理區(qū) 159
7.3.3 分配和釋放頁(yè)面 162
7.3.4 分配小塊內(nèi)存 170
7.4 虛擬內(nèi)存管理 177
7.4.1 進(jìn)程地址空間 177
7.4.2 內(nèi)存描述符mm_struct 178
7.4.3 VMA管理 180
7.4.4 malloc分配函數(shù) 183
7.4.5 mmap 185
7.5 缺頁(yè)異常 188
7.5.1 do_page_fault函數(shù) 189
7.5.2 匿名頁(yè)面缺頁(yè)異常 190
7.5.3 文件映射缺頁(yè)中斷 190
7.5.4 寫(xiě)時(shí)復(fù)制缺頁(yè)異常 191
7.5.5 缺頁(yè)異常小結(jié) 192
7.6 內(nèi)存短缺 193
7.6.1 頁(yè)面回收算法 193
7.6.2 OOM Killer機(jī)制 194
7.7 內(nèi)存管理實(shí)驗(yàn) 195
7.7.1 實(shí)驗(yàn)1:查看系統(tǒng)內(nèi)存信息 195
7.7.2 實(shí)驗(yàn)2:獲取系統(tǒng)的物理內(nèi)存信息 197
7.7.3 實(shí)驗(yàn)3:分配內(nèi)存 199
7.7.4 實(shí)驗(yàn)4:slab 200
7.7.5 實(shí)驗(yàn)5:VMA 201
7.7.6 實(shí)驗(yàn)6:mmap 203
7.7.7 實(shí)驗(yàn)7:映射用戶內(nèi)存 203
7.7.8 實(shí)驗(yàn)8:OOM 204
第8章 進(jìn)程管理 205
8.1 進(jìn)程 205
8.1.1 進(jìn)程的來(lái)由 205
8.1.2 進(jìn)程描述符 207
8.1.3 進(jìn)程的生命周期 209
8.1.4 進(jìn)程標(biāo)識(shí) 212
8.1.5 進(jìn)程間的家族關(guān)系 212
8.1.6 獲取當(dāng)前進(jìn)程 214
8.2 進(jìn)程的創(chuàng)建和終止 216
8.2.1 寫(xiě)時(shí)復(fù)制技術(shù) 216
8.2.2 fork()函數(shù) 217
8.2.3 vfork()函數(shù) 218
8.2.4 clone()函數(shù) 218
8.2.5 內(nèi)核線程 219
8.2.6 do_fork()函數(shù) 219
8.2.7 終止進(jìn)程 221
8.2.8 僵尸進(jìn)程和托孤進(jìn)程 222
8.2.9 進(jìn)程0和進(jìn)程1 222
8.3 進(jìn)程調(diào)度 223
8.3.1 進(jìn)程分類 224
8.3.2 進(jìn)程優(yōu)先級(jí) 224
8.3.3 時(shí)間片 225
8.3.4 經(jīng)典調(diào)度算法 225
8.3.5 Linux O(n)調(diào)度算法 228
8.3.6 Linux O(1)調(diào)度算法 228
8.3.7 Linux CFS調(diào)度算法 228
8.3.8 進(jìn)程切換 233
8.3.9 與調(diào)度相關(guān)的數(shù)據(jù)結(jié)構(gòu) 239
8.4 多核調(diào)度 241
8.4.1 調(diào)度域和調(diào)度組 241
8.4.2 負(fù)載計(jì)算 244
8.4.3 負(fù)載均衡算法 245
8.5 實(shí)驗(yàn) 246
8.5.1 實(shí)驗(yàn)1:fork和clone 246
8.5.2 實(shí)驗(yàn)2:內(nèi)核線程 247
8.5.3 實(shí)驗(yàn)3:后臺(tái)守護(hù)進(jìn)程 247
8.5.4 實(shí)驗(yàn)4:進(jìn)程權(quán)限 247
8.5.5 實(shí)驗(yàn)5:設(shè)置優(yōu)先級(jí) 247
8.5.6 實(shí)驗(yàn)6:per-cpu變量 248
第9章 同步管理 250
9.1 原子操作與內(nèi)存屏障 251
9.1.1 原子操作 251
9.1.2 內(nèi)存屏障 253
9.2 自旋鎖機(jī)制 254
9.2.1 自旋鎖定義 254
9.2.2 自旋鎖變種 256
9.2.3 自旋鎖和raw_spin_lock 257
9.2.4 自旋鎖的改進(jìn) 257
9.3 信號(hào)量 258
9.4 互斥體 259
9.5 讀寫(xiě)鎖 261
9.5.1 讀寫(xiě)鎖定義 261
9.5.2 讀寫(xiě)信號(hào)量 262
9.6 RCU 264
9.7 等待隊(duì)列 267
9.7.1 等待隊(duì)列頭 267
9.7.2 等待隊(duì)列節(jié)點(diǎn) 268
9.8 實(shí)驗(yàn) 269
9.8.1 實(shí)驗(yàn)1:自旋鎖 269
9.8.2 實(shí)驗(yàn)2:互斥鎖 269
9.8.3 實(shí)驗(yàn)3:RCU 269
第 10章 中斷管理 270
10.1 Linux中斷管理機(jī)制 270
10.1.1 ARM中斷控制器 271
10.1.2 硬件中斷號(hào)和Linux中斷號(hào)的映射 275
10.1.3 注冊(cè)中斷 276
10.2 軟中斷和tasklet 278
10.2.1 SoftIRQ軟中斷 279
10.2.2 tasklet 280
10.2.3 local_bh_disable local_bh_enable 281
10.2.4 本節(jié)小結(jié) 282
10.3 工作隊(duì)列機(jī)制 282
10.3.1 工作隊(duì)列類型 283
10.3.2 使用工作隊(duì)列 285
10.3.3 本節(jié)小結(jié) 285
10.4 實(shí)驗(yàn) 286
10.4.1 實(shí)驗(yàn)1:tasklet 286
10.4.2 實(shí)驗(yàn)2:工作隊(duì)列 286
10.4.3 實(shí)驗(yàn)3:定時(shí)器和內(nèi)核線程 287
第 11章 調(diào)試和性能優(yōu)化 288
11.1 printk和動(dòng)態(tài)輸出 289
11.1.1 printk輸出函數(shù) 289
11.1.2 動(dòng)態(tài)輸出 290
11.1.3 實(shí)驗(yàn)1:printk 292
11.1.4 實(shí)驗(yàn)2:動(dòng)態(tài)輸出 292
11.2 proc和debugfs 293
11.2.1 proc文件系統(tǒng) 293
11.2.2 sys文件系統(tǒng) 295
11.2.3 debugfs 296
11.2.4 實(shí)驗(yàn)3:procfs 297
11.2.5 實(shí)驗(yàn)4:sysfs 298
11.2.6 實(shí)驗(yàn)5:debugfs 300
11.3 ftrace 301
11.3.1 irqs跟蹤器 302
11.3.2 preemptoff跟蹤器 304
11.3.3 preemptirqsoff跟蹤器 305
11.3.4 function跟蹤器 306
11.3.5 動(dòng)態(tài)ftrace 307
11.3.6 事件跟蹤 308
11.3.7 實(shí)驗(yàn)6:使用frace 310
11.3.8 實(shí)驗(yàn)7:添加一個(gè)新的跟蹤點(diǎn) 311
11.3.9 實(shí)驗(yàn)8:使用示蹤標(biāo)志 314
11.3.10 實(shí)驗(yàn)9:使用kernelshark來(lái)分析數(shù)據(jù) 317
11.4 實(shí)驗(yàn)10:分析oops錯(cuò)誤 319
11.5 perf性能分析工具 323
11.5.1 實(shí)驗(yàn)11:使用perf工具來(lái)進(jìn)行性能分析 328
11.5.2 實(shí)驗(yàn)12:采集perf數(shù)據(jù)生成火焰圖 329
11.6 內(nèi)存檢測(cè) 329
11.6.1 實(shí)驗(yàn)13:使用slub_debug檢查內(nèi)存泄漏 330
11.6.2 實(shí)驗(yàn)14:使用kmemleak檢查內(nèi)存泄漏 335
11.6.3 實(shí)驗(yàn)15:使用kasan檢查內(nèi)存泄漏 337
11.6.4 實(shí)驗(yàn)16:使用valgrind檢查內(nèi)存泄漏 340
11.7 實(shí)驗(yàn)17:kdump 342
11.8 性能和測(cè)試 348
11.8.1 性能測(cè)試概述 348
11.8.2 實(shí)驗(yàn)18:使用lkp-tests工具進(jìn)行性能測(cè)試 349
第 12章 開(kāi)源社區(qū) 350
12.1 什么是開(kāi)源社區(qū) 350
12.1.1 開(kāi)源軟件的發(fā)展歷史 350
12.1.2 Linux基金會(huì) 351
12.1.3 開(kāi)源協(xié)議 351
12.1.4 Linux內(nèi)核社區(qū) 353
12.1.5 國(guó)內(nèi)開(kāi)源社區(qū) 354
12.2 參與開(kāi)源社區(qū) 354
12.2.1 參與開(kāi)源項(xiàng)目的好處 354
12.2.2 如何參與開(kāi)源項(xiàng)目 355
12.3 實(shí)驗(yàn)1:使用cppcheck檢查代碼 356
12.4 實(shí)驗(yàn)2:提交第 一個(gè)Linux內(nèi)核補(bǔ)丁 357
12.5 實(shí)驗(yàn)3:管理和提交多個(gè)補(bǔ)丁組成的補(bǔ)丁集 359
12.6 實(shí)驗(yàn)4:在Gitee中創(chuàng)建一個(gè)開(kāi)源項(xiàng)目 363
參考文獻(xiàn) 366
展開(kāi)全部

奔跑吧Linux 內(nèi)核 入門(mén)篇 作者簡(jiǎn)介

張?zhí)祜w,筆名“笨叔叔”,Linux內(nèi)核愛(ài)好者,從事Linux內(nèi)核和驅(qū)動(dòng)開(kāi)發(fā)十余年,曾在多家芯片公司從事過(guò)手機(jī)芯片底層軟件開(kāi)發(fā)和客戶支持工作。著有《奔跑吧 Linux內(nèi)核》一書(shū)。

暫無(wú)評(píng)論……
書(shū)友推薦
返回頂部
中圖網(wǎng)
在線客服