先决条件:FCFS调度的基础知识(FCFS计划程序|套装1, FCFS计划程序|S2)
车队效应是与"先到先得"(FCFS)算法相关的现象, 其中, 由于很少的缓慢过程, 整个操作系统的速度都会降低。
FCFS算法本质上是非抢占式的, 也就是说, 一旦将CPU时间分配给一个进程, 其他进程就只能在当前进程完成后才能获得CPU时间。 FCFS调度的此属性导致称为"车队效应"的情况。
假设就绪队列中有一个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效应, 可以使用诸如Round Robin Scheduling之类的抢占式调度算法-因为较小的进程不必花太多时间等待CPU时间-可使它们的执行更快, 并减少空闲资源。
参考–
- A. Silberschatz, P。Galvin, G。Gagne, "操作系统概念(第8版)", Wiley India Pvt。有限公司
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。