Linux大師才讀核心,5.0最新版,適用X86及ARM64,洗禮一次,位列神人之境!
會操作Linux不算什麼,看懂核心,並針對核心進行深入的研究,解決維護運行時所出現的難題,並且在了解核心後,針對整個系統進最佳化,這才是當代Linux大師該有的高度。
本書特色
■深入說明Linux核心模組
本書主要講解Linux核心中核心模組的實現,因此以Linux 5.0核心為研究對象,主要針對ARM64架構講解,也提及了x86_64架構方面的部分內容。
■未來的趨勢Linux核心
近幾年,作業系統和開放原始碼軟體的研究氣氛越來越濃厚,大公司開始以Linux核心打造自己的作業系統,包括手機作業系統、伺服器作業系統、IoT(物聯網)嵌入式系統等。另外,很多公司開始探索使用ARM64架構來建構自己的硬體生態系統,包括手機晶片、伺服器晶片等。
■實戰出擊,溫故知新
本書以實戰案例出發點,對讀者提升實戰能力有非常大的幫助。另外也新增了解決當機難題的實戰案例。在實際專案中,我們常常會遇到系統當機(如手機當機、伺服器當機等),因此本書複習了多個當機案例,最精彩的就是利用Kdump+Crash工具來詳細分析如何解決當機難題,相當深入核心內部了。
作者簡介:
笨叔
Linux核心愛好者,出版過多本Linux書籍,如<練核心從裡強到外:全面了解Linux基礎架構>。建立了「奔跑吧Linux社區」,為廣大Linux愛好者佈道。
作者序
2019 年3 月3 日,Linux 核心創始人Linus Torvalds 在社區正式宣佈了Linux 5.0 核心的發佈。Linus Torvalds 在郵寄清單裡提到Linux 5.0 並不是一個大幅修改和具有很多新特性的版本。然而,因為Linux 4.20 核心的次版本編號太大了,所以才發佈了Linux 5.x 核心。但是Linux 核心的開發速度並沒有因此而變慢,依然每隔兩個多月會發佈一個新版本,新的版本支援更多的硬體和特性。從Linux 4.0 核心到Linux 5.0 核心經歷了20個版本,Linux 5.0 核心中新增了很多特性並且很多核心的實現已經發生了很大的變化。
最近兩年,作業系統和開放原始碼軟體的研究氣氛越來越濃厚,很多大公司開始基於Linux 核心打造自己的作業系統,包括手機作業系統、伺服器作業系統、IoT(物聯網)嵌入式系統等。另外,很多公司開始探索使用ARM64 架構來建構自己的硬體生態系統,包括手機晶片、伺服器晶片等。
✤ 本書特色
本書特色如下。
✓基於 Linux 5.0 和 ARM64/x86_64 架構。
完全基於Linux 5.0 核心來講解。Linux 5.0 核心中,不少重要模組(如綠色排程器、迴旋栓鎖等)的實現相對於Linux 4.0 已經發生了天翻地覆的變化。同時,Linux 5.0 核心中修復了Linux 4.0 核心中的很多故障,比如KSM 導致的虛擬機器當機故障等。由於ARM64 架構和x86_64 架構是目前主流的處理器架構,因此本書主要基於ARM64/x86_64 架構來講解Linux 5.0 核心的實現。很多核心模組的實現與架構的相關性很低,因此本書也適合使用其他架構的讀者閱讀。在目前伺服器領域,大部分廠商依然使用x86_64 架構加上Red Hat 或UbuntuLinux 企業發行版本的方案,第4 章會介紹x86_64 架構伺服器的當機修復案例。
✓實戰案例分析。
本書充滿了實戰案例,舉例來說,在記憶體管理方面新增了4 個實戰案例,這些案例都是從實際專案中抽出來的,對讀者提升實戰能力有非常大的幫助。另外也新增了解決當機難題的實戰案例。在實際專案中,我們常常會遇到系統當機(如手機當機、伺服器當機等),因此本書複習了多個當機案例,利用Kdump+Crash 工具來詳細分析如何解決當機難題。考慮到部分讀者使用ARM64 處理器做產品開發,部分讀者在x86_64 架構的伺服器上做運行維護和性能最佳化等工作,因此本書分別介紹了針對這兩個架構的處理器如何快速解決當機問題。2019 年出現的CPU 熔斷和CPU「幽靈」漏洞牽動了全球開發人員的心,了解這兩個漏洞對讀者熟悉電腦架構和Linux 核心的相關實現非常有幫助,因此第6 章會詳細分析這兩個漏洞的攻擊原理和Linux 核心修復方案。
✓核心偵錯和最佳化技巧。
本書函蓋了很多核心偵錯和最佳化技巧。Linux 核心透過proc 和sysfs提供了很多有用的記錄檔資訊。在記憶體管理、最佳化過程中,可以透過核心提供的記錄檔資訊(如meminfo、zone 等)快速了解和分析系統記憶體並進行核心偵錯與最佳化。第3 章裡新增了性能最佳化的內容,如使用perf 工具以及eBPF/BCC 來進行性能分析等。
✓充滿大量插圖和表格。
為了分析Linux 核心的原理,本書充滿了很多插圖和表格。
✓ARM64 架構方面的內容。
詳細介紹了ARM64 架構,這部分內容包括ARM64 指令集、ARM64暫存器、頁表、記憶體管理、TLB、記憶體屏障等。
✤ 本書精華內容
精華內容如下。
✓perf、eBPF、BCC 工具,詳見第 3 章。
✓使用Kdump+Crash來解決x86_64伺服器當機難題的方法,詳見第4章。
✓使用 Kdump+Crash 來解決 ARM 當機難題的方法,詳見第 5 章。
✓CPU 熔斷和 CPU「幽靈」漏洞分析,詳見第 6 章。
✤ 本書主要內容
本書主要介紹Linux 核心中的併發和同步、中斷管理、核心偵錯與性能最佳化、當機難題的解決方案以及安全性漏洞的攻擊原理和修復方案等內容。本書的側重點是實踐以及案例分析。
本書共6 章。每一章的主要內容如下。
第1 章介紹併發與同步,包括原子操作、記憶體屏障、經典迴旋栓鎖、MCS鎖、排隊迴旋栓鎖、號誌、互斥鎖、讀寫入鎖、讀寫訊號量、RCU 等。
第2 章介紹中斷管理,包括中斷控制器、硬體中斷號和Linux 中斷號的映射、註冊中斷、ARM64 底層中斷處理、ARM64 高層中斷處理、軟體中斷、tasklet、工作佇列等。
第3 章介紹核心偵錯與性能最佳化,包括ARM64 實驗平台的打造、ftrace工具、記憶體檢測、鎖死檢測、核心偵錯方法、perf 工具、SystemTap 工具、eBPF 與BCC 等內容。
第4 章說明Kdump 工具、Crash 工具、crash 命令、鎖死檢查機制等,並展示6 個基於x86-64 的當機案例。
第5 章介紹Kdump 實驗環境的架設,並展示4 個基於ARM64 的當機案例。
第6 章分析安全性漏洞,包括側通道攻擊的原理、CPU 熔斷漏洞、CPU「幽靈」漏洞的攻擊原理和修復方案等內容。
由於作者知識水準有限,書中難免存在紕漏,敬請各位讀者批評指正。作者的電子郵件是runninglinuxkernel@126.com。
笨叔
2019 年3 月3 日,Linux 核心創始人Linus Torvalds 在社區正式宣佈了Linux 5.0 核心的發佈。Linus Torvalds 在郵寄清單裡提到Linux 5.0 並不是一個大幅修改和具有很多新特性的版本。然而,因為Linux 4.20 核心的次版本編號太大了,所以才發佈了Linux 5.x 核心。但是Linux 核心的開發速度並沒有因此而變慢,依然每隔兩個多月會發佈一個新版本,新的版本支援更多的硬體和特性。從Linux 4.0 核心到Linux 5.0 核心經歷了20個版本,Linux 5.0 核心中新增了很多特性並且很多核心的實現已經發生了很大的變化。
最近兩年,作業系統和開放原始碼...
目錄
01 併發與同步
1.1 原子操作
1.2 記憶體屏障
1.3 經典迴旋栓鎖
1.4 MCS 鎖
1.5 排隊迴旋栓鎖
1.6 號誌
1.7 互斥鎖
1.8 讀寫鎖
1.9 讀寫訊號量
1.10 RCU
1.11 案例分析:記憶體管理中的鎖
02 中斷管理
2.1 中斷控制器
2.2 硬體中斷號和Linux 中斷號的映射
2.3 註冊中斷
2.4 ARM64 底層中斷處理
2.5 ARM64 高層中斷處理
2.6 軟體中斷和tasklet
2.7 工作佇列
03 核心偵錯與性能最佳化
3.1 打造ARM64 實驗平台
3.2 ftrace
3.3 記憶體檢測
3.4 鎖死檢測
3.5 核心偵錯方法
3.6 使用perf 最佳化性能
3.7 SystemTap
3.8 eBPF 和BCC
04 基於x86_64 解決當機難題
4.1 Kdump 和Crash 工具
4.2 x86_64 架構基礎知識
4.3 在CentOS 7.6 中安裝和設定Kdump 和Crash
4.4 crash 命令
4.5 案例1:一個簡單的當機案例
4.6 案例2:存取被刪除的鏈結串列
4.7 案例3:一個真實的驅動崩潰案例
4.8 鎖死檢查機制
4.9 案例4:一個簡單的鎖死案例
4.10 案例5:分析和推導參數的值
4.11 案例6:一個複雜的當機案例
4.12 關於Crash 工具的偵錯技巧整理
05 基於ARM64 解決當機難題
5.1 架設Kdump 實驗環境
5.2 案例1:一個簡單的當機案例
5.3 案例2:恢復函數呼叫堆疊
5.4 案例3:分析和推導參數的值
5.5 案例4:一個複雜的當機案例
06 安全性漏洞分析
6.1 側通道攻擊
6.2 CPU 熔斷漏洞分析
6.3 CPU「幽靈」漏洞
A 使用DS-5 偵錯
ARM64 Linux 核心
A.1 DS-5 社區版下載和安裝
A.2 使用DS-5 偵錯核心的優勢
A.3 FVP 模擬器使用
A.4 單步偵錯核心
B ARM64 中的獨佔存取指令
C 圖解MESI 狀態轉換
C.1 初始化狀態為I
C.2 初始化狀態為M
C.3 初始化狀態為S
C.4 初始化狀態為E
D 快取記憶體與記憶體屏障
D.1 儲存緩衝區與寫入記憶體屏障
D.2 無效佇列與讀取記憶體屏障
D.3 記憶體屏障指令複習
D.4 ARM64 的記憶體屏障指令的區別
01 併發與同步
1.1 原子操作
1.2 記憶體屏障
1.3 經典迴旋栓鎖
1.4 MCS 鎖
1.5 排隊迴旋栓鎖
1.6 號誌
1.7 互斥鎖
1.8 讀寫鎖
1.9 讀寫訊號量
1.10 RCU
1.11 案例分析:記憶體管理中的鎖
02 中斷管理
2.1 中斷控制器
2.2 硬體中斷號和Linux 中斷號的映射
2.3 註冊中斷
2.4 ARM64 底層中斷處理
2.5 ARM64 高層中斷處理
2.6 軟體中斷和tasklet
2.7 工作佇列
03 核心偵錯與性能最佳化
3.1 打造ARM64 實驗平台
3.2 ftrace
3.3 記憶體檢測
3.4 鎖死檢測
3.5 核心偵錯方法
3.6 使用perf 最佳化性能
3.7 SystemT...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。