CORBA在分布式嵌入式实时系统中的应用
扫描二维码
随时随地手机看文章
随着嵌入式实时系统的飞速发展,它已被广泛应用到军事、通信、工业控制等领域。近年来,嵌入式操作系统、嵌入式芯片都日渐成熟,嵌入式软件开发方式也发生了很大改变。嵌入式实时系统的发展方向之一是建立分布式系统。在通信和军事领域,各种嵌入式设备之间需要进行实时通信,而且各种设备往往建立在异构的软硬件平台上。CORBA实现了在分布式系统上的面向对象编程,比较适合建立分布式异构系统。但是由于传统的CORBA对存储容量要求较大,且不能满足实时要求,因而在分布式实时嵌入式系统中的应用受到限制。软件技术和硬件设备的发展为建立分布式嵌入式实时系统铺平了道路。CORBA技术和嵌入式系统的结合成为当前的研究热门之一。本文首先分析了分布式嵌入式实时系统的特点和要求,然后对实时CORBA处理器、内存和网络资源管理的主要技术进行总结,在此基础上,提出了利用CORBA技术建立分布式嵌入式实时系统的三种方案。
1分布式嵌入式实时系统的软硬件要求
1.1 嵌入式系统的特点
嵌入式系统是指除了台式机、笔记本电脑和主机的计算系统外的、嵌入到设备环境中、自治地执行既定操作的专用计算机系统,一般由处理器、感应器和反应器组成。越来越多的消费类电子产品、办公自动化设备、商务设备和汽车等应用环境中都有嵌入式系统。
与普通台式机相比,嵌入式系统具有以下特点:
(1)功能单一。嵌入式系统一般应用在各种专业领域,其软硬件都针对最终功能进行裁剪,不具备通用性。
(2)资源限制。为了降低成本,嵌入式系统的资源都受到严格限制,主要为处理器资源、存储器资源和网络资源。
(3)反应性与实时性。嵌入式系统一般采用实时操作系统,进程调度采用抢占式调度策略。
1.2 分布式嵌入式实时系统的关键设计因素
所谓分布式系统,是指各种嵌入式实时设备除了自治完成其特定功能之外,还必须通过网络互联实现相互之间的通信,以完成数据传输、远程控制等功能。分布式嵌入式实时系统的关键设计因素包括:
(1)分布适应性(Distribution Flexibility)。分布式系统的底层结构必须支持位置透明性,应用程序不必处理目标对象的物理位置。远程通信时,程序员不必关心发现对象、使用网络进行通信等细节。这样既可以隔离网络底层与应用高层,支持异构系统,也有利于对系统进行扩展和维护。
(2)异构系统(Heterogeneous Systems)。分布式系统必须无缝集成各种不同层次的异构系统,如网络、操作系统、编程语言。要求用标准的分布式中间件来实现不同语言、数据格式和调用方法的对象之间的相互通信。
(3)分布实时限制(Distributed Real-Time Constrains)。在分布式嵌入式实时系统中,必须对远程过程调用的通信延迟进行考虑,硬件和通信协议的选择对延迟都有很大影响。
(4)内存限制(Memory Limitation)。在每个嵌入式芯片上安装的系统软件、通信软件和应用软件都受到严格的内存限制。必须选择合适的软件并可以进行特殊的裁剪以降低存储容量的消耗和提高内存使用和访问效率。
2CORBA在分布式系统上应用的优势
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织发布的开放的软件标准,是目前最流行的中间件平台。CORBA 仅定义接口,不定义具体实现方式,各厂商或研究机构都可以根据规范进行具体实现。目前很多主流的软件供应商都提供对CORBA的支持。
分布式系统有多种实现方案,如:多计算机系统、网络操作系统、基于中间件的操作系统。其不同点主要是透明度、异构性和可扩展性。基于中间件的操作系统透明度比较高,例如CORBA可以提供访问透明性、位置透明性、复制透明性、安全透明性等。CORBA通过中间件的形式提供多种通用服务,大大降低了开发分布式应用程序的生命周期和成本,降低了程序出错的可能性。
如图1所示,客户程序通过名称服务等方法获得远程对象的引用后就可以调用远程对象的方法。在客户机上的桩(stub)模拟服务器上的实际对象,程序员只需要调用对象的方法而不必关心对象是在本地还是远程。方法调用通过底层的ORB(对象请求代理)进行参数和返回值的包装与解包,ORB可以屏蔽不同的网络协议。同时ORB以中间件的形式提供多种通用服务,可以大大降低程序员的编程代价。
CORBA支持各种面向对象的编程语言,如C++和JAVA。特别需要强调的是:CORBA将远程调用也封装在对象中,对程序员隐藏了底层的通信细节。程序员对分布式对象的引用与集中式环境下的引用基本相同,因此可以大大提高软件的生产效率。
3实时CORBA的资源管理
通用的CORBA并不提供对实时系统的支持,这阻碍了CORBA在实时嵌入式系统中的应用。为此,OMG对CORBA进行了扩展,于2002年提出了Real-time CORBA规范1.0版,但它仅支持静态调度;2003年11月OMG推出了Real-time CORBA规范2.0版,以支持动态调度。Real-time CORBA的目标是通过实施系统行为的端到端的可预测性(End-to-End Predictability)和提供对资源管理的支持来满足实时要求。实时CORBA牺牲了CORBA的部分通用特性来支持实时系统的开发。应用程序开发过程中,必须进行显式的资源请求,资源的分配可以静态处理。
在优先级固定的CORBA系统中,所谓“端到端的可预测性”是指:(1)在处理CORBA调用而发生资源竞争时遵守客户机与服务器之间的线程优先级;(2)端到端进行处理时限定发生优先级反转的时间长度;(3)限定操作调用的延迟。
实时CORBA的接口和机制可以保证ORB和应用程序成为可预测的组合。应用程序通过使用实时CORBA的接口来管理资源;ORB机制协调组成应用程序的行为;实时CORBA则通过实时操作系统来调度线程和处理资源竞争。
Real-time CORBA规范中抽象的“活动”被具体化为三种处于不同阶段的实体,即传输协议中的消息、内存中的请求以及被调度到处理器上运行的线程。这三个阶段分别被称为“传输中”、“静态的”和“活动的”。实时CORBA可以对这三种状态中的活动进行作用。应用程序开发人员必须通过实时CORBA提供的界面对“活动”的状态进行界定。
如图2所示,实时CORBA规范对CORBA体系结构的主要扩展是调度服务和优先级映射。
CORBA实时嵌入式系统包括4个主要的组成部分:操作系统、实时ORB、通信传输、应用程序。为了保证整个嵌入式系统满足实时要求,系统的各组成部分及其相互之间的结合都应具有时间上的确定性。
Real-time CORBA必须建立在嵌入式设备的本机实时操作系统基础上,利用本地的实时操作系统进行处理器资源、存储资源和网络资源的管理,以实现整个系统上端到端的可预测性。
(1)处理器资源管理
CORBA进行处理器资源管理的策略是将网络任务的优先级映射到实时操作系统的优先级队列中。有二种映射方法:一种是将网络ORB请求映射到整个实时操作系统的优先级范围;另一种是映射到本地实时操作系统优先级的一个子集上。
优先级继承与传播:在运行过程中,进程会创建子进程,不同的进程之间相互调用,如果不支持优先级继承和传播,则无法保证正确的优先级关系。被调用进程的优先级必须大于或等于调用进程的优先级。因此在调用时,必须动态改变被调用进程的优先级。
(2)存储管理
Real-Time CORBA的存储管理是通过进程池来实现的。本地操作系统给CORBA子系统分配一定数量的进程数目,并根据请求参数配置进程可用的存储资源。
CORBA进程申请缓冲区时,操作系统会对系统空闲区加锁,然后再根据请求分配存储区域。当系统空闲区不能满足连续分配时,系统将对内存区域进行移动或合并,这一过程中进程处于等待状态。更严重的是,如果此时出现一个更高优先级的内存请求,则不管当前是否能满足,由于已经加锁,这一高优先级的进程只能等待低优先级进程结束并释放资源。解决方法是预先分配不同的内存池供不同进程使用,这样,进程之间不再互斥共享存储区域。
(3)网络资源管理
在多任务嵌入式操作系统中,多个进程可能并发要求网络进行数据传输。传统CORBA一般采用复用技术以降低硬件开销,即只有一个端口和单线连接,程序与通信端口之间的绑定是隐式的,实际的绑定被延迟到有数据传输请求时。但是这种网络复用无法保证实时性。一般情况下,网络资源属于不可抢夺资源,因此高优先级的进程必须等待低优先级进程完成后才能使用网络。为了保证实时性,可以为多个任务申请不同的端口和专线连接,程序与通信端口之间的连接绑定进行预先分配。由于嵌入式系统功能比较单一,在设计系统时事先可以确定所需要的最大连接数目,所以这种方案是可行的,只是网络硬件资源的利用率可能比较低。一种改进的方案是设立不同优先级的端口和连接,ORB根据请求的优先级动态确定使用的端口和连接。为了确保网络连接的实时性,可以针对不同情况选择以下的策略:
①选择协议:除了TCP/IP协议,可以根据实际要求采用其他网络协议以提高数据传输速度。
②私有连接:通过专线连接,线路没有复用和共享。这种方法代价较大,但是对实时性的支持也最大。
③多路连接:可以支持线路复用,也可以提高容错性能,连接的管理可以对应用程序透明。这样,ORB必须提供适当的机制以确保高优先级任务优先获得连接,另外,也可以由程序员显式绑定。
利用上述各种资源管理策略,实时CORBA可实现各种软实时和硬实时系统的QoS要求。
4用CORBA建立分布式嵌入式系统的方案
目前,针对不同的应用场合,在内存资源受到严格限制的嵌入式设备上建立分布式系统的方法大致分成三类。
(1)减少内存使用
OMG于2002年8月推出了minimum CORBA规范1.0版以满足一些内存受到限制的系统的需求,包括软实时嵌入式系统。minimum CORBA是CORBA的一个子集,它对CORBA的某些部分进行了裁剪,去除了在嵌入式系统中不需要的部分,要求是去除这些部分后的minimal CORBA仍然能满足可移植性和可互操作性等性能。由于嵌入式系统的专用性,通常,在编译时刻都可以确定系统的功能,因此动态调用接口(DII)、动态框架接口(DSI)等部分都被省略。经过裁剪的CORBA(如ORBexpress)的静态内存占用可以降低至100KB以下。minimum CORBA并不提供对硬实时系统的支持。如果需要实现硬实时系统,则必须选择满足Real-Time CORBA规范的产品,如华盛顿大学开发的TAO。
(2)特殊配置
可针对各种设备专门设计ORB系统,如应用在手持设备上的PalmORB。各种设备对资源的需求是不一样的,而且在系统设计时可以确定,因此可以对CORBA进行更多的裁剪。这种方案往往由专业厂商来实现,其特殊性比较强,一般不具备通用性,可扩展性能也比较差,这里不作详细介绍。
(3)利用代理
UORB(Ubiquitous Object Request Broker)是Universidade Federal de Pernambuco大学的G N Rodrigues首先提出的,它类似于sun公司的Jini Surrogate Architecture。UORB不需要在嵌入式设备内安装ORB系统,嵌入式设备通过线路与一台安装了ORB的计算机相连,相互之间通过私有协议进行通信。ORB网关与其他计算机互连,用IIOP进行通信,代理主机上用软件实现对象代理,即构造嵌入式系统的虚拟对象。对除代理主机以外的其他计算机,可以把嵌入式设备当成一般的设备进行通信。
CORBA代理模型不需要在设备上安装ORB库就允许设备加入CORBA网络环境。CORBA处理不是在嵌入式设备上而是位于代理主机上。这种方式是受到Jini Surrogate Architecture的启发而提出的。嵌入式设备不能直接与网络上的其他设备或主机进行通信,而必须通过安装了此设备代理的主机间接地与网络上其他设备进行通信。在嵌入式设备上的存储资源要求很低,对设备的要求只是设备必须与代理主机进行连接和通信。
以上三种方式对嵌入式设备的各种资源要求越来越少,每种方式都有其适用的范围,分别被不同的系统所采用。