Skip to content

2016年 408 操作系统 第 24 题

操作系统2016年选择题2分

题目

某单 CPU 系统中有输入和输出设备各 1 台,现有 3 个并发执行的作业,每个作业的输入、计算和输出时间均分别为 2ms,3ms 和 4ms,且都按输入、计算和输出的顺序执行,则执行完 3 个作业需要的时间最少是( )。

错因

A

凭"全并行无开销"算了一个最理想下界——3 个作业全在 9ms 内完成不太可能。但资源数有限:输入设备只有 1 台,3 个作业的输入阶段(共 6ms)必须串行;输出设备只有 1 台,3 个输出(共 12ms)也必须串行。9ms 完不成。

C

可能算了"半并发":J1 走完一段后 J2 才能跟上,没把"上一作业的下一阶段"和"下一作业的上一阶段"在不同设备上并行起来。结果就像两两串接的接力赛而不是流水线,多算了不该串行的等待。

D

完全把作业当成顺序执行:3 × (2+3+4) = 27ms——这是单道顺序执行的总时间,不是并发执行的最少时间。题问"最少"且明确"3 个并发执行的作业",必须考虑多道并行。

总解析

资源:CPU 1、输入设备 In 1、输出设备 Out 1。每作业三阶段:In 2 → CPU 3 → Out 4,严格按顺序走。

关键约束

  • 三种资源各自只 1 台 → 同种资源同一时刻只能服务一个作业
  • 同一作业内三阶段必须顺序

手工排时间表(追求每种资源都尽早被使用、阶段间无浪费):

时刻In 设备CPUOut 设备
0–2J1.In
2–4J2.InJ1.CPU (2-5)
4–5J3.In (4-6)(continued)
5–6(J3.In 中)J2.CPU (5-8)J1.Out (5-9)
6–8(J2.CPU 续)(J1.Out 续)
8–9J3.CPU (8-11)(J1.Out 续)
9–11(J3.CPU 续)
11–13J2.Out (??)

让我重新画一遍清晰版本:

作业InCPUOut
J1[0, 2][2, 5][5, 9]
J2[2, 4][5, 8](CPU 在 5 才空)[9, 13](Out 在 9 才空)
J3[4, 6][8, 11](CPU 在 8 才空)[13, 17](Out 在 13 才空)

完成时刻 = J3.Out 结束时刻 = 17ms

关键看哪条资源最"挤"——本题输出设备最忙(共 12ms),加上前置时间,输出阶段链是关键路径。

公式式验证(输出设备成为瓶颈):第一个作业的输出在 t = (In + CPU) = 5 才能开始,输出阶段共 3 × 4 = 12ms 串行 → 完成时刻 = 5 + 12 = 17 ✓

最终答案是 B

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题