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 系统调用实现流程

二、内存管理专题
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 内存优化

三、设备驱动专题
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 版本控制

四、网络协议专题
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 网络系统参数设置

五、内核组件专题
1、时间管理
1.1 通用时间子系统
1.2 高分辨率定时器
1.3 动态时钟结构
1.4 定时器系统调用实现
2、系统缓存
2.1 页缓存实现
2.2 块缓存实现
3、数据同步
3.1 数据同步原理
3.2 inode 同步与拥塞
3.3 强制回写与完全同步

六、文件系统专题
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 用户态文件接口实现

七、内核项目实战专题
1、手把手实现进程间通信
2、网络适合器实现
3、无存储文件系统实现
4、为内核添加自己系统调用
5、添加进程调度器
6、用户态文件系统实现
7、为内核防火墙做贡献之 iptables
8、用 slab 实现内存池
9、内核定制化系统
10、向 VFS 添加自定义文件系统

八、Linux 内核学习参考书籍
1、《深入理解 LINUX 内核》 第三版 [美] 博韦等著
2、《Linux 设备驱动开发详解》 宋宝华 编著
3、《Linux 内核设计与实现》 原书第 3 版 拉芙 (RobertLove) 著
4、《深入理解 LINUX 网络内幕》 [意] Benvenuti 著
5、《Linux 设备驱动程序》 [美] 科波特(Corbet J.) 著

这份是整理的学习路线思维导图,下面有 Linux 内核相关视频学习资料:

Linux 内核相关学习视频,清晰版导图可以点击:学习资料 获取

评论