OS 基础教程

进程管理

同步

死锁

内存管理

文件管理

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/os-convoy-effect-in-fcfs.html

操作系统FCFS护航效果


如果第一个作业的爆发时间是最高的,FCFS可能会受到队列影响。 就像在现实生活中一样,如果队列在路上经过,那么其他人可能会被堵塞,直到完全通过。 这也可以在操作系统中进行模拟。

如果CPU在就绪队列的前端获得较高突发时间的进程,则较低突发时间的进程可能被阻塞,这意味着如果执行中的作业具有非常高的突发时间,则它们可能永远不会获得CPU。 这被称为队列效应饥饿

示例

在这个例子中,我们有3个进程被命名为P1P2P3。 进程P1的暴发时间最高。

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

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

在第一种情况下,虽然流程P1到达队列中的第一个, 该过程的爆发时间是最高的。 由于调度算法,我们所遵循的是FCFS,因此CPU将首先执行Process P1。

在这个时间表中,系统的平均等待时间将非常高。 这是因为车队的影响。 其他进程P2,P3必须等待40个单位时间,尽管他们的爆发时间非常短。 这个时间表遭受饥饿。

进程ID 到达时间 突发时间 完成时间 转换时间 等待时间
1 0 40 40 40 0
2 1 3 43 42 39
2 2 4 12 8 4
3 1 1 44 43 42

平均等待时间= 81/3

在第二种情况下,如果进程P1本来就已经到达队列的最后,而其他过程P2P3早于那么饥饿问题就不存在了。

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

进程ID 到达时间 突发时间 完成时间 转换时间 等待时间
1 1 40 44 43 3
2 0 3 3 3 0
2 2 4 12 8 4
3 0 1 4 4 3