SJF代表最短作业优先。它是一种CPU 调度。该算法将每个进程与后者的下一个 CPU 突发的长度相关联。当 CPU 可用时,将其分配给下一个 CPU 突发时间最短的进程。它是一种选择执行时间最短的等待进程来执行的调度策略。如果两个进程的下一个 CPU 突发长度相同,则将执行先来。
特征
- SJF 算法可以是抢占式或非抢占式。
- 最短剩余时间调度是 SJF 调度的抢占式变体。
- 这种算法方法有助于批量处理。
- SJF 调度经常用于长期调度。
例子:
这里,我们给出了 4 个进程 P1、P2、P3 和 P4,它们的突发时间分别为 6、8、7、3。
让我们假设它们都同时到达。
根据 SJF 调度的定义,我们可以说 P4 先执行,然后 P1,然后 P3,最后 P2 执行。
甘特图将是:-
进程P1的等待时间为3个单位时间,进程P2的等待时间为16个单位时间,进程P3的等待时间为9个单位时间,进程P4的等待时间为0个单位时间。
因此平均等待时间是 (3 + 16 + 9 + 0)/4 = 7 个单位时间。
优点
- 它减少了平均等待时间。
- SJF 调度为一组特定的进程提供最短的平均等待时间。
- 就平均周转时间而言可能是最佳的。
缺点
- 它不能在短期 CPU 调度的层面上实现。
- 如果正在运行的进程的突发时间非常大,可能会导致其他进程的饥饿。
- 在执行之前必须知道作业的总执行时间。
- 没有办法知道下一个 CPU 突发的长度。