我对使用 RT 补丁的 Linux 与本机 RT 操作系统和应用程序有很多疑问。请回答他们,因为关于 RT 应用程序的信息很少,不幸的是..
您能否解释一下 PREEMPT_RT 使带有用户应用程序的 Linux 成为硬实时系统还是软/硬实时系统? (硬实时、软实时、硬实时的区别?)
这是真的吗?而如果满足了这些条件,这个系统能称为硬实时吗? PREEMPT_RT是否也提供了符合实时要求的所需驱动程序(以太网等),或者只是用户必须自己重构它们?
2.如果是硬实时系统,与QNX等经典实时系统相比有何优缺点? QNX 的中断反应时间或抖动可能更短吗?为什么没有人(据我所知)在飞机或太空应用等关键应用中使用 PREEMPT_RT?可能是因为某种惰性,或者可能是 RT Linux 不适合这些应用程序?
但是,另一方面,Linux 比传统的实时操作系统支持更多的 CPU 架构。与 QNX 相比,找到熟练的 Linux 开发人员要容易得多。
谢谢你。
PREEMPT_RT 不会使您的 Linux 成为硬实时,它只是减少其他阻塞操作的延迟。
然而,即使在未打补丁的 Linux 上,如果您隔离 CPU 核心,在内核引导行中设置
isolcpus=... nohz_full=... rcu_nocbs=...
,将实时进程绑定到该核心并设置任何实时进程,您也可以实现硬实时性能。时间调度策略(只是为了提示内核),您将获得一个永远不会被内核或任何硬件中断中断的裸机进程。现在,您需要以硬实时方式编写代码 - 即,确保所有操作都是可预测的,确保不使用任何系统调用,确保预分配和固定所有内存等。
不是操作系统让你的系统变得硬实时,而是你的用户空间代码负责。
Linux(甚至未打补丁)广泛应用于硬实时应用,例如高频交易、机器人、航空航天、汽车。