Linux SCHED_OTHER,SCHED_FIFO和SCHED_RR - 差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux SCHED_OTHER,SCHED_FIFO和SCHED_RR - 差异相关的知识,希望对你有一定的参考价值。

有人可以解释SCHED_OTHER,SCHED_FIFO和SCHED_RR之间的区别吗?

谢谢

答案

SCHED_FIFO和SCHED_RR是所谓的“实时”策略。它们实现POSIX标准指定的固定优先级实时调度。具有这些策略的任务会抢占所有其他任务,因此很容易导致饥饿(如果他们不释放CPU)。

SCHED_FIFO和SCHED_RR之间的区别在于具有相同优先级的任务中,SCHED_RR执行具有特定时间片的循环;相反,SCHED_FIFO需要任务明确地产生处理器。

SCHED_OTHER是常见的循环时间共享调度策略,它根据系统中运行的其他任务来调度特定时间片的任务。

更新:自Linux 3.14起,还有一个名为SCHED_DEADLINE的附加策略。此策略在Earliest Deadline First队列之上实现恒定带宽服务器(CBS)算法。此策略下的每个任务都分配了截止日期,并执行最早期限任务。描述该算法的最佳资源是Deadline scheduling in the Linux kernel

更新2:自Linux 4.13起,SCHED_DEADLINE已用Greedy Reclamation of Unused Bandwidth (GRUB) algorithm取代了CBS。

以上是关于Linux SCHED_OTHER,SCHED_FIFO和SCHED_RR - 差异的主要内容,如果未能解决你的问题,请参考以下文章

如果我的调度策略是 SCHED_OTHER,使用 setpriority() 是不是有任何影响

SCHED_OTHER/SCHED_FIFO 的 pthread sched_get_priority_min/max 实现

Linux的实时任务调度

Linux 线程调度与优先级

Linux 线程调度与优先级设置

Linux 线程调度与优先级