繁体   English   中英

使用Linux进行实时编程

[英]Real-time programming with Linux

我刚刚构建并设置了带有RT补丁的Vanilla Linux内核。 一切正常,我现在可以正确启动到新内核了。

让我感到奇怪的是:我有一个用C编写的模拟器程序,并且希望它在硬实时模式下执行,这是新内核所允许的。 整个模拟器可能不需要以实时优先级运行,但是其中的某些任务确实需要。

我怎么能做到这一点? 我认为仅仅运行程序是行不通的。

如果您询问如何在实时上下文中运行某些线程,而其他线程则作为常规的分时线程,那么您所需sched_setscheduler就是使用sched_setscheduler正确设置其调度程序

分时线程希望为SCHED_OTHER 实时模拟器线程希望为SCHED_FIFOSCHED_RR

在Linux上,为了以实时优先级运行,您的用户必须具有允许的资源限制( man 2 rlimit )。 特别是,您的rtprio rlimit必须设置为所需的最高优先级。 或者,您可以以root用户身份运行该应用程序。 在具有PAM的linux系统中,这通常是通过在/etc/security/limits.conf添加适当的行来完成的

@realtime   -  rtprio     99

这会将rtprio限制授予实时组最高实时优先级99。 然后,您将一个实时组添加到/etc/groups并确保您的用户在该组中。

(而且,由于这似乎是您第一次这样做,因此,您可能还需要一个“死人的开关”高优先级实时线程,以确保您的模拟器不会失控并渲染系统无法使用...如果您正在模拟高CPU负载,则可能会获得ACTUAL高CPU负载,并且如果不重新启动就无法停止操作。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM