Appearance
题目
下列与进程调度有关的因素中,在设计多级反馈队列调度算法时需要考虑的是( )。
Ⅰ. 就绪队列的数量
Ⅱ. 就绪队列的优先级
Ⅲ. 各就绪队列的调度算法
Ⅳ. 进程在就绪队列间的迁移条件
错因
A
只想到了"分几条队列、怎么排优先级"这个粗框架,忘了每条队列内部也要决定怎么调度(FCFS 还是 RR、时间片多大)以及进程怎么在队列间移动(用满时间片就降级、I/O 阻塞唤醒后回原级还是升级)。这两件事不定下来,多级反馈队列就没法运行。
B
反过来:盯住了"每队列调度算法"和"迁移条件",忽略了"队列数量"和"优先级"也是设计参数。多级反馈队列的"多级"就是看分几条队,"反馈"就是看队列间怎么基于优先级调度——这两个最基础的参数怎么会不需要决定。
C
只漏了 Ⅰ 队列数量。可能觉得"队列数量是默认 3 / 4 条",是约定俗成的常数。其实不是——队列数量本身就是设计参数,要根据系统目标定(重在交互响应可能 2 条够、要细分优先级可能 5-6 条),不存在"默认值"。
总解析
多级反馈队列(MLFQ)是把多种调度思想揉到一起的算法,需要决定的设计参数刚好覆盖整个系统:
| 参数 | 决定什么 |
|---|---|
| Ⅰ 队列数量 | 系统优先级粒度——3 条粗一点、6 条细一点 |
| Ⅱ 各队列优先级 | 谁优先调度(典型:高优先级队列先调度,全空才轮到低级队列) |
| Ⅲ 各队列调度算法 | 队列内部怎么挑下一个进程(高优先级常用 RR + 短时间片,低优先级用 RR + 长时间片或 FCFS) |
| Ⅳ 队列间迁移条件 | 进程啥时降级、啥时升级——典型规则:"时间片用满未完→降一级"、"I/O 阻塞唤醒→保持或升级以照顾交互型" |
四个都是 MLFQ 工作起来必须先回答的问题,没有"约定俗成的默认"。任何一个不定下来都没法把算法跑起来。
最终答案是 D。