奔跑吧 Linux内核

奔跑吧 Linux内核

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

编辑推荐

本书内容丰富,讲解清晰透彻,不仅适合有一定Linux相关基础的人员,包括从事与Linux相关的开发人员、操作系统的研究人员、嵌入式开发人员及Android底层开发人员等学习和使用,而且适合作为对Linux感兴趣的程序员的学习用书,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。

内容简介

本书内容基于Linux 4.x内核,主要选取了Linux内核中比较基本和常用的内存管理、进程管理、并发与同步,以及中断管理这4个内核模块进行讲述。全书共分为6章,依次介绍了ARM体系结构、Linux内存管理、进程调度管理、并发与同步、中断管理、内核调试技巧等内容。本书的每节内容都是一个Linux内核的话题或者技术点,读者可以根据每小节前的问题进行思考,进而围绕问题进行内核源代码的分析。

本书内容丰富,讲解清晰透彻,不仅适合有一定Linux相关基础的人员,包括从事与Linux相关的开发人员、操作系统的研究人员、嵌入式开发人员及Android底层开发人员等学习和使用,而且适合作为对Linux感兴趣的程序员的学习用书,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。

作者简介

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

章节目录

版权信息

内容提要

推荐序一

推荐序二

推荐序三

推荐序四

对本书的赞誉

前言

Linux内核奔跑卷

第1章 处理器体系结构

第2章 内存管理

2.1 物理内存初始化

2.1.1 内存管理概述

2.1.2 内存大小

2.1.3 物理内存映射

2.1.4 zone初始化

2.1.5 空间划分

2.1.6 物理内存初始化

2.2 页表的映射过程

2.2.1 ARM32页表映射

2.2.2 ARM64页表映射

2.3 内核内存的布局图

2.3.1 ARM32内核内存布局图

2.3.2 ARM64内核内存布局图

2.4 分配物理页面

2.4.1 伙伴系统分配内存

2.4.2 释放页面

2.4.3 小结

2.5 slab分配器

2.5.1 创建slab描述符

2.5.2 分配slab对象

2.5.3 释放slab缓冲对象

2.5.4 kmalloc分配函数

2.5.5 小结

2.6 vmalloc

2.7 VMA操作

2.7.1 查找VMA

2.7.2 插入VMA

2.7.3 合并VMA

2.7.4 红黑树例子

2.7.5 小结

2.8 malloc

2.8.1 brk实现

2.8.2 VM_LOCK情况

2.8.3 小结

2.9 mmap

2.9.1 mmap概述

2.9.2 小结

2.10 缺页中断处理

2.10.1 do_page_fault()

2.10.2 匿名页面缺页中断

2.10.4 写时复制

2.10.5 小结

2.11 page引用计数

2.11.1 struct page数据结构

2.11.2 _count和_mapcount的区别

2.11.3 页面锁PG_Locked

2.11.4 小结

2.12 反向映射RMAP

2.12.1 父进程分配匿名页面

2.12.2 父进程创建子进程

2.12.3 子进程发生COW

2.12.4 RMAP应用

2.12.5 小结

2.13 回收页面

2.13.1 LRU链表

2.13.2 kswapd内核线程

2.13.3 balance_pgdat函数

2.13.4 shrink_zone函数

2.13.5 shrink_active_list函数

2.13.6 shrink_inactive_list函数

2.13.7 跟踪LRU活动情况

2.13.8 Refault Distance算法

2.13.9 小结

2.14 匿名页面生命周期

2.14.1 匿名页面的诞生

2.14.2 匿名页面的使用

2.14.3 匿名页面的换出

2.14.4 匿名页面的换入

2.14.5 匿名页面销毁

2.15 页面迁移

migrate_pages()函数

2.16 内存规整(memory compaction)

2.16.1 内存规整实现

2.16.2 小结

2.17 KSM

2.17.1 KSM实现

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

2.17.3 小结

2.18 Dirty COW内存漏洞

2.19 总结内存管理数据结构和API

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

2.19.2 内存管理中常用API

2.20 最新更新和展望

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

2.20.2 OOM Killer改进

2.20.3 swap优化

2.20.4 展望

第3章 进程管理

本章思考题

3.1 进程的诞生

3.1.1 init进程

3.1.2 fork

3.1.3 小结

3.2 CFS调度器

3.2.1 权重计算

3.2.2 进程创建

3.2.3 进程调度

3.2.4 scheduler tick

3.2.5 组调度

3.2.6 PELT算法改进

3.2.7 小结

3.3 SMP负载均衡

3.3.1 CPU域初始化

3.3.2 SMP负载均衡

3.3.3 唤醒进程

3.3.4 调试

3.3.5 小结

3.4 HMP调度器

3.4.1 初始化

3.4.2 HMP负载调度

3.4.3 新创建的进程

3.4.4 小结

3.5 NUMA调度器

3.5.1 node和page的关系

3.5.2 扫描进程

3.5.3 NUMA缺页中断

3.5.4 进程迁移

3.5.5 小结

3.6 EAS绿色节能调度器

3.6.1 能效模型

3.6.2 WALT算法

3.6.3 唤醒进程

3.6.4 CPU动态调频

3.6.5 小结

3.7 实时调度

低延迟例子

3.8 最新更新与展望

3.8.1 进程管理更新

3.8.2 展望

第4章 并发与同步

本章思考题

4.1 原子操作与内存屏障

4.1.1 原子操作

4.1.2 内存屏障

4.2 spinlock

4.2.1 spinlock实现

4.2.2 spinlock变种

4.2.3 spinlock和raw_spin_lock

4.3 信号量

4.3.1 信号量

4.3.2 小结

4.4 Mutex互斥体

4.4.1 MCS锁机制

4.4.2 Mutex锁的实现

4.4.3 小结

4.5 读写锁

4.5.1 读者信号量

4.5.2 写者锁

4.5.3 小结

4.6 RCU

4.6.1 经典RCU和Tree RCU

4.6.2 Tree RCU设计

4.6.3 小结

4.7 内存管理中的锁

4.8 最新更新与展望

4.8.1 Queued Spinlock

4.8.2 读写信号量优化

4.8.3 展望

4.8.4 推荐书籍

第5章 中断管理

本章思考题

5.1 Linux中断管理机制

5.1.1 ARM中断控制器

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

5.1.3 注册中断

5.1.4 ARM底层中断处理

5.1.5 高层中断处理

5.1.6 小结

5.2 软中断和tasklet

5.2.1 SoftIRQ软中断

5.2.2 tasklet

5.2.3 local_bh_disable/local_bh_enable

5.2.4 小结

5.3 workqueue工作队列

5.3.1 初始化工作队列

5.3.2 创建工作队列

5.3.3 调度一个work

5.3.4 取消一个work

5.3.5 和调度器的交互

5.3.6 小结

第6章 内核调试

6.1 QEMU调试Linux内核

6.1.1 QEMU运行ARM Linux内核

6.1.2 QEMU调试ARM Linux内核

6.1.3 QEMU运行ARMv8开发平台

6.1.4 文件系统支持

6.1.5 图形化调试

6.1.6 实验进阶

6.2 ftrace

6.2.1 irqs跟踪器

6.2.2 preemptoff跟踪器

6.2.3 preemptirqsoff跟踪器

6.2.4 function跟踪器

6.2.5 动态ftrace

6.2.6 事件跟踪

6.2.7 添加tracepoint

6.2.8 trace-cmd和kernelshark

6.2.9 trace marker

6.2.10 小结

6.3 SystemTap

6.4 内存检测

6.4.1 slub_debug

6.4.2 内存泄漏检测kmemleak

6.4.3 kasan内存检测

6.5 死锁检测

6.6 内核调试秘籍

6.6.1 printk

6.6.2 动态打印

6.6.3 RAM Console

6.6.4 OOPS分析

6.6.5 BUG_ON()和WARN_ON()

欢迎来到异步社区!

奔跑吧 Linux内核是2017年由人民邮电出版社出版,作者张天飞。

得书感谢您对《奔跑吧 Linux内核》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
Linux操作系统(第3版) 电子书
以RedHat Linux 7为讲解版本,全面讲解linux知识。
Ubuntu Linux 从入门到精通 电子书
《UbuntuLinux从入门到精通》适合Linux初级用户使用,讲述了UbuntuLinux操作系统的系统管理、桌面办公应用、服务器配置等知识,用以辅助更多的用户得心应手地使用Linux操作系统作为桌面办公环境及服务器环境。主要包含UbuntuLinux12.04的安装、配置、桌面应用、系统管理,以及以UbuntuLinux12.04为平台的各种服务器的搭建及配置等内容,从入门到高级应用,从个人
Linux程序设计(第4版) 电子书
最负盛名的Linux程序设计图书。
Linux命令行与shell脚本编程大全(第4版) 电子书
一本关于Linux命令行与shell脚本编程的系统性教程。
系统架构设计 电子书
适读人群:立志向系统架构师转型的广大开发人员本书包含作者基于自身在传统以及互联网行业多年的技术与管理工作经历展开论述,结合方法论和工程实践,具有较强的针对性和适用性,能帮助读者了解并掌握迈向架构师所需的各种知识体系和实践技巧。本书在介绍技术以及过程管理的内容时,采用“思路à方法论à工程实践”的三段式模型,不光告诉读者可以怎么做,更重要的是提供了对问题的分析以及解决思路和方法论,并辅以相应的工程实践和案例分析。本书从“向架构师转型”的角度出发,关注于转型这个特定主题给出了作者自身的一些思考和总结,从内容上填补了市场上的这一空白。