PREEMPT_RT 内核是通过以下几个关键机制来实现实时性的:
抢占式内核调度器:
PREEMPT_RT 内核使用了抢占式的调度器,可以及时中断正在运行的进程,并立即切换到更高优先级的实时进程执行。这与标准内核的协作式调度器不同,后者只有在进程主动放弃 CPU 时才能切换到其他进程。
中断路径优化:
PREEMPT_RT 内核优化了中断处理路径,尽可能缩短中断响应时间,避免中断处理程序占用 CPU 过长时间,影响实时进程的执行。
内核抢占点的增加:
PREEMPT_RT 内核在更多的内核代码路径中增加了抢占点,使得较高优先级的实时进程可以更快地得到执行。
内核锁的优化:
PREEMPT_RT 内核优化了内核锁的实现,减少了内核代码临界区的长度,提高了内核的可抢占性。
中断线程化:
PREEMPT_RT 内核将中断处理程序转换为可抢占的内核线程,而不是在中断上下文中直接处理中断,从而减少了中断处理程序对实时任务的干扰。
软中断推迟:
PREEMPT_RT 内核将一些软中断的处理推迟到内核线程中执行,而不是在中断上下文中处理,从而减少了中断处理对实时任务的影响。