最近在一次采访中,我被问及 Linux 操作系统使用的调度算法。使用什么算法,为什么?
另外,实时操作系统使用什么算法?为什么?
答案1
当前的Linux任务调度器称为完全公平调度器(CFS)。你应该看看http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt更多细节。该设计相当复杂,在我看来不适合 RTOS。
实时系统中的一种常见技术是速率单调调度,因为如果某些假设成立(例如静态任务优先级和固定的执行时间和速率),它具有强有力的保证。还有很多其他算法,并且已经有很多研究。因此,这基本上都是关于您需要的属性以及您对任务的了解以及修复的内容。
答案2
循环算法一般用于分时环境。
答案3
我不太确定您是否正在考虑内核的 I/O 调度。如果您不是:请忽略此答案。
维基百科指出,CFG(完全公平排队)自内核 2.6.18 起为默认值。
答案4
这是对你另一个问题的回答。实时系统(RTS)有两种类型:硬实时系统和软实时系统。硬RTS的CPU调度算法是基于优先级的抢占式算法,软RTS的CPU调度算法是非抢占式优先级。