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 份额,不因进程数不同而偏袒

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

真题练习

相关真题(12题)

2025Q25选择题2分

虚拟机:VMM运行在最高特权级,高于客户OS

进程状态与转换CPU 调度基本概念CPU 调度算法
2024Q30选择题2分

缺页率影响因素:页缓冲队列降低的是磁盘I/O延迟而非缺页率

CPU 调度算法
2021Q25选择题2分

文件分配:索引分配既支持文件长度可变又支持随机访问

CPU 调度基本概念CPU 调度算法
2020Q26选择题2分

动态优先级:时间片用完降低优先级,防止CPU密集型进程垄断

CPU 调度基本概念CPU 调度算法
2019Q27选择题2分

二级反馈队列:计算P1、P2的平均等待时间

CPU 调度算法
2017Q23选择题2分

FCFS vs SJF:FCFS选最先到达的J1,SJF选运行时间最短的J3

CPU 调度算法
2016Q46综合题6分

综合题:动态优先级调度的饥饿问题分析与优先数计算设计

进程与线程基本概念CPU 调度基本概念CPU 调度算法
2014Q23选择题2分

调度饥饿:时间片轮转公平对待所有进程,不会饥饿

CPU 调度基本概念CPU 调度算法
2013Q31选择题2分

I/O密集型优先:I/O比例高的进程优先级应更高

CPU 调度基本概念CPU 调度算法
2011Q23选择题2分

HRRN:兼顾短任务优先和等待时间,不会饥饿

CPU 调度算法
2010Q26选择题2分

死锁条件:每个进程持有2台等1台,K×2<8时不死锁,K=4时可能死锁

CPU 调度基本概念CPU 调度算法
2009Q24选择题2分

进程创建:用户登录和启动程序会创建新进程,设备分配不会

CPU 调度基本概念CPU 调度算法