软件可靠性仿真测试平台实时技术研究

发表于:2009-7-09 14:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘东艳 申功勋    来源:测控技术

  2.2.3 仿真器调度模块的设计

  仿真器对于各类任务采用时间、事件以及数据驱动相结合的调度原则进行控制管理。为了提高系统的实时性和适应性,采用了动态和静态调度策略相结合、任务发生的周期和优先级相结合的调度方式。

  在调度框架中集中不同的调度策略。在运行模式下:系统测试工作正常,则对于周期性的实时任务采用静态生成的调度策略;在系统发生故障时,则采用临时的动态调度策略,它根据系统的运行状况,实时加入动态任务,并根据动态任务的级别,决定该任务是立即执行还是按顺序执行。随着故障的排除,取消该任务,系统重新恢复到先前的调度策略。

  仿真器根据任务运行占用时间的不同,以不同速率来调度不同模块,满足实时驱动的要求。采用优先级调度和分时调度相结合的方式:优先级调度方式即调度模块对于每一项任务都赋予了严格的优先级,按优先级的次序从高到低执行;分时调度方式是采用时间片轮转的方式来执行各个任务,这种调度方式多是在终止模式下采用(或在运行模式下,系统已经完成短周期的任务,还留有时间余量的情况下)。例如,对于1553B数据驱动和交联数据生成等短周期任务在每25 ms定时到时串行化执行,被赋予了较高优先级,而对于显示和记录数据等长周期任务分时执行或交叉执行,被赋予了较低优先级,以保证能正常驱动MBI卡。

  在优先级调度方式中,采用优先级浮动的原则:即根据系统实时处理任务的不同,按照需要动态地改变优先级。系统在正常运行时,优先级不变;当系统发生严重故障时,调度模块动态触发异常处理任务,并根据故障类别和故障被维护的状况,动态调整模块处理级别。对于影响系统测试的重要模块,调度模块启动相应的备份储备模块,同时将“暂停测试”的申请通过网络发送到主控机。这样,系统就具有了故障恢复能力,实现了关键部分的冗余保护,提高了可靠性。

  根据上述设计,在实时测试过程中,仿真器的实时调度层次模型如图4所示。

图4 RUN()模式下实时任务调度模型示意图

  基于以上的调度策略,任务调度管理模块采用以下方式对各模块进行调度:

  * 中断方式:当总的任务调度器监控到消息队列中最高消息到来时,立即申请软件中断,或者有硬件中断申请时,系统立即停止当前执行的任务,执行相应的中断处理。

  * 定时方式:实时测试开始后,定时器每25 ms发出定时消息,定时将需要发送的测试用例数据送到MBI卡上。

  * 消息方式:基于Win98消息传递机制,由线程调度方式实现。

  * 信号量及全局变量方式:总的任务调度器监控到任务启动的信号量或状态量改变后,按任务的等级运行任务。

  根据系统任务调度管理的方式,将任务消息的处理级别分为三个优先级:

  ①最高级消息:该类消息要求系统立即响应,具有此类优先级的模块在系统实时仿真中处于核心地位。该消息不放到Windows的系统消息队列中排队,而是直接送到相应的应用消息队列中,供应用程序处理。这样可以避免无节制的消息循环,保证了消息处理的及时性。

  ②时钟级消息:由精确定时器产生“定时时间到”的消息。在正常测试过程中,该消息为最高级别。时钟级的消息主要分配给在实时测试中的数据生成模块和驱动模块。

  ③普通级消息:该类消息主要分配给用户接口模块、记录模块等功能模块。

  2.2.4 仿真器关键功能模块的实时性实现技术

  ① 网络通信模块:非实时部分采用TCP/IP协议方式进行网络传输。实时部分利用设置网络通信缓存区的方式,从通信结果上可以部分实现网络传输的实时通信,其关键在于缓冲的深度。或者采用VXD技术,直接对网卡进行传输操作,可以避免由于网络延迟而影响系统实时性能的缺陷。

  ② 显示模块:在实时测试过程中,通过该模块,可以显示测试数据,并且用户能对测试过程进行控制。在实时测试中,中心任务处理周期为25 ms,在任务周期的空余时间还需要进行其它处理。因此在每25 ms周期内,留给显示任务的时间就非常少,另外由于人眼对数据变化的敏感程度低于25 ms,因此每50 ms以上进行一次相关数据显示就可以满足系统的需求。在数据显示中,文本显示比图形显示占用CPU处理时间要少许多。在图形显示中,采用高性能的图形处理算法,可以保证图形处理的实时性。另外,随着图形卡硬件性能的提高,在图形加速卡性能保证的情况下,系统只需计算图形描述语句占用CPU的时间,图形绘制方面的时间可以不给予主要考虑。图形实时显示算法还有待进一步研究。

  ③ 交联数据1553B驱动模块:由于Win98处于安全模式,Win98中的虚拟内存地址与实际物理地址并不一致,用户不易直接访问硬件的实际物理内存地址和I/O口地址。为了满足实时驱动MBI卡的需要,通过WinDriver工具软件,直接映射MBI卡上的实际物理内存地址和I/O地址,并将硬件中断虚拟化,利用WinDriver生成的一系列读写内存和I/O口地址的函数,用户就可以直接快速地对硬件进行控制。实验结果表明,在Win98应用任务单一的情况下,用户操作MBI卡的速度同于在DOS下的速度。WinDriver工作原理如图5所示。

图5 WinDriver工作原理图

  3、结束语

  本文以实时测试某航空软件可靠性为背景,介绍了仿真器在仿真测试平台中的作用。按照模块化和可扩充的设计思想,给出了仿真器功能结构组成;并且着重介绍了仿真器的任务调度管理模块的设计思想,针对具体任务和系统工作模式,提出了集成动态调度策略;对于优先+级的调度方式,采用了优先级浮动的原则。另外,给出了实时网络实现的方法,讨论了图形实时显示的可行性,利用WinDriver实现了在Win98下对硬件MBI卡的直接驱动。实验结果表明,上述调度思想与相关技术综合运用,很好地满足了仿真器系统工作的实时性。

相关阅读:

小议软件仿真测试

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号