【问题标题】:Multiple scheduling policies usage多个调度策略使用
【发布时间】:2012-02-29 10:44:50
【问题描述】:

我们是否可以将SCHED_OTHERSCHED_RR 用于两个线程,如果可以,CPU 将如何处理具有非实时和实时策略的线程。

【问题讨论】:

    标签: linux-kernel posix scheduling


    【解决方案1】:

    实时线程(即SCHED_RR)将始终抢占非实时线程(即SCHED_OTHER)。

    换句话说,SCHED_OTHER 线程只有在 SCHED_RR 线程被阻塞时才有机会运行。

    【讨论】:

    • 如果假设具有实时策略的线程持续更长的时间,那么具有 SCHED_OTHER 策略的线程会发生什么?
    • @Gughan:SCHED_OTHER 线程一直等到实时线程放弃 CPU。如果实时线程永远不会放弃 CPU,则 SCHED_OTHER 线程永远不会有机会运行。
    【解决方案2】:

    @janneb 所说的对于 POSIX 的 Linux 实现来说是正确的。但是由于这个问题也被标记为posix,我将引用POSIX 7 says about it

    在其他线程在 SCHED_FIFO、SCHED_RR 或 SCHED_SPORADIC 下执行的系统中,使用 SCHED_OTHER 策略调度线程的效果由实现定义。

    所以我可以从中解释的是 POSIX 没有指定会发生什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2017-10-14
      • 2018-05-02
      • 2013-01-07
      相关资源
      最近更新 更多