这一篇在干嘛?
这是「Linux内核」大分类的入口。《深入理解 Linux 内核》第三版(Understanding the Linux Kernel, 3rd Edition,俗称 ULK3)是内核入门的经典教材,以 Linux 2.6 内核为蓝本,把内核的每个子系统从硬件机制讲到代码实现。本系列按原书章节逐章精讲,面向初学者展开——不逐句翻译原文,而是讲清「是什么 / 为什么 / 不懂会怎样」。
📚 章节目录
《深入理解 Linux 内核》第三版(ULK3)全书 22 章逐章精讲,每章独立成篇,含原书插图、数据结构图解、代码走读、常见坑与自测题。以 Linux 2.6 内核为蓝本讲透内核工作原理,入门建议按 lk01 → lk12 顺序通读,13 章之后可按子系统按需选读。
| 章节 | 主题 | 重点 |
|---|---|---|
| lk01 | 导论 | 操作系统与 Unix 基础概念、内核架构、进程/内存/文件管理总览 |
| lk02 | 内存寻址 | 段机制与分页、GDT/LDT、TLB、内核页表的建立 |
| lk03 | 进程 | 进程描述符 task_struct、进程切换 switch_to、fork/clone、内核线程 |
| lk04 | 中断和异常 | APIC/IDT 硬件机制、异常处理、软中断/tasklet/work queue |
| lk05 | 内核同步 | 自旋锁、信号量、RCU、seqlock 与竞态条件防范 |
| lk06 | 时间测量 | RTC/TSC/PIT 时钟源、jiffies、动态定时器与延时函数 |
| lk07 | 进程调度 | O(1) 调度器、时间片与动态优先级、实时调度、SMP 负载均衡 |
| lk08 | 内存管理 | 页框管理、NUMA/内存区域、伙伴系统、slab 分配器 |
| lk09 | 进程地址空间 | mm_struct 与内存区域、缺页异常处理、写时复制与堆管理 |
| lk10 | 系统调用 | int 0x80/sysenter 进入路径、参数校验、异常表与内核包装函数 |
| lk11 | 信号 | 信号产生/交付/捕捉全流程、信号队列数据结构、相关系统调用 |
| lk12 | 虚拟文件系统 | VFS 四大对象 superblock/inode/dentry/file、路径查找与挂载 |
| lk13 | I/O 体系结构和设备驱动 | sysfs/kobject 设备模型、字符设备驱动、I/O 共享内存与 DMA |
| lk14 | 块设备驱动程序 | 通用块层与 bio、I/O 调度器四种电梯、gendisk 与请求队列 |
| lk15 | 页缓存 | address_space 与 radix tree、buffer head、pdflush 脏页回写 |
| lk16 | 访问文件 | 文件读写路径、预读算法、mmap 内存映射、直接 I/O 与异步 I/O |
| lk17 | 回收页框 | PFRA 算法、反向映射、LRU 链表、kswapd、swap 与 OOM killer |
| lk18 | Ext2 和 Ext3 文件系统 | Ext2 磁盘/内存数据结构、块寻址与文件洞、Ext3 日志 JBD |
| lk19 | 进程通信 | 管道与 FIFO、System V IPC(信号量/消息队列/共享内存) |
| lk20 | 程序执行 | execve 全流程、ELF 可执行格式、动态链接与进程凭据 |
| lk21 | 系统启动 | 从 BIOS 到 GRUB、setup( )、startup_32( ) 到 start_kernel( ) |
| lk22 | 模块 | module 加载/卸载、符号导出、模块依赖与 kmod 按需加载 |