eve*_*ve 29 linux scheduling scheduler linux-kernel cfs
有人可以解释SCHED_OTHER,SCHED_FIFO和SCHED_RR之间的区别吗?
谢谢
Cla*_*dio 50
SCHED_FIFO和SCHED_RR是所谓的"实时"策略.它们实现POSIX标准指定的固定优先级实时调度.具有这些策略的任务会抢占所有其他任务,因此很容易导致饥饿(如果他们不释放CPU).
SCHED_FIFO和SCHED_RR之间的区别在于具有相同优先级的任务中,SCHED_RR执行具有特定时间片的循环; 相反,SCHED_FIFO需要任务明确地产生处理器.
SCHED_OTHER是常见的循环时间共享调度策略,它根据系统中运行的其他任务来调度特定时间片的任务.
更新:自Linux 3.14起,还有一个名为SCHED_DEADLINE的附加策略.此策略在最早期限第一个队列之上实现恒定带宽服务器(CBS)算法.此策略下的每个任务都分配了截止日期,并执行最早期限任务.描述该算法的最佳资源是Linux内核中的截止日期调度.
更新2:自Linux 4.13起,SCHED_DEADLINE已将CBS替换为未使用带宽的贪婪回收(GRUB)算法.
小智 6
以下是基于 Linux 手册 ( http://man7.org/linux/man-pages/man7/sched.7.html ) 的SCHED_OTHER、SCHED_FIFO 和 SCHED_RR 之间的差异
SCHED_FIFO:先进先出调度
SCHED_FIFO只能用于高于 0 的静态优先级,这意味着当 SCHED_FIFO 线程变为可运行时,它将始终立即抢占任何当前正在运行的 SCHED_OTHER、SCHED_BATCH 或 SCHED_IDLE 线程。SCHED_FIFO 是一种简单的调度算法,没有时间分片。
SCHED_RR:循环调度
SCHED_RR是 SCHED_FIFO 的简单增强。上面针对 SCHED_FIFO 描述的所有内容也适用于 SCHED_RR,除了每个线程只允许运行最大时间量。如果 SCHED_RR 线程已运行的时间段等于或长于时间片,则它会因其优先级而被放在列表的末尾。
SCHED_OTHER:Linux 默认分时调度
SCHED_OTHER只能用于静态优先级 0(即实时策略下的线程始终优先于 SCHED_OTHER 进程。SCHED_OTHER 是标准的 Linux 分时调度程序,适用于所有不需要特殊实时机制的线程.
| 归档时间: |
|
| 查看次数: |
41975 次 |
| 最近记录: |