[1]冯蕴,杨斌.双内核实时系统下各进程间通信方法的性能分析和测试[J].成都信息工程学院学报,2010,25(04):366-369.
Linux 内核由于任务调度、中断处理等还不能满足强实时应用的需要,所以实时性要求较高的应用需要通过对 Linux 内核进行实时改造达到强实时性要求,强实时 Linux 补丁 RTAI 就是一款较成功的改造方法。强实时环境下的 IPCs 是系统设计实现过程中的重要系统功能且与普通 Linux 有诸多不同,涉及到非实时任务之间、实时任务与非实时任务、实时任务之间的多种交互方式。IPCs: RT-FIFOs、共享内存和邮箱。
实时 Linux 中的主要 IPCs 方法
进程间通信描述了活动进程或任务间不同的消息传递方法,同时也包含了各种形式的数据同步方法。Linux 提供了标准的 System V IPC 供用户进程传递和共享数据,它们是 FIFOs、共享内存、信号量和管道。尽管如此,这些 Linux IPC 机制不能用于实时系统。
RTAI 提供了一套额外的 IPC 机制用于在实时和 Linux 用户空间域的任务和进程之间传递或共享数据。这些机制包括RTFIFOs、共享内存、邮箱、信号量以及RPCs(远程过程调用)。
RT-FIFOs
一个 RT-FIFO 是一个单通道的读写缓存,用于任务和进程间的异步数据传递。多用于实时任务和 Linux 进程之间的通信,也可以用于实时任务之间的通信或 Linux 进程之间的通信,主要有以下特性:
除了以上特性之外,RTFIFO还支持信号量同步、支持事件通知的异步信号、支持/proc文件系统接口等。
邮箱
邮箱服务允许进程间的消息在需要时能够在一个优先级队列里自动地存储和检索。邮箱是RTAI中最灵活的 IPCs 方法。
共享内存
允许在不同的实时任务和 Linux 进程之间共享内存,该服务是对称的,首次分配做一个真正的分配,任何随后在Linux进程中使用相同名字的分配调用,仅仅映射到用户空间的区域或者返回相关的指向已分配的内核空间的指针。