【问题标题】:Scheduling policies in Linux KernelLinux 内核中的调度策略
【发布时间】:2012-03-19 17:34:18
【问题描述】:

Linux 内核中是否可以同时存在两个以上的调度策略? FIFO和Round Robin可以在同一台机器上工作吗?

【问题讨论】:

    标签: operating-system linux-kernel scheduling scheduled-tasks round-robin


    【解决方案1】:

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

    不管调度方法如何,所有任务也有一个固定的硬优先级(批量和公平为 0,FIFO 和 RR 的 RT 调度方法为 1-99)。任务首先按优先级选择 - 最高优先级获胜。

    但是,由于有多个任务可以以相同的优先级运行,这就是调度方法发挥作用的地方:一个公平的任务只会运行它分配的权重(权重来自一个软优先级称为任务的好级别)相对于其他公平任务的 CPU 时间份额,FIFO 任务将运行固定的时间片,然后让给另一个任务(具有相同的优先级 - 更高优先级的任务总是获胜),而 RR 任务将运行直到它阻止忽略具有相同优先级的其他任务。

    请注意我上面写的内容准确但不完整,因为它没有考虑提前 CPU 预留功能,但它给出了不同调度方法相互交互的细节。

    【讨论】:

    • 那么每个调度策略是否有单独的运行队列和等待队列?
    • 对于不同的调度策略族有不同的运行队列:RT运行队列(RR和FIFO)和公平运行队列(nice level和batch)。 AFAIK,等待队列是您正在等待的每个对象,与调度策略无关。
    • 是的..等待队列是每个设备
    • 几乎正确。 RR 有一个固定的时间片,FIFO 会一直运行到 yield 或阻塞。
    【解决方案2】:

    是的!现在有一天,我们在操作系统的不同阶段有不同的调度策略.. 循环通常在核心执行之前完成...... fifo 完成,在新进程的开始阶段...... !!!

    【讨论】:

    • @chandra:你可以看看中期、长期调度程序......它们都存在于同一个内核中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多