5

SCHED_FIFO 和 SCHED_RR 都用于实时使用。我知道 SCHED_RR 可以被时间片抢占。但是假设我有一个线程设置为 SCHED_FIFO,另一个设置为 SCHED_RR,如果两个线程都准备好运行,它们是纯粹按优先级调度的吗?如果他们有相同的优先级怎么办?

4

1 回答 1

6

从概念上讲,有一个与每个静态优先级相关联的可运行进程列表。这些列表可以同时包含SCHED_FIFOSCHED_RR进程——这两个调度策略共享同一组静态优先级。

在选择要运行的进程时,调度程序会采用具有最高静态优先级的非空列表头部的进程,而不管该进程的调度策略如何。

调度策略会影响进程在这些列表中的移动方式。对于SCHED_FIFO,一旦一个进程到达给定优先级的列表的头部,它将一直停留在那里,直到它阻塞或屈服。对于SCHED_RR,已超过其最大时间量的可运行进程将被移至列表的末尾以获取其静态优先级。

于 2012-12-04T04:53:44.983 回答