CN115454590A - 一种面向活动图的仿真调度方法和*** - Google Patents
一种面向活动图的仿真调度方法和*** Download PDFInfo
- Publication number
- CN115454590A CN115454590A CN202210948239.6A CN202210948239A CN115454590A CN 115454590 A CN115454590 A CN 115454590A CN 202210948239 A CN202210948239 A CN 202210948239A CN 115454590 A CN115454590 A CN 115454590A
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- scheduling
- simulation
- scheduler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 139
- 238000004088 simulation Methods 0.000 title claims abstract description 132
- 230000000694 effects Effects 0.000 title claims abstract description 75
- 238000010586 diagram Methods 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种面向活动图的仿真调度方法和***,属于仿真调度技术领域。所述活动图为UML活动图或者SysML活动图,所述方法从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程,同时利用调度器对所述仿真过程中的各个任务进行调度。
Description
技术领域
本发明属于仿真调度技术领域,尤其涉及一种面向活动图的仿真调度方法和***。
背景技术
随着***化建模,或者说是MBSE(基于模型的***工程是一种形式化方法,用于支持与复杂***的开发相关的需求、设计、分析和确认)的逐渐推广流行,对***建模进行仿真的需求也逐渐增长。但在仿真相关技术领域欠缺深入的研究与应用。
常用的根据fUML等标准规范实现的开源仿真引擎的运行流程包括:仿真初始化以及仿真执行。仿真初始化根据输入的UML及SysML模型生成仿真数据与仿真执行对象,随后将这些内容输入仿真执行部分,开始仿真执行。仿真执行的逻辑是仿真引擎运行完当前节点后,根据UML及SysML模型的实际结构寻找后续的执行节点,并在找到节点后传入Token数据,直接调用执行节点的运行函数,使仿真持续运行。
Unified Modeling Language(UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件***开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。SysML是一种通用图形建模语言,具有用于建模***需求、行为、结构和参数的语义基础,代表了UML的一个子集。
上述方法完全遵循标准规范,符合模型定义的语义规范,但由于节点执行均通过直接调用执行节点的运行函数,因此当仿真的模型对象存在死循环或者是仿真时间过长时,该仿真方法会因为程序的调用堆栈过深导致程序崩溃。
其次,该方法对多线程运行的仿真不具有很好的支持能力,该方法并未完全考虑到多线程程序执行的各种要求,在执行真正的多线程仿真时存在各种问题,比如线程异常或者是数据冲突。
除此之外,对于某些特殊的UML及SysML模型执行需求,该方法无法很好的完成运行逻辑的扩展。最后,该方法也无法在不进行全面修改的情况下实现仿真运行断点调试等功能的添加。可见,上述方法虽然能够完成一定的UML及SysML模型仿真功能,且符合标准规范,但是在实际应用中存在较多问题,需要改进。
发明内容
为了解决上述技术问题,本专利提出了一种面向活动图的仿真调度方法和***。
本发明第一方面公开了一种面向活动图的仿真调度方法。所述活动图为UML活动图或者SysML活动图,所述方法包括:从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程,同时利用调度器对所述仿真过程中的各个任务进行调度;其中:所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
根据本发明第一方面的方法,所述活动图包含若干执行节点和连接各个执行节点的若干条边,所述活动图中的边表征执行节点之间的执行逻辑;在所述仿真过程中,每一个执行节点在完成执行后,都向后续输出的每一条边发送Token令牌,且所述每一个执行节点在启动执行前,其前序输入的每一条边都包含所述Token令牌。
根据本发明第一方面的方法,利用所述调度器对所述仿真过程中的各个任务进行调度具体包括:由虚拟机控制若干所述调度器的执行调度,所述虚拟机按照线性顺序对各个调度器依次进行轮询,当所有调度器均完成各自的执行调度时,所述虚拟机完成其执行调度;所述调度器按照所述线性顺序或者随机顺序对下一个执行的进程进行调度,且为每一个所述进程分配一个时间片,当所有进程均完成各自的执行调度时,所述调度器完成其执行调度;其中,每个进程具有独立的数据空间,在所述每个进程的时间片中,为所述进程包含的若干线程中的每一个线程分配一个子片段,用于执行所述线程中的各个任务,对所述进程包含的若干线程的调度按照所述线性顺序或者所述随机顺序来执行。
根据本发明第一方面的方法,执行所述线程中的各个任务具体包括:在所述线程中的任务执行调度中,对各个任务维护有就绪队列、执行队列和等待队列,以及所述各个任务具有就绪状态、执行状态、等待状态和完成状态;在执行调度时,先检测所述执行队列中是否存在可执行任务,若是,则直接执行任务;若否,则检测所述就绪队列中是否存在已就绪任务,若是,则将所述已就绪任务放入所述执行队列;其中,溢出的可执行任务被放入所述等到队列,当所述就绪队列、所述执行队列和所述等待队列均为空时,完成所述线程的任务调度。
根据本发明第一方面的方法,在所述线程中的任务执行调度中,新创建的任务处于就所述绪状态,待所述新创建的任务通过调度满足执行条件时,将其转换为所述执行状态,当所述执行队列中的可执行任务溢出时,将所述新创建的任务放入所述等待队列,并将其转换为所述等待状态,待所述新创建的任务被执行完毕后,其状态装换为完成状态,且有所述虚拟机执行对处于所述完成状态的任务的删除操作。
根据本发明第一方面的方法,在所述线程中的任务执行调度中,对所述各个任务还维护有准备队列,在初始化所述虚拟机时,将多个起始节点按照逆序放入所述准备队列,使得所述多个起始节点的执行逻辑满足所述UML活动图或者所述SysML活动图的定义规范。
根据本发明第一方面的方法,当任一节点的后续输出节点为多个节点时,判断多个后续输出节点之间是否有先后顺序,若有,则按照先后顺序执行节点任务;若无,则为每一个后续输出节点新建一个线程,并行执行新建的更线程节点任务。
本发明第二方面公开了一种面向活动图的仿真调度***。所述活动图为UML活动图或者SysML活动图,所述***包括:仿真单元,被配置为:从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程;调度器,被配置为:利用调度器对所述仿真过程中的各个任务进行调度;其中:所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
根据本发明第二方面的***,所述活动图包含若干执行节点和连接各个执行节点的若干条边,所述活动图中的边表征执行节点之间的执行逻辑;在所述仿真过程中,每一个执行节点在完成执行后,都向后续输出的每一条边发送Token令牌,且所述每一个执行节点在启动执行前,其前序输入的每一条边都包含所述Token令牌。
根据本发明第二方面的***,利用所述调度器对所述仿真过程中的各个任务进行调度具体包括:由虚拟机控制若干所述调度器的执行调度,所述虚拟机按照线性顺序对各个调度器依次进行轮询,当所有调度器均完成各自的执行调度时,所述虚拟机完成其执行调度;
所述调度器按照所述线性顺序或者随机顺序对下一个执行的进程进行调度,且为每一个所述进程分配一个时间片,当所有进程均完成各自的执行调度时,所述调度器完成其执行调度;其中,每个进程具有独立的数据空间,在所述每个进程的时间片中,为所述进程包含的若干线程中的每一个线程分配一个子片段,用于执行所述线程中的各个任务,对所述进程包含的若干线程的调度按照所述线性顺序或者所述随机顺序来执行。
根据本发明第二方面的***,执行所述线程中的各个任务具体包括:在所述线程中的任务执行调度中,对各个任务维护有就绪队列、执行队列和等待队列,以及所述各个任务具有就绪状态、执行状态、等待状态和完成状态;在执行调度时,先检测所述执行队列中是否存在可执行任务,若是,则直接执行任务;若否,则检测所述就绪队列中是否存在已就绪任务,若是,则将所述已就绪任务放入所述执行队列;其中,溢出的可执行任务被放入所述等到队列,当所述就绪队列、所述执行队列和所述等待队列均为空时,完成所述线程的任务调度。
根据本发明第二方面的***,在所述线程中的任务执行调度中,新创建的任务处于就所述绪状态,待所述新创建的任务通过调度满足执行条件时,将其转换为所述执行状态,当所述执行队列中的可执行任务溢出时,将所述新创建的任务放入所述等待队列,并将其转换为所述等待状态,待所述新创建的任务被执行完毕后,其状态装换为完成状态,且有所述虚拟机执行对处于所述完成状态的任务的删除操作。
根据本发明第二方面的***,在所述线程中的任务执行调度中,对所述各个任务还维护有准备队列,在初始化所述虚拟机时,将多个起始节点按照逆序放入所述准备队列,使得所述多个起始节点的执行逻辑满足所述UML活动图或者所述SysML活动图的定义规范。
根据本发明第二方面的***,当任一节点的后续输出节点为多个节点时,判断多个后续输出节点之间是否有先后顺序,若有,则按照先后顺序执行节点任务;若无,则为每一个后续输出节点新建一个线程,并行执行新建的更线程节点任务。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种面向活动图的仿真调度方法中的步骤。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种面向活动图的仿真调度方法中的步骤。
综上,本发明提供的技术方案从实际需求和应用的角度出发,提出了一种面向活动图的仿真调度方案,解决了现有技术中存在的递归调用、多线程支持、仿真断点调试等问题,具有很好的扩展性,可用于复杂的UML及SysML活动图仿真。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的仿真调度示意图;
图2a-2c为根据本发明实施例的用于表征Token令牌传递方向的活动图示例;
图3为根据本发明实施例的虚拟机的结构示意图;
图4为根据本发明实施例的各个时间片上的任务执行示意图;
图5为根据本发明实施例的一种电子设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一方面公开了一种面向活动图的仿真调度方法。所述活动图为UML活动图或者SysML活动图,所述方法包括:从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程,同时利用调度器对所述仿真过程中的各个任务进行调度;其中:所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
UML及SysML仿真引擎的运行流程分为关键的三个步骤,第一个是用户向仿真引擎提供UML或SysML模型,仿真引擎对该模型进行初步解析,生成可执行对象列表,代表仿真图模型中的各种节点元素。其次是根据仿真执行情况对可执行对象解析,来产生下一个可执行任务与在仿真中需要的仿真数据。完成上述步骤后,最后由仿真调度算法对仿真中的任务进行调度,实现各种仿真模型的运行逻辑。仿真模型解析已经有相关技术,本方案中不限于采用如下仿真引擎来实现解析过程,还可以可以采用现有技术中任一方式来实现对仿真模型的解析。
图1为根据本发明实施例的仿真调度示意图;如图1所示,仿真引擎接收输入模型(活动图),在内部通过解析产生可执行对象,并根据可执行对象生成调度器进行仿真。仿真执行的关键结构是调度器。调度器内部由多个可执行对象调度器组成,每个可执行对象调度器对仿真引擎解析出的可执行对象进行调度管理。每个调度器也可以有子调度器,用于满足仿真模型互相调用的执行情况。为了加强可执行对象的调度管理能力,每个可执行对象调度器内部有多个任务调度器,来模拟在多个线程上执行任务的运行效果。当调度器完成所有任务执行时,代表调度器对应的模型的仿真结束,当所有调度器完成执行后,代表所有仿真结束执行。与调度器运行时相关的重要结构是任务生成器与数据生成器。任务生成器根据当前仿真的执行情况,来产生下一个待执行的任务,数据生成器则在仿真需要数据时,解析可执行对象来得到对于的数据信息,以支持仿真运行。
在一些实施例中,所述活动图包含若干执行节点和连接各个执行节点的若干条边,所述活动图中的边表征执行节点之间的执行逻辑;在所述仿真过程中,每一个执行节点在完成执行后,都向后续输出的每一条边发送Token令牌,且所述每一个执行节点在启动执行前,其前序输入的每一条边都包含所述Token令牌。
在活动图仿真中,一个关键的概念是令牌(Token),运行中的节点会向后续所有输出的边发出令牌,对于将要执行的节点,只有所有输入的边都有令牌后,该节点才可以执行。对于如图2a所示的活动图,节点1执行后,节点3的边上令牌数量不够,因此必须要节点2执行并发出令牌后,节点3的所有边满足了令牌要求,才可以运行。对于如图2b所示的活动图,节点1完成执行后,对后续的两个边依次发出令牌,使得2所在的分支执行完成后才可以继续执行3所在的分支,该部分的执行属于顺序执行,没有并行。对于图2c所示的活动图,使用了分支(Fork)节点,由此带来了活动图的并行执行,节点2和3的执行不再有先后顺序,将同时执行。
在一些实施例中,利用所述调度器对所述仿真过程中的各个任务进行调度具体包括:由虚拟机控制若干所述调度器的执行调度,所述虚拟机按照线性顺序对各个调度器依次进行轮询,当所有调度器均完成各自的执行调度时,所述虚拟机完成其执行调度;所述调度器按照所述线性顺序或者随机顺序对下一个执行的进程进行调度,且为每一个所述进程分配一个时间片,当所有进程均完成各自的执行调度时,所述调度器完成其执行调度;其中,每个进程具有独立的数据空间,在所述每个进程的时间片中,为所述进程包含的若干线程中的每一个线程分配一个子片段,用于执行所述线程中的各个任务,对所述进程包含的若干线程的调度按照所述线性顺序或者所述随机顺序来执行。
为了更加直观的理解仿真调度算法的概念,将仿真调度器的结构与操作***的结构进行映射,来方便理解与开发。调度器对应的概念是虚拟机,可执行对象调度器对应的概念是虚拟进程,任务调度器对应的概念是虚拟线程。所有的仿真调度均在虚拟机内部进行。虚拟机通过提供一个独立的执行环境,利用虚拟化与分层的概念,来分别模拟各种UML与SysML模型的执行环境,使得各种不同逻辑的模型的仿真成为可能。虚拟机内部有各种进程,来模拟多个仿真可执行对象并行执行的情况,并通过虚拟进程对可执行对象进行调度管理。虚拟进程内部有虚拟线程,代表可执行对象内部的多线程概念,例如Fork节点对应的多线程模型。虚拟机,虚拟进程,虚拟线程三者共同构成仿真调度器。
具体地,仿真运行由仿真虚拟机(如图3所示)来完成,仿真虚拟机是仿真运行的最顶层结构。仿真虚拟机模拟计算机***的结构,对运行在内部的虚拟进程、虚拟线程和任务进行调度,使其按照预期逻辑运行。仿真虚拟机对外提供各种可执行对象的仿真功能。仿真虚拟机的内部由多个调度器组成,调度器负责管理虚拟进程的执行过程。每个调度器负责不同的调度逻辑,由此可以划分出不同的虚拟进程运行逻辑,方便扩展调度逻辑以及对内部的虚拟进程进行管理。与每个实际仿真图,如活动图、状态图等对应的仿真结构是虚拟进程。每个虚拟进程代表一张图的运行。进程之间可以具有父子关系,代表着图调用图的运行逻辑。每个进程内部拥有一个多个执行任务的虚拟线程。父进程必须等待子进程完成后才可以结束,但父进程可以通过终止方法直接结束子进程的运行,来强行终止仿真。
在一些实施例中,执行所述线程中的各个任务具体包括:
在所述线程中的任务执行调度中,对各个任务维护有就绪队列、执行队列和等待队列,以及所述各个任务具有就绪状态、执行状态、等待状态和完成状态;在执行调度时,先检测所述执行队列中是否存在可执行任务,若是,则直接执行任务;若否,则检测所述就绪队列中是否存在已就绪任务,若是,则将所述已就绪任务放入所述执行队列;其中,溢出的可执行任务被放入所述等到队列,当所述就绪队列、所述执行队列和所述等待队列均为空时,完成所述线程的任务调度。
在一些实施例中,在所述线程中的任务执行调度中,新创建的任务处于就所述绪状态,待所述新创建的任务通过调度满足执行条件时,将其转换为所述执行状态,当所述执行队列中的可执行任务溢出时,将所述新创建的任务放入所述等待队列,并将其转换为所述等待状态,待所述新创建的任务被执行完毕后,其状态装换为完成状态,且有所述虚拟机执行对处于所述完成状态的任务的删除操作。
虚拟线程拥有任务执行与管理的职责,是仿真虚拟机最底层的抽象概念。虚拟线程的执行核心概念是使用单线程模拟多线程。虚拟线程内部有多个任务队列,分别代表处于不同状态的任务,包括Ready(就绪)队列、Changed(变更)队列、Prepared(准备)队列、Running(执行)队列和Waiting(等待)队列,并按照指定逻辑对任务进行状态转换的管理。当该线程所有任务执行完成后,由上层的虚拟进程进行销毁。实际执行的仿真对象是任务(Task)。仿真虚拟机的任务就是对任务进行执行和管理,并输出所需的结果。任务与仿真模型对应的结构是各个图中的执行节点。每个任务有5个状态,分别是Ready、Running和Waiting,在满足相应的条件后,由虚拟线程对不同状态的任务进行管理。虚拟机执行采用的是分片执行的概念,虚拟机内的多个调度器每次都拥有一个片段的执行时间。在调度器中(如图4所示,tick表示时间片),每个虚拟进程也有对应的执行片段。在虚拟进程中,每个线程有一个执行片段。在虚拟线程中,每个处于Running状态的任务也有一个执行片段。
仿真虚拟机的运行流程主要是对仿真调度器的管理,虚拟机对各个调度器按照线性顺序依次进行轮询,若所有的调度器均完成执行,则虚拟机完成执行。由于不同的虚拟进程需要不同的调度逻辑,因此在虚拟机中抽象出不同的调度器来实现不同的调度算法。
调度器的主要职责是对虚拟进程的管理。不同调度器选择下一个执行的虚拟进程的策略不同,可以按照线性顺序进行调度或者是随机顺序进行调度。每个虚拟进程拥有一个片段进行任务执行。当所有的虚拟进程完成后,该调度器的执行结束。
虚拟进程负责管理虚拟线程,一个进程中可以有多个线程,每个进程有独立的数据空间,避免数据干扰。虚拟进程在每个时间片对每个线程分配一个片段,执行线程中的任务。按照需求,线程的管理可以使用线性或者是随机顺序进行执行,以满足不同UML及SysML模型的逻辑仿真需求。当所有线程完成执行后,该进程的执行结束。
虚拟线程负责对任务进行管理,包括Ready(就绪)队列、Running(执行)队列和Waiting(等待)队列。任务一共有5种状态,分别是Ready(就绪)状态、Running(执行)状态,Waiting(等待)状态与Finished(完成)状态。每次虚拟线程在当前的片段中执行时,按照下图的逻辑遍历队列,进行相应任务执行。在启动虚拟机运行后,首先检测Running队列,看有无可执行任务,若有可执行任务,进行任务执行,若执行后任务状态改变,则在完成执行后改变任务到目标的状态。若Running队列为空,则开始检测Ready队列,若Ready队列不为空,则取出一个任务将其放入Running队列。若该线程仍处于执行状态,则返回开始处重新循环。当Running队列、Ready队列与Waiting队列均为空的时候,该虚拟线程完成执行。
每个Task分为Ready状态、Running状态、Waiting状态和Finished状态。刚创建任务处于Ready状态,在满足条件后,由调度器将其转换为Running状态。任务的执行可以将任务转换为Waiting状态或者是Finished状态,取决于任务内部的执行逻辑,其他部分的状态转换均有虚拟机完成。当任务处于Waiting状态时,仅当调度器接收到对应的事件后,才可以使任务由Waiting状态转换为Running状态。当任务处于Finished状态后,虚拟机将会删除这个任务。由上述的状态转换构成完整的任务运行逻辑。
在一些实施例中,在所述线程中的任务执行调度中,对所述各个任务还维护有准备队列,在初始化所述虚拟机时,将多个起始节点按照逆序放入所述准备队列,使得所述多个起始节点的执行逻辑满足所述UML活动图或者所述SysML活动图的定义规范。
在一些实施例中,当任一节点的后续输出节点为多个节点时,判断多个后续输出节点之间是否有先后顺序,若有,则按照先后顺序执行节点任务;若无,则为每一个后续输出节点新建一个线程,并行执行新建的更线程节点任务。
在初始化虚拟机运行时,即可将多个起始节点任务按照逆序放入Prepared队列,之后按照正常逻辑运行仿真虚拟机,就可以得到多个起始节点执行逻辑,并满足UML及SysML模型定义的规范。对于下图所示的情况,当Node1完成运行,发现后续有多个节点运行则按照分支创建模型的先后顺序执行的逻辑。为了满足要求将Node2放入Running队列,将Node3以及其他的后续节点放入Prepared队列继续仿真执行,即可满足多后续节点的仿真需求。Fork节点若遇到多个后续的并行分支,将会通知Virtual Process根据需要创建多个Virtual Thread来模拟多线程运行情况,来满足并行执行的需求。
综上,本发明第一方面的方法考虑到仿真调度对多线程的支持,可以提供更高的效率;同时解决了开源方法存在的所有与仿真相关的固有问题,为仿真提供基础;进一步地,该方法还可以轻易的扩展出断点调试与单步调试的功能,可以提高设计人员对***仿真验证的效率;另外,该方法有很高的逻辑扩展性,可以根据实际需求对各个组件进行定制,以满足不同情况下仿真执行逻辑。比如通过更改任务调度器执行逻辑,就可以从活动图仿真调度切换到状态图仿真调度,或者是对调度器进行修改,就可以从顺序执行切换到异步执行,完成多线程支持。
本发明第二方面公开了一种面向活动图的仿真调度***。所述活动图为UML活动图或者SysML活动图,所述***包括:仿真单元,被配置为:从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程;调度器,被配置为:利用调度器对所述仿真过程中的各个任务进行调度;其中:所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
根据本发明第二方面的***,所述活动图包含若干执行节点和连接各个执行节点的若干条边,所述活动图中的边表征执行节点之间的执行逻辑;在所述仿真过程中,每一个执行节点在完成执行后,都向后续输出的每一条边发送Token令牌,且所述每一个执行节点在启动执行前,其前序输入的每一条边都包含所述Token令牌。
根据本发明第二方面的***,利用所述调度器对所述仿真过程中的各个任务进行调度具体包括:由虚拟机控制若干所述调度器的执行调度,所述虚拟机按照线性顺序对各个调度器依次进行轮询,当所有调度器均完成各自的执行调度时,所述虚拟机完成其执行调度;
所述调度器按照所述线性顺序或者随机顺序对下一个执行的进程进行调度,且为每一个所述进程分配一个时间片,当所有进程均完成各自的执行调度时,所述调度器完成其执行调度;其中,每个进程具有独立的数据空间,在所述每个进程的时间片中,为所述进程包含的若干线程中的每一个线程分配一个子片段,用于执行所述线程中的各个任务,对所述进程包含的若干线程的调度按照所述线性顺序或者所述随机顺序来执行。
根据本发明第二方面的***,执行所述线程中的各个任务具体包括:在所述线程中的任务执行调度中,对各个任务维护有就绪队列、执行队列和等待队列,以及所述各个任务具有就绪状态、执行状态、等待状态和完成状态;在执行调度时,先检测所述执行队列中是否存在可执行任务,若是,则直接执行任务;若否,则检测所述就绪队列中是否存在已就绪任务,若是,则将所述已就绪任务放入所述执行队列;其中,溢出的可执行任务被放入所述等到队列,当所述就绪队列、所述执行队列和所述等待队列均为空时,完成所述线程的任务调度。
根据本发明第二方面的***,在所述线程中的任务执行调度中,新创建的任务处于就所述绪状态,待所述新创建的任务通过调度满足执行条件时,将其转换为所述执行状态,当所述执行队列中的可执行任务溢出时,将所述新创建的任务放入所述等待队列,并将其转换为所述等待状态,待所述新创建的任务被执行完毕后,其状态装换为完成状态,且有所述虚拟机执行对处于所述完成状态的任务的删除操作。
根据本发明第二方面的***,在所述线程中的任务执行调度中,对所述各个任务还维护有准备队列,在初始化所述虚拟机时,将多个起始节点按照逆序放入所述准备队列,使得所述多个起始节点的执行逻辑满足所述UML活动图或者所述SysML活动图的定义规范。
根据本发明第二方面的***,当任一节点的后续输出节点为多个节点时,判断多个后续输出节点之间是否有先后顺序,若有,则按照先后顺序执行节点任务;若无,则为每一个后续输出节点新建一个线程,并行执行新建的更线程节点任务。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面中任一项所述的一种面向活动图的仿真调度方法中的步骤。
图5为根据本发明实施例的一种电子设备的结构图,如图5所示,电子设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面中任一项所述的一种面向活动图的仿真调度方法中的步骤。
综上,本发明提供的技术方案从实际需求和应用的角度出发,提出了一种面向活动图的仿真调度方案,解决了现有技术中存在的递归调用、多线程支持、仿真断点调试等问题,具有很好的扩展性,可用于复杂的UML及SysML活动图仿真。
请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种面向活动图的仿真调度方法,其特征在于,所述活动图为UML活动图或者SysML活动图,所述方法包括:
从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程,同时利用调度器对所述仿真过程中的各个任务进行调度;其中:
所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
2.根据权利要求1所述的一种面向活动图的仿真调度方法,其特征在于,所述活动图包含若干执行节点和连接各个执行节点的若干条边,所述活动图中的边表征执行节点之间的执行逻辑;在所述仿真过程中,每一个执行节点在完成执行后,都向后续输出的每一条边发送Token令牌,且所述每一个执行节点在启动执行前,其前序输入的每一条边都包含所述Token令牌。
3.根据权利要求2所述的一种面向活动图的仿真调度方法,其特征在于,利用所述调度器对所述仿真过程中的各个任务进行调度具体包括:
由虚拟机控制若干所述调度器的执行调度,所述虚拟机按照线性顺序对各个调度器依次进行轮询,当所有调度器均完成各自的执行调度时,所述虚拟机完成其执行调度;
所述调度器按照所述线性顺序或者随机顺序对下一个执行的进程进行调度,且为每一个所述进程分配一个时间片,当所有进程均完成各自的执行调度时,所述调度器完成其执行调度;
其中,每个进程具有独立的数据空间,在所述每个进程的时间片中,为所述进程包含的若干线程中的每一个线程分配一个子片段,用于执行所述线程中的各个任务,对所述进程包含的若干线程的调度按照所述线性顺序或者所述随机顺序来执行。
4.根据权利要求3所述的一种面向活动图的仿真调度方法,其特征在于,执行所述线程中的各个任务具体包括:
在所述线程中的任务执行调度中,对各个任务维护有就绪队列、执行队列和等待队列,以及所述各个任务具有就绪状态、执行状态、等待状态和完成状态;
在执行调度时,先检测所述执行队列中是否存在可执行任务,若是,则直接执行任务;若否,则检测所述就绪队列中是否存在已就绪任务,若是,则将所述已就绪任务放入所述执行队列;其中,溢出的可执行任务被放入所述等到队列,当所述就绪队列、所述执行队列和所述等待队列均为空时,完成所述线程的任务调度。
5.根据权利要求4所述的一种面向活动图的仿真调度方法,其特征在于,在所述线程中的任务执行调度中,新创建的任务处于就所述绪状态,待所述新创建的任务通过调度满足执行条件时,将其转换为所述执行状态,当所述执行队列中的可执行任务溢出时,将所述新创建的任务放入所述等待队列,并将其转换为所述等待状态,待所述新创建的任务被执行完毕后,其状态装换为完成状态,且有所述虚拟机执行对处于所述完成状态的任务的删除操作。
6.根据权利要求5所述的一种面向活动图的仿真调度方法,其特征在于,在所述线程中的任务执行调度中,对所述各个任务还维护有准备队列,在初始化所述虚拟机时,将多个起始节点按照逆序放入所述准备队列,使得所述多个起始节点的执行逻辑满足所述UML活动图或者所述SysML活动图的定义规范。
7.根据权利要求6所述的一种面向活动图的仿真调度方法,其特征在于,当任一节点的后续输出节点为多个节点时,判断多个后续输出节点之间是否有先后顺序,若有,则按照先后顺序执行节点任务;若无,则为每一个后续输出节点新建一个线程,并行执行新建的更线程节点任务。
8.一种面向活动图的仿真调度***,其特征在于,所述活动图为UML活动图或者SysML活动图,所述***包括:
仿真单元,被配置为:从所述活动图中解析出若干可执行对象,并基于所述可执行对象确定下一个可执行任务以及所需的仿真数据,以执行仿真过程;
调度器,被配置为:利用调度器对所述仿真过程中的各个任务进行调度;其中:所述调度器包含若干可执行对象调度器,每个所述可执行对象调度器对应一个可执行对象,用于调度所述一个可执行对象的进程,每个所述进程包含若干线程;每个所述可执行对象调度器包含若干任务调度器,每个所述任务调度器对应一个线程,用于调度所述一个进程,每个进程中包含若干任务。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至7中任一项所述的一种面向活动图的仿真调度方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的一种面向活动图的仿真调度方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210948239.6A CN115454590A (zh) | 2022-08-09 | 2022-08-09 | 一种面向活动图的仿真调度方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210948239.6A CN115454590A (zh) | 2022-08-09 | 2022-08-09 | 一种面向活动图的仿真调度方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454590A true CN115454590A (zh) | 2022-12-09 |
Family
ID=84297478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210948239.6A Pending CN115454590A (zh) | 2022-08-09 | 2022-08-09 | 一种面向活动图的仿真调度方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454590A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1643498A (zh) * | 2002-03-22 | 2005-07-20 | 丰田自动车株式会社 | 任务管理装置和方法、操作判断装置和方法以及被判断的程序 |
GB201205617D0 (en) * | 2012-03-29 | 2012-05-16 | Cognovo Ltd | Control of programs in parallel processing systems |
CN103019849A (zh) * | 2012-12-31 | 2013-04-03 | 无锡城市云计算中心有限公司 | 云计算环境下的虚拟机管理方法 |
CN104978170A (zh) * | 2014-04-03 | 2015-10-14 | 中国科学院软件研究所 | 一种基于图形化表示的多智能体***生成方法 |
CN110502211A (zh) * | 2019-08-02 | 2019-11-26 | 中国航空无线电电子研究所 | 一种基于SysML模块图的AADL模型构造方法 |
CN112559153A (zh) * | 2020-12-21 | 2021-03-26 | 北京仿真中心 | 一种多线程和多进程一体的仿真模型组件调度方法和*** |
CN112988124A (zh) * | 2021-05-10 | 2021-06-18 | 湖南高至科技有限公司 | 多视图平台无关模型*** |
CN113391903A (zh) * | 2021-06-22 | 2021-09-14 | 中国工商银行股份有限公司 | 可调度性模型的建立方法、装置、电子设备及存储介质 |
CN113836754A (zh) * | 2021-11-26 | 2021-12-24 | 湖南高至科技有限公司 | 面向多智能体仿真建模的仿真方法、装置、设备和介质 |
CN114091251A (zh) * | 2021-11-19 | 2022-02-25 | 中国人民解放军国防科技大学 | 面向多智能体群体行为的仿真***及方法 |
CN114090185A (zh) * | 2021-11-26 | 2022-02-25 | 杭州杉石科技有限公司 | 一种可视化显示仿真执行的方法及*** |
CN114416048A (zh) * | 2021-12-17 | 2022-04-29 | 北京机电工程研究所 | 一种确定uml模型的运行逻辑的方法和装置 |
-
2022
- 2022-08-09 CN CN202210948239.6A patent/CN115454590A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1643498A (zh) * | 2002-03-22 | 2005-07-20 | 丰田自动车株式会社 | 任务管理装置和方法、操作判断装置和方法以及被判断的程序 |
GB201205617D0 (en) * | 2012-03-29 | 2012-05-16 | Cognovo Ltd | Control of programs in parallel processing systems |
CN103019849A (zh) * | 2012-12-31 | 2013-04-03 | 无锡城市云计算中心有限公司 | 云计算环境下的虚拟机管理方法 |
CN104978170A (zh) * | 2014-04-03 | 2015-10-14 | 中国科学院软件研究所 | 一种基于图形化表示的多智能体***生成方法 |
CN110502211A (zh) * | 2019-08-02 | 2019-11-26 | 中国航空无线电电子研究所 | 一种基于SysML模块图的AADL模型构造方法 |
CN112559153A (zh) * | 2020-12-21 | 2021-03-26 | 北京仿真中心 | 一种多线程和多进程一体的仿真模型组件调度方法和*** |
CN112988124A (zh) * | 2021-05-10 | 2021-06-18 | 湖南高至科技有限公司 | 多视图平台无关模型*** |
CN113391903A (zh) * | 2021-06-22 | 2021-09-14 | 中国工商银行股份有限公司 | 可调度性模型的建立方法、装置、电子设备及存储介质 |
CN114091251A (zh) * | 2021-11-19 | 2022-02-25 | 中国人民解放军国防科技大学 | 面向多智能体群体行为的仿真***及方法 |
CN113836754A (zh) * | 2021-11-26 | 2021-12-24 | 湖南高至科技有限公司 | 面向多智能体仿真建模的仿真方法、装置、设备和介质 |
CN114090185A (zh) * | 2021-11-26 | 2022-02-25 | 杭州杉石科技有限公司 | 一种可视化显示仿真执行的方法及*** |
CN114416048A (zh) * | 2021-12-17 | 2022-04-29 | 北京机电工程研究所 | 一种确定uml模型的运行逻辑的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704186B (zh) | 基于混合分布架构的计算资源分配方法、装置和存储介质 | |
Bjørk et al. | User-defined schedulers for real-time concurrent objects | |
Barbierato et al. | Exploiting CloudSim in a multiformalism modeling approach for cloud based systems | |
CN103955373B (zh) | 一种sdn应用集成开发环境的设计方法 | |
US9256485B1 (en) | System and method for generating message sequence diagrams from graphical programs | |
CN103593192A (zh) | 一种基于slurm调度的算法集成与评测平台及方法 | |
CN114327829A (zh) | 一种多核实时任务调度分析与仿真***及方法 | |
Marzolla | Simulation-based performance modeling of UML software architectures. | |
Johnsen et al. | Dynamic resource reallocation between deployment components | |
CN113010598A (zh) | 面向遥感大数据处理的动态自适应分布式协同工作流*** | |
Incerto et al. | Symbolic performance adaptation | |
Pugliese et al. | Modeling and supporting grid scheduling | |
CN115617364A (zh) | Gpu虚拟化部署方法、***、计算机设备和存储介质 | |
CN112685409B (zh) | Paas应用服务拓扑生成方法、装置及可读存储介质 | |
Feljan et al. | Task allocation optimization for multicore embedded systems | |
EP1993038A1 (en) | Data processing system and data processing method | |
Casini et al. | Addressing analysis and partitioning issues for the Waters 2019 challenge | |
Bartolini et al. | From functional blocks to the synthesis of the architectural model in embedded real-time applications | |
Ben Hafaiedh et al. | A model-based approach for formal verification and performance analysis of dynamic load-balancing protocols in cloud environment | |
CN113225269B (zh) | 基于容器的工作流调度方法、装置、***及存储介质 | |
CN115454590A (zh) | 一种面向活动图的仿真调度方法和*** | |
Johnsen et al. | A formal model of object mobility in resource-restricted deployment scenarios | |
Johnsen et al. | A formal model of cloud-deployed software and its application to workflow processing | |
Amurrio et al. | Partition window assignment in hierarchically scheduled time-partitioned distributed real-time systems with multipath flows | |
Chandarli et al. | Yartiss: a generic, modular and energy-aware scheduling simulator for real-time multiprocessor systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |