《LINUX内核源代码情景分析》- 毛德操、胡希明
运行日期: 2026-09-02 | 方法: PDF文本提取(pdftotext) | 状态: done
书籍概要
作者: 毛德操、胡希明
出版社: 浙江大学出版社 (2005年)
页数: 1575页
大小: 6.07MB
版本: Linux内核2.6.x(基于2.4.x分析)
类型: text_based
本书是中国计算机教育领域最具影响力的Linux内核教材之一,由浙江大学毛德操教授和陈浩明教授联合编写。全书以Linux 2.4/2.6内核源代码为基础,采用”源代码+图解+情景分析”的方式,系统讲解了Linux内核的工作原理和实现机制。
核心主题与关键概念
第1章 预备知识
- Linux内核简介: Linux内核发展史、版本命名规则(x.yy.zz,yy为偶数表示稳定版)、内核模块机制
- Intel X86 CPU寻址方式: 实模式、保护模式、分段机制、段选择子、描述符表(GDT/LDT/IDT)
- i386页式内存管理: 四级页表结构(PDP→PD→PT→页)、CR3寄存器、物理地址计算
- 内核C语言代码: 内核代码风格、宏定义技巧(
__init、__setup等) - 内核汇编代码: 系统调用int 0x80、寄存器约定、内联汇编
第2章 存储管理
- 内存管理基本框架: vm_area_struct、区域树、伙伴系统
- 地址映射全过程: 虚拟地址→线性地址→物理地址的转换
- 物理页面管理: 页面分配器、空闲页面链表、页面回收
- 页面换入换出: swap空间管理、页面置换算法(clock算法)
- 内核缓冲区: buffer_head结构、块设备I/O缓冲
- 系统调用brk()和mmap(): 进程堆栈扩展、内存映射
第3章 中断、异常和系统调用
- X86中断硬件支持: 中断向量表IDT、中断门描述符、中断控制器(8259A/APIC)
- 中断响应和服务: 中断处理流程、顶半部与底半部(softirq/tasklet)
- 时钟中断: jiffies变量、定时器管理、周期性中断处理
- 系统调用: syscall系统调用号表、系统调用入口、用户态与内核态切换
第4章 进程与进程调度
- 进程四要素: PCB结构体task_struct、进程状态(运行/就绪/阻塞/僵尸/停止)
- 进程三部曲: 创建(fork/vfork/clone)、执行(execve)、消亡(exit/wait)
- 进程调度: CFS调度器、时间片分配、调度优先级
- 内核互斥操作: 自旋锁、信号量、原子操作
第5章 文件系统
- VFS虚拟文件系统: super_block、inode、dentry、file四大核心结构
- 路径名解析: 从路径到目标节点的过程、目录缓存dcache
- 文件打开与关闭: open/close系统调用、文件描述符管理
- 文件读写: read/write系统调用、页缓存机制
- 特殊文件系统/proc: 伪文件系统、进程信息暴露
第6章 传统的Unix进程间通信
- 管道pipe(): 匿名管道、半双工通信
- 命名管道FIFO: 跨进程通信、永久文件系统
- 信号Signal: 信号种类、信号处理、异步通知
- 消息队列: 进程间消息传递
- 共享内存: 最快的IPC机制、semaphore同步
- 信号量Semaphore: 互斥与同步
第7章 基于Socket的进程间通信
- socket()系统调用: 网络套接字创建
- TCP/IP通信: bind/listen/accept/connect完整流程
- 报文收发: send/recv系统调用、数据拷贝机制
第8章 设备驱动
- 可安装模块: 内核模块加载/卸载、module_init/module_exit
- 块设备驱动: 磁盘I/O、request队列、电梯算法
- 字符设备驱动: 设备文件、file_operations结构
- USB总线: USB设备模型、驱动程序
- select/poll/epoll: 异步I/O模型
- 设备文件系统devfs: 动态设备节点管理
本书特色与价值
- 源码导向: 每个知识点都配以具体源代码片段,从源码层面解释原理
- 情景分析法: 通过”函数调用链”的方式串联代码,形成完整的情景图景
- 图解丰富: 大量图示辅助理解复杂概念(如内存管理、调度器等)
- 覆盖全面: 从底层硬件到上层应用接口,构建完整的内核认知体系
学习建议
- 前置知识: 需要掌握C语言、数据结构、汇编语言基础
- 配套资源: 建议结合《Linux内核完全注释》(赵炯)对照阅读
- 实践建议: 在虚拟机中运行Linux 2.6内核,配合gdb调试深入理解
- 进阶路径: 理解2.6内核后可迁移至4.x/5.x版本,核心架构变化不大