首页> 中国专利> 一种多线程和多进程一体的仿真模型组件调度方法和系统

一种多线程和多进程一体的仿真模型组件调度方法和系统

摘要

本发明实施例公开一种多线程和多进程一体的仿真模型组件调度方法,包括仿真模型组件托管器向仿真模型组件监控器和仿真模型组件调度引擎上报分布式仿真节点的仿真模型组件的信息和状态;仿真模型组件监控器加载本地仿真模型组件配置文件,接收各个分布仿真模型组件托管器上报的仿真模型组件的信息和状态,并生成仿真模型组件调度配置文件;仿真模型组件调度引擎加载本地仿真模型组件配置文件,接收各个分布仿真模型组件托管器上报的仿真模型组件的信息和状态,加载仿真模型组件调度配置文件,初始化仿真模型组件的调度方式;所述调度引擎和所述托管器通过仿真模型组件应用接口创建仿真模型实例、调度仿真模型推进和收发仿真交互消息和事件。

著录项

说明书

技术领域

本发明涉及复杂系统并行和分布式仿真领域。更具体地,涉及一种多线程和多进程一体的仿真模型组件调度方法和系统。

背景技术

目前,仿真模型组件的调度方法分为集中式和多进程分布式两种,其中,集中式又分为单线程调度和多线程并行调度。仿真模型组件的单线程集中式调度方法为,根据模型组件的调度帧周期、优先级,调度器按顺序依次仿真过程中的每一个模型组件。仿真模型组件的多线程并行调度方法为,仿真引擎维护事件管理器和时间管理器,多个模型组件被分配到多个线程中,每个线程通过向事件管理器发送和接收事件消息,并向时间管理器请求时间推进,从而实现模型组件多线程并行运行。仿真模型组件的多进程分布式调度方法,一般采用HLA(High Level Architecture)等分布式仿真支撑技术,保证消息传输和时间推进,实现仿真模型组件的分布式运行。目前也有将仿真模型组件的集中式和分布式调度进行一体化整合的方法,通过HLA架构下的RTI API并封装HLA模型实现。总的来说,目前仿真模型组件的多线程/多进程一体化调度方法方面,存在以下不足:一是集中/并行调度机制不灵活,整个仿真系统或是运行于集中式模式、获取运行于分布式模型,无法实现部分模型组件集中调度、部分模型组件远程分布式调度;二是底层依赖HLA标准,运行时依赖RTIAPI,运行时需要依赖联邦管理服务相关程序,运行过程繁琐,依赖复杂,系统可靠性不高;三是集中式模式下模型组件运行效率不高。

发明内容

有鉴于此,本发明第一个实施例提供一种多线程和多进程一体的仿真模型组件调度方法,包括:

S1、运行在分布式仿真节点的仿真模型组件托管器向运行在集中式仿真节点的仿真模型组件监控器和仿真模型组件调度引擎上报分布式仿真节点的仿真模型组件的信息和状态;

S3、所述仿真模型组件监控器加载本地仿真模型组件配置文件,接收各个分布式仿真节点的仿真模型组件托管器上报的仿真模型组件的信息和状态,分别配置每一个仿真模型组件调度模式,并生成仿真模型组件调度配置文件;

S5、所述仿真模型组件调度引擎加载本地仿真模型组件配置文件,接收各个分布式仿真节点的仿真模型组件托管器上报的仿真模型组件的信息和状态,加载所述仿真模型组件调度配置文件,初始化每一个仿真模型组件的调度方式;

S7、所述仿真模型组件调度引擎和仿真模型组件托管器通过仿真模型组件应用接口提供的标准仿真模型交互接口,创建仿真模型实例、调度仿真模型推进和收发仿真交互消息和事件。

在一个具体实施方式中,所述创建仿真模型实例的方法包括:

仿真模型组件调度引擎加载仿真想定文件,根据仿真想定文件中的模型要素,实例化每一个仿真模型组件,对于集中多线程调度模型的仿真模型组件,在所述调度引擎本地进行模型组件实例化;

对于分布多进程调度的仿真模型组件,向对应的仿真模型组件托管器发送模型组件实例化消息,要求其实例化模型组件,同时,在调度引擎内部创建远程仿真模型组件实例的本地代理,用于统一管理时间推进和事件处理;

所述调度引擎管理仿真想定中所有仿真模型组件实例。

在一个具体实施方式中,所述调度仿真模型推进包括:

所述调度引擎初始化内部的时间管理器,创建不超过仿真模型组件实例数的模型组件调度线程,每个调度线程包含一个事件管理器,为仿真模型组件实例分配仿真工作线程,将模型组件的初始化事件根据事件的执行时间放入对应的仿真工作线程中的事件管理器的事件队列的合适位置;

仿真模型组件调度引擎的每个线程的事件管理器开始执行事件队列中的事件,事件执行时,事件管理器会根据事件队列中的时间戳最小的事件的时间,向时间管理器请求时间推进,得到时间推进允许后,事件管理器会调用仿真模型组件的事件回调函数;对于集中多线程调度的模型组件,事件管理器会通过仿真模型组件应用接口直接调用模型组件实例的回调函数;对于远程分布式多进程调度的模型组件,事件管理器会通过网络远程过程调度技术,将调用信息发送到处在远程分布式仿真节点的仿真模型组件托管器,仿真模型组件托管器会通过仿真模型组件应用接口调用模型组件实例的回调函数;

对于集中多线程调度的模型组件,调度引擎的仿真工作线程会将新的事件会根据事件执行时间放入到事件队列的合适位置,对于远程分布多进程调度的模型组件,仿真模型组件托管器会将模型组件产生的新的事件通过网络远程过程调用技术,发送到仿真模型组件调度引擎的事件管理器,从而回到上个步骤重复执行,仿真事件得到不断处理,仿真时间随着事件的处理而推进。

在一个具体实施方式中,所述仿真模型组件调度引擎确认没有新的事件消息后,将调用每个模型组件实例的结束函数,从而结束仿真。

在一个具体实施方式中,对于集中多线程调度的模型组件,调度引擎会直接调用模型组件实例的结束函数;

对于远程分布式多进程调度的模型组件,调度引擎会通过网络远程调度技术,将结束函数调用信息发送到处在远程分布式仿真节点的仿真模型组件托管器,仿真模型组件托管器会调用模型组件实例的结束函数。

在一个具体实施方式中,集中式仿真节点和各个分布式仿真节点分别配有基于仿真模型组件应用接口开发和编译的仿真模型组件以及仿真模型组件配置文件,集中式仿真节点的还配有所述模型组件调度配置文件。

本发明第二个实施例提供一种多线程和多进程一体的仿真模型组件调度系统,其特征在于,包括:仿真模型组件调度引擎、仿真模型组件托管器、仿真模型组件监控器、仿真模型组件应用接口;其中,

仿真模型组件托管器,运行在分布式仿真节点,用于加载分布式仿真节点的仿真模型组件配置文件,向仿真模型组件调度引擎和仿真模型组件监控器上报分布式仿真节点的仿真模型组件信息和状态,并加载仿真模型组件,接受仿真模型组件调度引擎的调度;

仿真模型组件监控器,运行在集中式仿真节点,用于加载本地的模型组件配置文件并接收所述仿真模型组件托管器上报的模型组件信息和状态,分别配置每一个仿真模型组件调度模式,并生成仿真模型组件调度配置文件;

仿真模型组件调度引擎,运行在集中式仿真节点,用于根据本地仿真模型组件配置文件,接收各个分布式仿真节点的仿真模型组件托管器上报的仿真模型组件的信息和状态,加载所述仿真模型组件调度配置文件,初始化每一个仿真模型组件的调度方式;

仿真模型组件应用接口,被编译进仿真模型组件内部,用于为仿真模型组件提供支持集中多线程和分布多进程一体化的标准仿真模型交互接口;

所述仿真模型组件调度引擎和仿真模型组件托管器通过仿真模型组件应用接口提供的标准仿真模型交互接口,创建仿真模型实例、调度仿真模型推进、收发仿真交互消息和事件。

在一个具体实施方式中,集中式仿真节点和各个分布式仿真节点分别配有基于仿真模型组件应用接口开发和编译的仿真模型组件以及仿真模型组件配置文件,集中式仿真节点还配编译有所述仿真模型组件调度配置文件。

本发明的第三个实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一个实施例所述的方法。

本发明的第四个实施例提供一种计算设备,包括处理器,所述处理器执行程序时实现如第一个实施例所述的方法。

本发明的有益效果如下:

本发明提供了一种多线程一体的仿真模型组件调度方法,以支持同一仿真模型组件(无需重新编译)既可以运行在集中式多线程模式下,又可以运行在分布式多进程模式下,仿真系统内部可以同时存在多线程的仿真模型组件,又可以存在分布在远程的仿真模型组件,不同类型的模型组件一体调度运行。同时,本发明不依赖于HLA架构和RTI API,且仿真模型组件多线程并行运行,提高了运行调度的便捷性和高效性。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明。

图1示出根据本发明一个实施例的一种多线程和多进程一体的仿真模型组件调度系统示意图。

图2示出根据本发明一个实施例的一种多线程和多进程一体的仿真模型组件调度方法流程图。

图3示出根据本发明一个实施例的仿真模型组件调度方法交互示意图。

图4示出根据本发明的一个实施例的计算机设备的结构示意图。

具体实施方式

为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。

本发明实施例的提出一种多线程和多进程一体的仿真模型组件的调度方法和系统,具体来说,一是通过提出仿真模型组件为模型组件提供统一仿真交互接口,并提出调度引擎和模型组件托管器,实现模型组件一次编译,既可以被集中的调度引擎进行多线程调度,又可以被分布式的仿真节点进行多进程调度,二是通过提出仿真模型组件监控器,用于配置各个模型组件的调度模式,并监控模型组件的状态。

图1显示本发明的一种多线程和多进程一体的仿真模型组件调度系统,包括:集中仿真节点1上的仿真模型组件调度引擎、仿真模型组件监控器,被编译进仿真模型组件1~仿真模型组件i内部的仿真模型组件应用接口、模型组件配置文件1、模型组件调度配置文件,分布仿真节点2~仿真节点n上的仿真模型组件托管器2~仿真模型组件托管器n、仿真模型组件配置文件2~仿真模型组件配置文件n,以及被编译进入仿真模型组件i、k、m、n的仿真模型组件应用接口。其中,

仿真模型组件调度引擎,用于加载仿真想定文件,并根据想定文件中的模型部署,实例化仿真模型组件,并用多线程方法调度仿真模型组件实例。根据模型组件调度配置文件的具体内容,仿真模型组件来自于两个方面,一方面是根据本地仿真模型组件配置文件1,加载本地的仿真模型组件1~仿真模型组件i,另一方面是通过仿真模型组件托管器远程连接的仿真模型组件。

仿真模型组件托管器2~仿真模型组件托管器n,用于在分布式的仿真节点2~仿真节点n,加载本地的仿真模型组件配置文件2~仿真模型组件配置文件n,向仿真模型组件调度引擎和仿真模型组件监控器上报仿真模型组件信息i、k、m、n的信息,并加载仿真模型组件i、k、m、n,接受仿真模型组件调度引擎的调度,主要调度指令包括模型组件的实例化、初始化、时间推进、状态消息推送、事件消息推送。同时,仿真模型组件托管器1~仿真模型组件托管器n接收仿真模型组件的状态消息更新、事件消息更新,并发送给仿真模型组件调度器引擎。

仿真模型组件监控器,用于加载本地的模型组件配置文件1并接收分布的仿真模型组件托管器1~仿真模型组件托管器n上报的模型组件j、k、m、n的信息,监视分布的仿真模型组件j、k、m、n的状态,同时,提供用户界面用于配置每一个模型组件的各自的调度模式。

仿真模型组件应用接口,被编译进仿真模型组件1~i、j、k、m、n的内部,用于为仿真模型组件1~i、j、k、m、n提供支持集中多线程/分布多进程一体化的标准仿真模型交互接口,包括仿真模型实例化、初始化、事件处理、时间推进接口、状态消息收发、事件消息收发。仿真模型组件调度引擎和仿真模型组件托管器1~n通过仿真模型组件应用接口提供的标准仿真模型交互接口,创建仿真模型实例、调度仿真模型推进、收发仿真交互消息和事件。

该系统执行如图2所示一种多线程和多进程一体的仿真模型组件调度方法

图3显示了上述调度方法一种具体交互方式示意图,具体包括以下步骤:

S1.运行在分布式仿真节点的仿真模型组件托管器2~n加载本地模型组件配置文件2~n,获取仿真模型组件路径,加载仿真模型组件m~仿真模型组件n,向仿真模型组件监控器和仿真模型组件调度引擎上报仿真模型组件信息和状态;

S3.仿真模型组件监控器加载本地仿真模型组件配置文件1,接收各个分布式仿真节点的仿真模型组件托管器2~n上报的仿真模型组件m~n的信息和状态,分别配置每一个仿真模型组件调度模式,并生成仿真模型组件调度配置文件;

S5.仿真模型组件调度引擎加载本地仿真模型组件配置文件1,接收各个分布式仿真节点的仿真模型组件托管器2~n上报的仿真模型组件m~n的信息和状态,加载仿真模型组件调度配置文件,初始化每一个模型组件的调度方式;

S7.所述仿真模型组件调度引擎和仿真模型组件托管器通过仿真模型组件应用接口提供的标准仿真模型交互接口,创建仿真模型实例、调度仿真模型推进和收发仿真交互消息和事件:

S71.仿真模型组件调度引擎加载仿真想定文件,根据仿真想定文件中的模型要素,实例化每一个仿真模型组件1~i、m~n,对于集中多线程调度模型的模型组件1~i,在引擎本地进行模型组件实例化,对于分布多进程调度的模型组件m~n,向对应的仿真模型组件托管器n发送模型组件实例化消息,要求其实例化模型组件m~n,同时,在调度引擎内部创建远程仿真模型组件实例的本地代理,用于统一管理时间推进和事件处理,此时,调度引擎管理仿真想定中所有仿真模型组件实例;

S72.仿真模型组件调度引擎初始化内部的时间管理器,创建不超过模型组件实例数的模型组件调度线程,每个调度线程包含一个事件管理器,为仿真模型组件实例分配仿真工作线程,将模型组件的初始化事件根据事件的执行时间放入对应的仿真工作线程中的事件管理器的事件队列的合适位置;

S73.仿真模型组件调度引擎的每个线程的事件管理器开始执行事件队列中的事件,事件执行时,事件管理器会根据事件队列中的时间戳最小的事件的时间,向时间管理器请求时间推进,时间管理器确定时戳更小的事件都得到处理后确认时间允许推进,事件管理器得到时间推进允许后,会调用仿真模型组件1~i、m~n的事件回调函数,对于集中多线程调度的模型组件1~i,事件管理器会通过仿真模型组件应用接口直接调用模型组件实例的回调函数,对于远程分布式多进程调度的模型组件m~n,事件管理器会通过网络远程过程调度技术,将调用信息发送到处在远程分布式仿真节点的仿真模型组件托管器n,仿真模型组件托管器n会通过仿真模型组件应用接口调用模型组件实例的回调函数;

S74.仿真模型组件1~i、m~n在回调函数中一般会产生新的事件,对于集中多线程调度的模型组件1~i,调度引擎的仿真工作线程会将新的事件会根据事件执行时间放入到事件队列,并将时间队列按时间戳排序,对于远程分布多进程调度的模型组件m~n,仿真模型组件托管器n会将模型组件产生的新的事件通过网络远程过程调用技术,发送到仿真模型组件调度引擎的事件管理器,从而回到步骤S73重复执行,仿真事件得到不断处理,仿真时间随着事件的处理而推进;

S75.仿真模型组件调度引擎确认没有新的事件消息后,将调用每个模型组件实例的结束函数,从而结束仿真。对于集中多线程调度的模型组件1~i,调度引擎会直接调用模型组件实例的结束函数,对于远程分布式多进程调度的模型组件m~n,调度引擎会通过网络远程过程调度技术,将结束函数调用信息发送到处在远程分布式仿真节点的仿真模型组件托管器,仿真模型组件托管器会调用模型组件实例的结束函数。

本发明实施例提供的一种多线程和多进程一体的仿真模型组件调度方法及系统具有以下优点:一是同一编译后的二进制仿真模型组件既可以运行在集中式多线程模式下,又可以运行在分布式多进程模式下,仿真系统运行时内部可以同时存在多线程的仿真模型组件,又可以存在分布在远程的仿真模型组件,实现了模型组件的灵活调度模式;二是不依赖于HLA/RTI API,技术体制统一,且仿真模型组件多线程并行运行,提高了运行调度的便捷性和高效性。

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例所述的一种多线程和多进程一体的仿真模型组件调度方法。

在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

如图4所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供一种多线程和多进程一体的仿真模型组件调度方法。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号