Skip to content

第三章 CPU 调度:谁先运行


1. 调度问题从哪里来

上一章建立了进程的概念:就绪队列里随时躺着一堆"万事俱备只差 CPU"的进程。CPU 却只有那么几个。从就绪队列里挑谁上场、让它跑多久,就是调度问题。

先破一个误区:调度没有"标准答案"。让短任务先跑,长任务就吃亏;追求总吞吐量,交互程序就可能卡顿。每个调度算法都是对某种目标的偏心,所以学习调度的正确姿势不是背算法步骤,而是问三个问题:这个算法偏心谁?亏待谁?为此付出什么代价?

2. 调度的三个层次

教材里"调度"一词其实覆盖三件发生频率完全不同的事:

层次别名决定什么发生频率
高级调度作业调度哪个作业从外存调入内存、建立进程最低,分钟级
中级调度内存调度哪个进程暂时换出到外存、何时换回中等
低级调度进程调度就绪队列中哪个进程获得 CPU最高,毫秒级

记忆抓手:高级管"进门",中级管"暂住外面",低级管"上场"。频率越高的调度,算法必须越快——进程调度每秒发生成百上千次,不能用复杂算法慢慢算。本章后面讲的经典算法都属于低级调度(进程调度)。

3. 评价指标:每个指标在关心什么

4. 抢占与非抢占

5. FCFS:先来先服务

6. SJF 与 SRTF:短作业优先

7. 优先级调度:饥饿与老化

8. 时间片轮转:分时系统的招牌

9. 多级反馈队列:集大成者

10. 算法总对比与实时调度一瞥

11. 本章要点回顾

12. 做题提醒