Appearance
调度的基本概念与目标
考情分析
CPU 调度在 408 真题中累计考查约 56 分(2009-2026),属于 🔥🔥🔥 高频核心考点。调度概念和指标计算是基础,各种调度算法是重点。
多个进程都想用 CPU,但 CPU 只有一个(或几个)。谁先谁后、每人用多久?不同的策略对系统性能影响巨大,而衡量"好坏"需要先定义指标。
调度的三个层次
| 层次 | 名称 | 频率 | 功能 |
|---|---|---|---|
| 高级调度 | 作业调度(Job Scheduling) | 最低 | 从外存的后备队列中选择作业调入内存 |
| 中级调度 | 内存调度(Swapping) | 中等 | 将暂时不用的进程换出到外存(挂起) |
| 低级调度 | 进程调度(CPU Scheduling) | 最高 | 从就绪队列中选一个进程分配 CPU |
进程调度的时机
需要进程调度的情况
| 场景 | 说明 |
|---|---|
| 当前进程运行结束 | 必须选一个新进程 |
| 当前进程阻塞 | 主动让出 CPU |
| 时间片用完 | 被动让出 CPU |
| 有更高优先级进程到达 | 抢占式调度 |
| 中断/异常处理完毕 | 可能调度新进程 |
不能进行进程调度的情况
- 中断处理过程中
- 进程在操作系统内核临界区中
- 原子操作过程中(如原语执行中)
易错
"内核临界区"和"普通临界区"的调度规则相反:
- 内核临界区(修改就绪队列等内核数据结构)中不能调度——调度程序自己要用这些数据
- 普通临界区(访问打印机等)中可以调度——不影响调度程序工作
选择题常见干扰项:"进程在临界区中不能进行处理机调度"——错,只有内核临界区不行。
抢占式 vs 非抢占式
| 方式 | 说明 | 特点 |
|---|---|---|
| 非抢占式 | 进程一旦获得 CPU,就一直运行直到主动放弃 | 实现简单,但短作业可能长时间等待 |
| 抢占式 | 更高优先级的进程到达时可以抢占当前进程的 CPU | 响应时间短,适合交互系统 |
调度算法的评价指标
CPU 利用率
系统吞吐量
单位时间内完成的作业数量。
周转时间
带权周转时间
带权周转时间 ≥ 1,值越接近 1 表示效率越高。直觉上,带权周转时间就是"实际花的总时间是纯工作时间的几倍"——如果一个任务本身只要 2 分钟却等了 10 分钟才完成,带权周转时间就是 5,说明大部分时间在排队。
等待时间
对于抢占式调度,等待时间 = 所有等待时间段之和。
响应时间
从用户提交请求到首次获得响应的时间。交互式系统最关注的指标。
指标计算示例
| 进程 | 到达时间 | 服务时间 |
|---|---|---|
| P1 | 0 | 8 |
| P2 | 1 | 4 |
| P3 | 2 | 2 |
假设使用 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
考研高频考点
- 🔥🔥🔥 周转时间、带权周转时间的计算(几乎每次考调度都会用到)
- 🔥🔥🔥 抢占式 vs 非抢占式调度的区别
- 🔥🔥 三个调度层次的区别(高级/中级/低级)
- 🔥🔥 不能进行进程调度的场景
- 🔥 各评价指标的含义
有了评价指标,接下来逐一看各种调度算法。先从最简单的 FCFS 开始。