深入 Linux 內核架構與底層原理, 2/e

深入 Linux 內核架構與底層原理, 2/e

作者: 劉京洋
出版社: 電子工業
出版在: 2022-06-01
ISBN-13: 9787121436895
ISBN-10: 7121436892
總頁數: 568 頁





內容描述


本書主要描述Linux系統的總體框架和設計思想,包含很多可以直接操作的實例。編寫本書的目的是希望讀者對Linux系統背後的邏輯有一個全面的瞭解。本書對比較核心且常用的技術點有更加深入的解釋,對實際使用Linux系統工作大有裨益,同時,選擇重點的方向進行源碼級深度分析,包含大量的案例,而且增加了與Windows同類操作系統的對比,涉及Fuchsia?OS和Android系統的一些實現,對操作系統的描述更清晰。 本書適合Linux系統開發人員、嵌入式系統開發人員閱讀,也可供電腦相關專業的師生閱讀。


目錄大綱


第1章 操作系統總覽 1 1.1 操作系統簡介 1 1.2 如何形成一個內核 4 1.3 主要操作系統與Linux的對比 6 1.3.1 Linux和Android 6 1.3.2 Windows下Linux運行環境的發展 8 1.3.3 Fuchsia OS與Windows、Linux的對比 9 第2章 系統結構 15 2.1 Linux內核整體結構 15 2.1.1 內核模塊 17 2.1.2 內核符號表 23 2.2 Linux內核數據結構 25 2.2.1 鏈表與哈希表 25 2.2.2 雙向鏈表 26 2.3 hlist 28 2.3.1 llist 34 2.3.2 樹與IDR 37 2.3.3 xarray 38 第3章 鎖與系統調用 46 3.1 原子操作 47 3.1.1 內存一致性 51 3.1.2 原子類型定義 54 3.1.3 cmpxchg實現 56 3.2 引用計數 60 3.3 自旋鎖 65 自旋鎖的性能 77 3.4 讀寫鎖與順序鎖 79 3.5 信號量 82 3.6 讀寫信號量 86 3.6.1 獲得讀鎖 87 3.6.2 鎖狀態與鎖交接 90 3.6.3 鎖持有 92 3.6.4 等待鏈表 94 3.6.5 讀鎖慢速路徑 99 3.7 互斥鎖 103 3.8 RCU鎖 110 3.8.1 RCU鎖基本接口 114 3.8.2 grace period等待 115 3.8.3 SRCU 117 3.8.4 RCU鎖、讀寫鎖與順序鎖對比 118 3.8.5 hlist中的RCU鎖 119 3.8.6 reuseport中的RCU鎖 121 3.9 引用計數 123 percpu-ref 124 第4章 信號、中斷與系統調用 129 4.1 信號 129 4.1.1 Linux信號處理機制的設計 129 4.1.2 Windows的Event語義設計 139 4.2 中斷 141 4.2.1 IDT(中斷描述符表) 141 4.2.2 IPI中斷 148 4.3 系統調用 156 4.3.1 系統調用原理 156 4.3.2 vsyscall與VDSO 163 4.3.3 系統調用截斷 168 第5章 Linux系統的啟動與進程 171 5.1 Linux啟動過程的組件 171 5.1.1 啟動過程相關組件 171 5.1.2 最小系統的製作和啟動 182 5.2 內核啟動流程:EFI stub 183 5.3 進程 199 5.3.1 進程概述 199 5.3.2 進程內存和PID 201 5.3.3 進程生命周期 205 第6章 調度 220 6.1 任務調度 220 6.1.1 調度優先級 220 6.1.2 上下文切換 223 6.1.3 運行隊列與調度類 228 6.1.4 調度域、調度組與調度實體 230 6.1.5 TTWU(喚醒) 239 6.2 時鐘 244 6.2.1 時鐘概念 244 6.2.2 計時器與定時器 248 6.3 Futex系統調用 256 6.4 C-State 263 第7章 內存管理 275 7.1 地址空間 275 7.1.1 64位Linux地址空間 275 7.1.2 32位Linux地址空間 276 7.2 尋址 280 7.2.1 64位下的尋址 280 7.2.2 Intel的硬件四級尋址過程 284 7.2.3 操作系統的頁狀態和權限控制 291 7.2.4 頁框回收算法 293 7.2.5 段寄存器 301 7.3 堆內存管理 306 7.3.1 用戶空間與內核空間的堆內存管理 306 7.3.2 Buddy思想與Slab思想 307 7.3.3 內存回收(PFRA) 314 7.3.4 BDI 316 第8章 存儲 319 8.1 VFS 319 8.1.1 文件句柄與文件描述符表 319 8.1.2 _alloc_fd、fd_install、dup2與close_on_exec 322 8.1.3 open系統調用 325 8.1.4 flock文件鎖與文件內容鎖 328 8.2 通用塊層 339 8.2.1 通用塊層功能概覽 339 8.2.2 bio和bio_set 342 8.2.3 request和request_queue 343 8.2.4 電梯算法 345 8.3 緩存層 354 8.3.1 Linux與Windows在緩存設計上的不同 354 8.3.2 Linux下的緩存機制 355 8.4 文件系統與Ext4 362 8.4.1 Linux文件系統的特性與框架 362 8.4.2 文件系統的種類 367 8.4.3 文件系統的抽象:VFS 372 8.4.4 Ext4文件系統實踐 375 8.5 預讀機制 383 8.5.1 預讀機制框架 383 8.5.2 預讀算法 388 第9章 套接字(socket) 393 9.1 socket概覽 393 9.1.1 socket類型與接口 394 9.1.2 Linux socket連接模型 397 9.1.3 Linux socket的鎖 398 9.1.4 epoll 400 9.2 Netlink 402 9.2.1 Netlink消息格式 402 9.2.2 Netlink功能模塊 406 9.2.3 genetlink的使用 408 9.2.4 inet_diag模塊 410 9.2.5 RTNETLINK 414 9.3 BPF與eBPF 418 9.3.1 BPF 419 9.3.2 eBPF 422 第10章 網絡 430 10.1 網絡架構 430 10.2 IP 434 10.2.1 路由條目的意義 434 10.2.2 IP管理 437 10.2.3 IP隧道 439 10.3 TCP 446 10.3.1 TCP的無損特性 446 10.3.2 TCP的連接狀態 447 10.3.3 TCP擁塞控制 452 10.4 負載均衡 460 10.4.1 負載均衡的核心技術點 460 10.4.2 四層負載均衡常見架構 461 10.4.3 一致性哈希和分佈式哈希 463 10.5 網絡服務質量與安全性 465 10.5.1 TCP安全性 465 10.5.2 QoS 469 10.5.3 NAT 472 10.6 netfilter 475 第11章 設備管理 479 11.1 設備模型 479 11.1.1 sys文件系統 479 11.1.2 設備變化通知用戶端 484 11.1.3 設備類型 485 11.2 tty子系統 491 11.2.1 tty框架與ttyS硬件 491 11.2.2 terminal硬件 493 11.2.3 tty結構 494 11.2.4 getty、login與shell 496 11.2.5 /dev/ptmx與/dev/pts/n 496 11.2.6 SSH 501 11.3 PCI與USB 502 11.3.1 PCI 502 11.3.2 USB 510 第12章 二進制 516 12.1 二進制原理 516 12.1.1 編譯、鏈接與執行 516 12.1.2 裸程序 518 12.1.3 加載器 519 12.1.4 鏈接過程 523 12.2 ELF格式 525 12.2.1 ABI 525 12.2.2 ELF 529 12.3 函數調用約定 547 12.4 二進制安全 552




相關書籍

通訊系統

作者 李家同 邱茂清 林容杉 黃蓮池

2022-06-01

ARM Linux 入門與實踐 — 基於 TI AM335x 處理器

作者 程昌南 沈建華

2022-06-01

Sams Teach Yourself Shell Programming in 24 Hours, 2/e (Paperback)

作者 Sriranga Veeraraghavan

2022-06-01