操作系统 SJF最短作业优先调度

操作系统 SJF最短作业优先调度

到目前为止,我们根据进程的到达时间(在FCFS调度中)来安排进程的调度。然而,SJF调度算法根据它们的执行时间来安排进程。

在SJF调度中,就绪队列中可用进程列表中执行时间最短的进程将被调度。

然而,很难预测进程所需的执行时间,因此该算法在系统中实施起来很困难。

SJF的优点

  1. 最大吞吐量
  2. 最小平均等待时间和周转时间

SJF的缺点

  1. 可能会遇到饥饿问题
  2. 不可实施,因为无法提前知道进程的准确执行时间。

有不同的技术可用来确定进程的CPU执行时间。我们将在后面详细讨论它们。

示例

在下面的示例中,有五个作业,分别命名为P1、P2、P3、P4和P5。它们的到达时间和执行时间在下表中给出。

PID Arrival Time Burst Time Completion Time Turn Around Time Waiting Time
1 1 7 8 7 0
2 3 3 13 10 7
3 6 2 10 4 2
4 7 10 31 24 14
5 9 8 21 12 4

由于没有进程在时间0到达,因此在 Gantt图 中会有一个空槽,从时间0到1(第一个进程到达的时间)。

根据算法,操作系统调度就绪队列中可用进程中的最短执行时间的进程。

到目前为止,我们只有一个进程在就绪队列中,因此调度程序将安排该进程到处理器,无论其执行时间是多少。

这将执行8个时间单位。在此期间,另外三个进程到达就绪队列,因此调度程序将选择执行时间最短的进程。

在给定的进程表中,P3将是下一个执行的进程,因为它的执行时间是所有可用进程中最短的。

这就是 最短作业优先(SJF) 调度算法的工作原理。

操作系统 SJF最短作业优先调度

平均等待时间 = 27/5

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程