(by huihoo.org Allen,fat1)

原文:http://www.cs.wustl.edu/~schmidt/TAO-architecture.html

TAO(实时CORBA)系统构架概述


TAO是一个ORB实现,它包含了网络接口,操作系统,通信协议以及CORBA中间件构件和相关特性。

图 1. TAO构架构件 TAO功能

图 1中每个构件的摘要如下:有关TAO ORB系统构架的完整信息请看在线的RT-ORB.pdf文档


1. G比特I/O子系统

一个I/O子系统负责ORB和应用程序对底层网络和操作系统资源,如设备驱动程序,协议栈,CPUs等资源的 访问。这里很关键的问题是建立一个实时I/O子系统(1)加强在最小化优先反演和不确定性时的QoS保证, (2) 这使应用程序对特殊的QoS需求变得很方便,而且(3)有助于ORB中间件利用通过基本的网络所提供的QoS保证

面对这些挑战,我们为华盛顿大学的TAO开发了一个运行在G比特ATM网络之上的高性能的I/O子系统 TAO I/O子系统包括以下构件 (1) 一个高速的ATM端接口控制器(APIC),(2) 一个实时的I/O子系统, (3) 一个实时的调度器, 和(4) 一个 输入控制器, 显示在图 2.

图 2. TAO的G比特I/O子系统

为了确保应用程序的QoS,TAO从底层的I/O子系统获得保证。为了完成这个任务,我们正在开发一个高新能的网络I/O子系统。 其系统构件描述如下.

1.1. 高速网络适配器

我们的I/O子系统的心脏是一个由一个或多个ATM接口控制器芯片(APIC)互相连接而组成的菊花链 .APIC能作为一个系统/网络接口使用,也能作为I/O接口芯片组使用.它支持一个双向2.4Gbps速率的聚集 .另外, TAO分层结构的设计使它能运行在通常的连接到通过使能QoS的的网络(如支持RSVP的IPv6)和实时互连(如VME底板和多处理器 的共享内存环境)的网络嵌入式平台.

1.2. 实时I/O系统

TAO通过Solaris和实时操作系统VxWorks等提供了增强的流模式.TAO的实时I/O系统最优化反演和隐藏的调度问题源 于协议的处理中.我们的策略是避免优先反演,用一个核心线程池专用处理协议并且用应用程序的线程关联这些线程. 这些核心线程运行在与应用程序线程同样的优先级别, 这样能防止多种实时调度事故的发生如优先反演和隐藏调度.

1.3. 实时调度

TAO通过支持周期性实时应用程序的实时I/O调度类来确保支持QoS. 一旦实时I/O类的一个线程被操作系统接纳, 调度程序将负责(1) 计算在类中相关的其它线程的优先级并且(2)周期性地分发这些线程以使它们在最后期限是满足的.

TAO实时I/O调度类允许应用程序指定它们在一个高级, 直觉方式下的需求.例如, TAO实时调度类的一个实现是基于比率单调调度(rate monotonic scheduling)的, 这些应用程序能在它们的计算时间里指定它们的处理需求C 和周期P. 操作系统为实时I/O线程赋于优先级以确保可调度.

1.4. 输入控制器

为确保应用程序的QoS需求,TAO为实时I/O调度类执行输入控制 .输入控制允许操作系统要么确保指定的计算时间,要么拒绝接收线程. 输入控制对于实时系统在确定和统计QoS需求方面很有 用处.


2. 实时ORB核心

TAO ORB核心管理传输连接, 传递客户请求到一个对象适配器,并可能返回响应给客户.它也负责处理应用构件的并发模式.图 3 表示了在TAO ORB核心客户端和服务器端的构件.

图 3. TAO的ORB核心构件

TAO's ORB 核心是基于高性能,跨平台的ACE构件之上,如接收器和连接器, 感应器,和任务. 图 3 说明了TAO ORB核心的客户端是如何使用ACE的 策略连接器去缓冲到服务器的连接的, 这样就保存在调用和执行之间的连接设置时间和最小化时间(minimizing latencies). 服务器端使用ACE的 策略连接器, 在与感应器的连接中, 获得连接.感应器 代表着一种连接处理器激活ACE激活策略的方式 (e.g., 一个线程激活策略在图中显示), 将每个线程句柄转到相应的活动对象. 连接处理器从请求中解析出Inter-ORB Protocol(IOP)并把它们 传递到TAO的对象适配器,并由对象适配器将这些请求分发到伺服程序进行处理.


3. 实时对象适配器

TAO对象适配器负责对客户请求到对象实现的多路分解分发. 一个标准的GIOP兼容性客户请求包含了远程对象实现和操作的标识. 远程对象实现用一个对象键表示,远程操作以一个字符串表示.通常ORB通过以下步骤解析客户对目标对象实现 操作的请求(显示在图 4(A)):

图 4. 分层和DE分层的多路分解

通过所有层的多路分解客户请求的代价是非常昂贵的, 尤其是当在一个IDL接口中存在大量的操作或者是一个ORB管理着大量的对象更表现的如此.为了减少开销, TAO使用de-分层多路分解 (Figure 4(B)).这种近似使用多路分解键(demultiplexing keys)的方式把ORB指派给客户端. 这些键映射客户请求到对象/操作在O(1)时间里不需要任何的哈西运算或搜索.

为了将来减少多路分解层的数目,APIC能通过编程和使用ATM虚拟环路的方式直接分发客户请求. 这种策略减少了多路分解的执行时间和支持在每请求或每对象基础上的端对端QoS.


4. 通过实时IDL模式实现QoS规范

使用TAO的实时应用程序必须明确指定它们要调度的资源请求所需要的TAO的实时调度服务. 在程序执行前,一个基于每操作的QoS信息在程序执行前提供给TAO.为了CPU的需要, 通过 RT_Operations使用RT_Info中的IDLstruct属性来表示Qos需求 图 5.

图 5. TAO的QoS规范模型

RT_Operation是一个调度操作, i.e.,它通过TAO使用RT_Info struct表示成一种被调度的资源需求 .RT_Info属性包含了worst-case执行时间周期, 重要的和数据依赖的.使用与RMS和RMA分析方法类似的调度技术,TAO实时调度服务判断在一个应用中是否有一个基于所有RT_Info数据的知识为所有的RT_Operations的可行度量.

这些属性对于通过使用TAO来 (1) 验证调度的可行性和 (2) 定位ORB系统和网络资源是足够的. 目前,开发者必须通过CORBA接口手工来确定这些参数并将它们提供给TAO的实时调度服务.我们应计划通过创建一个监视examples脚本执行的工具来自动取出这些必要的实时参数.同样,作为真实执行的替代,仿真结果能被 用来为每个操作定义RT_Info属性.


5. 实时调度服务

TAO的实时调度服务是一个CORBA对象,它具有以下的离线和运行时职责:

TAO运行时调度模式的参与者显示在图 6中并描述如下:

图 6. TAO的调度服务


6. 构件和最优化的表现层

表现层在一个高性能的通信系统中是个大的瓶颈.这层转换从高级表现到低级表现的操作参数(即编组)反之(解组). 在TAO中,这些转换操作是通过高效的IDL编译器生成的客户桩和服务器框架完成的. 这些杂TAO表现层的优化操作的实现描述如下.

6.1. 表现层的优化

这种在IDL定义和目标编程语言之间的转换是通过TAO的IDL编译器自动完成的. 此外减少了客户桩和服务器框架之间潜在的不一致性, 编译器支持自动更新优化. TAO IDL编译器被设计成可为IDL类型的编码、解码生成和配置多种策略. 举例, 基于一种运行时应用类型的测量, TAO 既能连接编译,也能解释IDL桩和骨架. 这样一种灵活性能在解释模式(运行速度慢一些,但尺寸会更小一些)和编译模式(速度会更快,但尺寸会大一些) 之前获得一种最佳的平衡点.

同样, TAO 能缓冲那些要反复使用的预编组的应用数据单元(ADUs) . 当ADUs在``请求链''被顺序传递时和and 每个ADU在从一处传递到另一处时的细微改变 能提高性能. 在下面的案例中, 在每一次的 整个过程中,ADUs是不必编组的. 最优化要求实时ORB执行应用程序代码的流分析以确定请求字段能否被缓冲.

虽然这些技术在一般情况能相当程度减少编组过载 , 有严格实时服务要求的应用程序经常要考虑只有最坏情况的执行. 这样的结果是, 流分析的最优化描述只能使用在确定环境上, e.g., 目的是让应用程序能接收、统计实时服务的或当最坏情况for applications that can accept statistical real-time service or when the worst-case scenarios are still 足够to meet deadlines.

6.2. 内存优化管理

通常CORBA工具经常忍受过多的动态存储管理和数据拷贝. 因为 堆栈的分段存储能为不同的消息大小和不同的工作量表现出不均匀的性能的原因动态存储管理会是硬盘实时系统的问题. 同样, 在整个ORB端系统中过多的数据拷贝会很大程度上降低端到端的性能.

现存的ORBs为多处理器使用动态存储管理. ORB核心通常为每个接收到的客户请求分配存储空间. IIOP解组引擎 通常为保持的解码请求参数分配存储空间. 最终, IDL 分别在上调之前和上调之后动态分配和删除客户端请求时参数的拷贝.

这些存储管理策略在一些环境中非常重要(e.g., 当上调生成用于修改它们输入的线程应用时为了防止破坏内部CORBA缓冲区). 然而, 这种策略不需要为实时应用增加内存和总线负载, 和流媒体应用一样(比如 卫星监视和电视会议) 在消耗它们输入而不用立即修改它.

TAO 被设计为小型化和清除在多点的数据拷贝. 举个例子, TAO的 ``零拷贝'' 缓冲区管理系统 被描述在允许客户请求被发送和接收和从不会导致任何数据拷贝开销的网络来. 此外, 这些缓冲区能在ORB的不同传输阶段被重新分配和传递. 另外, 集成层处理(ILP) 能用户减少数据的移动. 因为 ILP 需要维护顺序的约束, 我们提供的编译器技术(比如 控制和数据流分析) 用于检测ILP能被有效用于哪些方面.

将编译器技术用于表现层和存储管理功能允许我们在不修改标准OMG IDL和CORBA应用程序的情况下优化性能.


Back to the TAO intro page.

Last modified 09:10:05 CDT 23 June 2002