操作系统 FCFS先到先服务中的车队效应

操作系统 FCFS先到先服务中的车队效应

如果第一个作业的运行时间在所有作业中最长,则先到先服务可能会遭受 车队效应 。就像在现实生活中,如果有一列车队通过道路,其他人可能会被阻塞,直到车队完全通过。这在操作系统中也可以模拟。

如果CPU在就绪队列的前端获取具有较长运行时间的进程,则运行时间较短的进程可能会被阻塞,这意味着如果正在执行的作业具有非常高的运行时间,则它们可能永远无法获取CPU。这被称为 车队效应饥饿

操作系统 FCFS先到先服务中的车队效应

示例

在这个示例中,我们有三个进程,分别为 P1,P2和P3 。进程P1的执行时间最长。

下表中的周转时间和等待时间是通过以下公式计算出来的,

Turn Around Time = Completion Time - Arrival Time
    Waiting Time = Turn Around Time - Burst Time 

在第一种情况下,进程P1虽然其执行时间是最长的,但它首先到达队列中的第一个位置。因为我们正在遵循的调度算法是先来先服务(FCFS),所以CPU会先执行进程P1。

在这个调度中,系统的平均等待时间将会非常高。这是因为出现了僵持效应。其他的进程P2、P3必须等待40个时间单位才能轮到它们,尽管它们的执行时间非常短。这个调度会出现饥饿现象。

Process ID Arrival Time Burst Time Completion Time Turn Around Time Waiting Time
1 0 40 40 40 0
2 1 3 43 42 39
3 1 1 44 43 42

操作系统 FCFS先到先服务中的车队效应

平均等待时间 = 81/3

在第二种情况下,如果进程 P1 会在队列的最后到达,而其他进程 P2 和 P3 会在较早的时候到达,那么饥饿的问题就不会存在。

以下示例展示了两种情况下等待时间的偏差。虽然调度的长度相同,即44个单位,但在这个调度中等待时间会更少。

Process ID Arrival Time Burst Time Completion Time Turn Around Time Waiting Time
1 1 40 44 43 3
2 0 3 3 3 0
3 0 1 4 4 3

操作系统 FCFS先到先服务中的车队效应

平均等待时间=6/3

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程