【发布时间】:2012-03-19 17:34:18
【问题描述】:
Linux 内核中是否可以同时存在两个以上的调度策略? FIFO和Round Robin可以在同一台机器上工作吗?
【问题讨论】:
标签: operating-system linux-kernel scheduling scheduled-tasks round-robin
Linux 内核中是否可以同时存在两个以上的调度策略? FIFO和Round Robin可以在同一台机器上工作吗?
【问题讨论】:
标签: operating-system linux-kernel scheduling scheduled-tasks round-robin
是的,Linux 支持不少于 4 种不同的任务调度方法:SCHED_BATCH、SCHED_FAIR、SCHED_FIFO 和 SCHED_RR。
不管调度方法如何,所有任务也有一个固定的硬优先级(批量和公平为 0,FIFO 和 RR 的 RT 调度方法为 1-99)。任务首先按优先级选择 - 最高优先级获胜。
但是,由于有多个任务可以以相同的优先级运行,这就是调度方法发挥作用的地方:一个公平的任务只会运行它分配的权重(权重来自一个软优先级称为任务的好级别)相对于其他公平任务的 CPU 时间份额,FIFO 任务将运行固定的时间片,然后让给另一个任务(具有相同的优先级 - 更高优先级的任务总是获胜),而 RR 任务将运行直到它阻止忽略具有相同优先级的其他任务。
请注意我上面写的内容准确但不完整,因为它没有考虑提前 CPU 预留功能,但它给出了不同调度方法相互交互的细节。
【讨论】:
是的!现在有一天,我们在操作系统的不同阶段有不同的调度策略.. 循环通常在核心执行之前完成...... fifo 完成,在新进程的开始阶段...... !!!
【讨论】: