来自:https://mail.rtai.org/pipermail/rtai/2012-April/024968.html
将发生的情况是,当一个真正的实时RTAI任务由Linux发出信号时,您将在一个未定义的时间段内释放实时时间。
一般而言,RTAI不支持POSIX API。
那么,当POSIX实时信号被发送到RTAI的实时任务时,控制被转移到用户空间?但是我认为,因为POSIX信号也是实时的,所以它们可以写在内核模块(?)中。那么,怎么能说它会导致软实时呢?
我不太清楚这句话的原因,请解释一下我遗漏了什么。
发布于 2012-05-03 11:02:57
首先,您所说的将控件转移到用户空间是什么意思?如果您的任务位于内核空间,则永远无法将其转移到用户空间。如果它在用户空间,那么它已经存在了!
在RTAI中,有硬实时任务、软实时任务和Linux内核.任务由RTAI或Linux内核调度。RTAI确保了实时行为,所以像截止日期和时间段等都与RTAI相匹配.然而,Linux不理解其中任何一个,也不关心这些。
现在,只要您的代码使用RTAI,一切都很好。如果您调用任何需要由Linux内核执行的操作,则会丢失实时,因为RTAI将Linux内核调度为一个非实时进程。所以经验法则是,任何通过Linux的东西都是不好的。
如果您收到来自Linux的信号,那么Linux内核就会处理这个过程的一部分,更不用说在Linux上下文中运行的信号处理程序了,中断也被禁用了。这意味着您完全脱离了您的实时环境,而没有RTAI对这种情况有任何控制。这就是实时的危险。
https://stackoverflow.com/questions/10257984
复制相似问题