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