1. 真题解析:2009年第24题
这道来自2009年考研真题的选择题,考察的是操作系统进程调度算法的核心特性。题目问的是"下列进程调度算法中,综合考虑进程等待时间和执行时间的是()",给出了四个选项:A.时间片轮转、B.短进程优先、C.先来先服务、D.高响应比优先。
这道题看似简单,实则考察了对调度算法本质的理解。在实际系统设计中,如何平衡公平性和效率一直是核心难题。等待时间代表公平性,执行时间代表效率,能够兼顾二者的算法才是优秀的调度策略。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 各选项算法深度解析
2.1 时间片轮转调度算法(RR)
时间片轮转是最经典的抢占式调度算法之一。它的核心机制是:
- 系统维护一个就绪队列
- 每个进程被分配一个固定长度的时间片(通常10-100ms)
- 当时间片用完时,进程被剥夺CPU并重新排到队尾
这种算法最大的特点是"公平性":
- 每个进程都能获得相同的CPU时间份额
- 不会出现某个进程长期霸占CPU的情况
但它的缺点也很明显:
- 完全不考虑进程的实际需求
- 短进程和长进程获得相同的时间片
- 频繁的上下文切换带来额外开销
在实际系统中,时间片大小的选择是个关键问题:
- 时间片过小:上下文切换开销占比过高
- 时间片过大:响应时间变长,近似FCFS
2.2 短进程优先调度算法(SJF)
短进程优先算法追求的是系统吞吐量最大化。它的调度原则很简单:
- 总是选择预计执行时间最短的进程优先运行
- 可以是抢占式(SRTF)或非抢占式(SJF)
从理论上看,SJF有几个显著优势:
- 平均周转时间最短
- 系统吞吐量最大
- 能快速完成大量短进程
但它的实现面临几个现实问题:
- 如何准确预知进程执行时间?
- 实际系统中很难准确预测
- 通常基于历史执行时间估算
- 长进程饥饿问题
- 如果不断有短进程到达,长进程可能永远得不到执行
- 对交互式进程不友好
- 交互式进程通常较短,但需要快速响应
2.3 先来先服务调度算法(FCFS)
先来先服务是最简单的调度算法,它的规则就是:
- 按照进程到达的顺序进行调度
- 先到的进程先获得CPU
- 非抢占式,一旦开始运行直到完成
FCFS的优点在于:
- 实现极其简单
- 没有额外的调度开销
- 对长进程相对公平
