实时操作系统:PREEMPT_RT Linux vs QNX和其他

drkbr07n  于 5个月前  发布在  Linux
关注(0)|答案(1)|浏览(130)

我有很多关于Linux与RT补丁与本地RT操作系统和应用程序的问题。请回答他们,因为有很少的RT应用程序的信息,不幸的是。
您能否解释一下PREEMPT_RT是使Linux与用户应用程序成为硬实时系统还是软/硬实时系统?(Differences between hard real-time, soft real-time, and firm real-time?

  • 如果是真的(是硬实时系统),那么要符合这些要求需要满足什么条件?据我所知(如果我说错了请指正),用PREEMPT_RT实时调用Linux系统需要满足这些条件:
  • 应重构所有系统驱动程序,以符合实时要求。
  • 用户应用程序必须在不同的CPU内核上运行
  • 必须重构用户应用程序以符合实时要求。

是真的吗?PREEMPT_RT是否也提供了符合实时性要求的驱动程序(以太网等),或者只是用户需要自己重构它们?
2.如果是硬实时系统,与经典的实时系统如QNX相比有什么优缺点?可能是QNX的中断响应时间更短或抖动更小?为什么没有人(据我所知)在关键应用如飞机或航天应用中使用PREEMPT_RT?可能是因为某种惰性,或者是RT Linux不适合这些应用?
但是,另一方面,Linux比经典的实时操作系统支持更多的CPU架构,而且Linux比QNX更容易找到熟练的开发人员。
谢谢

z2acfund

z2acfund1#

PREEMPT_RT不会使您的Linux成为硬实时,它只是减少了阻塞操作的延迟。
然而,即使在未打补丁的Linux上,如果您隔离一个CPU核心,在内核 Boot 行中设置isolcpus=... nohz_full=... rcu_nocbs=...,将实时进程绑定到该核心并为其设置任何实时调度策略,您也可以实现硬实时性能(只是为了提示内核),你将得到一个裸金属进程,它永远不会被内核或任何硬件中断中断。现在就看你如何以硬实时的方式编写代码了-即确保所有操作都是可预测的、确保不使用任何系统调用、确保预分配并固定所有存储器等。
这不是一个操作系统,使您的系统硬实时,这是您的用户空间代码的责任。
Linux(即使未打补丁)广泛用于硬实时应用程序,如高频交易、机器人、航空航天、汽车。

相关问题