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

奔跑吧 Linux內(nèi)核

奔跑吧 Linux內(nèi)核

定 價:¥158.00

作 者: 張?zhí)祜w 著
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

ISBN: 9787115465023 出版時間: 2017-09-01 包裝: 平裝
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

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

作者簡介

  張?zhí)祜w,筆名“笨叔叔”。Linux內(nèi)核愛好者,從事Linux內(nèi)核和驅(qū)動開發(fā)十余年,在多家芯片公司從事過手機芯片底層軟件開發(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 頁表的映射過程 51
2.2.1 ARM32頁表映射 51
2.2.2 ARM64頁表映射 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 分配物理頁面 72
2.4.1 伙伴系統(tǒng)分配內(nèi)存 72
2.4.2 釋放頁面 85
2.4.3 小結(jié) 89
2.5 slab分配器 90
2.5.1 創(chuàng)建slab描述符 91
2.5.2 分配slab對象 103
2.5.3 釋放slab緩沖對象 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實現(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 缺頁中斷處理 155
2.10.1 do_page_fault() 157
2.10.2 匿名頁面缺頁中斷 165
2.10.3 文件映射缺頁中斷 169
2.10.4 寫時復(fù)制 175
2.10.5 小結(jié) 183
2.11 page引用計數(shù) 184
2.11.1 struct page數(shù)據(jù)結(jié)構(gòu) 185
2.11.2 _count和_mapcount的區(qū)別 188
2.11.3 頁面鎖PG_Locked 192
2.11.4 小結(jié) 192
2.12 反向映射RMAP 192
2.12.1 父進程分配匿名頁面 193
2.12.2 父進程創(chuàng)建子進程 198
2.12.3 子進程發(fā)生COW 200
2.12.4 RMAP應(yīng)用 201
2.12.5 小結(jié) 202
2.13 回收頁面 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活動情況 244
2.13.8 Refault Distance算法 244
2.13.9 小結(jié) 249
2.14 匿名頁面生命周期 251
2.14.1 匿名頁面的誕生 251
2.14.2 匿名頁面的使用 252
2.14.3 匿名頁面的換出 252
2.14.4 匿名頁面的換入 254
2.14.5 匿名頁面銷毀 254
2.15 頁面遷移 254
migrate_pages()函數(shù) 255
2.16 內(nèi)存規(guī)整(memory compaction) 262
2.16.1 內(nèi)存規(guī)整實現(xiàn) 263
2.16.2 小結(jié) 272
2.17 KSM 273
2.17.1 KSM實現(xiàn) 274
2.17.2 匿名頁面和KSM頁面的區(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 頁面回收策略從zone遷移到node 315
2.20.2 OOM Killer改進 316
2.20.3 swap優(yōu)化 317
2.20.4 展望 318
第3章 進程管理 319
本章思考題 319
3.1 進程的誕生 320
3.1.1 init進程 321
3.1.2 fork 325
3.1.3 小結(jié) 344
3.2 CFS調(diào)度器 345
3.2.1 權(quán)重計算 346
3.2.2 進程創(chuàng)建 358
3.2.3 進程調(diào)度 369
3.2.4 scheduler tick 379
3.2.5 組調(diào)度 382
3.2.6 PELT算法改進 386
3.2.7 小結(jié) 387
3.3 SMP負載均衡 389
3.3.1 CPU域初始化 389
3.3.2 SMP負載均衡 401
3.3.3 喚醒進程 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負載調(diào)度 425
3.4.3 新創(chuàng)建的進程 436
3.4.4 小結(jié) 437
3.5 NUMA調(diào)度器 438
3.5.1 node和page的關(guān)系 439
3.5.2 掃描進程 441
3.5.3 NUMA缺頁中斷 442
3.5.4 進程遷移 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 喚醒進程 480
3.6.4 CPU動態(tài)調(diào)頻 491
3.6.5 小結(jié) 494
3.7 實時調(diào)度 496
3.8 最新更新與展望 500
3.8.1 進程管理更新 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實現(xiàn) 509
4.2.2 spinlock變種 511
4.2.3 spinlock和raw_spin_lock 512
4.3 信號量 513
4.3.1 信號量 513
4.3.2 小結(jié) 516
4.4 Mutex互斥體 517
4.4.1 MCS鎖機制 518
4.4.2 Mutex鎖的實現(xiàn) 525
4.4.3 小結(jié) 531
4.5 讀寫鎖 531
4.5.1 讀者信號量 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è)計 551
4.6.3 小結(jié) 573
4.7 內(nèi)存管理中的鎖 574
4.8 最新更新與展望 584
4.8.1 Queued Spinlock 584
4.8.2 讀寫信號量優(yōu)化 591
4.8.3 展望 592
4.8.4 推薦書籍 593
第5章 中斷管理 594
本章思考題 594
5.1 Linux中斷管理機制 595
5.1.1 ARM中斷控制器 595
5.1.2 硬件中斷號和Linux中斷號的映射 599
5.1.3 注冊中斷 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工作隊列 650
5.3.1 初始化工作隊列 652
5.3.2 創(chuàng)建工作隊列 659
5.3.3 調(diào)度一個work 665
5.3.4 取消一個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運行ARM Linux內(nèi)核 684
6.1.2 QEMU調(diào)試ARM Linux內(nèi)核 687
6.1.3 QEMU運行ARMv8開發(fā)平臺 688
6.1.4 文件系統(tǒng)支持 690
6.1.5 圖形化調(diào)試 691
6.1.6 實驗進階 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 動態(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)存檢測 714
6.4.1 slub_debug 714
6.4.2 內(nèi)存泄漏檢測kmemleak 718
6.4.3 kasan內(nèi)存檢測 720
6.5 死鎖檢測 722
6.6 內(nèi)核調(diào)試秘籍 728
6.6.1 printk 728
6.6.2 動態(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) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號