《奔跑吧Linux内核》 即将和大家见面,敬请关注!

敬请关注《奔跑吧Linux内核》,即将和大家见面。

微信号:runninglinuxkernel

微博/微信公众号:奔跑吧Linux内核

github: https://github.com/figozhang/Running-LinuxKernel

详情请点击

奔跑吧 – Linux内核... 1

致敬经典...3

致 谢... 6

Linux内核奔跑卷...12

第1章  ARM体系结构... 15

第2章 内存管理... 44

本章思考题...44

2.1 物理内存初始化... 48

2.1.1 内存管理概述... 48

2.1.2 内存大小... 49

2.1.3 物理内存映射... 50

2.1.4 zone初始化... 52

2.1.5 空间划分... 56

2.1.6物理内存初始化...57

2.2 页表的映射过程... 64

2.2.1 ARM32页表映射... 64

2.2.2 ARM64页表映射... 73

2.3 内核内存的布局图... 81

2.3.1 ARM32内核内存布局图... 81

2.3.2 ARM64内核内存布局图... 85

2.4 分配物理页面... 88

2.4.1 伙伴系统分配内存... 88

2.4.2 释放页面... 101

2.4.3 小结... 105

2.5 slab分配器... 106

2.5.1 创建slab描述符... 107

2.5.2 分配slab对象... 118

2.5.3 释放slab缓冲对象... 124

2.5.4kmalloc分配函数...127

2.5.5 小结... 128

2.6 vmalloc. 130

2.7 VMA操作... 138

2.7.1查找VMA..139

2.7.2 插入VMA.. 141

2.7.3 合并VMA.. 146

2.7.4 红黑树例子... 148

2.7.5 小结... 150

2.8 malloc. 151

2.8.1 brk实现... 151

2.8.2VM_LOCK情况...156

2.8.4 小结... 165

2.9 mmap. 168

2.9.1 mmap概述... 168

2.9.2 mmap小节... 170

2.10 缺页中断处理... 173

2.10.1do_page_fault()174

2.10.2 匿名页面缺页中断... 182

2.10.3 文件映射缺页中断... 186

2.10.4 写时复制... 192

2.10.5小结...200

2.11 page引用计数... 202

2.11.1struct page数据结构... 202

2.11.2_count和_mapcount的区别...206

2.11.3 页面锁PG_Locked. 209

2.11.4 小结... 210

2.12 反向映射RMAP. 211

2.12.1父进程分配匿名页面...211

2.12.2 父进程创建子进程... 216

2.12.3子进程发生COW...219

2.12.4 RMAP应用... 219

2.12.5小结...221

2.13 回收页面... 223

2.13.1 LRU链表... 223

2.13.2kswapd内核线程...235

2.13.3balance_pgdat函数...238

2.13.4shrink_zone函数...247

2.13.5shrink_active_list函数...252

2.13.6shrink_inactive_list函数...256

2.13.7 跟踪LRU活动情况... 262

2.13.8Refault Distance算法... 262

2.13.9小结...267

2.14 匿名页面生命周期... 270

2.14.1 匿名页面的诞生... 270

2.14.2 匿名页面的使用... 271

2.14.3 匿名页面的换出... 271

2.14.4 匿名页面的换入... 272

2.14.5 匿名页面销毁... 272

2.15 页面迁移... 274

2.15.1migrate_pages()函数...274

2.15.2 页迁移的应用... 281

2.16 内存规整(memory compaction)... 283

2.16.1 内存规整实现... 283

2.16.2 小结... 292

2.17 KSM... 294

2.17.1 KSM实现... 294

2.17.2 匿名页面和KSM页面的区别... 312

2.17.3 小结... 315

2.18 2016年最火的内存漏... 317

2.19 内存管理数据结构和API331

2.19.1 内存管理数据结构的关系图... 331

2.19.2 内存管理中常用API333

2.20最新更新和展望...337

2.20.1 页面回收策略从zone迁移到node. 337

2.20.2 OOMKiller改进... 338

2.20.3 swap优化... 339

2.20.4 展望... 340

第3章  进程管理... 341

本章思考题...341

3.1 进程的诞生... 343

3.1.1 init进程... 343

3.1.2 fork. 347

3.1.3小结...366

3.2 CFS调度器... 368

3.2.1权重计算...369

3.2.2进程创建...382

3.2.3进程调度...392

3.2.4scheduler tick. 402

3.2.5组调度...404

3.2.6 PELT算法改进... 409

3.2.7小结...410

3.3 SMP负载均衡... 413

3.3.1 CPU域初始化... 413

3.3.2 SMP负载均衡... 425

3.3.3 唤醒进程... 438

3.3.4 调试... 445

3.3.5 小结... 446

3.4 HMP调度器... 447

3.4.1 初始化... 447

3.4.1 HMP负载调度... 449

3.4.3 新创建的进程... 460

3.4.4 小结... 461

3.5 NUMA调度器... 463

3.5.1 node和page的关系... 464

3.5.2 扫描进程... 465

3.5.3 NUMA缺页中断... 467

3.5.4 进程迁移... 474

3.5.3 总结... 480

3.6 EAS绿色节能调度器... 482

3.6.1 能效模型... 484

3.6.2 WALT算法... 490

3.6.3唤醒进程...505

3.6.4 CPU动态调频... 516

3.6.5 小结... 519

3.7 实时调度... 522

3.7.1低延迟例子...523

3.8 最新更新与展望... 526

3.8.1 进程管理最新更新... 526

3.8.2 展望... 526

第4 章 并发与同步... 527

本章思考题...527

4.1 原子操作与内存屏障... 530

4.1.1 原子操作... 530

4.1.2 内存屏障... 532

4.2 spinlock. 535

4.2.1spinlock实现...535

4.2.2spinlock变种...538

4.2.3 spinlock和raw_spin_lock. 539

4.3 信号量... 540

4.3.1 信号量... 540

4.3.2 小结... 543

4.4 Mutex互斥体... 544

4.4.1 MCS锁机制... 545

4.4.2 Mutex锁的实现... 552

4.4.3 小结... 558

4.5 读写锁... 559

4.5.1 读者信号量... 559

4.5.2写者锁...565

4.5.3 小结... 571

4.6 RCU.. 572

4.6.1 经典RCU和Tree RCU.. 575

4.6.2 TreeRCU设计... 579

4.6.3 小结... 601

4.7 内存管理中的锁... 603

4.8最新更新与展望...612

4.8.1 QueuedSpinlock. 612

4.8.2读写信号量优化...619

4.8.3 展望... 620

4.8.4 推荐书籍... 620

第5章 中断管理... 621

本章思考题...621

5.1 Linux中断管理机制... 623

5.1.1 ARM中断控制器... 623

5.1.2 硬件中断号和Linux中断号的映射... 627

5.1.3 注册中断... 638

5.1.4 ARM底层中断处理... 646

5.1.5 高层中断处理... 654

5.1.6 小结... 663

5.2 软中断和Tasklet. 665

5.2.1SoftIRQ软中断...665

5.2.2Tasklet.670

5.2.3local_bh_disable/local_bh_enable.675

5.2.4小结...676

5.3Workqueue工作队列...679

5.3.1 初始化工作队列... 680

5.3.2创建工作队列...686

5.3.3调度一个work.692

5.3.4 取消一个work. 703

5.3.5 和调度器的交互... 707

5.3.6 小结... 709

第6章  调试... 712

6.1 QEMU调试Linux内核... 712

6.1.1 QEMU运行ARM Linux内核... 712

6.1.2 QEMU调试ARM-Linux内核... 715

6.1.3 QEMU运行ARMv8开发平台... 716

6.1.4 文件系统支持... 718

6.1.5图形化调试...719

6.1.6 实验进阶... 722

6.2 Ftrace. 723

6.3SystemTap.740

6.3.1 ARM上运行SystemTap. 740

6.4 内存检测... 744

6.4.1slub_debug.744

6.4.2内存泄漏检测kmemleak.748

6.4.3 Kasan内存检测... 750

6.5 死锁检测... 753

6.6 内核调试秘籍... 759

6.6.1 printk. 759

6.6.2动态打印...760

6.6.3 RAMConsole. 762

6.6.4 OOPS分析... 762

6.6.5 BUG_ON()和WARN_ON()765

奔跑吧Linux内核最新目录相关推荐

  1. 《奔跑吧 Linux内核》之处理器体系结构

    本文摘自人民邮电出版社异步社区<奔跑吧Linux内核> 第1章 处理器体系结构 京东购书:item.jd.com/12152745.ht- 试读地址:www.epubit.com.cn/b ...

  2. 《奔跑吧linux内核》,《奔跑吧linux内核》配套资源迁移到码云上

    很多小伙伴抱怨<奔跑吧linux内核>的配套O0的内核从github上git clone经常不成功,而且速度很慢,为此笨叔把O0的内核迁移到码上,下载速度是杠杠的.这回大家不用大家下载速度 ...

  3. 《奔跑吧Linux内核》开始预售啦

    <奔跑吧Linux内核>经过了2个多月的等待,已经在几大网店上开启预售啦,预计10~15天后陆续发货啦! 京东预售 亚马逊 异步社区 当当 *全球首发,等您来撸! *全球首本,等您吊打! ...

  4. 奔跑吧Linux内核20题,《奔跑吧Linux内核》奔跑卷答案获取方式

    在阅读<奔跑吧Linux内核>之前,我们请读者用两小时来完成Linux内核奔跑卷,对Linux内核了解程度做简要的了解.奔跑卷仅仅是Linux内核知识的娱乐游戏节目,希望能给读者带来一丝乐 ...

  5. 奔跑吧Linux内核入门篇实验

    第一章 奔跑吧Linux内核入门篇实验4命令记录** export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi- make vexpress_def ...

  6. Linux内核源代码目录树结构

    Linux内核源代码目录树结构. arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内 ...

  7. linux内核注释目录,linux内核完全注释目录

    linux内核完全注释目录 1 linux内核体系: 代码存储结构以及总makefile 2 BOOT程序:把内核从block设备加载到内存并对系统参数进行配置,因此包括磁盘引导汇编程序,获取BIOS ...

  8. 奔跑吧Linux内核初识

    断更新博客有一段时间了.入职两年了一家创业公司,那是真心的累,当然了获得了技术上很大的提升.搞了两年的vr产品,唯一遗憾的是,平台是ST单片机,远离了系统级别的知识.回看刚出校园时的三年计划,和第一年 ...

  9. 奔跑吧linux内核-使用qemu运行linux系统

    安装linux主机相关工具 sudo apt-get install qemu-system-arm libncurses5-dev gcc-aarch64-linux-gnu build-essen ...

最新文章

  1. bash 脚本的自解压流程
  2. es6-Set与Map
  3. 创建和准备Oracle样例数据库
  4. python打印自动换行如何解决_解决python DataFrame 打印结果不换行问题
  5. django之允许外部机器访问
  6. java泛型视频教程_Java泛型快速教程
  7. 环形链表||(Leetcode第142题)
  8. Codeforces Round #114 (Div. 2)
  9. linux 列表看多个文件数量,查看linux默认能最多开启多少个文件数量
  10. Linux下挂载NTFS格式文件系统
  11. iview 按需引入解决加载慢的问题
  12. android 文件转base64 base64字符串转文件 语音留言及语音播放
  13. 39节点含太阳能算例
  14. 鲶鱼效应 互联网倒逼传统金融业转型
  15. 蓝牙文件传输之obex层之上的分析【Android源码解析】
  16. 苹果5完美越狱_iOS 9.3.5如何越狱 iOS 9.3.5免费越狱教程「步骤详解」
  17. 南方cass字体样式设置_统一设置导航条风格和修改字体
  18. 智慧的车联网,是否会让我们失去操控的乐趣?
  19. HTML5+CSS3的学习(一)
  20. 工资计算系统数据流图绘制

热门文章

  1. Java学习之I/O流
  2. 2021-05-06 Python中级Day01
  3. 优质蛋白食物了解一下,有你爱吃的吗?作为早餐很不错,来捡漏了
  4. python反恐精英cs_python下如何查询CS反恐精英的服务器信息
  5. 服务器内存初始化启动进不了系统,服务器内存初始化重新启动
  6. String.split()方法
  7. 使用JSP技术实现百万富翁猜数字游戏
  8. chkdsk /f P:很强大,帮我解决了硬盘写保护的问题
  9. 粒子滤波和蒙特卡洛定位
  10. 早起的鸟儿有虫吃---页面模块上移下移