《獨闢蹊徑品核心:Linux核心原始碼導讀》是2009年8月電子工業出版社出版的圖書,作者是李雲華。
基本介紹
- 中文名:獨闢蹊徑品核心:Linux核心原始碼導讀
- 作者:李雲華
- 出版社:電子工業出版社
- 出版時間:2009年08月01日
- 頁數:482 頁
- 開本:16 開
- 裝幀:平裝
- ISBN:9787121085154
內容簡介,目錄,
內容簡介
本書根據最新的2.6.24核心為基礎。在講述方式上,本書注重實例分析,儘量在討論“如何做”的基礎上,深入討論為什麼要這么做,從而實現本書的寫作宗旨:“授人以漁”。在內容安排上,本書包含以下章節x86硬體基礎;基礎知識;Linux核心Makefile分析;Linux核心啟動;記憶體管理;中斷和異常處理;系統調用;信號機制在類UNIX系統中;時鐘機制;進程管理;調度器;檔案系統;常用核心分析方法。.
本書適合初、中級Linux用戶、從事核心相關開發的從業人員,也可以作為各類院校相關專業的教材及Linux培訓班的教材,也可作為Linux核心學習的專業參考書。...
目錄
第1章 x86硬體基礎1
1.1 保護模式1
1.1.1 分頁機制1
1.1.2 分段機制7
1.2 系統門13
1.3 x86的暫存器14
1.4 典型的PC系統結構簡介16
第2章 基礎知識18
2.1 AT&T與Intel彙編語法比較18
2.2 gcc內嵌彙編20
2.3 同步與互斥25
2.3.1 原子操作25
2.3.2 信號量27
2.3.3 自旋鎖29
2.3.4 RCU機制35
2.3.5 percpu變數39
2.4 記憶體屏障41
2.4.1 編譯器引起的記憶體屏障41
2.4.2 快取引起的記憶體屏障44
2.4.3 亂序執行引起的記憶體屏障47
2.5 高級語言的函式調用規範49
第3章 Linux核心Makefile分析52
3.1 Linux核心編譯概述52
3.2 核心編譯過程分析54
3.3 核心連結腳本分析62
第4章 Linux核心啟動65
4.1 BIOS啟動階段65
4.2 實模式setup階段67
4.3 保護模式startup_3277
4.4 核心啟動start_kernel()84
4.5 核心啟動時的參數傳遞90
4.5.1 核心參數處理91
4.5.2 模組參數處理95
第5章 記憶體管理99
5.1 記憶體地址空間99
5.1.1 物理記憶體地址空間99
5.1.2 虛擬地址空間101
5.2 記憶體管理的基本數據結構104
5.2.1 物理記憶體頁面描述符104
5.2.2 記憶體管理區106
5.2.3 非一致性記憶體管理108
5.3 記憶體管理初始化109
5.3.1 bootmemalloctor的初始化109
5.3.2 頁表初始化115
5.3.3 記憶體管理結構的初始化118
5.4 記憶體的分配與回收127
5.4.1 夥伴算法127
5.4.2 SLUB分配器138
第6章 中斷與異常處理152
6.1 中斷的分類152
6.2 中斷的初始化156
6.2.1 異常初始化156
6.2.2 中斷的初始化160
6.2.3 中斷請求服務佇列的初始化167
6.3 中斷與異常處理171
6.3.1 特權轉換與堆疊變化171
6.3.2 中斷處理172
6.3.3 異常處理177
6.4 軟體中斷與延遲函式180
6.4.1 softirq180
6.4.2 tasklet185
6.5 中斷與異常返回187
6.6 中斷優先權回顧191
6.7 關於高級可程式中斷控制器192
6.7.1 APIC初始化193
第7章 信號機制199
7.1 信號機制的管理結構200
7.2 信號傳送204
7.3 信號處理210
第8章 系統調用220
8.1 Libc和系統調用220
第9章 時鐘機制226
9.1 clocksource對象227
9.1.1 clocksource概述227
9.1.2 clocksource初始化228
9.2 tickless機制232
9.2.1 tickless由來232
9.2.2 clockeventdevice對象概述234
9.2.3 clockeventdevice對象的初始化236
9.3 High-ResolutionTimers247
9.3.1 High-ResolutionTimers管理結構247
9.3.2 High-ResolutionTimers初始化252
9.3.3 High-ResolutionTimers操作258
9.4 時鐘中斷處理268
9.4.1 時鐘維護276
9.4.2 進程時間信息統計281
9.5 軟體定時器283
9.5.1 基本管理結構283
9.5.2 初始化284
9.5.3 註冊與過期處理287
第10章 進程管理295
10.1 進程描述符296
10.1.1 進程狀態297
10.1.2 進程標識299
10.1.3 進程的親緣關係300
10.1.4 進程的核心態堆疊301
10.1.5 進程的虛擬記憶體布局302
10.1.6 進程的檔案信息305
10.2 進程的建立306
10.2.1 建立子進程的task_struct對象308
10.2.2 子進程的記憶體區域315
10.2.3 子進程的核心態堆疊323
10.2.4 0號進程的建立325
10.3 進程切換327
10.4 進程的退出331
10.4.1 do_exit函式331
10.4.2 task_struct結構的刪除334
10.4.3 通知父進程335
10.5 do_wait()函式338
10.6 程式的載入344
第11章 調度器351
11.1 早期的調度器351
11.2 CFS調度器的虛擬時鐘353
11.3 CFS調度器的基本管理結構357
11.4 CFS調度器對象359
11.5 CFS調度操作360
11.5.1 update_curr()函式360
11.5.2 scheduler_tick()函式362
11.5.3 put_prev_task_fair()函式364
11.5.4 pick_next_task()函式366
11.5.5 等待和喚醒操作368
11.5.6 nice系統調用373
第12章 檔案系統376
12.1 Ext2的磁碟結構376
12.2 Ext2的記憶體結構385
12.3 虛擬檔案系統的管理結構387
12.3.1 檔案系統對象388
12.3.2 VFS的超級塊389
12.3.3 VFS的inode結構400
12.3.4 VFS的檔案對象406
12.3.5 VFS的目錄對象409
12.3.6 VFS在進程中的檔案結構412
12.4 檔案系統的掛載413
12.5 路徑定位425
12.6 檔案打開與關閉441
12.7 檔案讀寫449
12.7.1 緩衝區管理449
12.7.2 檔案讀寫操作分析456
第13章 常用核心分析方法471
13.1 準確定位同名宏及結構體471
13.2 準確定位同名函式473
13.3 利用linkmap檔案定位全局變數474
13.4 準確定位函式調用線索476
13.5 SystemTap在代碼分析中的使用479