操作系统 SJF最短作业优先调度
到目前为止,我们根据进程的到达时间(在FCFS调度中)来安排进程的调度。然而,SJF调度算法根据它们的执行时间来安排进程。
在SJF调度中,就绪队列中可用进程列表中执行时间最短的进程将被调度。
然而,很难预测进程所需的执行时间,因此该算法在系统中实施起来很困难。
SJF的优点
- 最大吞吐量
- 最小平均等待时间和周转时间
SJF的缺点
- 可能会遇到饥饿问题
- 不可实施,因为无法提前知道进程的准确执行时间。
有不同的技术可用来确定进程的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) 调度算法的工作原理。
平均等待时间 = 27/5