当前位置:主页 > 书籍配套资源 > Linux内核配套资源
《奔跑吧 Linux内核》配套资源

《奔跑吧 Linux内核》配套资源

  • 更新:2022-12-14
  • 大小:560 MB
  • 类别:Linux内核
  • 作者:张天飞
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

内容简介

本书内容基于Linux 4.x内核,主要选取了Linux内核中比较基本和常用的内存管理、进程管理、并发与同步,以及中断管理这4个内核模块进行讲述。全书共分为6章,依次介绍了ARM体系结构、Linux内存管理、进程调度管理、并发与同步、中断管理、内核调试技巧等内容。本书的每节内容都是一个Linux内核的话题或者技术点,读者可以根据每小节前的问题进行思考,进而围绕问题进行内核源代码的分析。本书内容丰富,讲解清晰透彻,不仅适合有一定Linux相关基础的人员,包括从事与Linux相关的开发人员、操作系统的研究人员、嵌入式开发人员及Android底层开发人员等学习和使用,而且适合作为对Linux感兴趣的程序员的学习用书,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。

作者简介

张天飞,笔名“笨叔叔”。Linux内核爱好者,从事Linux内核和驱动开发十余年,在多家芯片公司从事过手机芯片底层软件开发和客户支持工作。

目录

  • LINUX内核奔跑卷1
  • 第1章 处理器体系结构4
  • 本章思考题4
  • 第2章 内存管理32
  • 本章思考题32
  • 2.1 物理内存初始化36
  • 2.1.1 内存管理概述36
  • 2.1.2 内存大小37
  • 2.1.3 物理内存映射38
  • 2.1.4 zone初始化40
  • 2.1.5 空间划分44
  • 2.1.6 物理内存初始化45
  • 2.2 页表的映射过程51
  • 2.2.1 ARM32页表映射51
  • 2.2.2 ARM64页表映射60
  • 2.3 内核内存的布局图67
  • 2.3.1 ARM32内核内存布局图67
  • 2.3.2 ARM64内核内存布局图70
  • 2.4 分配物理页面72
  • 2.4.1 伙伴系统分配内存72
  • 2.4.2 释放页面85
  • 2.4.3 小结89
  • 2.5 slab分配器90
  • 2.5.1 创建slab描述符91
  • 2.5.2 分配slab对象103
  • 2.5.3 释放slab缓冲对象108
  • 2.5.4 kmalloc分配函数111
  • 2.5.5 小结112
  • 2.6 vmalloc113
  • 2.7 VMA操作120
  • 2.7.1 查找VMA122
  • 2.7.2 插入VMA124
  • 2.7.3 合并VMA129
  • 2.7.4 红黑树例子131
  • 2.7.5 小结133
  • 2.8 malloc133
  • 2.8.1 brk实现134
  • 2.8.2 VM_LOCK情况138
  • 2.8.3 小结148
  • 2.9 mmap150
  • 2.9.1 mmap概述151
  • 2.9.2 小结153
  • 2.10 缺页中断处理155
  • 2.10.1 do_page_fault()157
  • 2.10.2 匿名页面缺页中断165
  • 2.10.3 文件映射缺页中断169
  • 2.10.4 写时复制175
  • 2.10.5 小结183
  • 2.11 page引用计数184
  • 2.11.1 struct page数据结构185
  • 2.11.2 _count和_mapcount的区别188
  • 2.11.3 页面锁PG_Locked192
  • 2.11.4 小结192
  • 2.12 反向映射RMAP192
  • 2.12.1 父进程分配匿名页面193
  • 2.12.2 父进程创建子进程198
  • 2.12.3 子进程发生COW200
  • 2.12.4 RMAP应用201
  • 2.12.5 小结202
  • 2.13 回收页面204
  • 2.13.1 LRU链表204
  • 2.13.2 kswapd内核线程216
  • 2.13.3 balance_pgdat函数219
  • 2.13.4 shrink_zone函数228
  • 2.13.5 shrink_active_list函数233
  • 2.13.6 shrink_inactive_list函数238
  • 2.13.7 跟踪LRU活动情况244
  • 2.13.8 Refault Distance算法244
  • 2.13.9 小结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()函数255
  • 2.16 内存规整(memory compaction)262
  • 2.16.1 内存规整实现263
  • 2.16.2 小结272
  • 2.17 KSM273
  • 2.17.1 KSM实现274
  • 2.17.2 匿名页面和KSM页面的区别293
  • 2.17.3 小结294
  • 2.18 Dirty COW内存漏洞296
  • 2.19 总结内存管理数据结构和API309
  • 2.19.1 内存管理数据结构的关系图309
  • 2.19.2 内存管理中常用API312
  • 2.20 最新更新和展望315
  • 2.20.1 页面回收策略从zone迁移到node315
  • 2.20.2 OOM Killer改进316
  • 2.20.3 swap优化317
  • 2.20.4 展望318
  • 第3章 进程管理319
  • 本章思考题319
  • 3.1 进程的诞生320
  • 3.1.1 init进程321
  • 3.1.2 fork325
  • 3.1.3 小结344
  • 3.2 CFS调度器345
  • 3.2.1 权重计算346
  • 3.2.2 进程创建358
  • 3.2.3 进程调度369
  • 3.2.4 scheduler tick379
  • 3.2.5 组调度382
  • 3.2.6 PELT算法改进386
  • 3.2.7 小结387
  • 3.3 SMP负载均衡389
  • 3.3.1 CPU域初始化389
  • 3.3.2 SMP负载均衡401
  • 3.3.3 唤醒进程415
  • 3.3.4 调试421
  • 3.3.5 小结422
  • 3.4 HMP调度器422
  • 3.4.1 初始化423
  • 3.4.2 HMP负载调度425
  • 3.4.3 新创建的进程436
  • 3.4.4 小结437
  • 3.5 NUMA调度器438
  • 3.5.1 node和page的关系439
  • 3.5.2 扫描进程441
  • 3.5.3 NUMA缺页中断442
  • 3.5.4 进程迁移450
  • 3.5.5 小结455
  • 3.6 EAS绿色节能调度器457
  • 3.6.1 能效模型459
  • 3.6.2 WALT算法465
  • 3.6.3 唤醒进程480
  • 3.6.4 CPU动态调频491
  • 3.6.5 小结494
  • 3.7 实时调度496
  • 3.8 最新更新与展望500
  • 3.8.1 进程管理更新500
  • 3.8.2 展望500
  • 第4章 并发与同步501
  • 本章思考题501
  • 4.1 原子操作与内存屏障503
  • 4.1.1 原子操作503
  • 4.1.2 内存屏障506
  • 4.2 spinlock508
  • 4.2.1 spinlock实现509
  • 4.2.2 spinlock变种511
  • 4.2.3 spinlock和raw_spin_lock512
  • 4.3 信号量513
  • 4.3.1 信号量513
  • 4.3.2 小结516
  • 4.4 Mutex互斥体517
  • 4.4.1 MCS锁机制518
  • 4.4.2 Mutex锁的实现525
  • 4.4.3 小结531
  • 4.5 读写锁531
  • 4.5.1 读者信号量532
  • 4.5.2 写者锁538
  • 4.5.3 小结544
  • 4.6 RCU544
  • 4.6.1 经典RCU和Tree RCU547
  • 4.6.2 Tree RCU设计551
  • 4.6.3 小结573
  • 4.7 内存管理中的锁574
  • 4.8 最新更新与展望584
  • 4.8.1 Queued Spinlock584
  • 4.8.2 读写信号量优化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 小结636
  • 5.2 软中断和tasklet637
  • 5.2.1 SoftIRQ软中断638
  • 5.2.2 tasklet642
  • 5.2.3 local_bh_disable local_bh_enable647
  • 5.2.4 小结649
  • 5.3 workqueue工作队列650
  • 5.3.1 初始化工作队列652
  • 5.3.2 创建工作队列659
  • 5.3.3 调度一个work665
  • 5.3.4 取消一个work675
  • 5.3.5 和调度器的交互680
  • 5.3.6 小结682
  • 第6章 内核调试684
  • 6.1 QEMU调试Linux内核684
  • 6.1.1 QEMU运行ARM Linux内核684
  • 6.1.2 QEMU调试ARM Linux内核687
  • 6.1.3 QEMU运行ARMv8开发平台688
  • 6.1.4 文件系统支持690
  • 6.1.5 图形化调试691
  • 6.1.6 实验进阶693
  • 6.2 ftrace694
  • 6.2.1 irqs跟踪器695
  • 6.2.2 preemptoff跟踪器696
  • 6.2.3 preemptirqsoff跟踪器697
  • 6.2.4 function跟踪器698
  • 6.2.5 动态ftrace699
  • 6.2.6 事件跟踪700
  • 6.2.7 添加tracepoint702
  • 6.2.8 trace-cmd和kernelshark705
  • 6.2.9 trace marker707
  • 6.2.10 小结709
  • 6.3 SystemTap710
  • 6.4 内存检测714
  • 6.4.1 slub_debug714
  • 6.4.2 内存泄漏检测kmemleak718
  • 6.4.3 kasan内存检测720
  • 6.5 死锁检测722
  • 6.6 内核调试秘籍728
  • 6.6.1 printk728
  • 6.6.2 动态打印730
  • 6.6.3 RAM Console731
  • 6.6.4 OOPS分析731
  • 6.6.5 BUG_ON()和WARN_ON()734

资源下载

资源下载地址1:https://box.lenovo.com/l/31LCpn

相关资源

网友留言