操作系统中的护航效应
先决条件: FCFS调度基础(FCFS调度程序|设置1,FCFS调度程序|设置2)
护航效应是与先来先服务 (FCFS) 算法相关的现象,在该算法中,由于很少有慢速进程,整个操作系统会变慢。
FCFS 算法本质上是非抢占式的,即一旦 CPU 时间被分配给一个进程,其他进程只有在当前进程完成后才能获得 CPU 时间。 FCFS 调度的这种特性导致了称为 Convoy Effect 的情况。
假设就绪队列中有一个 CPU 密集型(大突发时间)进程,以及其他几个突发时间相对较少但受输入/输出 (I/O) 限制(需要频繁进行 I/O 操作)的进程。
步骤如下:
- I/O 绑定进程首先分配 CPU 时间。由于它们对 CPU 的占用较少,因此它们很快就会被执行并进入 I/O 队列。
- 现在,CPU 密集型进程被分配了 CPU 时间。由于它的爆发时间很长,所以需要时间来完成。
- 在执行 CPU 密集型进程时,I/O 绑定进程完成其 I/O 操作并移回就绪队列。
- 但是,由于 CPU 密集型进程仍未完成,I/O 绑定进程会等待。这会导致 I/O 设备空闲。
- 当 CPU 密集型进程结束时,它会被发送到 I/O 队列,以便它可以访问 I/O 设备。
- 同时,I/O 绑定进程获得所需的 CPU 时间并移回 I/O 队列。
- 但是,它们需要等待,因为 CPU 密集型进程仍在访问 I/O 设备。结果, CPU 现在处于空闲状态。
因此在 Convoy Effect 中,一个缓慢的进程会降低整个进程集的性能,并导致 CPU 时间和其他设备的浪费。
为了避免 Convoy Effect,可以使用像 Round Robin Scheduling 这样的抢占式调度算法——因为较小的进程不必等待 CPU 时间太长——使它们的执行速度更快并导致更少的资源闲置。
参考 -
- A. Silberschatz、P. Galvin、G. Gagne,“操作系统概念(第 8 版)”,Wiley India Pvt.有限公司