使用preempt_rt补丁在用户空间中实时很难实现

时间:2012-04-23 05:00:25

标签: linux real-time hard-real-time preempt-rt

来自:https://rt.wiki.kernel.org/articles/f/r/e/Frequently_Asked_Questions_7407.html

  

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

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

3 个答案:

答案 0 :(得分:2)

不,那不是它的意思。

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

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

顺便提一下,请记住,PREEMPT_RT会减少任务所经历的最大延迟,但系统吞吐量会降低(即更多上下文切换),并且平均延迟可能会增加。 / p>

答案 1 :(得分:1)

这取决于你对“实时效果”的意思。通常,您希望在实时系统中具有保证计时行为。你不会那样的。但是,您的应用程序将更“平稳”运行并且响应更快。对于许多尽力而为的系统来说,这就足够了。

答案 2 :(得分:1)

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

如果你有一个编写良好的用户空间应用程序,它依赖于能够在硬件条件决定它应该响应时尽快运行,那么是的,这些补丁可以帮助。但你仍然可以编写糟糕的应用程序来阻止良好的实时行为,而补丁集也无法帮助你。