技术中心
 
 

一种面向嵌入式系统的进程间消息通信方法的设计

   日期:2006-02-25     作者:管理员    

    大型的通信设备为了提高设备性能都尽量装备更多的CPU,使不同的功能模块装备相应的 CPU,每一个自主功能模块都有自主运行的嵌入式操作系统。为了使各功能模块运行的应用进程能够互相协调,就需要下层操作系统提供分布式系统的支持功能。

    根据文献[1,2]对分布式系统的定义,对于一个分布式操作系统来说,应用进程可能会运行在不同的处理系统上,在这些处理系统之间,可能存在着全局共享的存储系统。当然,也可能没有全局共享的存储系统,每个 CPU 系统都只能访问本地的存储系统和文件系统。本文讨论在没有全局共享存储系统的情况下,运行于不同 CPU 系统之间的基于消息的进程间通信机理和方法。

    20 世纪 70 年代以来,分布式操作系统[3]虽然从单系统操作系统中发展出来,但主要用于解决通用计算系统的分布式系统设计,对于嵌入式系统则关注不多,相关的设计方法和设计思想亦乏善可陈。

    一个典型的多 CPU 嵌入式系统应具有如下特点[4]:
  

; (1)由于存储空间有限且对实时性要求也非常严格,因此在设计针对多 CPU 嵌入式系统的分布式操作系统的进程间消息通信方法时,必须充分考虑到执行效率和内存占用的 问题。

   (2)一个典型的多 CPU 嵌入式系统运行的应用进程种类比较单一,CPU 的数量也远远小于大型分布式系统。在逻辑上,各个不同的 CPU 系统执行的应用进程在功能上都相对独立,相互之间的通信量不大;在物理上,一般各 CPU 系统基本都在同一个机架或者同一个机房内,物理连接稳定高效,因此,进程间通信的路由算法[5]可以设计得相对简单而有效。

   (3)多 CPU 嵌入式系统不同于普通的分布式系统之处在于它的各 CPU 系统之间的物理通信方式种类繁多,即使在同一个嵌入式CPU 系统中,也可能会使用到多种不同的物理通信方式。

   (4)出于对功能和成本的考虑,构成同一个多 CPU 嵌入式系统的各个子 CPU 系统的能力往往大不一样,一般会存在一个比较强大的中心 CPU 系统,以及通过各种物理连接连接到这个中心 CPU 系统的各终端 CPU 系统。

    根据多 CPU 嵌入式系统的上述特点,本文提出一个在多 CPU 嵌入式系统中使用的分布式操作系统进程间消息通信的设计方法。

1 多 CPU 嵌入式系统的硬件系统
    在给出此进程间消息通信方法的设计之前,先给出该方法所基于的多 CPU 系统的嵌入式系统的硬件体系结构特征:

    (1)拥有多个 CPU 系统;

    (2)各 CPU 终端系统之间都会有物理连接到中心 CPU 系统,可能是总线式的连接,也可能是点对点的连接。各终端 CPU 系统之间可能存在物理连接,也可能不存在物理连接;

    (3)各 CPU 系统上运行的进程间需相互通信,以便能协调运行;

    (4)由于没有全局共享的存储系统,每个 CPU 系统都使用本地存储系统,所以进程间通信必须使用基于消息的通信方式。

    许多大型的嵌入式系统,如在通信设备、航空航天设备中,有类似的硬件体系结构。其典型的结构框图如图 1 所示。

    图 1 中的点到点链路可能是通用异步收发(UART)链路,也可以是高速数据链路(HDLC)链路,泛指使用点到点方式连接的链路。图 1 中的点到多点链路可能是 UART 串口链路,也可以是 HDLC 链路,泛指使用点到多点方式连接中心 CPU系统和多个终端 CPU 系统的链路;图 1 中的总线链路可能是以太网总线链路,也可以是 HDLC 总线链路,泛指使用总线式结构的物理链路。

 

一种面向嵌入式系统的进程间消息通信方法的设计如图


        图 1 多 CPU 系统的嵌入式系统的典型硬件体系结构

 

    与普通的多 CPU 系统相比,多 CPU 系统的嵌入式系统在物理连接方式上更为复杂,但是各 CPU 系统的功能和位置却相对固定,中心 CPU 系统和终端 CPU 系统之间有着明显控制和被控制关系。这决定了在设计中,进程间消息通信将采用集中的路由控制方式。

2 多 CPU 嵌入式系统进程间消息通信方法的层次结构
&nbs p;   本文提出的运行在多 CPU 嵌入式系统上的分布式操作系统的进程间消息通信方法具有如图 2 所示的层次结构。

 

一种面向嵌入式系统的进程间消息通信方法的设计如图

点击看原图


    由图 2 可以看出,进程间消息通信主要分 3 个层次:

   (1)进程接口层,主要负责提供发送时的应用编程接口(API),完成接收消息的进程间分发;

   (2)路由层,主要负责实现进程地址到实际传输地址的解析;

   (3)数据链路传输层,主要负责维护本 CPU 系统到其他 CPU 系统的通信链路,保证消息的可靠传输。


3 应用进程接口层的设计
    应用进程接口层要实现的功能有:

    (1)供进程间消息通信的发送接口。不管需要通信的目的进程是否是在同一个 CPU 系统中运行,对上的接口都是统一的。


    (2)的消息派发到各进程。


    (3)步消息(阻塞方式)和异

步消息(无阻塞方式)处理。


     在运行时,应用进程接口层程序将根据上层代码在调用时的输入参数,确定进程间消息通信是在同一个 CPU 系统内还是在不同的CPU 系统间,是同步方式还是异步方式,据此分别启动相应的处理流程,并启动统一的接收消息处理进程统一处理发送给本 CPU 系统的消息。同步消息处理和异步消息处理的发送处理流程设计如图 3 所示。

 

一种面向嵌入式系统的进程间消息通信方法的设计如图

 

4 路由层的设计
   在多 CPU 嵌入式系统中,各 CPU 系统功能相对独立,在各 CPU 系统上运行的进程也相对固定,因此,开发者会清楚地知道需要和那个 CPU 系统上的哪个进程通信。所以本文设计的进程间消息通信使用的地址格式是“主机名+进程名”的两段格式。

    应用进程使用字符串来标识地址,在路由层将字符串格式的地址根据地址映射表转化为 2 进制格式的地址,相当于主机编号+进程编号”,再根据地址中的主机编号查询路由表链路配置得到相应的链路号,从而完成路由层的地址解析和链路查找的功能。

4.1 地址映射表的设计
    地址映射表是一个两级映射结构,如图 4 所示。

 

一种面向嵌入式系统的进程间消息通信方法的设计如图


   

  如前文所述,在多 CPU 嵌入式系统的,CPU 系统的数量不会很多,使用遍历查找不会有很大的效率问题,当然在对效率的轻微下降也很敏感的地方也可以使用一些如“命名分类”等提高效率的方法。
4.2 路由表的设计

    路由表是一个主机编号和使用链路一一对应的表结构,同时还有一个可选的缺省转发链路表项,如图 5所示。

4.3 路由表和地址
    映射表的维护

    根据多 CPU 嵌入式系统的特性,路由表和地址映射表的维护都是使用了中心 CPU系统集中控制的方式。具体方法如下:

    (1)中心 CPU 系统有着缺省的主机编号,中心 CPU 系统的路由管理进程也有缺省的路由管理进程编号;

    (2)终端 CPU 系统启动时,向中心 CPU系统发送路由维护请求,请求信息中包括本 CPU 系统的信
息,如本机名、本机进程编号表、本机硬件地址(总线型链路必须提供);

    (3)中心 CPU 系统在收到请求后,为该终端 CPU 系统分配主机编号,并且把该主机编号和收到该请求的链路设备号添加到路由表中,同时把该主机名、主机编号、主机进程表添加到地址映射表中,然后向终端 CPU 系统发送路由维护回应(回应中包括全局的地址映射表及为该终端 CPU 系统分配的主机编号);

     (4)终端的 CPU 系统收到回应后,更新或创立自己的地址映射表。对于使用点到点链路或点到多点链路和中心 CPU系统相连的终端 CPU 系统来说,本地的路由表比较简单,只有到中心 CPU 系统一条上连链路,和其他 CPU 系统上的进程通信都通过中心CPU 系统来转发;对使用总线式链路和中心CPU 系统相连的终端 CPU 系统来说,使用类似地址解析协议(ARP)的方式来维护本地的路由表。

       (5)各终端 CPU 系统的缺省转发主机和 缺省转发链路都指向中心 CPU 系统以及和中心
CPU 系统相连的链路。

      (6)各终端 CPU 系统的运行进程发生变化后,都向中心 CPU 系统上报消息,中心 CPU系统根据终端 CPU 系统上报的消息更新全局地址映射表,并将更新后的全局映射表发送到整个 CPU 系统中。为了提高更新效率,可以采取增量更新的方式。中心 CPU 系统还会定时发送全局地址映射表,以确保整个系统的地址映射表一致。

      (7)在发送和接收消息时都使用全局地址映射表做地址解析。


5 数据链路层的设计
      通过路由层对发送消息目标地址的解析和 映射,可以得到该消息需要使用的链路号。根据链路号,数 据链路层可以找到发送的设备驱动,并调用设备驱动发送消 息。具体来说,数据链路层任务主要有:对消息进行分包和 组包以适应硬件发送设备对最大包长度的限制;实现流量控制和自动重发机制,确保数据包在链路层的可靠传输;管理所有用于 CPU 系统间通信的硬

件设备,维护链路的添加、 删除,统计链路上的各种信息等。


6 结束语
      与普通分布式系统的运行环境不同,多 CPU 嵌入式系统一般是可定制的,各 CPU 终端系统之间的物理连接方式 不统一、不同类型的物理链路并存是基本特点,这些特点, 在以往常规的分布式系统的设计中都未考虑。


      本文针对多 CPU 嵌入式系统提出的进程间消息通信的方法,根据其应用环境比普通分布式系统的环境要相对稳定 和简单的特点,简化了进程的路由寻址设计,得到了提高效率和简化实现的好处。而且由于采用了分层设计,各层间功 能界定清晰、接口明确,每一层为上层提供服务,屏蔽实现细节,使得该进程间消息通信方法还具有良好的可移植性和软件重构能力。

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢