Linux内核中的调度策略

5
在Linux内核中,是否可以同时使用两种以上的调度策略?FIFO和Round Robin可以在同一台机器上同时运行吗?
2个回答

11

是的,Linux支持不少于4种不同的任务调度方法:SCHED_BATCH、SCHED_FAIR、SCHED_FIFO和SCHED_RR。

无论使用哪种调度方法,所有任务都有一个固定的硬优先级(批处理和公平调度的优先级为0,先进先出和循环调度的实时调度方法的优先级为1-99)。任务首先按优先级选择——最高优先级获胜。

然而,当几个任务具有相同的优先级可供运行时,这就是调度方法发挥作用的地方:公平任务将仅在其分配的加权(加权来自称为任务好的软优先级)CPU时间内运行,以考虑其他公平任务,FIFO任务将在运行一段固定时间片后让给另一个任务(相同优先级的更高优先级任务总是获胜),RR任务将运行直到阻塞,而不考虑具有相同优先级的其他任务。

请注意,我上面所写的是准确的但不完整的,因为它没有考虑到先进的CPU保留功能,但它提供了有关不同调度方法如何相互交互的详细信息。


那么,每个调度策略都有单独的运行队列和等待队列吗? - Sharat Chandra
不同的调度策略族群有不同的运行队列:一个实时(RR和FIFO)运行队列和一个公平(nice level和batch)运行队列。据我所知,等待队列是针对你正在等待的对象而言的,与调度策略无关。 - gby
是的,等待队列是针对每个设备的。 - Sharat Chandra
1
几乎正确。RR有一个固定的时间片,而FIFO将一直运行直到yield或blocked。 - ola1olsson

1

是的!现在我们在操作系统的不同阶段有不同的调度策略。轮询通常在获取核心执行之前完成...先进先出是在新进程开始阶段完成的...!!!


1
@chandra:你可以看一下中期和长期调度器...它们都存在于同一个内核中。 - RKT

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