来自:https ://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html
实时只对内核有影响;除了更好的实时行为外,用户空间不会注意到差异。
这是否意味着如果我们在用户空间编写应用程序,它们将不会获得硬实时效果?
来自: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!