> For the complete documentation index, see [llms.txt](https://s3.shizhz.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://s3.shizhz.me/linux-sched/history/cfs.md).

# 2.3.8 CFS

内核在2.6.23版中引入了CFS(Completely Fair Scheduler)以取代O(1)调度器，CFS吸取了RSDL中关于公平调度的思想，着力于改善调度器在交互性与公平性两方面的性能。CFS 的设计思路发生了很大的变化，完全切换了一个方向来思考“公平”这件事情。调度器抛弃了基于时间片来划分调度周期的做法，引入了vruntime(虚拟时间) 的概念来度量公平，并使用红黑树来管理任务；同时该版本也引入了\[\[调度类 - Sched Class]\[调度类]]的概念，从而将调度器的实现模块化，从此以后内核引入新调度器的难度大为降低。

CFS现在依然是内核的核心，所有普通类任务（SCHED\_NORMAL）的调度都是CFS来完成的。除此之外，基于调度类的思想内核还实现了其他调度器，例如Deadline调度器与RT调度器，在后续章节中我们会逐一详细介绍。
