分布式仿真中的时间管理

时间管理服务的任务是描述系统运行过程中系统成员时间推进的控制机制,协调各个系统成员的数据交换与时间推进状态,使仿真世界中事件发生的顺序与真实世界中的顺序保持一致,保证各仿真成员观察到事件产生的顺序是相同的,并且能够协调他们之间相关的活动。

1.时间管理的原则

时间管理的出发点是在保证正确实现仿真成员间仿真时间的协调推进和数据交换的前提下,定义所需服务的最小集合。应建立在以下原则之上:

  • 在分布式仿真系统中不存在全局时钟。在系统执行生命周期内的任何时刻,不同的仿真成员可具有不同的仿真时间。
  • 系统中可以产生“时戳”是“未来”的事件。对象状态的变化,也称事件,包括属性值更新、交互实例的发送、对象实例化和删除等,这些事件由仿真成员产生,并且这些事件的“时戳”应该大于或等于仿真成员当前的逻辑时间。
  • 使用逻辑时间的仿真成员不能产生“过去”的事件。
  • 不要求成员以时戳顺序产生事件。例如,可先产生时戳为9的事件,再产生时戳为6的事件,但事件的发生顺序一定是先6后9。

2.时间管理机制

包括两方面内容:消息传递机制和时间推进机制。

2.1时间管理四类(时间控制、时间受限)

  • 逻辑时间同步:成员既时间控制,又时间受限;
  • 外部时间同步:既不是时间控制,又不是时间受限,只受外部时钟影响,不受内部时钟影响;
  • 逻辑时间被动:时间受限而不时间控制;
  • 逻辑时间主动:时间控制而不时间受限。

2.2消息传递机制

包括两方面内容:一是消息传输方式,二是消息传递顺序。

2.2.1消息传输方式

可靠、快速两种。

2.2.2消息的传递顺序

接收顺序、优先级顺序、因果顺序和“时戳”顺序四种。考虑代价和效率两方面因素,目前成熟的时间管理服务支持两种基本的消息传递顺序:接收顺序和“时戳”顺序。

  • 接收顺序(Received Order,RO):是时延最小的方式,时间管理服务按接收到的消息顺序传递给成员。可以理解为运行支撑平台内部为每个成员建立一个队列,它将要转发给成员的消息按FIFO方式在队列中排队,每次将队列前面的消息传递给成员。此方式用于对传递速度的要求高于对因果关系的要求的情况。
  • 时戳顺序(Time Stamp Order,TSO):运行支撑平台的时间管理服务将保证成员的所有消息都是按照时戳顺序到达。实现的方式是它将接收到的消息存于队列中,直到确信没有时戳更小的消息到达,才将这些消息转发给成员。使用TSO可保证成员不会收到“过去”的消息,以及所有从同一事件集中接收消息的成员能以同样的顺序接收消息。值得注意的是,TSO不要求成员按TSO发出消息。
  • 优先级顺序:运行支撑平台的时间服务提供优先级的设置接口,在消息转发时按照设定好的优先级顺序将消息发送给相应的成员。
  • 因果顺序:很显然,这种方式时按照因果关系的顺序将消息发送给相应的成员。

2.3时间推进机制——确保仿真结果正确的因果约束关系。

a.保守的时间推进机制,基本思想是假设物理系统的时戳事件满足可实现性(Realizability)和可预见性(Predictability),可实现性保证系统发出的t时刻消息仅依赖于以前接收到的消息和状态;可预见性保证系统能够在t时刻预测出t+h时刻的消息(h>0),并且在遵守本地因果约束条件的前提下,得到正确的仿真结果。时间推进的两个关键变量——“时间前瞻量”和“时戳下限”。

  • 时间前瞻量(Lookahead):假设仿真成员当前逻辑时钟为T,且该成员能预测产生下一事件的时间不会早于T+L,则L称为该仿真成员逻辑时钟的“时间前瞻量”。表明该仿真成员可以预测未来L时间内的属性实例更新和交互实例的发送,即该仿真成员向时间管理节点保证在未来L时间内不会产生新的事件。因此时间管理节点在长度为L时间窗内可以并行处理该仿真成员消息的发送和接收。
  • 时戳下限值(LBTS):仿真成员的最大安全时间推进值,将来不会再接收到时戳小于该值的TSO消息,系统的LBTS定义为所有仿真成员的LBTS的最小值,它的含义是指在系统最小的局部时钟(指仿真成员的仿真时间)和它之间建立一个时间窗,所有仿真成员的所有时戳在该时间窗的事件均可以并发的执行。

b.乐观的时间推进机制,不严格遵守本地因果条件,当因果错误发生时,利用回滚机制对系统状态进行恢复。也就是说,乐观的时间推进机制允许事件的处理偏离TSO,但它必须能检测出已偏离TSO的事件,然后利用回滚机制回滚,由此来确保事件均按TSO处理。

 一个分布式的仿真系统可以抽象为一组相互通过传递带时戳的消息(message)进行交互的逻辑进程(LP),消息用来调度新的事件。每个LP可以被视为一个顺序执行的仿真程序,它有一组状态变量来描述其状态,并管理一个按照时间排队的本地待处理事件队列,LP不断从该队列中取出最小时戳事件来处理。处理一个事件可能会修改该LP的状态变量,也可以发送消息为该LP或其他LP调度新的事件。每个LP都维持一个本地虚拟时间(Local Virtual Time,LVT),其值由下一个要处理事件的仿真时间确定。所有LP的LVT最小值称为全局虚拟时间(Global Virtual Time,GVT),它代表整个仿真系统内时戳最小的待处理事件的时间,也是仿真推进的标志。在乐观的时间推进中,每个LP包含两个事件队列,一个是称为Q_Pending的待处理事件队列,其中的事件可能是由LP自身调度的,也可能是由远程LP发来的消息生成的。另一个称为Q_precessed,它临时性的保存已经乐观处理的事件。与在保守时间推进机制中不同的是,在乐观机制下,LP处理完一个事件后,并不马上将其删除,而是保存在Q_Processed中,因为这些事件仍有可能被回退。当收到掉队消息(时戳小于该LP当前本地虚拟事件的消息)而发生回退时,所有Q_Processed中时戳大于掉队消息时戳的事件将被按与处理时相反的顺序取出,对这些事件执行回退操作,然后重新插入Q_Pending中等待重新执行。

3.分布式仿真系统中的时间推进

运行支撑平台中,时间管理服务控制和协调时钟管理类型的成员在系统时间轴上的推进,并为仿真成员提供不同的传输要求、质量的消息和数据传输服务。

3.1时间推进方式

分布式仿真系统中,仿真成员的时间推进方式分为两大类,一类为独立的时间推进,另一类为协商的时间推进。协商的时间推进方式又分为以下几种:

  • 步进的时间推进

仿真成员按照一些固定的仿真时间间隔(步长)推进时间。步长通常根据仿真精度(或稳定性)来选择。需要注意的是,只有当前时间步长范围相关的所有仿真活动全部结束后,才能将时间推进到下一个时间步长段,因此还不能简单地理解为一定地时间间隔推进一个时间步长。

  • 基于事件得到时间推进

仿真成员处理内部事件和由其他成员所产生地TSO事件。仿真成员处理完一个事件后,将时间推进到该事件地时戳值处。面向过程地仿真结构通常采用这种机制。

  • 乐观机制下的时间推进

使用乐观时间推进机制的仿真成员其时间推进不受“时间控制”仿真成员的影响,它的时间推进可以超过其自身的LBTS,并且可以发送时戳大于LBTS的消息。

3.2系统成员的消息队列

无论是独立时间推进的仿真成员还是协商时间推进的仿真成员,时间管理服务为每个成员建立了两个接收消息队列:FIFO消息队列和时戳有限队列。接收顺序类型为RO的消息均排在FIFO消息队列中,接收顺序类型为TSO的消息则排列在时戳有限队列中。在仿真运行过程中,所有的成员交互都与这两个队列有关,这两个队列由运行支撑平台负责维护和管理,仿真成员不能直接对这两个队列进行操作。

3.3逻辑时间的推进过程

由前可知,分布式仿真系统中的时间推进方式可分为两大类,一类为独立的时间推进,一类为协商的时间推进。由于独立的时间推进不需要时间管理服务的协调,因此重点讨论协商的时间推进。根据推进机制的不同,协商的时间推进又分为两种,即保守机制下的时间推进和乐观机制下的时间推进。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值