实时编程使用Linux(Real-time programming with Linux)

2019-07-29 07:19发布

我刚刚建立,并成立了香草Linux内核与应用RT补丁。 一切都很好,我现在可以正确地引导到新内核。

是什么让我知道是这样的:我有一个我用C做了一个模拟程序,我希望它在硬实时模式下执行,如应该由新的内核被允许。 也许整个模拟器并不需要与实时优先级运行,但一些任务里面做。

我怎样才能做到这一点? 我认为,简单地运行该程序不会做。

Answer 1:

如果你问如何运行的一些实时背景线程,和其他常规的分时线程,那么所有你需要的是他们的设置适当的调度使用sched_setscheduler

分时线要成为SCHED_OTHER ; 实时仿真线程想SCHED_FIFOSCHED_RR

在Linux上,为了在实时优先级运行,您的用户必须具有资源限制( 男子2 RLIMIT ),允许这一点。 特别是,你rtprio RLIMIT必须设置为你所需要的最高优先级。 另外,您也可以运行应用程序的根目录。 与PAM Linux系统中,这通常通过加入适当的行来实现/etc/security/limits.conf

    @realtime   -  rtprio     99

这将授予rtprio最高限额实时优先级99 实时组。 然后添加一个实时的组/etc/groups ,并确保你的用户是在一组。

(而且,由于这似乎是你第一次这样做,你可能还需要有围绕一个“死人的开关”高优先级的实时线程,以确保您的模拟器不失控,并导致系统不可用......如果你是高仿真的CPU负载,你可能会得到实际的高CPU的负荷,无法停止的事情而无需重新启动。)



文章来源: Real-time programming with Linux