FCFS 调度算法:是什么、示例程序
什么是先来先服务方法?
先来先服务 (FCFS) 是一种操作系统调度算法,它根据到达的顺序自动执行排队的请求和进程。它是最简单、最容易的 CPU 调度算法。在这种算法中,首先请求 CPU 的进程首先获得 CPU 分配。这由 FIFO 队列管理。FCFS 的完整形式是先来先服务。
当进程进入就绪队列时,其 PCB(进程控制块)会链接到队列的尾部,当 CPU 空闲时,应将其分配给队列开头的进程。
FCFS 方法的特点
- 它支持非抢占和抢占式调度算法。
- 作业总是按照先来先服务的顺序执行。
- 它易于实现和使用。
- 此方法的性能较差,平均等待时间相当长。
FCFS 调度的例子
FCFS 方法的一个现实生活中的例子是在售票处排队买电影票。在这种调度算法中,一个人按照队列的方式被服务。第一个到队列的人先买票,然后是下一个。直到队列中的最后一个人购票。使用此算法,CPU 进程的工作方式类似。
FCFS 如何工作?计算平均等待时间
这是五个在不同时间到达的进程的示例。每个进程都有不同的执行时间。
过程 | 执行时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
使用 FCFS 调度算法,这些进程的处理方式如下。
步骤 1) 进程从到达时间为 0 的 P4 开始
步骤 2) 时间=1 时,P3 到达。P4 仍在执行。因此,P3 被放入队列。
过程 | 执行时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
步骤 3) 时间=2 时,P1 到达,并被放入队列。
过程 | 执行时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
步骤 4) 时间=3 时,P4 进程完成其执行。
步骤 5) 时间=4 时,队列中的第一个 P3 开始执行。
过程 | 执行时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
步骤 6) 时间=5 时,P2 到达,并被放入队列。
过程 | 执行时间 | 到达时间 |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
步骤 7) 时间 11 时,P3 完成其执行。
步骤 8) 时间=11 时,P1 开始执行。其执行时间为 6。在时间间隔 17 时完成执行
步骤 9) 时间=17 时,P5 开始执行。其执行时间为 4。在时间=21 时完成执行
步骤 10) 时间=21 时,P2 开始执行。其执行时间为 2。在时间间隔 23 时完成执行
步骤 11) 让我们计算上述示例的平均等待时间。
Waiting time = Start time - Arrival time
P4 = 0-0 = 0
P3 = 3-1 = 2
PI = 11-2 = 9
P5= 17-4 = 13
P2= 21-5= 16
平均等待时间
FCFS 的优点
这里是使用 FCFS 调度算法的优点/好处
- 最简单的 CPU 调度算法
- 易于编程
- 先来先服务
FCFS 的缺点
这里是使用 FCFS 调度算法的缺点/弊端
- 它是一种非抢占式 CPU 调度算法,因此在进程被分配给 CPU 后,它将永远不会释放 CPU,直到它完成执行。
- 平均等待时间很长。
- 队列后面的短进程必须等待前面的长进程完成。
- 不适合分时系统。
- 由于其简单性,FCFS 的效率不高。
摘要
- 定义:FCFS 是一种操作系统调度算法,它根据到达的顺序自动执行排队的请求和进程
- 它支持非抢占和抢占式调度
- 算法。
- FCFS 代表先来先服务
- FCFS 方法的一个现实生活中的例子是在售票处排队买电影票。
- 它是最简单的 CPU 调度算法
- 它是一种非抢占式 CPU 调度算法,因此在进程被分配给 CPU 后,它将永远不会释放 CPU,直到它完成执行。