注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)奔跑吧Linux內(nèi)核:基礎(chǔ)架構(gòu)+調(diào)試與案例分析(套裝2冊(cè))

奔跑吧Linux內(nèi)核:基礎(chǔ)架構(gòu)+調(diào)試與案例分析(套裝2冊(cè))

奔跑吧Linux內(nèi)核:基礎(chǔ)架構(gòu)+調(diào)試與案例分析(套裝2冊(cè))

定 價(jià):¥248.90

作 者: 笨叔 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115007452 出版時(shí)間: 2022-06-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 958 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  9787115549990 奔跑吧Linux內(nèi)核(第2版)卷1:基礎(chǔ)架構(gòu) 139.00 9787115552525 奔跑吧Linux內(nèi)核(第2版)卷2:調(diào)試與案例分析 109.90《奔跑吧Linux內(nèi)核(第2版)卷1:基礎(chǔ)架構(gòu)》 本書(shū)基于Linux 5.0內(nèi)核的源代碼講述Linux內(nèi)核中核心模塊的實(shí)現(xiàn)。本書(shū)共9章,主要內(nèi)容包括處理器架構(gòu)、ARM64在Linux內(nèi)核中的實(shí)現(xiàn)、內(nèi)存管理之預(yù)備知識(shí)、物理內(nèi)存與虛擬內(nèi)存、內(nèi)存管理之高級(jí)主題、內(nèi)存管理之實(shí)戰(zhàn)案例、進(jìn)程管理之基本概念、進(jìn)程管理之調(diào)度和負(fù)載均衡、進(jìn)程管理之調(diào)試與案例分析。 本書(shū)適合Linux系統(tǒng)開(kāi)發(fā)人員、嵌入式系統(tǒng)開(kāi)發(fā)人員及Android開(kāi)發(fā)人員閱讀,也可供計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的師生閱讀。 《奔跑吧Linux內(nèi)核(第2版)卷2:調(diào)試與案例分析》 本書(shū)基于Linux 5.0內(nèi)核的源代碼講述Linux內(nèi)核的調(diào)試技巧和案例。本書(shū)共6章。主要內(nèi)容包括并發(fā)與同步,中斷管理,內(nèi)核調(diào)試和性能優(yōu)化,基于x86_64的宕機(jī)難題解決方案,基于ARM64的宕機(jī)題解決方案,安全漏洞的產(chǎn)生原理與修復(fù)方案等。 本書(shū)適合從事Linux系統(tǒng)開(kāi)發(fā)人員、嵌入式系統(tǒng)開(kāi)發(fā)人員及Android開(kāi)發(fā)人員閱讀,也可供計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的師生閱讀。

作者簡(jiǎn)介

  笨叔,Linux內(nèi)核愛(ài)好者,出版過(guò)《奔跑吧Linux內(nèi)核》《奔跑吧 Linux內(nèi)核 入門(mén)篇》。創(chuàng)建了奔跑吧Linux社區(qū)。

圖書(shū)目錄

《奔跑吧Linux內(nèi)核(第2版)卷1:基礎(chǔ)架構(gòu)》
目  錄

第 1章 處理器架構(gòu) 1

1.1 處理器架構(gòu)介紹 3

1.1.1 精簡(jiǎn)指令集和復(fù)雜指令集 3

1.1.2 大/小端字節(jié)序 3

1.1.3 一條存儲(chǔ)讀寫(xiě)指令的執(zhí)行全過(guò)程 4

1.1.4 內(nèi)存屏障產(chǎn)生的原因 8

1.1.5 高速緩存的工作方式 10

1.1.6 高速緩存的映射方式 11

1.1.7 組相聯(lián)的高速緩存 13

1.1.8 PIPT和VIVT的區(qū)別 14

1.1.9 頁(yè)表的創(chuàng)建和查詢(xún)過(guò)程 17

1.1.10 TLB 21

1.1.11 MESI協(xié)議 21

1.1.12 高速緩存?zhèn)喂蚕怼?6

1.1.13 高速緩存在Linux內(nèi)核中的應(yīng)用 27

1.1.14 ARM的大/小核架構(gòu) 28

1.1.15 高速緩存一致性和一致性?xún)?nèi)存模型 30

1.1.16 高速緩存的回寫(xiě)策略和替換策略 30

1.1.17 NUMA 31

1.1.18 ARM處理器設(shè)計(jì) 32

1.1.19 最新進(jìn)展 33

1.2 ARM64架構(gòu) 34

1.2.1 ARMv8-A架構(gòu) 34

1.2.2 采用ARMv8架構(gòu)的常見(jiàn)處理器內(nèi)核 35

1.2.3 ARMv8架構(gòu)中的基本概念 35

1.2.4 ARMv8處理器執(zhí)行狀態(tài) 36

1.2.5 ARMv8支持的數(shù)據(jù)寬度 36

1.2.6 不對(duì)齊訪問(wèn) 37

1.3 ARMv8寄存器 37

1.3.1 通用寄存器 37

1.3.2 處理器狀態(tài) 38

1.3.3 特殊寄存器 39

1.3.4 系統(tǒng)寄存器 41

1.4 A64指令集 42

1.4.1 常用的算術(shù)和搬移指令 42

1.4.2 乘法和除法指令 43

1.4.3 移位操作指令 45

1.4.4 位操作指令 45

1.4.5 條件操作 47

1.4.6 內(nèi)存加載指令 48

1.4.7 多字節(jié)內(nèi)存加載和存儲(chǔ)指令 50

1.4.8 非特權(quán)訪問(wèn)級(jí)別的加載和存儲(chǔ)指令 50

1.4.9 內(nèi)存屏障指令簡(jiǎn)介 51

1.4.10 獨(dú)占內(nèi)存訪問(wèn)指令 51

1.4.11 跳轉(zhuǎn)與比較指令 52

1.4.12 異常處理指令 53

1.4.13 系統(tǒng)寄存器訪問(wèn)指令 54

1.5 GCC內(nèi)聯(lián)匯編 55

1.6 函數(shù)調(diào)用標(biāo)準(zhǔn)和棧布局 57

1.7 ARM64異常處理 59

1.7.1 異常類(lèi)型 59

1.7.2 同步異常和異步異常 60

1.7.3 異常發(fā)生后的處理 60

第 2章 ARM64在Linux內(nèi)核中的實(shí)現(xiàn) 62

2.1 ARM64內(nèi)存管理 63

2.1.1 頁(yè)表 63

2.1.2 頁(yè)表映射 64

2.1.3 頁(yè)表項(xiàng)描述符 65

2.1.4 Linux內(nèi)核中的頁(yè)表 68

2.1.5 ARM64內(nèi)核內(nèi)存分布 74

2.1.6 案例分析:ARM64的頁(yè)表映射過(guò)程 78

2.2 高速緩存管理 84

2.3 TLB管理 87

2.4 內(nèi)存屬性 90

2.4.1 內(nèi)存屬性 91

2.4.2 高速緩存共享屬性 94

2.5 內(nèi)存屏障 95

2.5.1 內(nèi)存屏障指令 95

2.5.2 加載-獲取屏障原語(yǔ)與存儲(chǔ)-釋放屏障原語(yǔ) 96

2.6 Linux內(nèi)核匯編代碼分析 97

2.6.1 鏈接文件基礎(chǔ)知識(shí) 97

2.6.2 vmlinux.lds.S文件分析 99

2.6.3 啟動(dòng)匯編代碼 102

2.6.4 創(chuàng)建恒等映射和內(nèi)核映像映射 106

2.6.5 __cpu_setup函數(shù)分析 114

2.6.6 __primary_switch函數(shù)分析 117

2.7 關(guān)于頁(yè)表的常見(jiàn)疑問(wèn) 120

2.7.1 關(guān)于下一級(jí)頁(yè)表基地址 121

2.7.2 軟件遍歷頁(yè)表 121

第3章 內(nèi)存管理之預(yù)備知識(shí) 124

3.1 從硬件角度看內(nèi)存管理 126

3.1.1 內(nèi)存管理的“遠(yuǎn)古時(shí)代” 126

3.1.2 分段機(jī)制 127

3.1.3 分頁(yè)機(jī)制 128

3.1.4 虛擬地址到物理地址的轉(zhuǎn)換 128

3.2 從軟件角度看內(nèi)存管理 129

3.2.1 從Linux系統(tǒng)使用者的角度看內(nèi)存管理 129

3.2.2 從Linux應(yīng)用程序開(kāi)發(fā)人員的角度看內(nèi)存管理 130

3.2.3 從內(nèi)存分布的角度看內(nèi)存管理 131

3.2.4 從進(jìn)程的角度看內(nèi)存管理 131

3.2.5 從Linux內(nèi)核的角度看內(nèi)存管理 135

3.3 物理內(nèi)存管理之預(yù)備知識(shí) 136

3.3.1 內(nèi)存架構(gòu)之UMA和NUMA 136

3.3.2 內(nèi)存管理之?dāng)?shù)據(jù)結(jié)構(gòu) 138

3.3.3 內(nèi)存大小 140

3.3.4 物理內(nèi)存映射 141

3.3.5 zone初始化 143

3.3.6 空間劃分 145

3.3.7 物理內(nèi)存初始化 146

第4章 物理內(nèi)存與虛擬內(nèi)存 152

4.1 頁(yè)面分配之快速路徑 153

4.1.1 分配物理頁(yè)面的接口函數(shù) 154

4.1.2 分配掩碼 155

4.1.3 alloc_pages()函數(shù) 158

4.1.4 get_page_from_freelist()函數(shù) 162

4.1.5 zone_watermark_fast()函數(shù) 164

4.1.6 rmqueue()函數(shù) 165

4.1.7 釋放頁(yè)面 167

4.1.8 小結(jié) 170

4.2 slab分配器 170

4.2.1 slab分配器產(chǎn)生的背景 170

4.2.2 創(chuàng)建slab描述符 173

4.2.3 slab分配器的內(nèi)存布局 176

4.2.4 配置slab描述符 178

4.2.5 分配slab對(duì)象 180

4.2.6 釋放slab緩存對(duì)象 183

4.2.7 slab分配器和伙伴系統(tǒng)的接口函數(shù) 185

4.2.8 管理區(qū) 185

4.2.9 kmalloc() 188

4.2.10 小結(jié) 189

4.3 vmalloc() 190

4.4 虛擬內(nèi)存管理之進(jìn)程地址空間 194

4.4.1 進(jìn)程地址空間 194

4.4.2 mm_struct數(shù)據(jù)結(jié)構(gòu) 195

4.4.3 VMA數(shù)據(jù)結(jié)構(gòu) 197

4.4.4 VMA的屬性 199

4.4.5 查找VMA 201

4.4.6 插入VMA 203

4.4.7 合并VMA 206

4.4.8 紅黑樹(shù)例子 207

4.4.9 小結(jié) 209

4.5 malloc() 210

4.5.1 brk系統(tǒng)調(diào)用 210

4.5.2 用戶(hù)態(tài)地址空間劃分 212

4.5.3 __do_sys_brk()函數(shù) 213

4.5.4 do_brk_flags()函數(shù) 213

4.5.5?。適m_populate()函數(shù) 215

4.5.6 get_user_pages()函數(shù) 216

4.5.7 小結(jié) 220

4.6 mmap 223

4.6.1 mmap概述 223

4.6.2 小結(jié) 225

4.7 缺頁(yè)異常處理 227

4.7.1 ARM64缺頁(yè)異常的底層處理流程 228

4.7.2 do_page_fault()函數(shù) 234

4.7.3 handle_mm_fault()函數(shù) 237

4.7.4 匿名頁(yè)面缺頁(yè)中斷 240

4.7.5 系統(tǒng)零頁(yè) 241

4.7.6 文件映射缺頁(yè)中斷 242

4.7.7 寫(xiě)時(shí)復(fù)制 245

4.7.8 ARM64硬件DBM機(jī)制導(dǎo)致的競(jìng)爭(zhēng)問(wèn)題 248

4.7.9 關(guān)于pte_offset_map()安全使用的問(wèn)題 251

4.7.10 關(guān)于寫(xiě)時(shí)復(fù)制的競(jìng)爭(zhēng)問(wèn)題 253

4.7.11 為什么要在切換頁(yè)表項(xiàng)之前刷新TLB 256

4.7.12 缺頁(yè)異常引發(fā)的死鎖 257

4.7.13 小結(jié) 257

第5章 內(nèi)存管理之高級(jí)主題 259

5.1 page 260

5.2 RMAP 272

5.3 頁(yè)面回收 285

5.4 匿名頁(yè)面生命周期 318

5.5 頁(yè)面遷移 321

5.6 內(nèi)存規(guī)整 329

5.7 KSM 339

5.8 頁(yè)面分配之慢速路徑 362

5.9 內(nèi)存碎片化管理 368

第6章 內(nèi)存管理之實(shí)戰(zhàn)案例分析 375

6.1 內(nèi)存管理日志信息和調(diào)試信息 375

6.2 內(nèi)存管理調(diào)優(yōu)參數(shù) 400

6.3 內(nèi)存管理實(shí)戰(zhàn)案例分析 407

第7章 進(jìn)程管理之基本概念 430

7.1 關(guān)于進(jìn)程的基本概念 431

7.2 與進(jìn)程創(chuàng)建和終止相關(guān)的操作系統(tǒng)原語(yǔ) 441

7.3 代碼分析:進(jìn)程的創(chuàng)建和終止 447

7.4 進(jìn)程調(diào)度原語(yǔ) 461

第8章 進(jìn)程管理之調(diào)度與負(fù)載均衡 469

8.1 CFS 470

8.2 負(fù)載計(jì)算 503

8.3 SMP負(fù)載均衡 517

8.4 綠色節(jié)能調(diào)度器 542

8.5 實(shí)時(shí)調(diào)度 574

第9章 進(jìn)程管理之調(diào)試與案例分析 580

9.1 進(jìn)程管理之調(diào)試 580

9.2 綜合案例分析——系統(tǒng)調(diào)度 587

9.3 進(jìn)程管理 589


《奔跑吧Linux內(nèi)核(第2版)卷2:調(diào)試與案例分析》

目  錄
第 1章 并發(fā)與同步 1

1.1 原子操作 3

1.1.3 比較并交換指令 7

1.2 內(nèi)存屏障 11

1.3 經(jīng)典自旋鎖 14

1.4 MCS鎖 20

1.5 排隊(duì)自旋鎖 27

1.6 信號(hào)量 39

1.7 互斥鎖 43

1.8 讀寫(xiě)鎖 52

1.9 讀寫(xiě)信號(hào)量 53

1.10 RCU 64

1.11 案例分析:內(nèi)存管理中的鎖 69

第 2章 中斷管理 81

2.1 中斷控制器 82

2.2 硬件中斷號(hào)和Linux中斷號(hào)的映射 87

2.3 注冊(cè)中斷 98

2.4 ARM64底層中斷處理 105

2.5 高層中斷處理 114

2.6 軟中斷和tasklet 125

2.7 工作隊(duì)列 136

第3章 內(nèi)核調(diào)試與性能優(yōu)化 164

3.1 打造ARM64實(shí)驗(yàn)平臺(tái) 165

3.2 ftrace 181

3.3 內(nèi)存檢測(cè) 196

3.4 死鎖檢測(cè) 204

3.5 內(nèi)核調(diào)試方法 210

3.6 使用perf優(yōu)化性能 217

3.7 SystemTap 222

3.8 eBPF和BCC 224

第4章 基于x86_64解決宕機(jī)難題 229

4.1 Kdump和Crash工具 230

4.2 x86_64架構(gòu)基礎(chǔ)知識(shí) 230

4.3 在CentOS 7.6中安裝和配置Kdump和Crash 233

4.4 crash命令 235

4.5 案例1:一個(gè)簡(jiǎn)單的宕機(jī)案例 244

4.6 案例2:訪問(wèn)被刪除的鏈表 250

4.7 案例3:一個(gè)真實(shí)的驅(qū)動(dòng)崩潰案例 254

4.8 死鎖檢查機(jī)制 259

4.9 案例4:一個(gè)簡(jiǎn)單的死鎖案例 261

4.10 案例5:分析和推導(dǎo)參數(shù)的值變量 263

4.11 案例6:一個(gè)復(fù)雜的宕機(jī)案例 270

第5章 基于ARM64解決宕機(jī)難題 285

5.1 搭建Kdump實(shí)驗(yàn)環(huán)境 285

5.2 案例1:一個(gè)簡(jiǎn)單的宕機(jī)案例 287

5.3 案例2:恢復(fù)函數(shù)調(diào)用棧 288

5.4 案例3:分析和推導(dǎo)參數(shù)的值 291

5.5 案例4:一個(gè)復(fù)雜的宕機(jī)案例 294

第6章 安全漏洞分析 303

6.1 側(cè)信道攻擊 303

6.2 CPU熔斷漏洞分析 306

6.3 CPU“幽靈”漏洞 317

附錄A 使用DS-5調(diào)試ARM64 Linux內(nèi)核 325

附錄B ARM64中的獨(dú)占訪問(wèn)指令 341

附錄C 圖解MESI狀態(tài)轉(zhuǎn)換 345

附錄D 高速緩存與內(nèi)存屏障 350

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)