注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)奔跑吧 Linux內(nèi)核

奔跑吧 Linux內(nèi)核

奔跑吧 Linux內(nèi)核

定 價(jià):¥158.00

作 者: 張?zhí)祜w 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115465023 出版時(shí)間: 2017-09-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書內(nèi)容基于Linux4.x內(nèi)核,主要選取了Linux內(nèi)核中比較基本和常用的內(nèi)存管理、進(jìn)程管理、并發(fā)與同步,以及中斷管理這4個(gè)內(nèi)核模塊進(jìn)行講述。全書共分為6章,依次介紹了ARM體系結(jié)構(gòu)、Linux內(nèi)存管理、進(jìn)程調(diào)度管理、并發(fā)與同步、中斷管理、內(nèi)核調(diào)試技巧等內(nèi)容。本書的每節(jié)內(nèi)容都是一個(gè)Linux內(nèi)核的話題或者技術(shù)點(diǎn),讀者可以根據(jù)每小節(jié)前的問題進(jìn)行思考,進(jìn)而圍繞問題進(jìn)行內(nèi)核源代碼的分析。 本書內(nèi)容豐富,講解清晰透徹,不僅適合有一定Linux相關(guān)基礎(chǔ)的人員,包括從事與Linux相關(guān)的開發(fā)人員、操作系統(tǒng)的研究人員、嵌入式開發(fā)人員及Android底層開發(fā)人員等學(xué)習(xí)和使用,而且適合作為對(duì)Linux感興趣的程序員的學(xué)習(xí)用書,也可以作為大專院校相關(guān)專業(yè)師生的學(xué)習(xí)用書和培訓(xùn)學(xué)校的教材。

作者簡(jiǎn)介

  張?zhí)祜w,筆名“笨叔叔”。Linux內(nèi)核愛好者,從事Linux內(nèi)核和驅(qū)動(dòng)開發(fā)十余年,在多家芯片公司從事過(guò)手機(jī)芯片底層軟件開發(fā)和客戶支持工作。

圖書目錄

LINUX內(nèi)核奔跑卷 1
第1章 處理器體系結(jié)構(gòu) 4
本章思考題 4
第2章 內(nèi)存管理 32
本章思考題 32
2.1 物理內(nèi)存初始化 36
2.1.1 內(nèi)存管理概述 36
2.1.2 內(nèi)存大小 37
2.1.3 物理內(nèi)存映射 38
2.1.4 zone初始化 40
2.1.5 空間劃分 44
2.1.6 物理內(nèi)存初始化 45
2.2 頁(yè)表的映射過(guò)程 51
2.2.1 ARM32頁(yè)表映射 51
2.2.2 ARM64頁(yè)表映射 60
2.3 內(nèi)核內(nèi)存的布局圖 67
2.3.1 ARM32內(nèi)核內(nèi)存布局圖 67
2.3.2 ARM64內(nèi)核內(nèi)存布局圖 70
2.4 分配物理頁(yè)面 72
2.4.1 伙伴系統(tǒng)分配內(nèi)存 72
2.4.2 釋放頁(yè)面 85
2.4.3 小結(jié) 89
2.5 slab分配器 90
2.5.1 創(chuàng)建slab描述符 91
2.5.2 分配slab對(duì)象 103
2.5.3 釋放slab緩沖對(duì)象 108
2.5.4 kmalloc分配函數(shù) 111
2.5.5 小結(jié) 112
2.6 vmalloc 113
2.7 VMA操作 120
2.7.1 查找VMA 122
2.7.2 插入VMA 124
2.7.3 合并VMA 129
2.7.4 紅黑樹例子 131
2.7.5 小結(jié) 133
2.8 malloc 133
2.8.1 brk實(shí)現(xiàn) 134
2.8.2 VM_LOCK情況 138
2.8.3 小結(jié) 148
2.9 mmap 150
2.9.1 mmap概述 151
2.9.2 小結(jié) 153
2.10 缺頁(yè)中斷處理 155
2.10.1 do_page_fault() 157
2.10.2 匿名頁(yè)面缺頁(yè)中斷 165
2.10.3 文件映射缺頁(yè)中斷 169
2.10.4 寫時(shí)復(fù)制 175
2.10.5 小結(jié) 183
2.11 page引用計(jì)數(shù) 184
2.11.1 struct page數(shù)據(jù)結(jié)構(gòu) 185
2.11.2 _count和_mapcount的區(qū)別 188
2.11.3 頁(yè)面鎖PG_Locked 192
2.11.4 小結(jié) 192
2.12 反向映射RMAP 192
2.12.1 父進(jìn)程分配匿名頁(yè)面 193
2.12.2 父進(jìn)程創(chuàng)建子進(jìn)程 198
2.12.3 子進(jìn)程發(fā)生COW 200
2.12.4 RMAP應(yīng)用 201
2.12.5 小結(jié) 202
2.13 回收頁(yè)面 204
2.13.1 LRU鏈表 204
2.13.2 kswapd內(nèi)核線程 216
2.13.3 balance_pgdat函數(shù) 219
2.13.4 shrink_zone函數(shù) 228
2.13.5 shrink_active_list函數(shù) 233
2.13.6 shrink_inactive_list函數(shù) 238
2.13.7 跟蹤LRU活動(dòng)情況 244
2.13.8 Refault Distance算法 244
2.13.9 小結(jié) 249
2.14 匿名頁(yè)面生命周期 251
2.14.1 匿名頁(yè)面的誕生 251
2.14.2 匿名頁(yè)面的使用 252
2.14.3 匿名頁(yè)面的換出 252
2.14.4 匿名頁(yè)面的換入 254
2.14.5 匿名頁(yè)面銷毀 254
2.15 頁(yè)面遷移 254
migrate_pages()函數(shù) 255
2.16 內(nèi)存規(guī)整(memory compaction) 262
2.16.1 內(nèi)存規(guī)整實(shí)現(xiàn) 263
2.16.2 小結(jié) 272
2.17 KSM 273
2.17.1 KSM實(shí)現(xiàn) 274
2.17.2 匿名頁(yè)面和KSM頁(yè)面的區(qū)別 293
2.17.3 小結(jié) 294
2.18 Dirty COW內(nèi)存漏洞 296
2.19 總結(jié)內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)和API 309
2.19.1 內(nèi)存管理數(shù)據(jù)結(jié)構(gòu)的關(guān)系圖 309
2.19.2 內(nèi)存管理中常用API 312
2.20 最新更新和展望 315
2.20.1 頁(yè)面回收策略從zone遷移到node 315
2.20.2 OOM Killer改進(jìn) 316
2.20.3 swap優(yōu)化 317
2.20.4 展望 318
第3章 進(jìn)程管理 319
本章思考題 319
3.1 進(jìn)程的誕生 320
3.1.1 init進(jìn)程 321
3.1.2 fork 325
3.1.3 小結(jié) 344
3.2 CFS調(diào)度器 345
3.2.1 權(quán)重計(jì)算 346
3.2.2 進(jìn)程創(chuàng)建 358
3.2.3 進(jìn)程調(diào)度 369
3.2.4 scheduler tick 379
3.2.5 組調(diào)度 382
3.2.6 PELT算法改進(jìn) 386
3.2.7 小結(jié) 387
3.3 SMP負(fù)載均衡 389
3.3.1 CPU域初始化 389
3.3.2 SMP負(fù)載均衡 401
3.3.3 喚醒進(jìn)程 415
3.3.4 調(diào)試 421
3.3.5 小結(jié) 422
3.4 HMP調(diào)度器 422
3.4.1 初始化 423
3.4.2 HMP負(fù)載調(diào)度 425
3.4.3 新創(chuàng)建的進(jìn)程 436
3.4.4 小結(jié) 437
3.5 NUMA調(diào)度器 438
3.5.1 node和page的關(guān)系 439
3.5.2 掃描進(jìn)程 441
3.5.3 NUMA缺頁(yè)中斷 442
3.5.4 進(jìn)程遷移 450
3.5.5 小結(jié) 455
3.6 EAS綠色節(jié)能調(diào)度器 457
3.6.1 能效模型 459
3.6.2 WALT算法 465
3.6.3 喚醒進(jìn)程 480
3.6.4 CPU動(dòng)態(tài)調(diào)頻 491
3.6.5 小結(jié) 494
3.7 實(shí)時(shí)調(diào)度 496
3.8 最新更新與展望 500
3.8.1 進(jìn)程管理更新 500
3.8.2 展望 500
第4章 并發(fā)與同步 501
本章思考題 501
4.1 原子操作與內(nèi)存屏障 503
4.1.1 原子操作 503
4.1.2 內(nèi)存屏障 506
4.2 spinlock 508
4.2.1 spinlock實(shí)現(xiàn) 509
4.2.2 spinlock變種 511
4.2.3 spinlock和raw_spin_lock 512
4.3 信號(hào)量 513
4.3.1 信號(hào)量 513
4.3.2 小結(jié) 516
4.4 Mutex互斥體 517
4.4.1 MCS鎖機(jī)制 518
4.4.2 Mutex鎖的實(shí)現(xiàn) 525
4.4.3 小結(jié) 531
4.5 讀寫鎖 531
4.5.1 讀者信號(hào)量 532
4.5.2 寫者鎖 538
4.5.3 小結(jié) 544
4.6 RCU 544
4.6.1 經(jīng)典RCU和Tree RCU 547
4.6.2 Tree RCU設(shè)計(jì) 551
4.6.3 小結(jié) 573
4.7 內(nèi)存管理中的鎖 574
4.8 最新更新與展望 584
4.8.1 Queued Spinlock 584
4.8.2 讀寫信號(hào)量?jī)?yōu)化 591
4.8.3 展望 592
4.8.4 推薦書籍 593
第5章 中斷管理 594
本章思考題 594
5.1 Linux中斷管理機(jī)制 595
5.1.1 ARM中斷控制器 595
5.1.2 硬件中斷號(hào)和Linux中斷號(hào)的映射 599
5.1.3 注冊(cè)中斷 610
5.1.4 ARM底層中斷處理 618
5.1.5 高層中斷處理 626
5.1.6 小結(jié) 636
5.2 軟中斷和tasklet 637
5.2.1 SoftIRQ軟中斷 638
5.2.2 tasklet 642
5.2.3 local_bh_disable/local_bh_enable 647
5.2.4 小結(jié) 649
5.3 workqueue工作隊(duì)列 650
5.3.1 初始化工作隊(duì)列 652
5.3.2 創(chuàng)建工作隊(duì)列 659
5.3.3 調(diào)度一個(gè)work 665
5.3.4 取消一個(gè)work 675
5.3.5 和調(diào)度器的交互 680
5.3.6 小結(jié) 682
第6章 內(nèi)核調(diào)試 684
6.1 QEMU調(diào)試Linux內(nèi)核 684
6.1.1 QEMU運(yùn)行ARM Linux內(nèi)核 684
6.1.2 QEMU調(diào)試ARM Linux內(nèi)核 687
6.1.3 QEMU運(yùn)行ARMv8開發(fā)平臺(tái) 688
6.1.4 文件系統(tǒng)支持 690
6.1.5 圖形化調(diào)試 691
6.1.6 實(shí)驗(yàn)進(jìn)階 693
6.2 ftrace 694
6.2.1 irqs跟蹤器 695
6.2.2 preemptoff跟蹤器 696
6.2.3 preemptirqsoff跟蹤器 697
6.2.4 function跟蹤器 698
6.2.5 動(dòng)態(tài)ftrace 699
6.2.6 事件跟蹤 700
6.2.7 添加tracepoint 702
6.2.8 trace-cmd和kernelshark 705
6.2.9 trace marker 707
6.2.10 小結(jié) 709
6.3 SystemTap 710
6.4 內(nèi)存檢測(cè) 714
6.4.1 slub_debug 714
6.4.2 內(nèi)存泄漏檢測(cè)kmemleak 718
6.4.3 kasan內(nèi)存檢測(cè) 720
6.5 死鎖檢測(cè) 722
6.6 內(nèi)核調(diào)試秘籍 728
6.6.1 printk 728
6.6.2 動(dòng)態(tài)打印 730
6.6.3 RAM Console 731
6.6.4 OOPS分析 731
6.6.5 BUG_ON()和WARN_ON() 734

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)