Ada 95在计算机工程教育与HLA运行时基础设施中的应用
乌克兰计算机工程教育中Ada 95的引入
乌克兰正在开展一项与国家课程项目“教育 - 21世纪”相关的工作,旨在对教育系统进行重大改革。改革的时间表如下:
|时间范围|改革内容|
| ---- | ---- |
|1998年|制定新的教育方向列表|
|1999 - 2000年|制定完整的学士学位标准|
|2000 - 2001年|制定完整的专家学位标准|
|2001 - 2002年|制定完整的硕士学位标准|
这些完整的标准规定了毕业生的资格特征、主要课程和选修课程的结构、列表、内容以及测试方式。乌克兰教育部的一个工作组正在制定计算机工程领域的完整标准,本文作者是该工作组成员,同时也是“计算机工程”委员会的秘书。基辅理工学院(National Technical University - KPI)是负责制定这一新标准的基础大学。
在计算机工程教育中引入Ada语言计划分两步进行:
1.
第一步
:将Ada作为初学者的必修编程语言纳入新标准。
2.
第二步
:在大多数其他课程中使用Ada。
然而,面临的主要障碍包括:
1. 许多教师不了解Ada语言。
2. 部分教师认为Ada是一种非常复杂的语言。
3. 不少教师不了解最新的Ada标准(Ada’95)。
目前,乌克兰各大学采用Ada语言的工作正在进行中。乌克兰各大学的教师已在基辅理工学院学习了Ada语言。接下来,计划在乌克兰的几所大学开展Ada课程和研讨会(例如,4月和5月将在敖德萨和基洛夫格勒举办此类课程)。
使用Ada 95编程语言作为乌克兰计算机工程教育的基础语言,将带来以下好处:
- 学习现代杰出的编程语言。
- 进入现代信息技术的世界。
- 借鉴国际上教授和使用Ada的经验。
- 参与联合项目。
- 开展学生和教师交流活动。
甚至有人猜测,如果乌克兰核电站采用Ada语言,切尔诺贝利悲剧可能不会发生。
HLA概述
HLA(High Level Architecture)是美国国防部为实现模拟的互操作性和重用性而开发的标准。其正式定义主要包括三个部分:HLA规则、HLA接口规范(I/F Spec)和HLA对象模型模板(OMT)。HLA运行时基础设施(RTI)是实现I/F Spec的中间件,允许一组模拟(联邦)进行互操作。目前,HLA的标准化进程正在进行中(IEEE P1516)。到目前为止,美国国防部已资助开发了RTI原型,商业产品也开始出现,不过这些产品均使用C或C++开发。yaRTI是第一个纯Ada 95实现的HLA I/F Spec,充分利用了该语言强大的分布式和任务处理特性。
词汇和概念
- 联邦成员(Federate) :是符合HLA的模拟应用程序。它管理模拟参与者(对象),对象是对象类的实例,对象类具有属性(公共数据),并按继承层次结构组织。联邦成员还与其他联邦成员交换消息(交互),交互是交互类的实例,交互类具有参数(消息数据)。
- 联邦(Federation) :是一组联邦成员,是基于联邦成员的能力构建的分布式模拟应用程序。
-
SOM(Simulation Object Model)
:是对联邦成员能力的正式描述,主要包括:
- 模拟的参与者或部分参与者(联邦成员将发布的对象类属性),感兴趣的参与者或部分参与者(联邦成员将订阅的对象类属性),属性的更新责任(所有权)可能是可转移的。
- 可以发起的交互、对其做出反应或感兴趣的交互。交互是联邦成员之间的,与对象类没有明确关联。
- FOM(Federation Object Model) :描述了联邦内实际可以交换的内容。大致来说,FOM是联邦成员SOM交集的协商子集,该协商在联邦设计阶段开始时进行。
- 通信原子 :可以是对象类属性或交互,交互参数不是原子。原子具有传输模式(“可靠”或“尽力而为”)和传递或排序模式(“接收排序”或“时间戳排序”)。
- FED(Federation Execution Data) :是FOM数据的子集,包括对象类树、交互树以及每个通信原子的传输和排序模式。
- OMT(Object Model Template) :描述了FOM和SOM的编写方式,还定义了属性和参数可用的基本数据类型,以及如何构造和描述复杂数据类型。
- RTI(Run - Time Infrastructure) :涵盖了概念上低于联邦成员应用层的所有内容,包括API、RTI中间件、网络软件和设备以及线路。RTI API由接口规范(I/F Spec)描述,它是标准中唯一描述的RTI部分,实现和底层协议未作规定。
下面是一个简单的空中交通管制(ATC)联邦示例:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Federate 1: 空中交通模拟):::process -->|RTI API| C(Run - Time Infrastructure):::process
B(Federate 2: 雷达与ATC模拟):::process -->|RTI API| C
A -->|发布"aircraft"| B
B -->|发布"guidance message"| A
在这个示例中,联邦成员1发布“aircraft”对象类(可能具有位置和速度作为周期性属性,飞行计划作为静态属性),并订阅“guidance message”交互;联邦成员2订阅“aircraft”并发布“guidance message”。如果联邦成员1是纯建设性的,联邦成员2是有人操作的,则构成一个ATC训练联邦。
HLA的好处
HLA最明显的能力是将复杂的模拟问题分解为更简单的问题,或者将不同的模拟组合成一个大型模拟。这带来了以下优势:
-
CPU负载分担
:将计算任务分散到不同的联邦成员上,减轻单个CPU的负担。
-
避免运输重型硬件
:无需运输大型模拟器或真实系统等重型硬件。
-
保密保护
:机密模型可以在受保护区域的联邦成员上运行,并与其他联邦成员交换非机密数据。
此外,对每个联邦成员能力的正式描述提高了可重用性,对联邦的正式描述(联邦成员之间的通信)以及使用统一的通信机制(RTI)便于集成和验证。美国国防部推广HLA的主要目标是通过大量重用模拟和模拟器(将其视为组件)来降低军事模拟的成本。
HLA标准的三个部分
-
规则(Rules)
:标准定义了10条规则,其中5条适用于联邦,5条适用于联邦成员。
-
联邦规则
:
- 联邦必须有符合HLA OMT记录的HLA FOM。
- 联邦内所有与模拟相关的对象实例表示应在联邦成员中,而不是在运行时基础设施(RTI)中。
- 联邦执行期间,所有FOM数据的交换必须通过RTI进行。
- 联邦执行期间,联邦成员必须按照HLA接口规范与RTI交互。
- 联邦执行期间,任何给定时间一个实例属性最多由一个联邦成员拥有。
-
联邦成员规则
:
- 联邦成员必须有符合HLA OMT记录的HLA SOM。
- 联邦成员应能够根据其SOM更新和/或反映任何属性,并发送和/或接收交互。
- 联邦成员应能够根据其SOM在联邦执行期间动态转移和/或接受属性的所有权。
- 联邦成员应能够根据其SOM改变提供属性更新的条件(例如阈值)。
- 联邦成员应能够以允许与联邦其他成员协调数据交换的方式管理本地时间。
-
联邦规则
:
- 接口规范(Interface Specification) :描述了联邦成员进行通信必须使用的服务,包括所有运行时基础设施(RTI)实现必须提供的原语,以文本形式(参数、前置和后置条件、异常)以及多种语言(IDL、C++、JAVA、Ada 95)进行描述。
- 对象模型模板(Object Model Template) :是SOM和FOM的元结构,定义了基本描述元素(对象类、属性、交互和参数)以及每个元素在SOM和FOM中必须或可以给定的属性。OMT还描述了FOM和SOM数据的交换格式(DIF,Data Interchange Format)。
I/F Spec服务
-
联邦管理(Federation Management)
:为联邦成员提供以下原语:
- 创建和销毁联邦执行。
- 加入和退出联邦执行。
- 与其他联邦成员同步联邦执行。
- 以协调的方式保存和恢复联邦状态。在HLA中,没有关于不同联邦之间通信的规范,RTI可用于运行多个独立的联邦执行。
-
声明管理(Declaration Management)
:联邦成员可以通过这些服务:
- 发布对象类(表示将创建该类的对象实例并更新其属性)。
- 订阅对象类(表示准备“反映”在其他地方创建的该类对象实例的属性)。
- 发布交互类(表示将发送该类的交互)。
- 订阅交互类。
- 停止任何发布或订阅。如果联邦成员希望知道其他联邦成员何时订阅其发布的内容,可以提供服务(回调)。
-
对象管理(Object Management)
:允许:
- 已发布相应对象类的联邦成员创建和删除对象实例。
- 已订阅相应对象类的联邦成员发现和移除对象实例(回调)。
- 发布者更新实例属性值,订阅者进行反射(回调)。
- 发送和接收交互。此外,联邦成员可以明确请求更新其已订阅的类。
- 所有权管理(Ownership Management) :提供用于交换更新实例属性权利的原语,所有权获取可以是协商的或非协商的,它与声明管理和对象管理明显相互作用。
-
时间管理(Time Management)
:允许协调推进模拟时间,基于两个概念:
- 属性和交互的传递排序:可以是接收排序(RO,按接收顺序传递,时间无关紧要)或时间戳排序(TSO,仅当联邦中没有时间戳更低的消息时才传递)。
- 联邦成员的时间管理模式:可以是时间调节(TR,联邦成员可以发送TSO消息)和/或时间约束(TC,联邦成员可以接收TSO消息)。联邦成员可以请求时间推进,当RTI可以保证没有时间戳低于请求时间的TSO消息将被传递时(如果联邦成员是TC),将授予该时间。联邦成员的当前时间是最后授予的时间。通过对象管理消息的时间戳排序接收实现协调,对于非TC联邦成员,时间推进授予很简单。TR联邦成员定义一个正延迟,称为前瞻(lookahead),联邦成员承诺不发送时间戳低于其当前时间加上前瞻的TSO消息,这一特性提高了不同联邦成员执行的并行性。在完全协调的联邦中,所有联邦成员既是TC又是TR。
- 数据分发管理(Data Distribution Management) :基于路由空间的概念,路由空间是一组命名的标量维度的命名集合,没有先验语义。路由空间可以与FOM的任何通信原子(类属性或交互)关联。范围(extent)是路由空间所有维度上的一组区间(对于二维空间,是一个矩形),区域(region)是范围的集合(矩形的并集)。联邦成员可以使用区域订阅类属性(这是一个兴趣区域),如果另一个联邦成员使用区域更新此属性(表现区域),则仅当区域相交时,订阅者才会收到反射。交互也可以这样处理。联邦成员负责管理区域的边界,因此路由空间的语义在联邦成员中。这种机制可以节省大量带宽,例如,当有许多建模传感器较差的对象实例时。
- 支持服务(Support Services) :提供处理对象类、属性、交互、参数、空间、维度等的名称和句柄的各种原语。
Ada 95在计算机工程教育与HLA运行时基础设施中的应用
yaRTI架构
概述
yaRTI基于GLADE(分布式系统附件的一种实现)构建,能够处理多个联邦执行。其架构基于3个或更多分区:rtid(联邦管理器)、fedex(联邦成员管理器)和联邦成员。真正的内核分布在联邦成员中,约占RTI软件的75%。
下面是yaRTI的整体架构图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(rtid):::process -->|管理| B(fedex_1):::process
A -->|管理| C(fedex_2):::process
B -->|管理| D(FED_1):::process
C -->|管理| E(FED_2):::process
D -->|关联| F(federate_1a):::process
D -->|关联| G(federate_1b):::process
D -->|关联| H(federate_1c):::process
E -->|关联| I(federate_2a):::process
E -->|关联| J(federate_2b):::process
唯一的RCI包位于rtid中。其他通信(联邦成员之间以及联邦成员与其fedex之间)使用RACW(远程访问类范围)机制。大多数通信(粗箭头表示)通过分布式RTI内核在联邦成员之间进行。最复杂的算法(声明管理、对象管理,尤其是时间管理)是分布式的。
创建和加入联邦执行
首先,rtid分区必须在任何地方启动。当一个联邦成员想要创建一个联邦执行时,它向其RTI内核发出请求,RTI内核再向rtid发出请求。具体流程如下:
1.
检查fedex是否存在
:如果具有正确名称的fedex已经存在,内核会抛出“Federation_Already_Exists”异常(联邦成员应该处理该异常)。
2.
创建fedex
:如果不存在fedex,rtid会锁定联邦创建,并预留一个fedex插槽。然后内核会生成一个fedex,并等待联邦创建解锁。
3.
填充fedex信息
:新创建的fedex将其RACW提供给rtid,rtid填充fedex插槽并解锁联邦创建。
4.
准备FED数据
:当fedex启动时,它会读取FED(联邦执行数据),并为即将加入并请求该数据的联邦成员做好准备。
这个机制是必要的,因为没有专门用于联邦创建的联邦成员。因此,所有联邦成员可以有相同的连接方案:
|步骤|操作|
| ---- | ---- |
|1|联邦成员向其RTI内核请求创建联邦执行|
|2|RTI内核向rtid请求|
|3|rtid检查fedex是否存在|
|4|若不存在,rtid锁定联邦创建,预留fedex插槽|
|5|内核生成fedex并等待解锁|
|6|新fedex提供RACW给rtid|
|7|rtid填充fedex插槽并解锁|
|8|fedex启动,读取FED数据|
总结
在计算机工程教育领域,乌克兰引入Ada 95作为基础语言的项目是提升本国教育水平,与世界先进教育体系接轨的重要举措。尽管面临教师对Ada语言了解不足等障碍,但随着教师培训的推进和相关课程的开展,Ada 95有望在乌克兰的计算机工程教育中发挥重要作用,为学生带来学习现代编程语言、参与国际项目等诸多好处。
在模拟领域,HLA标准为实现模拟的互操作性和重用性提供了有效的解决方案。yaRTI作为第一个纯Ada 95实现的HLA I/F Spec,充分利用了Ada 95的强大特性,其分布式架构能够高效地处理多个联邦执行。通过对HLA的各个方面,包括词汇概念、好处、标准部分以及I/F Spec服务的详细介绍,我们可以看到HLA在模拟领域的重要性和广泛应用前景。无论是在军事模拟还是其他领域,HLA都能够帮助用户将复杂的模拟问题分解,提高模拟的可重用性和集成性,降低成本。随着HLA标准化进程的推进,相信会有更多的应用和创新出现。
2099

被折叠的 条评论
为什么被折叠?



