最近将要上手内核编程,我决定先从Linux内核的一些重要概念开始,结合源码进行学习。
采用的教材:
- 《Linux内核设计与实现》原书第3版
- 《深入理解Linux内核》第三版
两本书均使用Linux 2.6进行讲解。我阅读的源代码来自微软WSL2源码树,为5.10版本,相较于前者已经发生了显著差异,因此我在笔记中写入的对源码和实现方式的理解均是自己总结而得的,很可能有失正确,还望读者不吝指出、赐教。
笔记中可能还有来自其他版本的源码,我会明确标注其所属版本。未标注的版本一律默认为5.10。
以下为目录:
- 【Linux】内核学习笔记(一)——进程管理
- 【Linux】内核学习笔记(二)——进程调度
- 【Linux】内核学习笔记(三)——系统调用
- 【Linux】内核学习笔记(四)——内核数据结构
- 【Linux】内核学习笔记(五)——中断和中断处理
- 【Linux】内核学习笔记(六)——中断下半部和推后执行的工作
- 【Linux】内核学习笔记(七)——定时器和时间管理
- 【Linux】内核学习笔记(八)——网络栈简介
- 【Linux】内核学习笔记(九)——模块、调试和系统编程基础
- 【Linux】内核学习笔记(十)——内核同步
- 【Linux】内核学习笔记(十一)——内存管理
- 【Linux】内核学习笔记(十二)——虚拟文件系统
- 【Linux】内核学习笔记(十三)——进程地址空间
网络子系统探索:
- 【Linux】网络专题(一)——应用层与套接字层数据通路
- 【Linux】网络专题(二)——核心数据结构sk_buff
- 【Linux】网络专题(三)——L4/L3数据通路
- 【Linux】网络专题(四)——核心数据结构sock族类和net_device
- 【Linux】网络专题(五)——TCP拥塞控制
- 【Linux】网络专题(六)——网络栈重传时机梳理
番外篇: