Linux内核调度实现

Linux内核调度实现,linux,linux-kernel,kernel,Linux,Linux Kernel,Kernel,我和我的朋友们正在试图找到一种方法来为SCHED_NORMAL和SCHED_批处理类实现新的(实际上是旧的:)内核调度算法。换句话说,我们试图实现循环或FIFO行为,而不是公平调度算法。我们一直在阅读内核代码,我们取得了一些进展,但这还不够。启动此过程的已知方法是什么?我们如何开始(开始实施这些算法) 多谢各位 我们一直在阅读内核代码,我们取得了一些进展,但事实并非如此 足够地启动此过程的已知方法是什么?我们如何开始 (开始实施这些算法) 好的,这些概念有点复杂,并且经过了很大的发展,所以你应该

我和我的朋友们正在试图找到一种方法来为SCHED_NORMAL和SCHED_批处理类实现新的(实际上是旧的:)内核调度算法。换句话说,我们试图实现循环或FIFO行为,而不是公平调度算法。我们一直在阅读内核代码,我们取得了一些进展,但这还不够。启动此过程的已知方法是什么?我们如何开始(开始实施这些算法)

多谢各位

我们一直在阅读内核代码,我们取得了一些进展,但事实并非如此 足够地启动此过程的已知方法是什么?我们如何开始 (开始实施这些算法)

好的,这些概念有点复杂,并且经过了很大的发展,所以你应该从下面的参考资料开始理解这些概念和算法。一旦你理解了,就应该开始阅读内核代码。这应该是一种方法

您可能需要参考一些伟大的经典书籍,其中详细描述了这些概念和实现

  • 作者莫里斯·巴赫(Maurice J Bach)(第08章)

  • 罗伯特·洛夫的(第04章)


  • Linux内核已经支持实时调度;同时支持循环和FIFO策略。请参阅sched_setscheduler()手册页了解详细信息。@esorton您是否建议我们只需将策略设置为SCHED_RR,一切都将正常工作?是的。您不需要实施新的调度算法,除非您希望这样做是为了获得学习体验。如果您将流程的调度策略设置为SCHED_RR,它将以实时优先级运行。具有SCHED_RR或SCHED_FIFO策略将在SCHED_NORMAL策略的进程之前运行。@esorton听起来不错。但是,有没有其他方法可以用SCHED_NORMAL CFS替换该算法。我们需要替换SCHED.c中的所有结构吗?不幸的是,我不熟悉内核方面的内容,只熟悉用户级别。如果你确实想实现你自己的调度程序,我注意到这个问题,有点老了,但可能会有帮助。我们正在使用Love的书,我们已经阅读了第4章。我们对调度算法也有想法。我们的问题是开始这个过程。我在考虑获取sched_fair.c代码并对其进行修改,或者获取sched_rt.c并对其进行修改。但是,我不知道I don’我不知道如何与sched.c.沟通,换句话说,sched.c.需要什么样的结构。