svenfx..
17
在实时调度中,FIFO和RR与非实时调度具有完全相同的含义.始终以FIFO方式选择过程,然而,与SCHED_RR的时间量不同,SCHED_FIFO的时间量不受限制.
SCHED_FIFO进程不会抢占相同优先级的SCHED_RR进程.
sched_setscheduler(2) - Linux手册页
...
"进程的调度策略确定将其插入具有相同静态优先级的进程列表的位置以及它将如何在此列表中移动.所有调度都是抢占式的:如果具有更高静态优先级的进程准备好运行,则当前正在运行进程将被抢占并返回到等待列表中以获得其静态优先级.调度策略仅确定具有相同静态优先级的可运行进程列表中的排序."
...
"SCHED_FIFO进程一直运行,直到它被I/O请求阻塞,它被更高优先级的进程抢占,或者它调用sched_yield(2)."
...
"当SCHED_FIFO进程变为可运行时,它将被插入列表的末尾以获得其优先级."
...
"SCHED_RR:循环调度
SCHED_RR是SCHED_FIFO的简单增强.上面针对SCHED_FIFO描述的所有内容也适用于SCHED_RR,除了每个进程仅允许运行最大时间量程.如果SCHED_RR进程已经运行了等于或长于时间量程的时间段,则它将被放在列表的末尾以获得其优先级.已经被更高优先级进程抢占并随后作为运行进程恢复执行的SCHED_RR进程将完成其循环时间量的未到期部分.