Linux是怎樣工作的(增訂版)

[日]武內覺

  • 出版商: 人民郵電
  • 出版日期: 2025-06-01
  • 售價: $599
  • 語言: 簡體中文
  • 頁數: 312
  • ISBN: 7115670250
  • ISBN-13: 9787115670250
  • 相關分類: Linux
  • 下單後立即進貨 (約4週~6週)

  • Linux是怎樣工作的(增訂版)-preview-1
  • Linux是怎樣工作的(增訂版)-preview-2
Linux是怎樣工作的(增訂版)-preview-1

商品描述

本書通過豐富的插圖、表格和代碼示例,結合動手實驗及結果分析,通俗易懂地講解了Linux操作系統的基礎知識和運行原理,包括進程管理、進程調度、內存管理、設備訪問、文件系統、虛擬化和容器等機制,以及這些機制如何與硬件協同工作。本書在初版的基礎上新增了設備訪問、虛擬化、容器及cgroup等章節,並對原有章節內容也進行了大幅修訂,以滿足作者的閱讀需求;開辟了“技術專欄”,以幫助希望深入了解Linux的讀者拓寬知識面;源代碼也從C語言編寫更新為Go和Python實現,同時加入大量註釋,以方便讀者理解。此外,本書也全面升級為彩色印刷,讓穿插於字裏行間的豐富圖表更加清晰易懂。

本書適合應用程序開發人員、系統設計師、運維管理人員和技術支持人員等人士閱讀。

作者簡介

[日]武內覺 

資深計算機系統技術專家。現在知名雲協同軟件公司Cybozu負責分布式存儲Ceph的研發。此前在富士通公司從事Linux相關技術開發多年。他是熱心分享的技術專家,除了廣受贊譽的本書之外,他還合著或者翻譯了另外兩部Linux著作。

目錄大綱

第 1章 Linux概述 1

1.1 程序與進程 2

1.2 內核 2

1.3 系統調用 4

1.3.1 系統調用的可視化 5

1.3.2 執行系統調用的時間占比 7

技術專欄 監控、警報及儀表盤 10

1.3.3 系統調用的執行時間 11

1.4 庫 11

1.4.1 C標準庫 12

1.4.2 系統調用的包裝函數 13

1.4.3 靜態庫與共享庫 14

技術專欄 靜態鏈接的復興 17

第 2章 進程管理(基礎篇) 19

2.1 創建進程 20

2.1.1 fork() 函數 21

2.1.2 execve() 函數 23

2.1.3 地址空間布局隨機化 27

技術專欄 除fork()函數與execve()函數之外的進程創建方法 29

2.2 進程的父子關系 30

2.3 進程的狀態 31

2.4 結束進程 33

2.5 僵屍進程與孤兒進程 34

2.6 信號 35

技術專欄 “必殺”的SIGKILL信號與“不死”的進程 -37

2.7 shell環境中的作業管理 37

2.7.1 會話 38

2.7.2 進程組 39

2.8 守護進程 41

第3章 進程調度 43

3.1 預備知識:運行時間和執行時間 44

3.2 只有一個邏輯CPU時的調度 46

3.3 存在多個邏輯CPU時的調度 48

3.4 user+sys>real 的個例 50

3.5 時間片 51

技術專欄 時間片原理 56

3.6 上下文切換 61

3.7 性能 63

3.8 程序並行執行的重要性 69

第4章 內存管理系統 70

4.1 獲取內存的相關信息 71

4.1.1 used 72

4.1.2 buff/cache 74

4.1.3 通過sar命令獲取內存信息 75

4.2 內存回收 76

4.3 虛擬內存 79

4.3.1 為什麼需要虛擬內存 80

4.3.2 虛擬內存做了什麼 82

4.3.3 虛擬內存怎樣解決問題 88

技術專欄 恐怖的“熔斷”漏洞 90

4.4 為進程分配新內存 91

4.4.1 分配內存區域:系統調用mmap() 91

4.4.2 分配內存:按需分頁 93

技術專欄 編程語言處理系統的內存管理 102

4.5 多級頁表 102

4.5.1 大頁 105

4.5.2 透明大頁 106

第5章 進程管理(進階篇) 108

5.1 進程創建的高速化 109

5.1.1 fork()函數的高速化:寫時復制 109

5.1.2 execve() 函數的高速化:按需分頁 114

5.2 進程間通信 116

5.2.1 共享內存 116

5.2.2 信號 119

5.2.3 管道 120

5.2.4 套接字 121

5.3 互斥鎖 121

5.4 互斥鎖中的怪圈 125

5.5 多進程與多線程 126

技術專欄 內核級線程與用戶級線程 128

第6章 設備訪問 132

6.1 設備文件 133

6.1.1 字符設備 135

6.1.2 塊設備 136

技術專欄 回環設備 138

6.2 設備驅動程序 139

6.2.1 內存映射I/O 140

6.2.2 輪詢 144

6.2.3 中斷 146

技術專欄 主動利用輪詢機制的情形 148

6.3 設備文件名 149

第7章 文件系統 152

7.1 訪問文件的方法 156

7.2 內存映射文件 157

7.3 普通的文件系統 160

7.4 容量限制(磁盤配額) 161

7.5 文件系統的一致性 162

7.5.1 日誌技術 163

7.5.2 寫時復制技術 166

7.5.3 首要之事是備份 168

7.6 Btrfs提供的高級功能 169

7.6.1 快照 169

7.6.2 卷 171

技術專欄 應該使用哪種文件系統? 173

7.7 數據損壞的檢測與修復 173

7.8 其他文件系統 175

7.8.1 基於內存的文件系統 175

7.8.2 網絡文件系統 177

7.8.3 procfs 178

7.8.4 sysfs 179

第8章 存儲層次 181

8.1 高速緩存 182

8.1.1 局部性原理 187

8.1.2 多級高速緩存 187

8.1.3 測試高速緩存的訪問速度 188

8.2 同時多線程 193

技術專欄 轉譯後備緩沖區 195

8.3 頁緩存 195

8.4 緩沖區緩存 201

8.5 回寫的時間點 202

8.6 direct I/O 203

8.7 交換機制 204

8.8 統計信息 207

第9章 通用塊層 211

9.1 HDD 的特征 212

9.2 通用塊層的基本功能 217

9.3 塊設備的性能指標與性能測試方法 219

9.3.1 有且僅有 1 個進程發出I/O請求的情形 219

9.3.2 多個進程並行發出I/O請求的情形 222

技術專欄 不要推測, 要實打實地測試 226

9.3.3 性能測試工具:fio 226

9.4 通用塊層對HDD性能的影響 229

9.4.1 情景A 的測試結果 238

技術專欄 性能測試的目的 -238

9.4.2 情景B 的測試結果 241

9.5 隨著技術革新而變化的通用塊層 241

9.6 通用塊層對NVMe SSD性能的影響 243

9.6.1 情景A 的測試結果 243

9.6.2 情景B 的測試結果 246

技術專欄 現實中的性能測試 246

第 10章 虛擬化 249

10.1 什麼是虛擬化功能 250

10.2 虛擬化軟件 251

10.3 本章使用的虛擬化軟件 253

技術專欄 嵌套虛擬化 255

10.4 支持虛擬化功能的CPU 255

技術專欄 CPU 不支持虛擬化功能時的虛擬化 259

10.5 宿主OS視角的虛擬機 260

10.5.1 宿主OS視角的客戶OS 262

10.5.2 啟動多個虛擬機 263

技術專欄 IaaS中的彈性伸縮功能 265

10.6 虛擬化環境中的進程調度 265

10.6.1 物理機上運行著其他線程的情況 267

10.6.2 統計信息 271

10.7 虛擬機與內存管理 274

10.8 虛擬機與存儲設備 277

10.8.1 虛擬機的I/O性能 278

10.8.2 存儲設備的寫入操作與頁緩存 281

10.8.3 半虛擬化設備與virtio-blk 281

技術專欄 宿主OS與客戶OS的I/O性能逆轉 282

10.8.4 virtio-blk的原理 283

技術專欄 PCI直通 286

第 11章 容器 287

11.1 虛擬機與容器的區別 288

11.2 容器的類型 290

11.3 命名空間 291

11.3.1 pid ns 291

11.3.2 容器的本質 297

11.4 安全風險 298

第 12章 cgroup 300

12.1 cgroup能夠限制的資源 302

12.2 示例:限制CPU使用時間 303

技術專欄 把cgroup 機制引入內核的經過 -305

12.3 應用實例 306

技術專欄 cgroup v2 306

第 13章 總結與應用 307