type
Post
status
Published
date
Oct 12, 2026
slug
OS1
summary
tags
手写
技术探索
category
手写
icon
password
调度算法 | 核心思想 | 优点 | 缺点 |
FCFS 先来先服务 | 谁先到,谁先执行 | 简单、公平 | 长任务可能阻塞短任务 |
短作业优先 | 优先执行预计运行时间短的任务 | 平均等待时间短 | 长任务可能饥饿,运行时间难预测 |
最短剩余时间优先 | 优先执行剩余时间最短的任务 | 短任务响应快 | 抢占开销大,长任务可能饥饿 |
RR 时间片轮转 | 每个任务轮流执行一个时间片 | 公平、响应较快 | 时间片太短会增加上下文切换开销 |
优先级调度 | 优先级高的先执行 | 适合重要任务 | 低优先级任务可能饥饿 |
多级反馈队列 | 根据任务运行行为动态调整优先级 | 兼顾交互响应与吞吐量 | 实现复杂、参数难调 |
实际 Linux 并不是简单采用上面的某一种算法。 Linux 普通任务曾长期采用 CFS(完全公平调度器),现代内核则采用基于 EEVDF 的调度机制;实时任务还有 FIFO、RR 等调度策略。
EEVDF:在保证公平性的基础上,进一步考虑任务的虚拟截止时间,让需要快速响应的任务有机会更早执行。
EEVDF 是 Linux 6.6 开始引入的公平调度算法,用于改进原来的 CFS。
CFS 主要根据虚拟运行时间选择任务,保证 CPU 分配公平,但对任务响应延迟的考虑不够直接。
EEVDF 在此基础上引入了 lag 和虚拟截止时间,首先选择没有超额使用 CPU 的任务,再从中选择虚拟截止时间最早的执行。
它最大的优势就是兼顾 CPU 分配公平性和交互任务的低延迟。
分享
