Linux内核调度

8
我希望了解旧版Linux调度算法SJF(最短作业优先)如何计算进程运行时间?

这是一个相当合理的问题,但你确定Linux曾经使用过SJF调度器吗? - zdav
1
@zdav:我相信早期的Linux 2.0版本有一个实验性的SJF调度程序,但它很短命。它可以追溯到Redhat 4,大约是1996/1997左右。如果我没记错的话,只有手动编译带有GNU的Linux的人才真正测试它,RH没有默认安装它。可能我记忆有点模糊了,毕竟那是很久以前的事情了。 - Tim Post
2个回答

5

这个问题实际上是为什么 SJF 算法很少在常见环境中使用的主要原因之一,因为 SJF 算法需要精确估计所有进程的运行时间, 而这只在专用环境中给出。

在常见情况下,您只能获得估计和不准确的进程运行时间长度,例如通过记录同一进程的前几个 CPU 暴发的长度,并使用数学逼近方法来计算下一次它将运行多长时间。


1

如果你有一些闲置的带宽,你也许可以在这里找到实际的代码。从2.0开始,我认为你会发现这是试验性的。

SJF(短作业优先调度算法)据我所知非常短命,正如ZelluX所指出的确切原因

我认为你理解其背后的原理的唯一希望就在于代码上了。你也许能够在模拟器中构建它并使其启动。

编辑:

我现在不能完全确定它是否曾经进入过主线。如果你找不到它,请不要责怪我 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接