Skip to content

2013年 408 操作系统 第 31 题

操作系统2013年选择题2分

题目

某系统正在执行三个进程P1、P2和P3,各进程的计算 (CPU) 时间和 I/O 时间比例如下表所示。

进程计算时间I/O 时间
P190%10%
P250%50%
P315%85%

为提高系统资源利用率,合理的进程优先级设置应为( )。

错因

A

正好排反——把 CPU 占比高的 P1 排第一,意图"让最忙的先跑"。但资源利用率最大化的原则正相反:CPU 密集型进程拿到 CPU 后会一直占着不放,I/O 设备闲着;I/O 密集型进程拿到 CPU 一会就发 I/O 阻塞、CPU 让出来,能让别的进程也跑。所以 I/O 密集型应该优先调度。

C

让 CPU 50% 的 P2 最高,把 P1 和 P3 平等。但 P3 才是最该优先的(85% I/O)——它跑一会就阻塞,CPU 立刻空出给 P1 P2 接力,三种资源都能并行。把 P2 排第一是没看出 P3 的"快进快出"特点对资源利用率的贡献最大。

D

让 CPU 90% 的 P1 最高,又把 P2 P3 平等——把"资源占用高"误以为是"优先级高",方向反了。把 P3 跟 P2 等同也不对:P3(85% I/O)远比 P2(50% I/O)更"利于切换",理应更优先。

总解析

资源利用率最大化原则:让 CPU 和 I/O 设备尽可能并行地工作。

进程类型行为调度优先级该高还是低?
I/O 密集型(I/O 占比高)拿到 CPU 用一会就发 I/O 阻塞,主动让出 CPU优先级应高——它让位快,让 CPU 流转起来
CPU 密集型(计算占比高)拿到 CPU 长期占用,I/O 设备一直闲着优先级应低——避免它霸占 CPU 让 I/O 设备闲死

为什么 I/O 密集型优先能提升利用率

假设没有抢占、I/O 密集型先跑:
P3(CPU 一会 → I/O 一会 → CPU 一会 → ...)
     ↓ I/O 期间 P2 拿 CPU
     P2(CPU 一会 → I/O 一会 → ...)
          ↓ I/O 期间 P1 拿 CPU
          P1 长时间占 CPU
     ↑ P3 / P2 的 I/O 完成时正好打断 P1,让它们继续
结果:CPU 几乎一直被某进程占用 + I/O 设备多通道并发 → 双高利用率

如果反过来 P1 先跑、长期占 CPU,I/O 设备一直闲着,等 P1 自己发起 I/O 才让出 CPU——大部分时间 I/O 闲、CPU 也闲(因为 P1 同步在等 I/O),整体利用率低。

按 I/O 占比排优先级:P3 (85%) > P2 (50%) > P1 (10%) → P3 > P2 > P1

速记:I/O 越多越优先——让爱睡觉的(I/O 密集,跑一会就睡)先上,醒着的(CPU 密集)排后面。爱睡的睡了 CPU 才能腾出来给醒着的接力,不浪费时间。

最终答案是 B

最后更新:

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

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