先来先服务(FCFS)调度算法根据其到达时间简单地调度作业。 就绪队列中第一个工作将首先获得CPU。 工作到达时间越少,工作得到的CPU就越快。 如果第一个进程的突发时间是所有作业中最长的,则FCFS调度可能会导致饥饿问题。
FCFS的优势
- 简单
- 容易
- 先到先得
FCFS的缺点
- 调度方法是非抢先式的,该进程将运行到完成。
- 由于算法的非抢先性,可能会出现饥饿问题。
- 尽管实现起来很容易,但由于平均等待时间比其他调度算法更高,因此性能较差。
示例
我们来看一个FCFS调度算法的例子。 在下面的时间表中,有5
个进程的进程ID为P0
,P1
,P2
,P3
和P4
。 P0
到达时间0
,P1
在时间1
,P2
在时间2
,P3
到达时间3
,处理P4
在时间4
到达就绪队列。 下表给出了过程及其各自的到达时间和爆发时间。
周转时间和等待时间通过使用以下公式计算。
Turn Around Time = Completion Time - Arrival Time
Waiting Time = Turnaround time - Burst Time
平均等待时间通过将所有过程的各个等待时间相加并且将总和除以过程的总数来确定。
进程ID | 到达时间 | 突发时间 | 完成时间 | 转换时间 | 等待时间 |
---|---|---|---|---|---|
0 | 0 | 2 | 2 | 2 | 0 |
1 | 1 | 6 | 8 | 7 | 1 |
2 | 2 | 4 | 12 | 8 | 4 |
3 | 3 | 9 | 21 | 18 | 9 |
4 | 4 | 12 | 33 | 19 | 17 |
平均等待时间= 31/5