用户空间中的硬实时preempt_rt补丁



发件人: https://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html

实时只对内核有影响;用户空间不会注意到差异,除了更好的实时行为。

这是否意味着如果我们在用户空间中编写应用程序,它们不会获得硬实时效果?

这取决于你所说的"实时效果"是什么意思。通常,您希望在实时系统中具有有保证的定时行为。你不会得到的。但是,您的应用程序将运行得更"流畅",并且响应速度更快。对于许多尽力而为的系统来说,这就足够了。

不,这不是它的意思。

这意味着通过PREEMPT_RT,您可以在用户空间中获得更低的最大延迟,而无需调整代码或使用其他库/工具。在实践中:PREEMPT_RT不需要用户级应用程序来使用特定的 API。

相反,内核代码中的 API 发生了重大变化(例如,通过将任何自旋锁更改为互斥锁等)。

顺便说一下,请记住,PREEMPT_RT减少了任务遇到的最大延迟,但系统吞吐量会更低(即,更多的上下文切换),并且平均延迟可能会增加。

我相信

这个问题可以在上下文中得到最好的回答 - 询问应用程序作者可以使用的特定补丁集是否引入了任何API - 并且此补丁集没有添加任何API。您无需重新编译应用程序,重新编译没有任何好处。您也不会被锁定在任何特定的 API 中。

如果您有一个编写良好的用户空间应用程序,该应用程序依赖于能够在硬件条件要求它应该响应时尽快运行,那么是的,这些补丁可以提供帮助。但是您仍然可以编写不良的应用程序来阻止良好的实时行为,并且补丁集无法帮助您。

这意味着实时补丁将操作内核中的一些代码,这种操作的效果是我们将拥有一个细粒度的抢占式内核。用户空间中的所有程序都将受益于实时抢占式内核,无需任何修改。甚至不需要重新编译!PREEMPT_RT补丁目标是将Linux转换为硬实时系统,它对大多数任务都非常好。但是在军事和航空航天等安全关键系统中,Linux 没有任何功能,我们应该使用其他 RTOS,如 VxWorks、QNX 和 Integirty!

最新更新