最短作业优先(SJF)调度算法将每个进程与其下次 CPU 执行的长度关联起来。当 CPU 变为空闲时,它会被赋给具有最短 CPU 执行的进程。如果两个进程具有同样长度的 CPU 执行,那么可以由 FCFS 来处理。
一个更为恰当的表示是最短下次CPU执行算法,这是因为调度取决于进程的下次 CPU 执行的长度,而不是其总的长度。我们使用 SJF 一词,主要由于大多数教科书和有关人员都这么称呼这种类型的调度策略。
举一个 SJF 调度的例子,假设有如下一组进程,CPU 执行长度以 ms 计:
进程 | 执行时间 |
---|---|
P1 | 6 |
P2 | 8 |
P3 | 7 |
P4 | 3 |
采用 SJF 调度,就会根据如下 Gantt 图来调度这些进程: