Skip to content

2018年 408 操作系统 第 24 题

操作系统2018年选择题2分

题目

某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为 1us。在 T 时刻就绪队列中有 3 个进程 P1、P2 和 P3,其在就绪队列中的等待时间、需要的 CPU 时间和优先权如下表所示。若优先权值大的进程优先获得 CPU,从 T 时刻起系统开始进程调度,则系统的平均周转时间为()。

进程等待时间需要的 CPU 时间优先级
P130us12us10
P215us24us30
P318us36us20

若优先权值大的进程优先获得 CPU,从 T 时刻起系统开始进程调度,则系统的平均周转时间为( )。

错因

A

直接把三个 CPU 时间加起来除以 3:,再凑了几下凑出 54——本质是把"周转"理解成了 CPU 时间或某种"运行时长"。但周转 = 完成时刻 − 到达时刻,每个进程从到达到完成期间被前面的进程挡住的时间也要算进去,光算 CPU 跑了多久远远不够。

B

注意到要算到达 → 完成的整段时间,但忘了把 T 之前已等的那一段算进周转。从 T 时刻起算每人的"驻留时间"(1+24+1+36+1+12 拆给三人)只是 T 之后的部分,而题给的 30/15/18us 是 T 之前已经等过的——按周转的定义这部分必须叠加,漏了就少 (30+15+18)/3 = 21 左右,正好凑到 73。

C

记得加 T 前等待,但只算了 2 次调度开销而漏了 1 次——比如以为"第一个进程不需要调度选它",把开头那 1us 抹了;或者末尾切换的 1us 没算。结果比正确值少 1us,平均后就是 74。题目说得很清楚:"完成一次进程调度和进程切换的开销为 1us",三次调度(包括第一次)三次都得算。

总解析

非抢占式优先级调度,优先级值大者先:P2 (30) > P3 (20) > P1 (10)。每次调度切换有 1us 系统开销,从 T 时刻开始第一次调度也要算。

第 1 步:排时间轴(T 记作 0)

时段内容时长
0 ~ 1第 1 次调度切换1
1 ~ 25P2 执行(CPU 24us)24
25 ~ 26第 2 次调度切换1
26 ~ 62P3 执行(CPU 36us)36
62 ~ 63第 3 次调度切换1
63 ~ 75P1 执行(CPU 12us)12

第 2 步:算各自周转时间

周转时间 = 完成时刻 − 到达时刻 = (T 后到完成的时长) + (T 前已等待时长)

进程T 后完成时刻T 前已等周转
P2251525 + 15 = 40
P3621862 + 18 = 80
P1753075 + 30 = 105

第 3 步:求平均

最终答案是 D

最后更新:

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

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