source-linux-kernel.md 2.8 KB


tags: [source-summary] type: source source: "Linux内核设计与实现-原理与本质" author: "AI助手" date: 2026-09-19

created: 2026-09-19

Linux内核设计与实现:原理与本质

原始资料:raw/Joplin/深度解析/05-Linux内核设计与实现-原理与本质.md

文档概览

本文档面向初学者,系统讲解Linux内核设计与实现的核心原理,涵盖内核架构、进程调度、内存管理、设备驱动、中断处理等核心子系统。

核心内容

1. 内核架构

  • Linux内核整体架构图(宏内核)
  • 六大子系统:进程调度、内存管理、文件系统、网络、设备驱动、进程间通信
  • 子系统间的协作关系

2. 进程调度(CFS深入)

  • CFS设计哲学:完全公平 = 每个任务获得的CPU时间与其权重成正比
  • vruntime计算:vruntime += 实际运行时间 * (NICE_0_LOAD / 权重)
  • 红黑树组织:左节点vruntime最小,O(log n)调度
  • 五级调度类:stop → dl → rt → fair → idle

3. 内存管理深入

  • 伙伴系统:按2的幂次分配,解决外部碎片
  • slab分配器:预分配小对象,解决内部碎片
  • 页缓存:文件读写先经过页缓存,减少磁盘IO

4. 设备驱动框架

  • 字符设备驱动:cdev + file_operations + inode
  • 设备模型:kobject/kset/ktype,总线-设备-驱动三元组
  • 设备树:DTS/DTB/DTC,of_* API

5. 中断处理框架

  • 上半部(硬中断):快速处理,不能睡眠
  • 下半部:softirq、tasklet、workqueue
  • 线程化中断:threaded irq

6. 设计哲学

  • 为什么CFS用vruntime而不是时间片
  • 为什么需要伙伴系统+slab两层
  • 为什么引入设备树
  • 为什么中断要分上下半部
  • 为什么选红黑树

跨学科对应表

Linux内核设计 操作系统理论 硬件基础 FreeRTOS对应
CFS调度器 进程调度算法 时钟中断 任务调度器
伙伴系统 内存管理 MMU/TLB 内存池
slab分配器 缓存管理 CPU缓存 对象池
页缓存 文件系统缓存 磁盘缓存 无直接对应
设备驱动框架 设备管理 I/O控制器 HAL
中断处理 中断处理 中断控制器 ISR

相关页面

  • [[freertos-task-scheduling|FreeRTOS任务调度]] — 对比实时操作系统调度
  • [[freertos-ipc|FreeRTOS IPC]] — 对比进程间通信机制
  • raw/Joplin/嵌入式+Linux/嵌入式Linux驱动开发实战/02-嵌入式Linux内核基础/04-进程调度与中断管理.md — 更详细的内核实现
  • raw/Joplin/嵌入式+Linux/嵌入式Linux驱动开发实战/03-Linux驱动开发核心/05-中断下半部处理.md — 中断处理详解

关键词

Linux内核 CFS调度器 伙伴系统 slab分配器 设备树 中断处理 红黑树 vruntime