Xenomai's API of Posix skin中,我发现:
波西克斯皮肤。
时钟和计时器服务。
条件变量服务。
中断管理服务。
消息队列服务。
互斥服务。
信号灯服务。
共享内存服务。
信号服务。
线程管理服务。
线程取消。
线程调度服务。
线程创建属性。
线程特定数据。
我看不到有关文件处理和套接字编程的任何内容,所以我猜可能文件处理和套接字不会实时处理?猜错了吗?
请引导。

最佳答案

xenomai及其源代码rtai都控制您的调度程序,将linux内核本身作为非实时线程处理。
它们提供了许多服务,如您所见,其中大部分都与线程和同步相关,它们不调用linux api(在内核空间)或系统调用(在用户空间)。如您所知,实时性就是“保证最后期限”,而调用Linux会违反这一点(因为Linux不保证任何东西)。
由于驱动程序在实时系统中也很重要,因此它们实现了实时驱动程序模型(rtdm),该模型有助于在实时环境中实现和使用设备驱动程序。
内核中的文件处理受到强烈反对。如果您正在讨论用户空间实时应用程序,那么您可以访问rtdm中实现的任何驱动程序。如果找不到文件处理或套接字,则不能使用它们。注意,即使是printf也使用Linux系统调用,并且是禁止的。
请注意,如果你真的使用它们,没有任何中断,你只是失去了你的实时性!我个人确实使用文件进行日志记录,但只有在出现错误时才调用它们,这意味着实时性已经被破坏。
我不知道xenomai,但至少在rtai中,如果调用linux系统调用,那么在内核日志中会收到类似“rtai:lxrt changed mode:syscall…”的警告。

关于linux - 哪些代码不应该写成实时代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10025959/

10-12 14:18
查看更多