《庖丁解牛Linux核心分析》是2020年3月人民郵電出版社出版的圖書,作者是孟寧、婁嘉鵬、劉宇棟。
基本介紹
- 中文名:庖丁解牛Linux核心分析
- 作者:孟寧、婁嘉鵬、劉宇棟
- 出版時間:2020年3月
- 出版社:人民郵電出版社
- 頁數:179 頁
- ISBN:9787115491862
- 定價:49 元
- 開本:16 開
- 裝幀:平裝
內容簡介,圖書目錄,
內容簡介
本書從理解計算機硬體的核心工作機制(存儲程式計算機和函式調用堆疊)和用戶態程式如何通過系統調用陷入核心(中斷異常)入手,通過上下兩個方向雙向夾擊的策略,並利用實際可運行程式的反彙編代碼從實踐的角度理解作業系統核心,分析Linux核心原始碼,從系統調用陷入核心、進程調度與進程切換開始,最後返回到用戶態進程。
本書配有豐富的實驗指導材料和練習,適合作為高等院校計算機相關專業的指導用書,也適合Linux作業系統開發人員自學。
圖書目錄
第 1章 計算機工作原理 1
1.1 存儲程式計算機工作模型 1
1.2 x86-32彙編基礎 3
1.2.1 x86-32 CPU的暫存器 4
1.2.2 數據格式 6
1.2.3 定址方式和常用彙編指令 7
1.2.4 彙編代碼範例解析 11
1.3 彙編一個簡單的C語言程式並分析其彙編指令執行過程 13
1.4 單元測試題 26
1.5 實驗 27
第 2章 作業系統是如何工作的 29
2.1 函式調用堆疊 29
2.2 藉助Linux核心部分原始碼模擬存儲程式計算機工作模型及時鐘中斷 32
2.2.1 內嵌彙編 32
2.2.2 虛擬一個x86的CPU硬體平台 34
2.3 在mykernel基礎上構造一個簡單的作業系統核心 36
2.3.1 代碼範例 36
2.3.2 代碼分析 42
2.4 單元測試題 48
2.5 實驗 48
第3章 MenuOS的構造 50
3.1 Linux核心原始碼簡介 50
3.2 構造一個簡單的Linux核心 56
3.3 跟蹤調試Linux核心的啟動過程 60
3.4 單元測試題 65
3.5 實驗 66
第4章 系統調用的三層機制(上) 67
4.1 用戶態、核心態和中斷 67
4.2 系統調用概述 70
4.2.1 作業系統提供的API和系統調用的關係 70
4.2.2 觸發系統調用及參數傳遞方式 71
4.3 使用庫函式API和C代碼中嵌入彙編代碼觸發同一個系統調用 72
4.3.1 使用庫函式API觸發一個系統調用 72
4.3.2 內嵌彙編語法簡介 73
4.3.3 C代碼中嵌入彙編代碼觸發一個系統調用 75
4.3.4 含兩個參數的系統調用範例 76
4.3.5 通用的觸發系統調用的庫函式syscall 78
4.4 單元測試題 79
4.5 實驗 80
第5章 系統調用的三層機制(下) 81
5.1 給MenuOS增加命令 81
5.2 使用gdb跟蹤系統調用核心函式sys_time 83
5.3 系統調用在核心代碼中的處理過程 85
5.3.1 中斷向量0x80和system_call中斷服務程式入口的關係 86
5.3.2 在system_call彙編代碼中的系統調用核心處理函式 87
5.3.3 整體上理解系統調用的核心處理過程 88
5.4 單元測試題 91
5.5 實驗 92
第6章 進程的描述和進程的創建 93
6.1 進程的描述 93
6.2 進程的創建 97
6.2.1 0號進程的初始化 98
6.2.2 記憶體管理相關代碼 99
6.2.3 進程之間的父子、兄弟關係 100
6.2.4 保存進程上下文中CPU相關的一些狀態信息的數據結構 101
6.2.5 進程的創建過程分析 103
6.3 單元測試題 120
第7章 可執行程式工作原理 122
7.1 ELF目標檔案格式 122
7.1.1 ELF概述 122
7.1.2 ELF格式簡介 123
7.1.3 相關操作指令 128
7.2 程式編譯 129
7.2.1 預處理 129
7.2.2 編譯 130
7.2.3 彙編 131
7.2.4 連結 133
7.3 連結與庫 134
7.3.1 符號與符號解析 134
7.3.2 重定位 137
7.3.3 靜態連結與動態連結 139
7.4 程式裝載 143
7.4.1 程式裝載概要 143
7.4.2 fork與execve核心處理過程 148
7.4.3 莊周夢蝶 153
7.4.4 小結 154
7.5 單元測試題 155
7.6 實驗 156
第8章 進程的切換和系統的一般執行過程 158
8.1 進程調度的時機 158
8.1.1 硬中斷與軟中斷 158
8.1.2 進程調度時機 159
8.2 調度策略與算法 161
8.2.1 進程的分類 161
8.2.2 調度策略 162
8.2.3 CFS調度算法 164
8.3 進程上下文切換 165
8.3.1 進程執行環境的切換 165
8.3.2 核心代碼分析 167
8.4 Linux系統的運行過程 172
8.5 Linux系統構架與執行過程概覽 174
8.5.1 Linux作業系統的構架 174
8.5.2 ls命令執行過程即涉及作業系統相關概念 175
8.6 進程調度相關原始碼跟蹤和分析 176
8.6.1 配置運行MenuOS系統 176
8.6.2 配置gdb遠程調試和設定斷點 177
8.6.3 使用gdb跟蹤分析schedule()函式 177
8.7 單元測試題 179