Linux中的实时调度程序

时间:2018-07-09 13:08:48

标签: linux scheduler

为什么在Linux中, sched_fifo sched_rr 被称为实时调度程序,而 sched_other 被称为非实时调度程序?

2 个答案:

答案 0 :(得分:1)

关于调度程序,术语“实时”用于表示调度程序是否可以在数学上保证在某些参数内系统中的所有定期任务都将满足其期限。这在诸如闭环控制之类的事情中很重要。

Linux内核的问题在于,即使您使用的是实时调度程序,由于内核本身的自旋锁之类的原因,您也无法保证将按时完成任务。如果您想要真正的实时性,那么在撰写本文时,您不仅必须使用实时调度程序,而且还必须使用实时补丁。将来,社区中的某些人打算将这些补丁放入主线内核中。

答案 1 :(得分:0)

调度程序是内核组件,它决定接下来将由CPU执行哪个可运行线程。每个线程都有一个关联的调度策略和一个 static 调度优先级 sched_priority 。调度程序根据调度策略和系统上所有线程的静态优先级进行决策。

对于根据常规调度策略(SCHED_OTHER,SCHED_IDLE,SCHED_BATCH)之一调度的线程, sched_priority 未用于调度决策(必须指定为0) 。

根据实时策略(SCHED_FIFO,SCHED_RR)之一调度的进程的 sched_priority 值在1(低)到99(高)之间。 (正如数字所示,实时线程始终比普通线程具有更高的优先级。)

相关问题