本書(shū)結(jié)合大量實(shí)驗(yàn)程序和圖表,通俗易懂地介紹了Linux操作系統(tǒng)的運(yùn)行原理和硬件的基礎(chǔ)知識(shí),涉及進(jìn)程管理、進(jìn)程調(diào)度器、內(nèi)存管理、存儲(chǔ)層次、文件系統(tǒng)和外部存儲(chǔ)器等。實(shí)驗(yàn)程序使用C語(yǔ)言和Python編寫(xiě),讀者可親自動(dòng)手運(yùn)行程序,來(lái)確認(rèn)系統(tǒng)的行為。另外,以圖解的方式介紹各知識(shí)點(diǎn),簡(jiǎn)明且直觀,能夠幫助讀者加深理解。讀者只需對(duì)Linux基本命令有所了解,即可輕松閱讀。
本書(shū)適合應(yīng)用程序開(kāi)發(fā)人員、系統(tǒng)設(shè)計(jì)師、運(yùn)維管理人員和技術(shù)支持人員等人士閱讀。
198張圖解+大量實(shí)驗(yàn)程序,直擊Linux核心工作原理
如果你想知道在操作系統(tǒng)啟動(dòng)后,CPU、內(nèi)存、文件系統(tǒng)等在內(nèi)部是如何工作的。
如果你只知道Linux的基本命令或者一些零散的知識(shí),想形成完整的脈絡(luò)。
如果你在遇到操作系統(tǒng)或硬件相關(guān)的問(wèn)題時(shí),不知道如何處理。
那么不妨讀一讀這本書(shū),系統(tǒng)地掌握操作系統(tǒng)的基礎(chǔ)知識(shí)!
1.原富士通一線Linux內(nèi)核開(kāi)發(fā)工程師基于十余年經(jīng)驗(yàn)執(zhí)筆,專業(yè)實(shí)用
2.聚焦Linux核心功能,簡(jiǎn)明易懂地講解操作系統(tǒng)是怎樣工作的
3.198張示意圖幫助理解,詳略得當(dāng),為讀懂大部頭開(kāi)路
4.結(jié)合大量實(shí)驗(yàn)程序,邊動(dòng)手操作邊學(xué)習(xí),真實(shí)體驗(yàn)系統(tǒng)運(yùn)行過(guò)程
本書(shū)適合:
1.菜鳥(niǎo)程序員入門進(jìn)階
2.中級(jí)程序員查漏補(bǔ)缺
3.高手程序員/教師講解操作系統(tǒng)基礎(chǔ)知識(shí)
武內(nèi)覺(jué)(作者)
2005年~2017年就職于日本富士通公司,負(fù)責(zé)商用Linux,特別是Linux內(nèi)核的開(kāi)發(fā)與支持工作。2017年后在Cybozu公司擔(dān)任技術(shù)顧問(wèn)。
曹栩(譯者)
出生于中國(guó)廣東省。畢業(yè)于天津理工大學(xué)。曾從事系統(tǒng)維護(hù)工作,長(zhǎng)期參與開(kāi)源貢獻(xiàn)。目前在日本求學(xué),專攻通信協(xié)議與網(wǎng)絡(luò)安全方向。
第 1章 計(jì)算機(jī)系統(tǒng)的概要 1
第 2章 用戶模式實(shí)現(xiàn)的功能 11
2.1 系統(tǒng)調(diào)用 12
2.2 系統(tǒng)調(diào)用的包裝函數(shù) 22
2.3 C標(biāo)準(zhǔn)庫(kù) 24
2.4 OS提供的程序 26
第3章 進(jìn)程管理 27
3.1 創(chuàng)建進(jìn)程 28
3.2 fork()函數(shù) 28
3.3 execve()函數(shù) 31
3.4 結(jié)束進(jìn)程 38
第4章 進(jìn)程調(diào)度器 41
4.1 關(guān)于實(shí)驗(yàn)程序的設(shè)計(jì) 43
4.2 實(shí)驗(yàn)程序的實(shí)現(xiàn) 44
4.3 實(shí)驗(yàn) 48
4.4 思考 53
4.5 上下文切換 54
4.6 進(jìn)程的狀態(tài) 55
4.7 狀態(tài)轉(zhuǎn)換 57
4.8 空閑狀態(tài) 59
4.9 各種各樣的狀態(tài)轉(zhuǎn)換 61
4.10 吞吐量與延遲 63
4.11 現(xiàn)實(shí)中的系統(tǒng) 69
4.12 存在多個(gè)邏輯 CPU時(shí)的調(diào)度 70
4.13 實(shí)驗(yàn)方法 71
4.14 實(shí)驗(yàn)結(jié)果 72
4.15 吞吐量與延遲 76
4.16 思考 77
4.17 運(yùn)行時(shí)間和執(zhí)行時(shí)間 78
4.18 進(jìn)程睡眠 84
4.19 現(xiàn)實(shí)中的進(jìn)程 85
4.20 變更優(yōu)先級(jí) 87
第5章 內(nèi)存管理 95
5.1 內(nèi)存相關(guān)的統(tǒng)計(jì)信息 96
5.2 內(nèi)存不足 98
5.3 簡(jiǎn)單的內(nèi)存分配 101
5.4 虛擬內(nèi)存 106
5.5 頁(yè)表 108
5.6 實(shí)驗(yàn) 110
5.7 為進(jìn)程分配內(nèi)存 111
5.8 實(shí)驗(yàn) 116
5.9 利用上層進(jìn)行內(nèi)存分配 118
5.10 解決問(wèn)題 121
5.11 虛擬內(nèi)存的應(yīng)用 126
5.12 文件映射 127
5.13 請(qǐng)求分頁(yè) 131
5.14 寫(xiě)時(shí)復(fù)制 145
5.15 Swap 151
5.16 多級(jí)頁(yè)表 159
5.17 標(biāo)準(zhǔn)大頁(yè) 163
第6章 存儲(chǔ)層次 167
6.1 高速緩存 168
6.2 高速緩存不足時(shí) 173
6.3 多級(jí)緩存 175
6.4 關(guān)于高速緩存的實(shí)驗(yàn) 176
6.5 訪問(wèn)局部性 180
6.6 總結(jié) 181
6.7 轉(zhuǎn)譯后備緩沖區(qū) 181
6.8 頁(yè)面緩存 181
6.9 同步寫(xiě)入 186
6.10 緩沖區(qū)緩存 187
6.11 讀取文件的實(shí)驗(yàn) 187
6.12 寫(xiě)入文件的實(shí)驗(yàn) 194
6.13 調(diào)優(yōu)參數(shù) 196
6.14 總結(jié) 198
6.15 超線程 199
第7章 文件系統(tǒng) 203
7.1 Linux的文件系統(tǒng) 207
7.2 數(shù)據(jù)與元數(shù)據(jù) 210
7.3 容量限制 211
7.4 文件系統(tǒng)不一致 212
7.5 日志 214
7.6 寫(xiě)時(shí)復(fù)制 218
7.7 防止不了的情況 221
7.8 文件系統(tǒng)不一致的對(duì)策 221
7.9 文件的種類 223
7.10 字符設(shè)備 224
7.11 塊設(shè)備 225
7.12 各種各樣的文件系統(tǒng) 228
7.13 基于內(nèi)存的文件系統(tǒng) 228
7.14 網(wǎng)絡(luò)文件系統(tǒng) 230
7.15 虛擬文件系統(tǒng) 231
7.16 Btrfs 233
第8章 外部存儲(chǔ)器 241
8.1 HDD的數(shù)據(jù)讀寫(xiě)機(jī)制 242
8.2 HDD的性能特性 244
8.3 HDD的實(shí)驗(yàn) 246
8.4 實(shí)驗(yàn)程序 247
8.5 順序訪問(wèn) 251
8.6 隨機(jī)訪問(wèn) 253
8.7 通用塊層 254
8.8 I/O調(diào)度器 255
8.9 預(yù)讀 256
8.10 實(shí)驗(yàn) 258
8.11 SSD 267
8.12 總結(jié) 279
后記 280