Skip to content

调度的基本概念与目标

考情分析

CPU 调度在 408 真题中累计考查约 56 分(2009-2026),属于 🔥🔥🔥 高频核心考点。调度概念和指标计算是基础,各种调度算法是重点。

多个进程都想用 CPU,但 CPU 只有一个(或几个)。谁先谁后、每人用多久?不同的策略对系统性能影响巨大,而衡量"好坏"需要先定义指标。

调度的三个层次

层次名称频率功能
高级调度作业调度(Job Scheduling)最低从外存的后备队列中选择作业调入内存
中级调度内存调度(Swapping)中等将暂时不用的进程换出到外存(挂起)
低级调度进程调度(CPU Scheduling)最高从就绪队列中选一个进程分配 CPU

进程调度的时机

需要进程调度的情况

场景说明
当前进程运行结束必须选一个新进程
当前进程阻塞主动让出 CPU
时间片用完被动让出 CPU
有更高优先级进程到达抢占式调度
中断/异常处理完毕可能调度新进程

不能进行进程调度的情况

  • 中断处理过程中
  • 进程在操作系统内核临界区中
  • 原子操作过程中(如原语执行中)

易错

"内核临界区"和"普通临界区"的调度规则相反:

  • 内核临界区(修改就绪队列等内核数据结构)中不能调度——调度程序自己要用这些数据
  • 普通临界区(访问打印机等)中可以调度——不影响调度程序工作

选择题常见干扰项:"进程在临界区中不能进行处理机调度"——,只有内核临界区不行。

抢占式 vs 非抢占式

方式说明特点
非抢占式进程一旦获得 CPU,就一直运行直到主动放弃实现简单,但短作业可能长时间等待
抢占式更高优先级的进程到达时可以抢占当前进程的 CPU响应时间短,适合交互系统

调度算法的评价指标

CPU 利用率

CPU =CPU CPU +

系统吞吐量

单位时间内完成的作业数量。

周转时间

==

带权周转时间

=

带权周转时间 ≥ 1,值越接近 1 表示效率越高。直觉上,带权周转时间就是"实际花的总时间是纯工作时间的几倍"——如果一个任务本身只要 2 分钟却等了 10 分钟才完成,带权周转时间就是 5,说明大部分时间在排队。

=

等待时间

=

对于抢占式调度,等待时间 = 所有等待时间段之和。

响应时间

从用户提交请求到首次获得响应的时间。交互式系统最关注的指标。

指标计算示例

进程到达时间服务时间
P108
P214
P322

假设使用 FCFS(非抢占)调度:

  • P1:完成时间=8,周转时间=8-0=8,带权周转时间=8/8=1
  • P2:完成时间=12,周转时间=12-1=11,带权周转时间=11/4=2.75
  • P3:完成时间=14,周转时间=14-2=12,带权周转时间=12/2=6
=8+11+123=10.33=1+2.75+63=3.25

考研高频考点

  • 🔥🔥🔥 周转时间、带权周转时间的计算(几乎每次考调度都会用到)
  • 🔥🔥🔥 抢占式 vs 非抢占式调度的区别
  • 🔥🔥 三个调度层次的区别(高级/中级/低级)
  • 🔥🔥 不能进行进程调度的场景
  • 🔥 各评价指标的含义

有了评价指标,接下来逐一看各种调度算法。先从最简单的 FCFS 开始。

真题练习

相关真题(6题)

2026Q45综合题10分

综合题:优先级+时间片轮转调度算法的计算与分析

2016Q24选择题2分

多道程序并发:三个作业流水执行的最短完成时间

2016Q46综合题6分

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

2014Q23选择题2分

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

2012Q29选择题2分

多道批处理:两个作业CPU和I/O交叉执行的最短完成时间

2012Q30选择题2分

调度时机:进程在临界区时仍可被调度(除非在内核临界区)