深入linux內(nèi)核架構(gòu)是一本專業(yè)的linux內(nèi)核學(xué)習(xí)指導(dǎo)書,由德國資深Linux專家莫爾勒編著。本書結(jié)合了linux內(nèi)核版本2.6.24源代碼中關(guān)鍵的部分,深入討論Lirnux內(nèi)核的概念、結(jié)構(gòu)和實現(xiàn)。具體包括進(jìn)程管理和調(diào)度、虛擬內(nèi)存、進(jìn)程間通信、設(shè)備驅(qū)動程序、虛擬文件系統(tǒng)、網(wǎng)絡(luò)、時間管理、數(shù)據(jù)同步等,并引導(dǎo)讀者閱讀內(nèi)核源代碼,熟悉Lirnux妍有的內(nèi)在工作機理,充分展現(xiàn)Linux系統(tǒng)的魅力,歡迎免費下載閱讀。
基本介紹
《深入linux內(nèi)核架構(gòu)》討論了Linux內(nèi)核的概念、結(jié)構(gòu)和實現(xiàn)。主要內(nèi)容包括多任務(wù)、調(diào)度和進(jìn)程管理,物理內(nèi)存的管理以及內(nèi)核與相關(guān)硬件的交互,用戶空間的進(jìn)程如何訪問虛擬內(nèi)存,如何編寫設(shè)備驅(qū)動程序,模塊機制以及虛擬文件系統(tǒng),Ext文件系統(tǒng)屬性和訪問控制表的實現(xiàn)方式,內(nèi)核中網(wǎng)絡(luò)的實現(xiàn),系統(tǒng)調(diào)用的實現(xiàn)方式,內(nèi)核對時間相關(guān)功能的處理,頁面回收和頁交換的相關(guān)機制以及審計的實現(xiàn)等。此外,本書還借助內(nèi)核源代碼中關(guān)鍵的部分進(jìn)行講解,幫助讀者掌握重要的知識點,從而在運用中充分展現(xiàn)Linux系統(tǒng)的魅力。非常適合Linux系統(tǒng)編程人員、系統(tǒng)管理者以及Linux愛好者學(xué)習(xí)使用。
內(nèi)容概述
本書討論了Linux內(nèi)核的概念、結(jié)構(gòu)和實現(xiàn)。各章分別介紹了下述主題
第1章概述Linux內(nèi)核,講述了內(nèi)核的總體圖景,后續(xù)章節(jié)則根據(jù)總體結(jié)構(gòu)對內(nèi)核進(jìn)行更詳細(xì)的研究。
第2章討論了多任務(wù)、調(diào)度和進(jìn)程管理的基本知識,并分析了這些基本技術(shù)和概念抽象的實現(xiàn)方式。
第3章討論了如何管理物理內(nèi)存。本章既討論了內(nèi)核與相關(guān)硬件的交互,也討論了內(nèi)核內(nèi)部通過伙伴系統(tǒng)和slab分配器來分配內(nèi)存的方式。
第4章繼續(xù)對內(nèi)存進(jìn)行討論,講解了用戶空間的進(jìn)程如何訪問虛擬內(nèi)存,以及在內(nèi)核層面實現(xiàn)虛擬內(nèi)存視圖所需要的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和相關(guān)機制。
第5章介紹了保證內(nèi)核能夠在多處理器系統(tǒng)上正確運作所需的機制。此外,本章還介紹了進(jìn)程如何相互通信。
第6章引導(dǎo)讀者理解如何編寫設(shè)備驅(qū)動程序,使內(nèi)核支持新的硬件。
第7章闡述了模塊機制,該機制能夠向內(nèi)核動態(tài)添加新的功能。
第8章討論了虛擬文件系統(tǒng),這是內(nèi)核中一個一般的間接層,能夠支持各種各樣的不同文件系統(tǒng),包括物理文件系統(tǒng)和虛擬文件系統(tǒng)。
第9章講解了Ext文件系統(tǒng)族,包括Ext2和Ext3文件系統(tǒng),這是很多Linux系統(tǒng)安裝的標(biāo)準(zhǔn)選項。?第10章繼續(xù)討論文件系統(tǒng),包括procfs和sysfs。這兩個文件系統(tǒng)并非用來存儲信息,而是向用戶層提供關(guān)于內(nèi)核的元信息。此外,本章闡述了一些減輕編寫文件系統(tǒng)負(fù)擔(dān)的方法。
第11章給出了Ext文件系統(tǒng)屬性和訪問控制表的實現(xiàn)方式,這兩者有助于提高系統(tǒng)的安全性。
第12章討論內(nèi)核中網(wǎng)絡(luò)的實現(xiàn),內(nèi)容集中于IPv4、TCP、UDP和netfilter。
第13章介紹了系統(tǒng)調(diào)用的實現(xiàn)方式,系統(tǒng)調(diào)用是從用戶層請求內(nèi)核服務(wù)的標(biāo)準(zhǔn)機制。
第14章對中斷觸發(fā)內(nèi)核活動的方式進(jìn)行了分析,并介紹了內(nèi)核中將工作延遲至后續(xù)時間點執(zhí)行的機制。
第15章說明了內(nèi)核對時間相關(guān)功能的處理,包括了高低兩種分辨率的情形。
第16章討論了借助于頁緩存和塊緩存來加速內(nèi)核操作。
第17章討論了如何對內(nèi)存中緩存的數(shù)據(jù)與持久存儲設(shè)備上的數(shù)據(jù)源進(jìn)行同步。
第18章介紹了頁面回收和頁交換的相關(guān)機制。
第19章介紹了審計的實現(xiàn),審計負(fù)責(zé)詳細(xì)記錄內(nèi)核的活動。
附錄A討論了內(nèi)核所支持的各種計算機體系結(jié)構(gòu)的特點。
附錄B簡述了有效使用內(nèi)核源代碼的各種工具和方法。
附錄C提供了關(guān)于C語言的一些技術(shù)札記,并討論了GNU C編譯器的結(jié)構(gòu)。
附錄D給出了內(nèi)核的啟動過程。
附錄E介紹了ELF二進(jìn)制格式。
附錄F討論了內(nèi)核開發(fā)的許多社會性的方面,以及Linux內(nèi)核社區(qū)。
深入linux內(nèi)核架構(gòu)節(jié)目錄
第1章 簡介和概述1
1.1 內(nèi)核的任務(wù)2
1.2 實現(xiàn)策略2
1.3 內(nèi)核的組成部分3
1.3.1 進(jìn)程、進(jìn)程切換、調(diào)度3
1.3.2 UNIX進(jìn)程4
1.3.3 地址空間與特權(quán)級別6
1.3.4 頁表9
1.3.5 物理內(nèi)存的分配11
1.3.6 計時13
1.3.7 系統(tǒng)調(diào)用13
1.3.8 設(shè)備驅(qū)動程序、塊設(shè)備和字符設(shè)備14
1.3.9 網(wǎng)絡(luò)14
1.3.10 文件系統(tǒng)14
1.3.11 模塊和熱插拔15
1.3.12 緩存16
1.3.13 鏈表處理16
1.3.14 對象管理和引用計數(shù)17
1.3.15 數(shù)據(jù)類型20
1.3.16 本書的局限性22
1.4 為什么內(nèi)核是特別的23
1.5 行文注記23
1.6 小結(jié)27
第2章 進(jìn)程管理和調(diào)度28
2.1 進(jìn)程優(yōu)先級28
2.2 進(jìn)程生命周期30
2.3 進(jìn)程表示32
2.3.1 進(jìn)程類型37
2.3.2 命名空間37
2.3.3 進(jìn)程ID號43
2.3.4 進(jìn)程關(guān)系49
2.4 進(jìn)程管理相關(guān)的系統(tǒng)調(diào)用50
2.4.1 進(jìn)程復(fù)制50
2.4.2 內(nèi)核線程62
2.4.3 啟動新程序63
2.4.4 退出進(jìn)程66
2.5 調(diào)度器的實現(xiàn)67
2.5.1 概觀67
2.5.2 數(shù)據(jù)結(jié)構(gòu)69
2.5.3 處理優(yōu)先級74
2.5.4 核心調(diào)度器79
2.6 完全公平調(diào)度類84
2.6.1 數(shù)據(jù)結(jié)構(gòu)85
2.6.2 CFS操作85
2.6.3 隊列操作89
2.6.4 選擇下一個進(jìn)程91
2.6.5 處理周期性調(diào)度器92
2.6.6 喚醒搶占93
2.6.7 處理新進(jìn)程93
2.7 實時調(diào)度類94
2.7.1 性質(zhì)94
2.7.2 數(shù)據(jù)結(jié)構(gòu)95
2.7.3 調(diào)度器操作96
2.8 調(diào)度器增強97
2.8.1 SMP調(diào)度97
2.8.2 調(diào)度域和控制組101
2.8.3 內(nèi)核搶占和低延遲相關(guān)工作102
2.9 小結(jié)106
第3章 內(nèi)存管理107
3.1 概述107
3.2 (N)UMA模型中的內(nèi)存組織109
3.2.1 概述109
3.2.2 數(shù)據(jù)結(jié)構(gòu)111
3.3 頁表123
3.3.1 數(shù)據(jù)結(jié)構(gòu)124
3.3.2 頁表項的創(chuàng)建和操作129
3.4 初始化內(nèi)存管理129
3.4.1 建立數(shù)據(jù)結(jié)構(gòu)130
3.4.2 特定于體系結(jié)構(gòu)的設(shè)置135
3.4.3 啟動過程期間的內(nèi)存管理153
3.5 物理內(nèi)存的管理159
3.5.1 伙伴系統(tǒng)的結(jié)構(gòu)159
3.5.2 避免碎片161
3.5.3 初始化內(nèi)存域和結(jié)點數(shù)據(jù)結(jié)構(gòu)167
3.5.4 分配器API172
3.5.5 分配頁177
3.5.6 釋放頁192
3.5.7 內(nèi)核中不連續(xù)頁的分配195
3.5.8 內(nèi)核映射201
3.6 slab分配器205
3.6.1 備選分配器206
3.6.2 內(nèi)核中的內(nèi)存管理207
3.6.3 slab分配的原理209
3.6.4 實現(xiàn)212
3.6.5 通用緩存226
3.7 處理器高速緩存和TLB控制228
3.8 小結(jié)230
第4章 進(jìn)程虛擬內(nèi)存231
4.1 簡介231
4.2 進(jìn)程虛擬地址空間231
4.2.1 進(jìn)程地址空間的布局232
4.2.2 建立布局234
4.3 內(nèi)存映射的原理237
4.4 數(shù)據(jù)結(jié)構(gòu)238
4.4.1 樹和鏈表238
4.4.2 虛擬內(nèi)存區(qū)域的表示239
4.4.3 優(yōu)先查找樹241
4.5 對區(qū)域的操作244
4.5.1 將虛擬地址關(guān)聯(lián)到區(qū)域245
4.5.2 區(qū)域合并246
4.5.3 插入?yún)^(qū)域247
4.5.4 創(chuàng)建區(qū)域248
4.6 地址空間250
4.7 內(nèi)存映射251
4.7.1 創(chuàng)建映射251
4.7.2 刪除映射253
4.7.3 非線性映射254
4.8 反向映射257
4.8.1 數(shù)據(jù)結(jié)構(gòu)258
4.8.2 建立逆向映射259
4.8.3 使用逆向映射259
4.9 堆的管理261
4.10 缺頁異常的處理263
4.11 用戶空間缺頁異常的校正268
4.11.1 按需分配/調(diào)頁269
4.11.2 匿名頁271
4.11.3 寫時復(fù)制271
4.11.4 獲取非線性映射272
4.12 內(nèi)核缺頁異常272
4.13 在內(nèi)核和用戶空間之間復(fù)制數(shù)據(jù)274
4.14 小結(jié)276
第5章 鎖與進(jìn)程間通信277
5.1 控制機制277
5.1.1 競態(tài)條件277
5.1.2 臨界區(qū)278
5.2 內(nèi)核鎖機制279
5.2.1 對整數(shù)的原子操作280
5.2.2 自旋鎖282
5.2.3 信號量283
5.2.4 RCU機制284
5.2.5 內(nèi)存和優(yōu)化屏障286
5.2.6 讀者/寫者鎖287
5.2.7 大內(nèi)核鎖288
5.2.8 互斥量288
5.2.9 近似的per-CPU計數(shù)器290
5.2.10 鎖競爭與細(xì)粒度鎖291
5.3 SystemV進(jìn)程間通信292
5.3.1 SystemV機制292
5.3.2 信號量292
5.3.3 消息隊列300
5.3.4 共享內(nèi)存303
5.4 其他IPC機制303
5.4.1 信號303
5.4.2 管道和套接字310
5.5 小結(jié)311
第6章 設(shè)備驅(qū)動程序312
6.1 I/O體系結(jié)構(gòu)312
6.2 訪問設(shè)備316
6.2.1 設(shè)備文件316
6.2.2 字符設(shè)備、塊設(shè)備和其他設(shè)備317
6.2.3 使用ioctl進(jìn)行設(shè)備尋址319
6.2.4 主從設(shè)備號的表示320
6.2.5 注冊321
6.3 與文件系統(tǒng)關(guān)聯(lián)324
6.3.1 inode中的設(shè)備文件成員324
6.3.2 標(biāo)準(zhǔn)文件操作325
6.3.3 用于字符設(shè)備的標(biāo)準(zhǔn)操作325
6.3.4 用于塊設(shè)備的標(biāo)準(zhǔn)操作325
6.4 字符設(shè)備操作326
6.4.1 表示字符設(shè)備326
6.4.2 打開設(shè)備文件326
6.4.3 讀寫操作328
6.5 塊設(shè)備操作329
6.5.1 塊設(shè)備的表示330
6.5.2 數(shù)據(jù)結(jié)構(gòu)331
6.5.3 向系統(tǒng)添加磁盤和分區(qū)338
6.5.4 打開塊設(shè)備文件339
6.5.5 請求結(jié)構(gòu)341
6.5.6 BIO343
6.5.7 提交請求345
6.5.8 I/O調(diào)度350
6.5.9 ioctl的實現(xiàn)352
6.6 資源分配353
6.6.1 資源管理353
6.6.2 I/O內(nèi)存355
6.6.3 I/O端口357
6.7 總線系統(tǒng)358
6.7.1 通用驅(qū)動程序模型358
6.7.2 PCI總線363
6.7.3 USB370
6.8 小結(jié)376
第7章 模塊377
7.1 概述377
7.2 使用模塊378
7.2.1 添加和移除378
7.2.2 依賴關(guān)系380
7.2.3 查詢模塊信息381
7.2.4 自動加載382
7.3 插入和刪除模塊384
7.3.1 模塊的表示385
7.3.2 依賴關(guān)系和引用389
7.3.3 模塊的二進(jìn)制結(jié)構(gòu)391
7.3.4 插入模塊396
7.3.5 移除模塊403
7.4 自動化與熱插拔404
7.4.1 kmod實現(xiàn)的自動加載404
7.4.2 熱插拔405
7.5 版本控制408
7.5.1 校驗和方法408
7.5.2 版本控制函數(shù)411
7.6 小結(jié)412
第8章 虛擬文件系統(tǒng)413
8.1 文件系統(tǒng)類型413
8.2 通用文件模型414
8.2.1 inode415
8.2.2 鏈接416
8.2.3 編程接口416
8.2.4 將文件作為通用接口417
8.3 VFS的結(jié)構(gòu)417
8.3.1 結(jié)構(gòu)概觀418
8.3.2 inode419
8.3.3 特定于進(jìn)程的信息423
8.3.4 文件操作427
8.3.5 目錄項緩存431
8.4 處理VFS對象436
8.4.1 文件系統(tǒng)操作436
8.4.2 文件操作450
8.5 標(biāo)準(zhǔn)函數(shù)456
8.5.1 通用讀取例程457
8.5.2 失效機制459
8.5.3 權(quán)限檢查461
8.6 小結(jié)463
第9章 Ext文件系統(tǒng)族464
9.1 簡介464
9.2 Ext2文件系統(tǒng)465
9.2.1 物理結(jié)構(gòu)465
9.2.2 數(shù)據(jù)結(jié)構(gòu)470
9.2.3 創(chuàng)建文件系統(tǒng)484
9.2.4 文件系統(tǒng)操作485
9.3 Ext3文件系統(tǒng)507
9.3.1 概念508
9.3.2 數(shù)據(jù)結(jié)構(gòu)509
9.4 小結(jié)511
第10章 無持久存儲的文件系統(tǒng)512
10.1 proc文件系統(tǒng)512
10.1.1 /proc的內(nèi)容513
10.1.2 數(shù)據(jù)結(jié)構(gòu)519
10.1.3 初始化522
10.1.4 裝載proc文件系統(tǒng)523
10.1.5 管理/proc數(shù)據(jù)項525
10.1.6 讀取和寫入信息528
10.1.7 進(jìn)程相關(guān)的信息530
10.1.8 系統(tǒng)控制機制535
10.2 簡單的文件系統(tǒng)542
10.2.1 順序文件542
10.2.2 用libfs編寫文件系統(tǒng)546
10.2.3 調(diào)試文件系統(tǒng)547
10.2.4 偽文件系統(tǒng)549
10.3 sysfs549
10.3.1 概述550
10.3.2 數(shù)據(jù)結(jié)構(gòu)550
10.3.3 裝載文件系統(tǒng)554
10.3.4 文件和目錄操作556
10.3.5 向sysfs添加內(nèi)容562
10.4 小結(jié)564
第11章 擴展屬性和訪問控制表565
11.1 擴展屬性565
11.1.1 到虛擬文件系統(tǒng)的接口566
11.1.2 Ext3中的實現(xiàn)570
11.1.3 Ext2中的實現(xiàn)576
11.2 訪問控制表577
11.2.1 通用實現(xiàn)577
11.2.2 Ext3中的實現(xiàn)580
11.2.3 Ext2中的實現(xiàn)585
11.3 小結(jié)585
第12章 網(wǎng)絡(luò)586
第13章 系統(tǒng)調(diào)用655
第14章 內(nèi)核活動678
第15章 時間管理714
第16章 頁緩存和塊緩存761
第17章 數(shù)據(jù)同步793
第18章 頁面回收和頁交換821
第19章 審計882
附錄A 體系結(jié)構(gòu)相關(guān)知識899
附錄B 使用源代碼919
附錄C 有關(guān)C語言的注記947
附錄D 系統(tǒng)啟動985
附錄E ELF二進(jìn)制格式
附錄F 內(nèi)核開發(fā)過程
參考文獻(xiàn)
使用說明
1、下載并解壓,得出pdf文件
2、如果打不開本文件,請務(wù)必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進(jìn)行閱讀
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
有柿電腦版 v11.9.2126.58M / 簡體中文
瀟湘書院電腦版 v2.3.15.88849.57M / 簡體中文
網(wǎng)易新聞電腦版 v113.987.37M / 簡體中文
京東讀書電腦版 v1.13.4官方版2.13M / 簡體中文
數(shù)據(jù)挖掘?qū)д?官方版61.61M / 簡體中文
吉利博瑞用戶手冊 pdf高清版57.89M / 簡體中文
PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
docker入門實戰(zhàn) pdf完整版1.38M / 簡體中文
Scala程序設(shè)計第二版 pdf高清完整版15.83M / 簡體中文
C++黑客編程揭秘與防范第2版 冀云pdf掃描版54.58M / 簡體中文