从上面的讨论知道,仿真器的实时性是通过仿真器的任务调度管理模块实现的。任务调度管理模块为仿真器分系统的主控模块,是分系统的全面管理者。该模块根据用户通过仿真器分系统人机接口界面输入的参数、显示过程的控制命令和主控机通过网络传送来的控制命令及参数,对并发执行的实时自检/维护、网络通信、交联仿真数据生成、数据/状态显示、数据记录、交联数据驱动、测试过程分析以及仿真器不同功能模式对应的任务队列进行管理和调度,协调各模块的工作,进行各模块的衔接,实现各线程的管理,完成与目标系统实时交联仿真任务。
2.2.2 仿真器分系统任务划分
由于仿真器分系统是用于目标软件的实时仿真测试,每个任务都必须根据目标软件运行的需要,满足实时交联仿真的定时限制,所以,为保证仿真器的实时性能,根据任务和平台系统工作模式的不同,在调度框架中集中不同的调度策略,任务调度涉及到实时任务和普通分时任务的调度。
按照仿真器所处的运行模式,将其任务划分为实时任务和非实时任务。
实时任务指在仿真测试过程中,仿真器需要在确定时间内完成的任务,包括:
命令控制(包括测试开始、工作模式切换、驱动通信接口、测试结束等);
与被测目标软件之间的实时交联数据驱动任务;
与主控机分系统之间的实时网络通信任务;
交联数据实时生成;
测试数据和测试结果数据的记录和显示;
测试结果数据的初步精度分析和状态逻辑验证。
非实时任务指对于任务完成的时间没有严格约束的任务,包括:
用户通过界面进行的分系统参数和有关配置描述;
分系统初始化及用户指定分系统自检和维护;
测试数据的事后回放;
数据库操作。
为系统任务调度管理的方便,根据任务的属性、等级和处理周期的不同,将实时任务划分为动态任务和静态任务,静态任务又包括长周期任务和短周期任务。
动态任务指动态跟踪系统状态,根据实际运行状况,临时加入的任务,如实时自检任务、系统发生故障时动态加入的异常处理任务等。
长周期任务指可以在多个时间标签内完成的任务,如有必要,这类任务可在时限还没有完成就终止。包括显示任务、记录任务、从数据库或数据文件中读取数据到内存的任务。
短周期任务指对任务完成的时间有严格的限定,必须在一个时间标签内完成的任务,即在25 ms周期内,完成对目标软件的一次驱动,同时接收目标软件的对外输出。包括交联数据的生成、交联数据的1553B驱动、从主控机接收和向主控机发送测试数据信息包、仿真器应答信息包的网络通信任务等周期性的任务。
上述各类任务在其生命周期内一般都包括创建、就绪、挂起、运行、取消和结束六种状态,其状态转换关系如图3所示,由总的任务调度控制器将各任务带入不同的状态。
图3 任务状态转换关系示意图
2.2.3 仿真器调度模块的设计
仿真器对于各类任务采用时间、事件以及数据驱动相结合的调度原则进行控制管理。为了提高系统的实时性和适应性,采用了动态和静态调度策略相结合、任务发生的周期和优先级相结合的调度方式。
在调度框架中集中不同的调度策略。在运行模式下:系统测试工作正常,则对于周期性的实时任务采用静态生成的调度策略;在系统发生故障时,则采用临时的动态调度策略,它根据系统的运行状况,实时加入动态任务,并根据动态任务的级别,决定该任务是立即执行还是按顺序执行。随着故障的排除,取消该任务,系统重新恢复到先前的调度策略。
仿真器根据任务运行占用时间的不同,以不同速率来调度不同模块,满足实时驱动的要求。采用优先级调度和分时调度相结合的方式:优先级调度方式即调度模块对于每一项任务都赋予了严格的优先级,按优先级的次序从高到低执行;分时调度方式是采用时间片轮转的方式来执行各个任务,这种调度方式多是在终止模式下采用(或在运行模式下,系统已经完成短周期的任务,还留有时间余量的情况下)。例如,对于1553B 数据驱动和交联数据生成等短周期任务在每25 ms定时到时串行化执行,被赋予了较高优先级,而对于显示和记录数据等长周期任务分时执行或交叉执行,被赋予了较低优先级,以保证能正常驱动MBI卡。
原文转自:http://www.uml.org.cn/Test/200903241.asp