Linux 内核进程调度器深度解析:从 CFS 到实时调度
发布时间:2026-10-18 | 分类:Linux 内核 | 阅读时间:约 15 分钟
1. 调度器概述:操作系统的指挥中心
进程调度器是操作系统内核中最核心的组件之一。它的任务很简单却极其关键:在多个竞争 CPU 的进程中,决定谁获得执行权、获得多长时间。在多任务系统中,进程数量通常远超 CPU 核心数,调度器必须在微秒级完成决策,同时兼顾吞吐量、响应速度、公平性和能耗。
Linux 调度器经历了三代架构演变:
- O(n) 调度器(Linux 2.4):遍历所有进程,时间复杂度 O(n),进程数增加时性能急剧下降
- O(1) 调度器(Linux 2.6.0 ~ 2.6.22):引入优先级数组和每 CPU 运行队列,每个决策 O(1),但交互性检测算法复杂且易被绕过
- CFS 调度器(Linux 2.6.23 ):完全公平调度器,红黑树管理进程,算法复杂度 O(log n),消除时间片概念,通过虚拟运行时间实现理想多任务公平
2. CFS 核心原理:虚拟运行时间(vruntime)
CFS(Completely Fair Scheduler)的设计哲学可以用一句话概括:模拟一个拥有无限个 CPU 的完美多任务系统。在这台理想机器上,每个进程在 1 纳秒内获得 1/N 秒的执行时间(N 为进程数)。CFS 在真实硬件上尽可能逼近这个理想状态。
2.1 vruntime 的计算
每个进程维护一个 vruntime(虚拟运行时间)字段。当进程在 CPU 上执行时,内核以固定频率累加该值:
delta_exec = now-

发表评论 取消回复