sjf

更新时间:2023-07-03 15:08

SJF算法是以进入系统的作业所要求的CPU时间为标准,是指对短作业或者短进程优先调度的算法,将每个进程与其估计运行时间进行关联选取估计计算时间最短的作业投入运行

算法优缺点

最短作业优先算法SJF

SJF(Shortest Job First )

SJF算法的优缺点:

算法易于实现。但效率不高,主要弱点是忽视了作业等待时间;会出现饥饿现象。

SJF算法与FCFS算法的比较:

SJF的平均作业waiting time比FCFS要小,故它的调度性能比FCFS好。

SJF调度算法的问题:

实现SJF调度算法需要知道作业所需运行时间,否则调度就没有依据,要精确知道一个作业的运行时间是办不到的。

SJF是一种Non-preemptive(非抢占式)调度。

与SJF类似的一种preemptive 版本的调度叫shortest-remaining-time-first。

SJF是一种优先调度(priority scheduling),优先的是inverse of 预测的下一个中央处理器突发时间。

SJF调度算法是被证明了的最佳调度算法,这是因为对于给定的一组进程,SJF算法的平均周转时间最小。通过将短进程移到长进程之前,短进程等待时间的减少大于长进程等特时间的增加,因此,平均等特时间减少了。

例如,有一组进程p1、p2、p3和p4,在0时刻到达,运行时间依次为6ms8ms.7ms.3ms.采用SF调度就能得到如图1所示的调度结果,因此,平均周转时间为w=(3+9+16+24)/4=13ms.如果使用FCFS调度方案,那么,平均周转时间w=(6+14+21+24)4=16.25ms.

SJF调度算法

从上面的例子可以看出,SJF算法能有效地降低作业的平均等待时间,提高系统吞吐量。但是也存在一些不容忽视的缺点。

(1)长作业(进程)有可能被饿死。在有短作业(进程)持续不断存在的情况下,由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期得不到调度而饿死

(2)缺少剥夺机制,不适用于分时系统或交互式事务处理环境。

(3)无法准确知道作业进程)的确切执行时间,致使该算法不一定能真正做到短作业优先调度。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}