**批量进程(batch process)**进行一个长期运行的一般重复性的任务,不需要用户的任何干预。例如:工资单、保险索赔处理、天气预报、科学计算。
FIFO调度算法
FIFO(先入先出/First-In-FIrst-Out) 算法严格按照进程的到达时间来调度。到达时间越早,优先级越高。理论上,多个进程可以有相同的到达时间,在这种情况下,仲裁规则(arbitration rule)可以随机选择一个进程。实际上,所有请求都是顺序处理的,因此所有进程都有不同的到达时间。
FIFO是非抢占式的。
例:
- 需要调度三个进程。p1 到达 t = 0 并且需要 6 个单位的 CPU 时间。p2 到达 t = 1 并且需要 3 个单位。p3 到达 t = 3 并且需要 2 个单位。
- p1 首先到达并在 t = 0 时立即开始进程。
- p2 第二个到达,并且在 p1 在 t = 6 终止时立即开始。
- p3 是最后到达的进程,将在 p2 在 t = 9 处终止时开始。
SJF调度算法
SJF(最短作业优先/Shortest Job First)算法按照总的CPU需求时间调度进程。需求的CPU时间越少,优先级越高。
SJF是非抢占式的。
例:
- 需要调度三个进程。p1 到达 t = 0 并且需要 6 个单位的 CPU 时间。p2 到达 t = 1 并且需要 3 个单位。p3 到达 t = 3 并且需要 2 个单位。
- p1 首先到达并在 t = 0 时立即开始。
- p3 的总 CPU 时间要求比 p2 短