Linux 内核源码分析:基于最新的 Linux 4.0 内核(学习路线总结)
今天给大家分享的是基于最新的 Linux 4.0 内核学习路线总结,本文由 8 个专题组成,文末附上学习路线思维导图。
一、进程管理专题
1、进程原理
1.1 进程生命周期
1.2 task_struct 结构
1.3 进程优先级
1.4 进程系统调用
2、 进程调度机制
2.1 调度器实现 schedule()
2.2 完全公平调度类 CFS
2.3 实时调度类原理
2.4 多核模式调度 SMP
3、进程竞争机制
3.1 RCU 机制原理
3.2 内存优化与屏障
3.3 大内核锁
3.4 per_CPU 计数器
4、进程系统调用
4.1 写时复制原理
4.2 进程内存布局
4.3 进程堆栈管理
4.4 系统调用实现流程
![](https://static001.geekbang.org/infoq/9b/9b43e3c28ef2323989f935ec559d9434.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
二、内存管理专题
1、内存原理
1.1 (N)UMA 模型组织
1.2 页表原理
1.3 处理器高速缓存
2、TLB 工作原理
2.1 物理内存
2.2 伴伙算法
2.3 slab/slub/slob 分配器
2.4 内存映射
2.5 分配器原理
2.6 不连续页原理
3、虚拟内存
3.1 进程内存映射
3.2 进程堆栈管理
3.3 用户空间缺页异常
3.4 内核空间与用户空间
4、内存系统调用
4.1 kmalloc/vmaloc
4.2 BRK
4.3 内存池机制
4.4 内存优化
![](https://static001.geekbang.org/infoq/a2/a2431594d88cacd54606aaacbededdf9.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
三、设备驱动专题
1、设备子系统原理
1.1 字符设备子系统
1.2 块设备子系统
1.3 网络适配器子系统
1.4 I/O 原理
2、字符设备驱动
2.1 file_operations 原理
2.2 系统调用流程
2.3 ioctl 流程
2.4 请求中断
3、 块设备驱动
3.1 资源管理
3.2 I/O 调度
3.3 BIO 结构原理
3.4 PCI 总线原理
4、网卡设备驱动
4.1 net_device/net_device_ops
4.2 sk_buff 原理
4.2 网卡数据中断
4.4 网络适配器映射
5、内核模块架构
5.1 模块添加与删除
5.2 自动化与热插拔
5.3 主从设备号
5.4 版本控制
![](https://static001.geekbang.org/infoq/ee/eee0f8c16607568562c0aa07802fa2f8.png)
四、网络协议专题
1、网络系统架构
1.1 接收缓冲区
1.2 发送缓冲区
1.3 netfilter
1.4 iptables
2、网络协议栈
2.1 TCP/UDP
2.2 TCP 控制块
2.3 IP 协议
2.4 netlink 机制
3、系统 API
3.1 POSIX 网络 API
3.2 epoll 实现原理
3.3 socket 初始化
3.4 网络系统参数设置
![](https://static001.geekbang.org/infoq/6a/6a849ba3cdbdae88c4229bfe3ba2c27c.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
五、内核组件专题
1、时间管理
1.1 通用时间子系统
1.2 高分辨率定时器
1.3 动态时钟结构
1.4 定时器系统调用实现
2、系统缓存
2.1 页缓存实现
2.2 块缓存实现
3、数据同步
3.1 数据同步原理
3.2 inode 同步与拥塞
3.3 强制回写与完全同步
![](https://static001.geekbang.org/infoq/e4/e4a57909b1ef581f13bed30f7a8fd8c0.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
六、文件系统专题
1、虚拟文件系统 VFS
1.1 通用文件模型
1.2 VSF 结构
1.3 文件操作系统调用
1.4 file/inode 原理
2、无存储文件系统
2.1 proc 文件系统
2.11 文件系统数据结构
2.12 管理/proc 数据项
2.13 系统控制机制
2.2 sysfs 文件分析
2.21 sysfs 数据结构
2.22 装载文件系统
2.23 文件目录 操作
2.24 向 sysfs 增加数据
3、磁盘文件系统
3.1 Ext2 文件系统
3.2 Ext3 文件系统
3.3 Ext4 文件系统
4、用户态文件系统
4.1 FUSE 使用场景
4.2 FUSE 原理
4.3 FUSE 实现
4.4 用户态文件接口实现
![](https://static001.geekbang.org/infoq/61/61b3c586df262344e4b31ce56c20a4a3.png)
七、内核项目实战专题
1、手把手实现进程间通信
2、网络适合器实现
3、无存储文件系统实现
4、为内核添加自己系统调用
5、添加进程调度器
6、用户态文件系统实现
7、为内核防火墙做贡献之 iptables
8、用 slab 实现内存池
9、内核定制化系统
10、向 VFS 添加自定义文件系统
![](https://static001.geekbang.org/infoq/71/71061ebedc4d110df11feb76336f51b7.png)
八、Linux 内核学习参考书籍
1、《深入理解 LINUX 内核》 第三版 [美] 博韦等著
2、《Linux 设备驱动开发详解》 宋宝华 编著
3、《Linux 内核设计与实现》 原书第 3 版 拉芙 (RobertLove) 著
4、《深入理解 LINUX 网络内幕》 [意] Benvenuti 著
5、《Linux 设备驱动程序》 [美] 科波特(Corbet J.) 著
![](https://static001.geekbang.org/infoq/d6/d6bb71a04a5b14959554801f85b3f3a4.png)
这份是整理的学习路线思维导图,下面有 Linux 内核相关视频学习资料:
![](https://static001.geekbang.org/infoq/f4/f4946ab8e506d71aa6c9975adf7c0417.png)
Linux 内核相关学习视频,清晰版导图可以点击:学习资料 获取
![](https://static001.geekbang.org/infoq/8d/8de0286d16afe832c3f09c1bbf3703a2.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
评论