Skip to content

2020年 408 操作系统 第 26 题

操作系统2020年选择题2分

题目

下列与进程调度有关的因素中,在设计多级反馈队列调度算法时需要考虑的是( )。

Ⅰ. 就绪队列的数量

Ⅱ. 就绪队列的优先级

Ⅲ. 各就绪队列的调度算法

Ⅳ. 进程在就绪队列间的迁移条件

错因

A

只想到了"分几条队列、怎么排优先级"这个粗框架,忘了每条队列内部也要决定怎么调度(FCFS 还是 RR、时间片多大)以及进程怎么在队列间移动(用满时间片就降级、I/O 阻塞唤醒后回原级还是升级)。这两件事不定下来,多级反馈队列就没法运行。

B

反过来:盯住了"每队列调度算法"和"迁移条件",忽略了"队列数量"和"优先级"也是设计参数。多级反馈队列的"多级"就是看分几条队,"反馈"就是看队列间怎么基于优先级调度——这两个最基础的参数怎么会不需要决定。

C

只漏了 Ⅰ 队列数量。可能觉得"队列数量是默认 3 / 4 条",是约定俗成的常数。其实不是——队列数量本身就是设计参数,要根据系统目标定(重在交互响应可能 2 条够、要细分优先级可能 5-6 条),不存在"默认值"。

总解析

多级反馈队列(MLFQ)是把多种调度思想揉到一起的算法,需要决定的设计参数刚好覆盖整个系统:

参数决定什么
Ⅰ 队列数量系统优先级粒度——3 条粗一点、6 条细一点
Ⅱ 各队列优先级谁优先调度(典型:高优先级队列先调度,全空才轮到低级队列)
Ⅲ 各队列调度算法队列内部怎么挑下一个进程(高优先级常用 RR + 短时间片,低优先级用 RR + 长时间片或 FCFS)
Ⅳ 队列间迁移条件进程啥时降级、啥时升级——典型规则:"时间片用满未完→降一级"、"I/O 阻塞唤醒→保持或升级以照顾交互型"

四个都是 MLFQ 工作起来必须先回答的问题,没有"约定俗成的默认"。任何一个不定下来都没法把算法跑起来。

最终答案是 D

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数