更新时间:2023-07-03 15:08
算法优缺点
最短作业优先算法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)长作业(进程)有可能被饿死。在有短作业(进程)持续不断存在的情况下,由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期得不到调度而饿死
(3)无法准确知道作业进程)的确切执行时间,致使该算法不一定能真正做到短作业优先调度。