Linux内核完全注释
原始文件: /books/linux/Linux内核完全注释/Linux内核完全注释.pdf
作者: 赵炯
页数: 652页
文件大小: 5.15MB
处理日期: 2026-09-02
处理方法: pdf-inspector文本提取
书籍概要
《Linux内核完全注释》是赵炯博士撰写的经典Linux内核入门教材,以Linux 0.11版本(实际为0.95版)的完整源代码为基础,对每一行代码进行了详细注释和说明。本书最大的特色是不选择性地讲解,而是完整地解剖了整个内核,让读者能够从零开始理解一个操作系统的完整运作机制。
核心主题
1. Linux内核发展历程
- 1991年10月5日Linus发布Linux 0.01版
- 从0.01→0.02→0.03→…→0.11→0.95→1.0的发展脉络
- 选择0.11/0.95版作为学习对象的原因:代码量小(约2万行)、功能完整、易于理解
2. Linux内核架构
- 内核模式: 用户模式 vs 内核模式
- 系统体系结构: 单体内核设计
- 中断机制: 软中断、硬中断、系统调用
- 进程管理: 进程调度、进程控制块(task_struct)
- 内存管理: 分页机制、物理内存分配
- 文件系统: MINIX文件系统实现
3. 内核源代码组织结构
linux/
├── boot/ # 引导程序
├── fs/ # 文件系统
├── include/ # 头文件
│ ├── asm/ # 体系结构相关
│ ├── linux/ # Linux特有头文件
│ └── sys/ # 系统头文件
├── init/ # 初始化程序
├── kernel/ # 内核核心代码
│ ├── blk_drv/ # 块设备驱动
│ ├── chr_drv/ # 字符设备驱动
│ └── math/ # 数学协处理器
├── lib/ # 库函数
└── tools/ # 构建工具
关键章节内容
第3章 引导启动程序(BOOT)
- BOOTSECT.S: 引导扇区,512字节,从磁盘加载SETUP
- SETUP.S: 硬件检测,设置系统参数
- HEAD.S: 保护模式切换,初始化全局描述符表(GDT)
第4章 初始化程序(INIT)
- MAIN.C: 系统初始化,创建init进程
- 环境变量设置
- 根文件系统挂载
第5章 内核代码(KERNEL)
- ASM.S: 系统调用入口
- TRAPS.C: 异常处理(页错误、除法错误等)
- SCHED.C: 进程调度算法(时间片轮转)
- SIGNAL.C: 信号处理
- FORK.C: 进程创建
- SYS.C: 系统调用实现
第6章 块设备驱动程序
- HD.C: 硬盘驱动(IDE接口)
- FLOPPY.C: 软盘驱动
- RAMDISK.C: 内存盘驱动
- LL_RW_BLK.C: 块设备层核心
第7章 字符设备驱动程序
- KEYBOARD.S: 键盘驱动
- CONSOLE.C: 控制台驱动(支持多虚拟终端)
- SERIAL.C: 串行口驱动
第9章 文件系统(FS)
- BUFFER.C: 缓冲区管理
- INODE.C: i节点管理
- NAMEI.C: 路径名解析
- READ_WRITE.C: 文件读写
- EXEC.C: 程序执行(a.out格式)
第10章 内存管理(MM)
- MEMORY.C: 物理内存管理
- PAGE.S: 页表管理(汇编实现)
重要概念
进程控制块(task_struct)
struct task_struct {
long state; // 进程状态
long counter; // 时间片
long priority; // 优先级
long stack; // 内核栈指针
unsigned long pid; // 进程ID
// ... 更多字段
};进程状态
- TASK_RUNNING: 运行状态
- TASK_INTERRUPTIBLE: 可中断等待
- TASK_UNINTERRUPTIBLE: 不可中断等待
- TASK_ZOMBIE: 僵尸进程
系统调用表
Linux 0.11支持22个系统调用,包括fork、exec、exit、wait、open、close、read、write等。
中断处理
- NR_syscalls: 系统调用数量
- system_call: 系统调用入口
- 中断描述符表(IDT)管理
实践环境
编译环境
- 使用BOCHS模拟器运行Linux 0.11
- 需要gcc、gas、GNU binutils等工具链
- 创建磁盘镜像文件
实验方法
- 修改内核源代码
- 重新编译生成新内核
- 在BOCHS中运行测试
- 通过打印信息观察内核行为
学习价值
- 代码量适中: 约2万行代码,适合深入学习
- 完整性: 覆盖进程、内存、文件系统、设备驱动等核心子系统
- 注释详尽: 每个文件、每个函数都有中文注释
- 实用性强: 可直接编译运行,便于实验验证
与其他资料关联
- LINUX内核源代码情景分析-毛德操胡希明 - 以2.4/2.6内核为基础的进阶教材
- Linux内核设计与实现-第3版 - Robert Love著,面向2.6内核的现代入门教材
- Linux设备驱动程序(第3版) - 设备驱动开发经典参考书
备注
本书是Linux内核学习的经典入门读物,特别适合想要从零理解操作系统内部工作机制的读者。虽然基于早期内核版本,但核心概念与现代Linux内核一脉相承。建议配合实际编译运行实验进行学习。