Skip to content

公平调度算法

考情分析

公平调度算法以选择题形式偶有考查,重点在于理解"对进程公平"与"对用户公平"的区别。属于 🔥 低频考点。

之前的调度算法关注吞吐量、响应时间,但有一个问题被忽略了:如果一个用户开了 100 个进程,另一个用户只开了 1 个,按进程平分 CPU 对后者公平吗?

保证调度算法

前面介绍的调度算法主要关注响应时间、吞吐量或周转时间,但未将公平性作为核心目标。保证调度算法则为每个进程提供可量化的 CPU 时间分配保证。

核心思想

系统中有 n 个并发进程,每个进程应获得约 1/n 的 CPU 时间。

实现方式

  1. 跟踪每个进程自创建以来已获得的 CPU 时间
  2. 计算每个进程应获得的 CPU 时间(进程存在时间 / n)
  3. 计算公平比率 = 实际获得的 CPU 时间 / 应获得的 CPU 时间
  4. 调度公平比率最小的进程(即最"亏欠"的进程),让它运行直到比率超过最接近它的进程
公平比率含义
< 1未达应得份额,优先调度
> 1超额占用,暂缓调度

公平分享调度算法

保证调度对进程公平,但未必对用户公平。

问题

假设用户 1 启动了 4 个进程,用户 2 只有 1 个进程。采用轮转调度(RR):

  • 每个进程都获得 1/5 的 CPU 时间(对进程公平)
  • 但用户 1 获得 80% CPU 时间,用户 2 只获得 20%(对用户不公平)

解决方案

公平分享调度按用户(而非进程)分配 CPU 份额。不论用户启动多少进程,每个用户获得相同(或按比例)的 CPU 时间。

示例

用户 1 有进程 A、B、C、D,用户 2 有进程 E。

两个用户平均分配 CPU 时间

调度序列: A E B E C E D E A E B E C E D E ...

用户 1 和用户 2 各获得 50% 的 CPU 时间。

用户 1 获得用户 2 两倍的 CPU 时间

调度序列: A B E C D E A B E C D E ...

用户 1 获得约 67%,用户 2 获得约 33%。

两种算法对比

特性保证调度公平分享调度
公平单位进程用户
分配依据每个进程获得 1/n CPU 时间每个用户按权重获得 CPU 份额
适用场景进程间公平多用户系统中用户间公平

考研高频考点

  • 🔥 保证调度:对进程公平,按公平比率(实际/应得)调度比率最小的进程
  • 🔥 公平分享调度:对用户公平,按用户分配 CPU 份额,不因进程数不同而偏袒

到这里,各种调度算法的理论都介绍完了。下一篇通过调度算法对比模拟器,用同一组数据直观比较各算法的差异。

真题练习