SCHED_FIFO和SCHED_RR都适用于实时用途。我知道SCHED_RR可以通过时间切片来抢占。但是如果我有一个线程设置为SCHED_FIFO,另一个设置为SCHED_RR,如果两个线程都准备好运行,它们是否纯粹按优先级进行调度?如果他们有相同的优先权怎么办?
答案 0 :(得分:4)
从概念上讲,有一个与每个静态优先级相关联的可运行进程列表。这些列表可以包含SCHED_FIFO
和SCHED_RR
进程 - 这两个调度策略共享同一组静态优先级。
选择要运行的进程时,无论该进程的调度策略如何,调度程序都会将进程置于具有最高静态优先级的非空列表的开头。
调度策略会影响进程在这些列表中的移动方式。对于SCHED_FIFO
,一旦进程到达列表的头部以获得给定的优先级,它将保持在那里直到它阻塞或产生。对于SCHED_RR
,超出其最大时间量的可运行进程将被移动到列表的末尾以获得其静态优先级。