Linux内核中的调度算法

4

Linux内核中实现了多少种不同的算法?除了FIFO和Round Robin之外,还有其他的吗?

在这个主题上,我可以找到哪些好的文档资料呢?

假设我想要自己实现这些算法,我应该从哪里开始呢?


最好的学习方法:阅读内核代码。 - iyasar
1个回答

8
就实时调度而言,Linux 提供先进先出 (FIFO) 和轮流调度 (Round-Robin) (POSIX SCHED_FIFOSCHED_RR)。此外还有一种称为完全公平调度器 (CFS)的时间共享调度器,它足够复杂,可以将其称为多个调度器(即多核心和不同负载的几种风格/类型的抢占)。CFS在内核文档中有详细描述(sched-design-CFS),但建议仔细阅读相关源代码。CFS是Linux对POSIX的SCHED_OTHER策略的实现。
此外,还有补丁可以添加其他调度策略,例如新的实时最早截止时间优先(EDF)调度器
除了一些关于这个话题的书籍,很多在出版时就已经过时了,你可以参考这里的内核文档或者在内核树下的docs/scheduler中查看。同时,浏览LKML邮件列表中对于这个话题的讨论也是很有用的。
如果你刚开始学习或者想要尝试更广泛的实时调度器,你可以考虑使用UNC的LITMUS-RT框架

书籍 - 预印刷的网页。你得笑 :-) - user82238
1
@BlankXavier:尤其是在“实时”这个话题上特别具有讽刺意味。 - andersoj

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