關(guān)于我們
書單推薦
新書推薦
|
奔跑吧Linux內(nèi)核入門篇(第2版)
本書基于Linux 5.0和ARM64處理器循序漸進(jìn)地講述Linux內(nèi)核的理論與實(shí)驗(yàn)。本書共16章,主要介紹Linux系統(tǒng)基礎(chǔ)知識(shí)、Linux內(nèi)核基礎(chǔ)知識(shí)、ARM64架構(gòu)基礎(chǔ)知識(shí)、內(nèi)核編譯和調(diào)試、內(nèi)核模塊、簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)、系統(tǒng)調(diào)用、進(jìn)程管理、內(nèi)存管理、同步管理、中斷管理、調(diào)試和性能優(yōu)化、開源社區(qū)、文件系統(tǒng)、虛擬化與云計(jì)算等方面的內(nèi)容,并通過一個(gè)綜合能力訓(xùn)練來引導(dǎo)讀者動(dòng)手實(shí)現(xiàn)一個(gè)小的操作系統(tǒng)。
本書適合Linux開發(fā)人員、嵌入式開發(fā)人員以及對(duì)Linux感興趣的程序員閱讀,也適合作為高等院校計(jì)算機(jī)相關(guān)專業(yè)的教材。
1.涵蓋上百個(gè)經(jīng)典實(shí)驗(yàn)
2.提供配套學(xué)習(xí)資源
3.講述如何在樹莓派上實(shí)現(xiàn)一個(gè)小的操作系統(tǒng)
4.展示業(yè)內(nèi)一線經(jīng)驗(yàn)
5.通過實(shí)驗(yàn)幫助開發(fā)人員零基礎(chǔ)開啟Linux系統(tǒng)之旅,提高動(dòng)手能力,增加項(xiàng)目實(shí)踐經(jīng)驗(yàn)
分析與運(yùn)行Linux內(nèi)核是培養(yǎng)讀者系統(tǒng)軟件設(shè)計(jì)能力的有效方法。然而,Linux內(nèi)核的機(jī)制復(fù)雜、算法精妙、代碼量龐大,因此初學(xué)者難以快速入門,并深入理解和靈活應(yīng)用。本書結(jié)合作者多年的項(xiàng)目實(shí)踐經(jīng)驗(yàn),剖析了源代碼,是Linux內(nèi)核方面的一本經(jīng)典入門圖書。
——吳國(guó)偉, 大連理工大學(xué)
本書第1版得到了讀者的一致好評(píng)。本書第2版新增了很多內(nèi)容,尤其是操作系統(tǒng)方面的熱門內(nèi)容——文件系統(tǒng)和虛擬化。我印象最深刻的是利用樹莓派實(shí)現(xiàn)一個(gè)小的操作系統(tǒng)。通過這樣的綜合實(shí)驗(yàn),讀者會(huì)對(duì)Linux內(nèi)核有更深的理解。理論加動(dòng)手實(shí)踐是學(xué)習(xí)Linux內(nèi)核的最佳途徑之一。
——陳莉君,西安郵電大學(xué)
本書圖文并茂,結(jié)合實(shí)驗(yàn),把作者一手的知識(shí)與經(jīng)驗(yàn)毫無保留地呈現(xiàn)給了讀者,有助于初學(xué)者少走彎路。本書有助于讀者逐步成為L(zhǎng)inux內(nèi)核領(lǐng)域的高級(jí)開發(fā)人員。
——夏耐,南京大學(xué)
笨叔,Linux內(nèi)核愛好者,出版過《奔跑吧Linux內(nèi)核》《奔跑吧Linux內(nèi)核 入門篇》。
陳悅,Linux內(nèi)核愛好者,南昌大學(xué)教師,主要負(fù)責(zé)計(jì)算機(jī)方面的“操作系統(tǒng)”“匯編語(yǔ)言”與“計(jì)算機(jī)組成原理”等課程的教學(xué)與研究。
目 錄
第1章 Linux系統(tǒng)基礎(chǔ)知識(shí) 1
1.1 Linux系統(tǒng)的發(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 Linux內(nèi)核目錄結(jié)構(gòu) 5
1.3.2 宏內(nèi)核和微內(nèi)核 7
1.3.3 Linux內(nèi)核概貌 8
1.4 如何學(xué)習(xí)Linux內(nèi)核 11
1.5 Linux內(nèi)核實(shí)驗(yàn)入門 12
1.5.1 實(shí)驗(yàn)1-1:在虛擬機(jī)中安裝
優(yōu)麒麟Linux 20.04系統(tǒng) 12 1.5.2 實(shí)驗(yàn)1-2:給優(yōu)麒麟Linux 系統(tǒng)更換“心臟” 15 1.5.3 實(shí)驗(yàn)1-3:使用QEMU虛擬機(jī) 來運(yùn)行Linux系統(tǒng) 17 1.5.4 實(shí)驗(yàn)1-4:創(chuàng)建基于Ubuntu Linux的根文件系統(tǒng) 22 1.5.5 實(shí)驗(yàn)1-5:創(chuàng)建基于QEMU + RISC-V的Linux系統(tǒng) 22 第2章 Linux內(nèi)核基礎(chǔ)知識(shí) 24 2.1 Linux常用的編譯工具 24 2.1.1 GCC 24 2.1.2 ARM GCC 25 2.1.3 GCC編譯 26 2.2 Linux內(nèi)核中常用的C語(yǔ)言 技巧 27 2.3 Linux內(nèi)核中常用的數(shù)據(jù)結(jié)構(gòu)和 算法 33 2.3.1 鏈表 33 2.3.2 紅黑樹 36 2.3.3 無鎖環(huán)形緩沖區(qū) 38 2.4 Vim工具的使用 40 2.4.1 Vim 8介紹 40 2.4.2 Vim的基本模式 41 2.4.3 Vim中3種模式的切換 41 2.4.4 Vim光標(biāo)的移動(dòng) 42 2.4.5 刪除、復(fù)制和粘貼 43 2.4.6 查找和替換 43 2.4.7 與文件相關(guān)的命令 44 2.5 git工具的使用 44 2.5.1 安裝git 45 2.5.2 git基本操作 45 2.5.3 分支管理 48 2.6 實(shí)驗(yàn) 50 2.6.1 實(shí)驗(yàn)2-1:GCC編譯 50 2.6.2 實(shí)驗(yàn)2-2:內(nèi)核鏈表 54 2.6.3 實(shí)驗(yàn)2-3:紅黑樹 54 2.6.4 實(shí)驗(yàn)2-4:使用Vim 工具 54 2.6.5 實(shí)驗(yàn)2-5:把Vim打造成一個(gè) 強(qiáng)大的IDE編輯工具 55 2.6.6 實(shí)驗(yàn)2-6:建立一個(gè)git本地 倉(cāng)庫(kù) 63 2.6.7 實(shí)驗(yàn)2-7:解決分支合并 沖突 65 2.6.8 實(shí)驗(yàn)2-8:利用git來管理 Linux內(nèi)核開發(fā) 67 2.6.9 實(shí)驗(yàn)2-9:利用git來管理 項(xiàng)目代碼 69 第3章 ARM64架構(gòu)基礎(chǔ)知識(shí) 75 3.1 ARM64架構(gòu)介紹 76 3.1.1 ARMv8-A架構(gòu)介紹 76 3.1.2 常見的ARMv8處理器 76 3.1.3 ARM64的基本概念 77 3.1.4 ARMv8處理器的運(yùn)行 狀態(tài) 78 3.1.5 ARMv8架構(gòu)支持的數(shù)據(jù) 寬度 79 3.1.6 不對(duì)齊訪問 79 3.2 ARMv8寄存器 79 3.2.1 通用寄存器 79 3.2.2 處理器狀態(tài)寄存器 80 3.2.3 特殊寄存器 82 3.2.4 系統(tǒng)寄存器 84 3.3 A64指令集 85 3.3.1 算術(shù)和移位操作指令 85 3.3.2 乘和除操作指令 86 3.3.3 移位操作指令 87 3.3.4 位操作指令 87 3.3.5 條件操作指令 87 3.3.6 內(nèi)存加載指令 89 3.3.7 多字節(jié)內(nèi)存加載和存儲(chǔ) 指令 91 3.3.8 非特權(quán)訪問級(jí)別的加載和 存儲(chǔ)指令 91 3.3.9 內(nèi)存屏障指令 92 3.3.10 獨(dú)占訪存指令 92 3.3.11 跳轉(zhuǎn)指令 92 3.3.12 異常處理指令 93 3.3.13 系統(tǒng)寄存器訪問指令 93 3.4 ARM64異常處理 95 3.4.1 異常類型 95 3.4.2 同步異常和異步異!96 3.4.3 異常的發(fā)生和退出 96 3.4.4 異常向量表 97 3.5 ARM64內(nèi)存管理 99 3.5.1 頁(yè)表 100 3.5.2 頁(yè)表映射 101 3.6 實(shí)驗(yàn)平臺(tái):樹莓派 102 3.6.1 樹莓派4介紹 103 3.6.2 實(shí)驗(yàn)3-1:在樹莓派上安裝 優(yōu)麒麟Linux 20.04 系統(tǒng) 104 3.6.3 實(shí)驗(yàn)3-2:匯編語(yǔ)言 練習(xí)—查找最大數(shù) 105 3.6.4 實(shí)驗(yàn)3-3:匯編語(yǔ)言 練習(xí)—通過C語(yǔ)言 調(diào)用匯編函數(shù) 105 3.6.5 實(shí)驗(yàn)3-4:匯編語(yǔ)言 練習(xí)—通過匯編語(yǔ)言 調(diào)用C函數(shù) 106 3.6.6 實(shí)驗(yàn)3-5:匯編語(yǔ)言 練習(xí)—GCC內(nèi)聯(lián)匯編 106 3.6.7 實(shí)驗(yàn)3-6:在樹莓派上編寫 一個(gè)裸機(jī)程序 106 第4章 內(nèi)核編譯和調(diào)試 107 4.1 內(nèi)核配置 107 4.1.1 內(nèi)核配置工具 107 4.1.2 .config文件 108 4.2 實(shí)驗(yàn)4-1:通過QEMU虛擬機(jī) 調(diào)試ARMv8的Linux內(nèi)核 110 4.3 實(shí)驗(yàn)4-2:通過Eclipse + QEMU 單步調(diào)試內(nèi)核 111 第5章 內(nèi)核模塊 116 5.1 從一個(gè)內(nèi)核模塊開始 116 5.2 模塊參數(shù) 120 5.3 符號(hào)共享 122 5.4 實(shí)驗(yàn) 123 5.4.1 實(shí)驗(yàn)5-1:編寫一個(gè)簡(jiǎn)單的 內(nèi)核模塊 123 5.4.2 實(shí)驗(yàn)5-2:向內(nèi)核模塊傳遞 參數(shù) 124 5.4.3 實(shí)驗(yàn)5-3:在模塊之間導(dǎo)出 符號(hào) 124 第6章 簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng) 125 6.1 從一個(gè)簡(jiǎn)單的字符設(shè)備開始 126 6.1.1 一個(gè)簡(jiǎn)單的字符設(shè)備 126 6.1.2 實(shí)驗(yàn)6-1:寫一個(gè)簡(jiǎn)單的 字符設(shè)備驅(qū)動(dòng) 131 6.2 字符設(shè)備驅(qū)動(dòng)詳解 131 6.2.1 字符設(shè)備驅(qū)動(dòng)的抽象 131 6.2.2 設(shè)備號(hào)的管理 133 6.2.3 設(shè)備節(jié)點(diǎn) 133 6.2.4 字符設(shè)備操作方法集 134 6.3 misc機(jī)制 136 6.3.1 misc機(jī)制介紹 136 6.3.2 實(shí)驗(yàn)6-2:使用misc機(jī)制 來創(chuàng)建設(shè)備驅(qū)動(dòng) 136 6.4 一個(gè)簡(jiǎn)單的虛擬設(shè)備 138 6.4.1 實(shí)驗(yàn)6-3:為虛擬設(shè)備 編寫驅(qū)動(dòng) 138 6.4.2 實(shí)驗(yàn)6-4:使用KFIFO環(huán)形 緩沖區(qū)改進(jìn)設(shè)備驅(qū)動(dòng) 141 6.5 阻塞I/O和非阻塞I/O 143 6.5.1 實(shí)驗(yàn)6-5:把虛擬設(shè)備驅(qū)動(dòng) 改成非阻塞模式 144 6.5.2 實(shí)驗(yàn)6-6:把虛擬設(shè)備驅(qū)動(dòng) 改成阻塞模式 147 6.6 I/O多路復(fù)用 151 6.6.1 Linux內(nèi)核的I/O多路 復(fù)用 151 6.6.2 實(shí)驗(yàn)6-7:向虛擬設(shè)備中 添加I/O多路復(fù)用支持 152 6.6.3 實(shí)驗(yàn)6-8:為什么不能喚醒 讀寫進(jìn)程 157 6.7 添加異步通知 159 6.7.1 異步通知介紹 159 6.7.2 實(shí)驗(yàn)6-9:向虛擬設(shè)備添加 異步通知 159 6.7.3 實(shí)驗(yàn)6-10:解決驅(qū)動(dòng)的 宕機(jī)難題 163 6.8 本章小結(jié) 164 第7章 系統(tǒng)調(diào)用 166 7.1 系統(tǒng)調(diào)用的概念 166 7.1.1 系統(tǒng)調(diào)用和POSIX標(biāo)準(zhǔn) 167 7.1.2 系統(tǒng)調(diào)用表 167 7.1.3 用程序訪問系統(tǒng)調(diào)用 169 7.1.4 新增系統(tǒng)調(diào)用 170 7.2 實(shí)驗(yàn) 170 7.2.1 實(shí)驗(yàn)7-1:在樹莓派上新增 一個(gè)系統(tǒng)調(diào)用 170 7.2.2 實(shí)驗(yàn)7-2:在Linux主機(jī)上 新增一個(gè)系統(tǒng)調(diào)用 170 第8章 進(jìn)程管理 172 8.1 進(jìn)程 172 8.1.1 進(jìn)程的由來 172 8.1.2 進(jìn)程描述符 174 8.1.3 進(jìn)程的生命周期 176 8.1.4 進(jìn)程標(biāo)識(shí) 178 8.1.5 進(jìn)程間的家族關(guān)系 179 8.1.6 獲取當(dāng)前進(jìn)程 181 8.2 進(jìn)程的創(chuàng)建和終止 183 8.2.1 寫時(shí)復(fù)制技術(shù) 185 8.2.2 fork()函數(shù) 186 8.2.3 vfork()函數(shù) 187 8.2.4 clone()函數(shù) 187 8.2.5 內(nèi)核線程 188 8.2.6 do_fork()函數(shù) 189 8.2.7 終止進(jìn)程 191 8.2.8 僵尸進(jìn)程和托孤進(jìn)程 191 8.2.9 進(jìn)程0和進(jìn)程1 192 8.3 進(jìn)程調(diào)度 193 8.3.1 進(jìn)程的分類 193 8.3.2 進(jìn)程的優(yōu)先級(jí)和權(quán)重 193 8.3.3 調(diào)度策略 195 8.3.4 時(shí)間片 198 8.3.5 經(jīng)典調(diào)度算法 198 8.3.6 Linux O(n)調(diào)度算法 200 8.3.7 Linux O(1)調(diào)度算法 200 8.3.8 Linux CFS算法 201 8.3.9 進(jìn)程切換 204 8.3.10 與調(diào)度相關(guān)的數(shù)據(jù)結(jié)構(gòu) 210 8.4 多核調(diào)度 214 8.4.1 調(diào)度域和調(diào)度組 215 8.4.2 負(fù)載的計(jì)算 218 8.4.3 負(fù)載均衡算法 221 8.4.4 Per-CPU變量 222 8.5 實(shí)驗(yàn) 223 8.5.1 實(shí)驗(yàn)8-1:fork和clone系統(tǒng) 調(diào)用 223 8.5.2 實(shí)驗(yàn)8-2:內(nèi)核線程 224 8.5.3 實(shí)驗(yàn)8-3:后臺(tái)守護(hù)進(jìn)程 224 8.5.4 實(shí)驗(yàn)8-4:進(jìn)程權(quán)限 224 8.5.5 實(shí)驗(yàn)8-5:設(shè)置優(yōu)先級(jí) 224 8.5.6 實(shí)驗(yàn)8-6:Per-CPU變量 225 第9章 內(nèi)存管理 226 9.1 從硬件角度看內(nèi)存管理 226 9.1.1 內(nèi)存管理的“遠(yuǎn)古 時(shí)代” 226 9.1.2 地址空間的抽象 228 9.1.3 分段機(jī)制 229 9.1.4 分頁(yè)機(jī)制 230 9.2 從軟件角度看內(nèi)存管理 234 9.2.1 free命令 234 9.2.2 從應(yīng)用編程角度看內(nèi)存 管理 235 9.2.3 從內(nèi)存布局圖角度看內(nèi)存 管理 236 9.2.4 從進(jìn)程角度看內(nèi)存管理 239 9.2.5 從內(nèi)核角度看內(nèi)存管理 243 9.3 物理內(nèi)存管理 244 9.3.1 物理頁(yè)面 244 9.3.2 內(nèi)存管理區(qū) 250 9.3.3 分配和釋放頁(yè)面 252 9.3.4 關(guān)于內(nèi)存碎片化 258 9.3.5 分配小塊內(nèi)存 260 9.4 虛擬內(nèi)存管理 268 9.4.1 進(jìn)程地址空間 268 9.4.2 內(nèi)存描述符mm_struct 269 9.4.3 VMA管理 270 9.4.4 VMA屬性 273 9.4.5 VMA查找操作 276 9.4.6 malloc()函數(shù) 277 9.4.7 mmap()/munmap()函數(shù) 280 9.5 缺頁(yè)異!284 9.5.1 do_page_fault()函數(shù) 285 9.5.2 匿名頁(yè)面缺頁(yè)異常 286 9.5.3 文件映射缺頁(yè)中斷 286 9.5.4 寫時(shí)復(fù)制缺頁(yè)異!287 9.6 內(nèi)存短缺 287 9.6.1 頁(yè)面回收算法 287 9.6.2 OOM Killer機(jī)制 289 9.7 內(nèi)存管理日志信息以及調(diào)試 信息 289 9.7.1 vm_stat計(jì)數(shù) 289 9.7.2 meminfo分析 291 9.7.3 伙伴系統(tǒng)信息 293 9.7.4 查看內(nèi)存管理區(qū)的信息 294 9.7.5 查看進(jìn)程相關(guān)的內(nèi)存 信息 296 9.7.6 查看系統(tǒng)內(nèi)存信息的 工具 298 9.8 內(nèi)存管理實(shí)驗(yàn) 300 9.8.1 實(shí)驗(yàn)9-1:查看系統(tǒng)內(nèi)存 信息 301 9.8.2 實(shí)驗(yàn)9-2:獲取系統(tǒng)的物理 內(nèi)存信息 301 9.8.3 實(shí)驗(yàn)9-3:分配內(nèi)存 301 9.8.4 實(shí)驗(yàn)9-4:slab 302 9.8.5 實(shí)驗(yàn)9-5:VMA 302 9.8.6 實(shí)驗(yàn)9-6:mmap 302 9.8.7 實(shí)驗(yàn)9-7:映射用戶 內(nèi)存 303 9.8.8 實(shí)驗(yàn)9-8:OOM 303 第10章 同步管理 304 10.1 原子操作與內(nèi)存屏障 305 10.1.1 原子操作 305 10.1.2 內(nèi)存屏障 309 10.2 自旋鎖機(jī)制 310 10.2.1 自旋鎖的定義 310 10.2.2 Qspinlock的實(shí)現(xiàn) 311 10.2.3 自旋鎖的變種 312 10.2.4 自旋鎖和raw_spin_lock 313 10.3 信號(hào)量 314 10.4 互斥鎖 315 10.5 讀寫鎖 317 10.5.1 讀寫鎖的定義 317 10.5.2 讀寫信號(hào)量 318 10.6 RCU 320 10.7 等待隊(duì)列 323 10.7.1 等待隊(duì)列頭 323 10.7.2 等待隊(duì)列節(jié)點(diǎn) 324 10.8 實(shí)驗(yàn) 324 10.8.1 實(shí)驗(yàn)10-1:自旋鎖 324 10.8.2 實(shí)驗(yàn)10-2:互斥鎖 325 10.8.3 實(shí)驗(yàn)10-3:RCU鎖 325 第11章 中斷管理 326 11.1 Linux中斷管理機(jī)制 326 11.1.1 ARM中斷控制器 327 11.1.2 關(guān)于ARM Vexpress V2P 開發(fā)板的例子 327 11.1.3 關(guān)于Virt開發(fā)板的例子 329 11.1.4 硬件中斷號(hào)和Linux中斷號(hào) 的映射 330 11.1.5 注冊(cè)中斷 331 11.2 軟中斷和tasklet 333 11.2.1 軟中斷 334 11.2.2 tasklet 335 11.2.3 local_bh_disable()/local_ bh_enable() 336 11.2.4 小結(jié) 337 11.3 工作隊(duì)列機(jī)制 337 11.3.1 工作隊(duì)列的類型 338 11.3.2 使用工作隊(duì)列 340 11.3.3 小結(jié) 340 11.4 實(shí)驗(yàn) 341 11.4.1 實(shí)驗(yàn)11-1:tasklet 341 11.4.2 實(shí)驗(yàn)11-2:工作隊(duì)列 341 11.4.3 實(shí)驗(yàn)11-3:定時(shí)器和 內(nèi)核線程 341 第12章 調(diào)試和性能優(yōu)化 343 12.1 printk()輸出函數(shù)和動(dòng)態(tài)輸出 343 12.1.1 printk()輸出函數(shù) 343 12.1.2 動(dòng)態(tài)輸出 345 12.1.3 實(shí)驗(yàn)12-1:使用printk() 輸出函數(shù) 347 12.1.4 實(shí)驗(yàn)12-2:使用動(dòng)態(tài) 輸出 347 12.2 proc和debugfs 347 12.2.1 proc文件系統(tǒng) 347 12.2.2 sys文件系統(tǒng) 350 12.2.3 debugfs文件系統(tǒng) 351 12.2.4 實(shí)驗(yàn)12-3:使用procfs 351 12.2.5 實(shí)驗(yàn)12-4:使用sysfs 353 12.2.6 實(shí)驗(yàn)12-5:使用 debugfs 355 12.3 ftrace 355 12.3.1 irqsoff跟蹤器 357 12.3.2 function跟蹤器 358 12.3.3 動(dòng)態(tài)ftrace 359 12.3.4 事件跟蹤 361 12.3.5 實(shí)驗(yàn)12-6:使用ftrace 363 12.3.6 實(shí)驗(yàn)12-7:添加新的 跟蹤點(diǎn) 363 12.3.7 實(shí)驗(yàn)12-8:使用示蹤 標(biāo)志 366 12.3.8 實(shí)驗(yàn)12-9:使用kernelshark 分析數(shù)據(jù) 369 12.4 分析Oops錯(cuò)誤 371 12.4.1 Oops錯(cuò)誤介紹 371 12.4.2 實(shí)驗(yàn)12-10 :分析Oops 錯(cuò)誤 371 12.5 perf性能分析工具 375 12.5.1 perf list命令 376 12.5.2 利用perf采集數(shù)據(jù) 377 12.5.3 perf stat 378 12.5.4 perf top 379 12.5.5 實(shí)驗(yàn)12-11:使用perf工具 進(jìn)行性能分析 380 12.5.6 實(shí)驗(yàn)12-12:采集perf數(shù)據(jù) 以生成火焰圖 381 12.6 內(nèi)存檢測(cè) 381 12.6.1 實(shí)驗(yàn)12-13:使用slub_debug 檢查內(nèi)存泄漏 382 12.6.2 實(shí)驗(yàn)12-14:使用kmemleak 檢查內(nèi)存泄漏 387 12.6.3 實(shí)驗(yàn)12-15:使用kasan檢查 內(nèi)存泄漏 389 12.6.4 實(shí)驗(yàn)12-16:使用valgrind 檢查內(nèi)存泄漏 393 12.7 使用kdump解決死機(jī)問題 394 12.7.1 kdump介紹 394 12.7.2 實(shí)驗(yàn)12-17:搭建ARM64的 kdump實(shí)驗(yàn)環(huán)境 395 12.7.3 實(shí)驗(yàn)12-18:分析一個(gè)簡(jiǎn)單的 宕機(jī)案例 398 12.8 性能和測(cè)試 401 12.8.1 性能和測(cè)試概述 401 12.8.2 eBPF介紹 402 12.8.3 BCC介紹 403 12.8.4 實(shí)驗(yàn)12-19:運(yùn)行BCC 工具進(jìn)行性能測(cè)試 404 第13章 開源社區(qū) 405 13.1 什么是開源社區(qū) 405 13.1.1 開源軟件的發(fā)展歷史 405 13.1.2 Linux基金會(huì) 406 13.1.3 開源協(xié)議 406 13.1.4 Linux內(nèi)核社區(qū) 408 13.1.5 國(guó)內(nèi)開源社區(qū) 409 13.2 參與開源社區(qū) 409 13.2.1 參與開源項(xiàng)目的 好處 409 13.2.2 如何參與開源項(xiàng)目 410 13.3 實(shí)驗(yàn)13-1:使用cppcheck檢查 代碼 411 13.4 實(shí)驗(yàn)13-2:提交第一個(gè)Linux 內(nèi)核補(bǔ)丁 412 13.5 實(shí)驗(yàn)13-3:管理和提交多個(gè)補(bǔ)丁 組成的補(bǔ)丁集 414 第14章 文件系統(tǒng) 419 14.1 文件系統(tǒng)的基本概念 419 14.1.1 文件 419 14.1.2 目錄 422 14.2 文件系統(tǒng)的基本概念和 知識(shí) 423 14.2.1 文件系統(tǒng)的布局 423 14.2.2 索引數(shù)據(jù)塊 428 14.2.3 管理空閑塊 430 14.2.4 高速緩存 430 14.3 虛擬文件系統(tǒng)層 431 14.4 文件系統(tǒng)的一致性 436 14.5 一次寫磁盤的全過程 439 14.6 文件系統(tǒng)實(shí)驗(yàn) 440 14.6.1 實(shí)驗(yàn)14-1:查看文件 系統(tǒng) 440 14.6.2 實(shí)驗(yàn)14-2:刪除文件 內(nèi)容 441 14.6.3 實(shí)驗(yàn)14-3:塊設(shè)備 441 14.6.4 實(shí)驗(yàn)14-4:動(dòng)手寫一個(gè)簡(jiǎn)單 的文件系統(tǒng) 441 第15章 虛擬化與云計(jì)算 442 15.1 虛擬化技術(shù) 442 15.1.1 虛擬化技術(shù)的發(fā)展 歷史 442 15.1.2 虛擬機(jī)管理程序的 分類 444 15.1.3 內(nèi)存虛擬化 445 15.1.4 I/O虛擬化 445 15.2 容器技術(shù) 446 15.3 云計(jì)算 448 15.3.1 云編排 450 15.3.2 OpenStack介紹 451 15.3.3 Kubernetes介紹 451 15.4 實(shí)驗(yàn) 452 15.4.1 實(shí)驗(yàn)15-1:制作Docker 鏡像并發(fā)布 452 15.4.2 實(shí)驗(yàn)15-2:部署Kubernetes 服務(wù) 452 第16章 綜合能力訓(xùn)練:動(dòng)手寫一個(gè) 小OS 453 16.1 實(shí)驗(yàn)準(zhǔn)備 454 16.1.1 開發(fā)流程 454 16.1.2 配置串口線 454 16.1.3 寄存器地址 457 16.2 入門動(dòng)手篇 457 16.2.1 實(shí)驗(yàn)16-1:輸出 “Welcome BenOS!” 457 16.2.2 使用GDB + QEMU調(diào)試 BenOS 465 16.2.3 使用J-Link仿真器調(diào)試樹 莓派 466 16.2.4 實(shí)驗(yàn)16-2:切換異常 等級(jí) 473 16.2.5 實(shí)驗(yàn)16-3:實(shí)現(xiàn)簡(jiǎn)易的 printk()函數(shù) 473 16.2.6 實(shí)驗(yàn)16-4:中斷 473 16.2.7 實(shí)驗(yàn)16-5:創(chuàng)建 進(jìn)程 475 16.3 進(jìn)階挑戰(zhàn)篇 475 16.4 高手完善篇 476
你還可能感興趣
我要評(píng)論
|