更新时间:2021-02-08 16:43:28
封面
版权信息
内容提要
序一
序二
前言
资源与支持
第1章 Linux系统入门
1.1 Linux的发展历史
1.2 Linux发行版
1.3 Linux内核
1.4 如何学习Linux内核
1.5 Linux内核实验入门
第2章 Linux内核基础知识
2.1 Linux常用的编译工具
2.2 Linux内核中常用的C语言技巧
2.3 Linux内核中常用的数据结构和算法
2.4 Vim工具的使用
2.5 git工具的使用
2.6 实验
第3章 内核编译和调试
3.1 内核配置
3.2 实验1:通过QEMU调试ARM Linux内核
3.3 实验2:通过QEMU调试ARMv8的Linux内核
3.4 实验3:通过Eclipse+QEMU单步调试内核
3.5 实验4:在QEMU中添加文件系统的支持
第4章 内核模块
4.1 从一个内核模块开始
4.2 模块参数
4.3 符号共享
4.4 实验
第5章 简单的字符设备驱动
5.1 实验1:从一个简单的字符设备开始
5.2 字符设备驱动详解
5.3 实验2:使用misc机制来创建设备
5.4 一个简单的虚拟设备
5.5 阻塞I/O和非阻塞I/O
5.6 I/O多路复用
5.7 实验8:为什么不能唤醒读写进程
5.8 实验9:向虚拟设备中添加异步通知
5.9 本章小结
第6章 系统调用
6.1 系统调用概念
6.2 实验
第7章 内存管理
7.1 从硬件角度看内存管理
7.2 从软件角度看内存管理
7.3 物理内存管理
7.4 虚拟内存管理
7.5 缺页异常
7.6 内存短缺
7.7 内存管理实验
第8章 进程管理
8.1 进程
8.2 进程的创建和终止
8.3 进程调度
8.4 多核调度
8.5 实验
第9章 同步管理
9.1 原子操作与内存屏障
9.2 自旋锁机制
9.3 信号量
9.4 互斥体
9.5 读写锁
9.6 RCU
9.7 等待队列
9.8 实验
第10章 中断管理
10.1 Linux中断管理机制
10.2 软中断和tasklet
10.3 工作队列机制
10.4 实验
第11章 调试和性能优化
11.1 printk和动态输出
11.2 proc和debugfs
11.3 ftrace
11.4 实验10:分析oops错误
11.5 perf性能分析工具
11.6 内存检测
11.7 实验17:kdump
11.8 性能和测试
第12章 开源社区
12.1 什么是开源社区
12.2 参与开源社区
12.3 实验1:使用cppcheck检查代码
12.4 实验2:提交第一个Linux内核补丁
12.5 实验3:管理和提交多个补丁组成的补丁集
12.6 实验4:在Gitee中创建一个开源项目
参考文献