Linux kernel programming: a comprehensive and practical guide to kernel internals, writing kernel mo
| 作者 | Kaiwan N. Billimoria |
|---|---|
| 出版社 | 聯合發行股份有限公司 |
| 商品描述 | 深入Linux Kernel程式設計: kernel內部原理、模組開發與同步機制 (第2版):專為Linuxkernel新手程式設計師與希望深化核心開發能力的工程師所撰寫!是一本兼具系統性與實務 |
| 作者 | Kaiwan N. Billimoria |
|---|---|
| 出版社 | 聯合發行股份有限公司 |
| 商品描述 | 深入Linux Kernel程式設計: kernel內部原理、模組開發與同步機制 (第2版):專為Linuxkernel新手程式設計師與希望深化核心開發能力的工程師所撰寫!是一本兼具系統性與實務 |
內容簡介 專為Linux kernel新手程式設計師與希望深化核心開發能力的工程師所撰寫!是一本兼具系統性與實務導向的程式設計指南。內容循序漸進,從基礎概念出發,引領讀者深入Linux kernel的設計思維與運作核心。 本書以6.1長期支援(LTS,Long-Term Support)的Linux kernel為基礎,該版本具備高度穩定性,並廣泛應用於實務環境中。此外,Civil Infrastructure Project已承諾將6.1超長期支援(SLTS,Super LTS)kernel維護至2033年8月,使本書在未來多年內仍具高度實務與參考價值。 你將從學習如何由原始碼編譯(build)kernel開始,逐步學習如何運用kernel強大的可載入核心模組(LKM,Loadable Kernel Module)架構,撰寫並管理你的第一個kernel模組。在奠定模組開發基礎後,將進一步帶你深入核心內部關鍵主題,包括Linux kernel架構、記憶體管理與CPU(task)排程等重要機制。 最後,本書將聚焦於kernel開發中極為關鍵的——平行性(concurrency),深入說明各種同步與上鎖(locking)技術的設計理念與實務應用,包含mutex、spinlock、atomic refcount運算子、rw-spinlock,以及per-CPU與RCU等lock-free技術,協助你撰寫更安全、穩定且可擴充的kernel程式碼。 閱讀完本書後,你將能以更宏觀且結構化的視角理解Linux kernel與kernel模組的運作方式,並具備實際應用於真實專案與產品中的能力。內容包括: ■ 從原始碼設定並編譯6.1 LTS Linux kernel ■ 為6.x kernel設計高品質、可維護的模組化程式碼(LKM架構) ■ 探索現代Linux kernel架構設計 ■ 掌握kernel內記憶體管理的關鍵細節 ■ 理解並使用各種動態kernel記憶體alloc dealloc API ■ 深入解析kernel內CPU排程機制,包含cgroups v2 ■ 洞悉kernel平行性(concurrency)問題與常見陷阱 ■ 正確運用關鍵的kernel同步原語(synchronization primitives)
作者介紹 Kaiwan長期深耕Linux系統程式設計,技術橫跨Bash腳本、C語言使用者空間程式開發,以及作業系統層級的Linux kernel內部機制開發與除錯,並參與多項商業與開源專案。 他曾為Linux主線核心提交裝置驅動程式,亦在GitHub上發起多個開源專案。目前專注於Linux kernel強化與安全領域。 二十多年來,他持續培訓工程師,教授Linux作業系統原理與安全、穩定程式設計實務,致力於培養具備紮實核心能力的開發者。
產品目錄 前言 chapter 1 Linux 核心程式設計 -快速入門 核心工作區設定 技術要求 chapter 2 從原始碼構建 6.x Linux 核心 -第一部分 2-1 技術要求 2-2 核心建構的準備工作 2-3 從原始碼建構 kernel 的步驟 2-4 步驟1:取得 Linux kernel 原始碼樹 2-5 步驟2:提取 kernel 原始碼樹 2-6 步驟3:配置 Linux kernel 2-7 客製化 kernel 選單、Kconfig,並新增選單項目 chapter 3 從原始碼建置 6.x Linux 核心 -第二部分 3-1 技術要求 3-2 步驟4:編譯 kernel 映像檔和模組 3-3 步驟5:安裝核心模組 3-4 步驟6:產生 initramfs 映像和bootloader 設定 3-5 了解 initramfs 框架 3-6 步驟7:自訂 GRUB 開機載入程式 3-7 驗證新核心的設定 3-8 為 Raspberry Pi 編譯核心 3-9 核心編譯的雜項技巧 chapter 4 編寫第一個核心模組 -第一部分 4-1 技術要求 4-2 了解核心架構 - 第一部分 4-3 探索 LKM 4-4 編寫第一個核心模組 4-5 核心模組的常見操作 4-6 了解核心日誌記錄和 printk 4-7 了解核心模組 Makefile 的基本知識 chapter 5 編寫第一個核心模組 -第二部分 5-1 技術要求 5-2 給你的核心模組「更好的」Makefile 範本 5-3 跨平台編譯核心模組 5-4 蒐集最少的系統資訊 5-5 Kernel 模組的授權 5-6 模擬 kernel 模組的「類似函式庫」功能 5-7 將參數傳遞給 kernel 模組 5-8 kernel 中不允許使用浮點數 5-9 在系統開機時自動載入模組 5-10 kernel 模組和資訊安全 - 概述 5-11 Kernel 開發者的程式碼風格指南 5-12 為 mainline kernel 做出貢獻 chapter 6 Kernel 內部基礎 -行程和執行緒 6-1 技術要求 6-2 了解行程和 interrupt context 6-3 了解行程虛擬位址空間的基礎知識 6-4 組織行程、執行緒及其堆疊 - 使用者空間和 kernel 空間 6-5 了解和存取 kernel task 結構 6-6 透過「current」使用 task 結構 6-7 遍歷 kernel 的 task 串列 chapter 7 記憶體管理內部 -要素 7-1 技術要求 7-2 了解 VM 拆分 7-3 檢查行程 VAS 7-4 檢查 kernel VAS 7-5 隨機化記憶體布局 - KASLR 7-6 了解實體記憶體組成 chapter 8 模組作者的核心記憶體分配 -第一部分 8-1 技術要求 8-2 kernel 記憶體配置器簡介 8-3 了解和使用 kernel 分頁配置器(或 BSA) 8-4 了解和使用 Kernel Slab 配置器 8-5 kmalloc API 的大小限制 8-6 Slab 配置器 - 一些補充細節 8-7 使用 slab 配置器的注意事項 chapter 9 模組作者的核心記憶體分配 -第二部分 9-1 技術要求 9-2 建立自訂 slab 快取 9-3 快速說明 kernel 記憶體問題除錯 9-4 了解與使用 kernel 的 vmalloc() API 9-5 Kernel 中的記憶體配置 - 何時使用哪個 API? 9-6 記憶體回收:kernel 的重要家務工作 9-7 生存之道:OOM 終結者 chapter 10 CPU 排程器 -第一部分 10-1 技術要求 10-2 學習 CPU 排程內部機制 - 第一部分:基礎背景 10-3 視覺化流程(Visualizing the flow) 10-4 學習 CPU 排程內部機制 - 第二部分 10-5 查詢指定執行緒的排程政策與優先權 10-6 學習 CPU 排程內部機制 - 第三部分 chapter 11 CPU 排程器 -第二部分 11-1 技術要求 11-2 理解、查詢與設定 CPU 親和性遮罩(affinity mask) 11-3 查詢與設定執行緒的排程政策與優先權 11-4 cgroups 簡介 11-5 讓 Linux 成為 RTOS:簡介 11-6 與排程相關的其他主題 chapter 12 核心同步 -第一部分 12-1 技術要求 12-2 臨界區間、互斥執行與原子性 12-3 Linux kernel 中的平行性問題 12-4 互斥鎖或自旋鎖?何時使用何種鎖 12-5 使用互斥鎖 12-6 使用 spinlock 12-7 上鎖與中斷 12-8 上鎖:常見錯誤和指導原則 12-9 解答 chapter 13 核心同步 -第二部分 13-1 技術要求 13-2 使用 atomic_t 與 refcount_t 介面 13-3 使用 RMW atomic 運算子 13-4 使用讀寫者自旋鎖 13-5 了解 CPU 快取基礎、快取效應和假共享 13-6 使用 per-CPU 和 RCU 達成 Lock-free 程式設計 13-7 Kernel 內的 Lock 除錯 13-8 記憶體屏障簡介 索引
| 書名 / | 深入Linux Kernel程式設計: kernel內部原理、模組開發與同步機制 (第2版) |
|---|---|
| 作者 / | Kaiwan N. Billimoria |
| 簡介 / | 深入Linux Kernel程式設計: kernel內部原理、模組開發與同步機制 (第2版):專為Linuxkernel新手程式設計師與希望深化核心開發能力的工程師所撰寫!是一本兼具系統性與實務 |
| 出版社 / | 聯合發行股份有限公司 |
| ISBN13 / | 9786264252904 |
| ISBN10 / | |
| EAN / | 9786264252904 |
| 誠品26碼 / | 2683127319002 |
| 頁數 / | 912 |
| 裝訂 / | P:平裝 |
| 語言 / | 1:中文 繁體 |
| 尺寸 / | 17X23X3.83CM |
| 級別 / | N:無 |
最佳賣點 : 專為Linux kernel新手程式設計師與希望深化核心開發能力的工程師所撰寫!是一本兼具系統性與實務導向的程式設計指南。內容循序漸進,從基礎概念出發,引領讀者深入Linux kernel的設計思維與運作核心。