linux 内核中实现了多少种不同的算法?只有FIFO和Round Robin,还是还有其他的?
我在哪里可以找到关于这个主题的好文档?
假设我想实现这些算法 myslef,我应该从哪里开始?
最佳答案
在实时调度器方面,linux提供了FIFO和Round-Robin(POSIX SCHED_FIFO
and SCHED_RR
)。还有一个名为 Completely Fair Scheduler (CFS) 的分时调度程序。 ,它非常复杂,您可以将其称为多个调度程序(即,多核,以及针对不同负载的多种抢占样式/风格)。 CFS 在内核文档 (sched-design-CFS) 中有一些详细描述,但建议仔细阅读相关资源。 CFS 是 Linux 对 POSIX 的 SCHED_OTHER
策略的实现。
此外,还有添加其他调度策略的补丁,如 a new real-time Earliest Deadline First (EDF) scheduler .
除了有关该主题的许多书籍(其中许多在出版时已过时)之外,您还可以引用 kernel documentation here或者在 docs/scheduler 下的内核树中。细读 LKML archives for discussion on the topic 也很有用.
如果您刚刚起步或想使用范围更广的实时调度程序,您可以考虑 UNC 的 LITMUS-RT framework .
关于linux - linux内核中的调度算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599524/