深入Linux內(nèi)核架構(gòu)與底層原理(第2版)
定 價(jià):139 元
- 作者:劉京洋
- 出版時(shí)間:2022/6/1
- ISBN:9787121436895
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.85
- 頁(yè)碼:568
- 紙張:
- 版次:01
- 開本:16開
本書主要描述Linux系統(tǒng)的總體框架和設(shè)計(jì)思想,包含很多可以直接操作的實(shí)例。編寫本書的目的是希望讀者對(duì)Linux系統(tǒng)背后的邏輯有一個(gè)全面的了解。本書對(duì)比較核心且常用的技術(shù)點(diǎn)有更加深入的解釋,對(duì)實(shí)際使用Linux系統(tǒng)工作大有裨益,同時(shí),選擇重點(diǎn)的方向進(jìn)行源碼級(jí)深度分析,包含大量的案例,而且增加了與Windows同類操作系統(tǒng)的對(duì)比,涉及Fuchsia?OS和Android系統(tǒng)的一些實(shí)現(xiàn),對(duì)操作系統(tǒng)的描述更清晰。 本書適合Linux系統(tǒng)開發(fā)人員、嵌入式系統(tǒng)開發(fā)人員閱讀,也可供計(jì)算機(jī)相關(guān)專業(yè)的師生閱讀。
劉京洋,從事Linux內(nèi)核相關(guān)研發(fā)十余年,工作內(nèi)容包括對(duì)內(nèi)核子系統(tǒng)的實(shí)際產(chǎn)業(yè)應(yīng)用。尤其擅長(zhǎng)網(wǎng)絡(luò)研發(fā)與性能調(diào)優(yōu),對(duì)Linux之外的操作系統(tǒng)同樣興趣濃厚。目前,在騰訊前沿技術(shù)中心從事云游戲研發(fā)工作。
第1章 操作系統(tǒng)總覽 1
1.1 操作系統(tǒng)簡(jiǎn)介 1
1.2 如何形成一個(gè)內(nèi)核 4
1.3 主要操作系統(tǒng)與Linux的對(duì)比 6
1.3.1 Linux和Android 6
1.3.2 Windows下Linux運(yùn)行環(huán)境的發(fā)展 8
1.3.3 Fuchsia OS與Windows、Linux的對(duì)比 9
第2章 系統(tǒng)結(jié)構(gòu) 15
2.1 Linux內(nèi)核整體結(jié)構(gòu) 15
2.1.1 內(nèi)核模塊 17
2.1.2 內(nèi)核符號(hào)表 23
2.2 Linux內(nèi)核數(shù)據(jù)結(jié)構(gòu) 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章 鎖與系統(tǒng)調(diào)用 46
3.1 原子操作 47
3.1.1 內(nèi)存一致性 51
3.1.2 原子類型定義 54
3.1.3 cmpxchg實(shí)現(xiàn) 56
3.2 引用計(jì)數(shù) 60
3.3 自旋鎖 65
自旋鎖的性能 77
3.4 讀寫鎖與順序鎖 79
3.5 信號(hào)量 82
3.6 讀寫信號(hào)量 86
3.6.1 獲得讀鎖 87
3.6.2 鎖狀態(tài)與鎖交接 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鎖、讀寫鎖與順序鎖對(duì)比 118
3.8.5 hlist中的RCU鎖 119
3.8.6 reuseport中的RCU鎖 121
3.9 引用計(jì)數(shù) 123
percpu-ref 124
第4章 信號(hào)、中斷與系統(tǒng)調(diào)用 129
4.1 信號(hào) 129
4.1.1 Linux信號(hào)處理機(jī)制的設(shè)計(jì) 129
4.1.2 Windows的Event語(yǔ)義設(shè)計(jì) 139
4.2 中斷 141
4.2.1 IDT(中斷描述符表) 141
4.2.2 IPI中斷 148
4.3 系統(tǒng)調(diào)用 156
4.3.1 系統(tǒng)調(diào)用原理 156
4.3.2 vsyscall與VDSO 163
4.3.3 系統(tǒng)調(diào)用截?cái)?168
第5章 Linux系統(tǒng)的啟動(dòng)與進(jìn)程 171
5.1 Linux啟動(dòng)過(guò)程的組件 171
5.1.1 啟動(dòng)過(guò)程相關(guān)組件 171
5.1.2 最小系統(tǒng)的制作和啟動(dòng) 182
5.2 內(nèi)核啟動(dòng)流程:EFI stub 183
5.3 進(jìn)程 199
5.3.1 進(jìn)程概述 199
5.3.2 進(jìn)程內(nèi)存和PID 201
5.3.3 進(jìn)程生命周期 205
第6章 調(diào)度 220
6.1 任務(wù)調(diào)度 220
6.1.1 調(diào)度優(yōu)先級(jí) 220
6.1.2 上下文切換 223
6.1.3 運(yùn)行隊(duì)列與調(diào)度類 228
6.1.4 調(diào)度域、調(diào)度組與調(diào)度實(shí)體 230
6.1.5 TTWU(喚醒) 239
6.2 時(shí)鐘 244
6.2.1 時(shí)鐘概念 244
6.2.2 計(jì)時(shí)器與定時(shí)器 248
6.3 Futex系統(tǒng)調(diào)用 256
6.4 C-State 263
第7章 內(nèi)存管理 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的硬件四級(jí)尋址過(guò)程 284
7.2.3 操作系統(tǒng)的頁(yè)狀態(tài)和權(quán)限控制 291
7.2.4 頁(yè)框回收算法 293
7.2.5 段寄存器 301
7.3 堆內(nèi)存管理 306
7.3.1 用戶空間與內(nèi)核空間的堆內(nèi)存管理 306
7.3.2 Buddy思想與Slab思想 307
7.3.3 內(nèi)存回收(PFRA) 314
7.3.4 BDI 316
第8章 存儲(chǔ) 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系統(tǒng)調(diào)用 325
8.1.4 flock文件鎖與文件內(nèi)容鎖 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在緩存設(shè)計(jì)上的不同 354
8.3.2 Linux下的緩存機(jī)制 355
8.4 文件系統(tǒng)與Ext4 362
8.4.1 Linux文件系統(tǒng)的特性與框架 362
8.4.2 文件系統(tǒng)的種類 367
8.4.3 文件系統(tǒng)的抽象:VFS 372
8.4.4 Ext4文件系統(tǒng)實(shí)踐 375
8.5 預(yù)讀機(jī)制 383
8.5.1 預(yù)讀機(jī)制框架 383
8.5.2 預(yù)讀算法 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章 網(wǎng)絡(luò) 430
10.1 網(wǎng)絡(luò)架構(gòu) 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的無(wú)損特性 446
10.3.2 TCP的連接狀態(tài) 447
10.3.3 TCP擁塞控制 452
10.4 負(fù)載均衡 460
10.4.1 負(fù)載均衡的核心技術(shù)點(diǎn) 460
10.4.2 四層負(fù)載均衡常見架構(gòu) 461
10.4.3 一致性哈希和分布式哈希 463
10.5 網(wǎng)絡(luò)服務(wù)質(zhì)量與安全性 465
10.5.1 TCP安全性 465
10.5.2 QoS 469
10.5.3 NAT 472
10.6 netfilter 475
第11章 設(shè)備管理 479
11.1 設(shè)備模型 479
11.1.1 sys文件系統(tǒng) 479
11.1.2 設(shè)備變化通知用戶端 484
11.1.3 設(shè)備類型 485
11.2 tty子系統(tǒng) 491
11.2.1 tty框架與ttyS硬件 491
11.2.2 terminal硬件 493
11.2.3 tty結(jié)構(gòu) 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章 二進(jìn)制 516
12.1 二進(jìn)制原理 516
12.1.1 編譯、鏈接與執(zhí)行 516
12.1.2 裸程序 518
12.1.3 加載器 519
12.1.4 鏈接過(guò)程 523
12.2 ELF格式 525
12.2.1 ABI 525
12.2.2 ELF 529
12.3 函數(shù)調(diào)用約定 547
12.4 二進(jìn)制安全 552