天天看点

《双内核实时系统下各个进程间通信方法的性能分析和测试》

[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 进程之间的通信,主要有以下特性:

  1. 数据以字节流的形式顺序写入RTFIFO一端,在另一端按写入的先后顺序对其进行读操作,典型的,固定大小的数据结构被写到FIFO,但在有些情况下,可变大小的消息被写入,此时,需要搜索边界信息。
  2. 一个RTFIFO可以对称地用于内核空间和用户空间,一边打开写,另一边打开读。且在RTFIFO变满之前写进程向其缓存增加数据而不必等待读进程就绪。
  3. RTFIFO 被看作文件系统中的 /dev/rtfx 设备。
  4. RTFIFO支持多个读者和写者,并且支持超时读写。

除了以上特性之外,RTFIFO还支持信号量同步、支持事件通知的异步信号、支持/proc文件系统接口等。

邮箱

  1. 它能够被明确地安装来接收指定大小的信息。
  2. 多个发送者和接收者可以被连接到同一邮箱。邮箱里的消息被取走的顺序取决于接收者的优先级。
  3. 当大量消息需要发送,该服务提供的函数允许进程仅仅发送消息的一部分,其中这部分被存储在邮箱里,返回未发送的字节数,或者继续发送直到所有的消息被接收。

共享内存

  1. 数据不排队,数据结构里不同大小的个别项可以被更新,而不需要顺序存取。
  2. 共享内存没有点对点的限制,共享内存能被任意数量的 Linux 进程或实时任务读写。
  3. 不支持同步阻塞,要确定数据是否是最新的,数据必须包含一个计数用来与以前的读进行比较或者使用其他的握手机制。
  4. 不保证Linux和实时Linux进程的相互排斥,即不保证互斥访问。

继续阅读