第 4 章 应用程序调整和部署
使用最佳配置和设置组合调整实时内核可帮助增强和开发 RHEL for Real Time 应用程序。
注意
通常,尝试使用 POSIX 定义的 API (应用程序编程接口)。RHEL for Real Time 符合 POSIX 标准。RHEL for Real Time 内核减少的延迟也基于 POSIX。
4.1. 实时应用中的信号处理 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
传统 UNIX 和 POSIX 信号有其用途,特别是用于错误处理,但它们不适合实时应用程序中作为事件交付机制。这是因为当前的 Linux 内核信号处理代码非常复杂,主要是因为旧行为和需要支持的许多 API。这种复杂性意味着,在提供信号时所用的代码路径并非始终最佳,应用程序可能会经历较长的延迟。
UNIX 信号后的原始动机是执行的不同"线程"之间的多路控制(进程)。信号的行为与操作系统中断类似。也就是说,当向应用发送信号时,应用的上下文会被保存,并开始执行之前注册的信号处理程序。信号处理程序完成后,应用将返回到在发送信号时执行它的位置。在实践中,这可能会变得复杂。
在实时应用程序中,信号无法信任。一个更好的选择是使用 POSIX 线程(线程)来分发工作负载,并在各种组件之间进行通信。您可以使用 mutexes、条件变量和障碍的 pthreads 机制协调线程组。这些相对新结构的代码路径比传统的处理代码更加干净。