-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

奔跑吧Linux內核(第2版)卷2:調試與案例分析

( 簡體 字)
作者:笨叔類別:1. -> 作業系統 -> Linux
譯者:
出版社:人民郵電出版社奔跑吧Linux內核(第2版)卷2:調試與案例分析 3dWoo書號: 54184
詢問書籍請說出此書號!

有庫存
NT售價: 550

出版日:3/1/2021
頁數:360
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787115552525
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書基于Linux 5.0內核的源代碼講述Linux內核的調試技巧和案例。本書共6章。主要內容包括并發與同步,中斷管理,內核調試和性能優化,基于x86_64的宕機難題解決方案,基于ARM64的宕機題解決方案,安全漏洞的產生原理與修復方案等。
本書適合從事Linux系統開發人員、嵌入式系統開發人員及Android開發人員閱讀,也可供計算機相關專業的師生閱讀。
目錄:

第 1章 并發與同步 1
1.1 原子操作 3
1.1.1 原子操作 3
1.1.2 atomic_add()函數分析 6
1.1.3 比較并交換指令 7
1.2 內存屏障 11
1.2.1 經典內存屏障接口函數 11
1.2.2 內存屏障擴展接口函數 13
1.3 經典自旋鎖 14
1.3.1 自旋鎖的實現 15
1.3.2 自旋鎖的變體 18
1.3.3 spin_lock()和raw_spin_lock()
函數 19
1.4 MCS鎖 20
1.4.1 快速申請通道 21
1.4.2 中速申請通道 22
1.4.3 慢速申請通道 23
1.4.4 釋放鎖 26
1.5 排隊自旋鎖 27
1.5.1 快速申請通道 29
1.5.2 中速申請通道 30
1.5.3 慢速申請通道 32
1.5.4 釋放鎖 36
1.5.5 案例分析:為什么這里
pending域要清零 36
1.5.6 小結 38
1.6 信號量 39
1.6.1 信號量簡介 39
1.6.2 小結 43
1.7 互斥鎖 43
1.7.1 mutex數據結構 43
1.7.2 互斥鎖的快速通道 44
1.7.3 互斥鎖的慢速通道 46
1.7.4 樂觀自旋等待機制 47
1.7.5 mutex_unlock()函數分析 50
1.7.6 案例分析 51
1.7.7 小結 52
1.8 讀寫鎖 52
1.9 讀寫信號量 53
1.9.1 rw_semaphore數據結構 53
1.9.2 申請讀者類型信號量 55
1.9.3 釋放讀者類型信號量 58
1.9.4 申請寫者類型信號量 58
1.9.5 釋放寫者類型信號量 64
1.9.6 小結 64
1.10 RCU 64
1.10.1 關于RCU的一個簡單例子 65
1.10.2 經典RCU和Tree RCU 68
1.11 案例分析:內存管理中的鎖 69
1.11.1 mm->mmap_sem 70
1.11.2 mm->page_table_lock 71
1.11.3 PG_Locked 72
1.11.4 anon_vma->rwsem 72
1.11.5 zone->lru_lock 74
1.11.6 RCU 75
1.11.7 RCU停滯檢測 78
第 2章 中斷管理 81
2.1 中斷控制器 82
2.1.1 中斷狀態和中斷觸發方式 82
2.1.2 ARM GIC-V2中斷控制器 83
2.1.3 關于ARM Vexpress V2P
開發板的例子 85
2.1.4 關于QEMU虛擬機平臺的
例子 86
2.2 硬件中斷號和Linux中斷號的映射 87
2.3 注冊中斷 98
2.4 ARM64底層中斷處理 105
2.4.1 異常向量表 105
2.4.2 IRQ處理 107
2.4.3 棧框 108
2.4.4 保存中斷上下文 110
2.4.5 恢復中斷上下文 112
2.5 高層中斷處理 114
2.5.1 匯編跳轉 114
2.5.2 handle_arch_irq處理 115
2.5.3 小結 123
2.6 軟中斷和tasklet 125
2.6.1 軟中斷 125
2.6.2 tasklet 129
2.6.3 local_bh_disable()和
local_bh_enable()函數分析 134
2.6.4 小結 135
2.7 工作隊列 136
2.7.1 工作隊列的相關數據結構 137
2.7.2 工作隊列初始化 141
2.7.3 創建工作隊列 143
2.7.4 添加和調度一個work 149
2.7.5 處理一個work 153
2.7.6 取消一個work 157
2.7.7 和調度器的交互 159
2.7.8 小結 161
第3章 內核調試與性能優化 164
3.1 打造ARM64實驗平臺 165
3.1.1 使用O0優化等級編譯
內核 165
3.1.2 QEMU虛擬機+Debian
實驗平臺 166
3.1.3 單步調試ARM64 Linux
內核 171
3.1.4 以圖形化方式單步調試
內核 172
3.1.5 單步調試head.S文件 176
3.2 ftrace 181
3.2.1 irqs跟蹤器 182
3.2.2 function跟蹤器 184
3.2.3 動態ftrace 185
3.2.4 事件跟蹤 186
3.2.5 添加跟蹤點 188
3.2.6 trace-cmd和kernelshark 191
3.2.7 跟蹤標記 192
3.2.8 小結 195
3.3 內存檢測 196
3.3.1 slub_debug 197
3.3.2 KASAN內存檢測 202
3.4 死鎖檢測 204
3.5 內核調試方法 210
3.5.1 printk 210
3.5.2 動態輸出 212
3.5.3 oops分析 213
3.5.4 BUG_ON()和WARN_ON()宏
分析 217
3.6 使用perf優化性能 217
3.6.1 安裝perf工具 218
3.6.2 perf list命令 218
3.6.3 perf record/report命令 219
3.6.4 perf stat命令 220
3.6.5 perf top命令 221
3.7 SystemTap 222
3.8 eBPF和BCC 224
3.8.1 BCC工具集 224
3.8.2 編寫BCC腳本 225
第4章 基于x86_64解決宕機難題 229
4.1 Kdump和Crash工具 230
4.2 x86_64架構基礎知識 230
4.2.1 通用寄存器 230
4.2.2 函數參數調用規則 231
4.2.3 棧的結構 232
4.2.4 尋址方式 232
4.3 在CentOS 7.6中安裝和配置Kdump
和Crash 233
4.4 crash命令 235
4.5 案例1:一個簡單的宕機案例 244
4.6 案例2:訪問被刪除的鏈表 250
4.7 案例3:一個真實的驅動崩潰案例 254
4.8 死鎖檢查機制 259
4.9 案例4:一個簡單的死鎖案例 261
4.10 案例5:分析和推導參數的值
變量 263
4.11 案例6:一個復雜的宕機案例 270
4.11.1 問題描述 271
4.11.2 分析ps進程 276
4.11.3 分析test進程 281
4.11.4 計算一個進程被阻塞了多長
時間 283
第5章 基于ARM64解決宕機難題 285
5.1 搭建Kdump實驗環境 285
5.2 案例1:一個簡單的宕機案例 287
5.3 案例2:恢復函數調用棧 288
5.4 案例3:分析和推導參數的值 291
5.5 案例4:一個復雜的宕機案例 294
5.5.1 分析ps進程 296
5.5.2 分析test進程 299
第6章 安全漏洞分析 303
6.1 側信道攻擊 303
6.2 CPU熔斷漏洞分析 306
6.2.1 亂序執行、異常處理和地址
空間 306
6.2.2 修復方案:KPTI技術 307
6.3 CPU“幽靈”漏洞 317
6.3.1 分支預測 317
6.3.2 攻擊原理 320
6.3.3 修復方案 321
附錄A 使用DS-5調試ARM64 Linux
內核 325
附錄B ARM64中的獨占訪問指令 341
附錄C 圖解MESI狀態轉換 345
附錄D 高速緩存與內存屏障 350
序: