1. 内核基础与架构
- 内核职责
- 进程调度
- 内存管理
- 文件系统
- 设备驱动
- 网络通信
- 系统调用接口
- 内核架构
- 内核空间 vs 用户空间
- 内核源码树结构
/arch: 体系结构相关代码/drivers: 设备驱动程序/fs: 文件系统/include: 头文件/init: 内核初始化/kernel: 核心子系统/mm: 内存管理/net: 网络栈
2. 核心子系统
- 进程管理
- 进程描述符
struct task_struct - 进程状态
- 进程创建 (
fork, vfork, clone) - 进程调度器
- 内核线程
- 内存管理
- 虚拟内存
- 分页与页表
- 物理内存管理: 伙伴系统、SLAB/SLUB分配器
- VMAs
- 页缓存
- 内存回收
- 文件系统
- VFS
- 索引节点
- 目录项缓存
- 具体文件系统: ext4, XFS, Btrfs
- 设备驱动
- 三类设备
- 驱动模型
- 设备树
sysfs, procfs, debugfs
- 网络栈
- 套接字
- 协议栈: TCP, UDP, IP
- 网络设备驱动
- Netfilter
3. 内核开发关键技术
- 同步与并发
- 中断处理
- 内核定时器
- 内存分配
kmalloc / kfreevmalloc / vfreeget_free_pages
- 内核调试
printkoops 分析gdb + kgdbstrace / ltraceSystemTapftrace- KASAN, UBSAN
4. 开发流程与社区
- 获取源码
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
- 配置与编译
make menuconfigmake -jN- 交叉编译
- 代码风格
- 遵循
Linux Kernel Coding Style
- 提交补丁
git format-patch- 邮件列表提交
- 回应评审意见
5. 重要概念与机制
- 模块机制
insmod, rmmod, modprobe- 模块初始化与退出
- Syscall
- Kconfig 与 Makefile
- 容器与虚拟化支持