第 25 题
系统拥有一个 CPU、IO1 和 IO2 为两个不同步的输入/输出装置,它们能够同时工作。当使用 CPU 之后控制转向 IO1、IO2 时,或者使用 IO1、IO2 之后控制转向 CPU 时,由控制程序执行中断处理,但这段处理时间忽略不计。有 A、B 两个进程同时被创建,进程 B 的调度优先权比进程 A 高,但是,当进程 A 正在占用 CPU 时,即使进程 B 需要占用 CPU,也不能打断进程 A 的执行。若在同一系统中分别单独执行,则需要占用 CPU、IO1、IO2 的时间如下图所示:
A. 进程 A B. 进程 B C. 进程 A 和进程 B 同时 D. 不一定
[tag_link]
正确答案:A
由于进程 B 的调度优先级高于进程 A,且 CPU 非抢占(进程 A 占用 CPU 时不可被打断),初始时两进程同时就绪,CPU 优先分配给进程 B。
通过模拟并发执行的时间线:
- 进程 B 首先运行 CPU 20ms(0–20ms),随后进程 A 运行 CPU 25ms(20–45ms)。 >
- 进程 A 请求 IO1 时需等待至 50ms(因 IO1 被 B 占用),之后 A 使用 IO1 30ms(50–80ms),同时 B 运行 CPU 20ms(50–70ms)后使用 IO2 20ms(70–90ms)。 >
- A 在 80ms 就绪后运行 CPU 20ms(80–100ms),期间 B 在 90ms 就绪但因 A 占用 CPU 而等待。 >
- A 随后使用 IO2 20ms(100–120ms),B 运行 CPU 10ms(100–110ms)后等待 IO2 至 120ms。 >
- B 使用 IO2 20ms(120–140ms),A 运行 CPU 20ms(120–140ms)。 >
- 最后 A 使用 IO1 30ms(140–170ms)结束,B 运行 CPU 45ms(140–185ms)结束。 >
因此进程 A 在 170ms 结束,进程 B 在 185ms 结束,进程 A 先结束。 >