CN105718305B - 一种基于进程的仿真任务并行调度方法 - Google Patents
一种基于进程的仿真任务并行调度方法 Download PDFInfo
- Publication number
- CN105718305B CN105718305B CN201610147402.3A CN201610147402A CN105718305B CN 105718305 B CN105718305 B CN 105718305B CN 201610147402 A CN201610147402 A CN 201610147402A CN 105718305 B CN105718305 B CN 105718305B
- Authority
- CN
- China
- Prior art keywords
- subprocess
- host process
- mark
- reads
- scheduling
- 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.)
- Active
Links
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/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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种基于进程的仿真任务并行调度方法:针对嵌入式装置多块处理器插件的架构,在PC机中启动仿真管理进程作为主进程,由主进程创建若干子进程虚拟实时处理器插件。主进程创建调度和数据共享内存,在子进程都完成初始化后,主进程启动单个周期仿真开始标志,各子进程读取调度共享内存的仿真开始标志,启动任务运算,任务结束后置子进程任务运算结束标志,之后进入等待状态。主进程汇总各子进程的结束标志后,下发下个周期开始标志,循环处理到所设置的仿真运送次数上限,进程退出运行。
Description
技术领域
本发明属于嵌入式装置虚拟仿真领域,具体基于进程的仿真任务并行调度方法。
背景技术
当前嵌入式装置研发模式还是以串行研发为主,即需先研发出对应功能的硬件、调通***驱动后,才能进行应用程序开发。对于一个具备多个功能的装置,串行开发周期长,为提高研发和测试效率,需在PC机上,模拟嵌入式装置的实际运行环境和功能接口,实现离线仿真功能,节省研发设备投入,提高开发和工程实施效率。已有文献的仿真方法,往往只考虑1个CPU的情况,少量考虑多CPU的方法,则采用单进程-多线程的方式。由于在1个进程中集成多个CPU的程序,需要避免变量命名和函数重复,即需修改各个CPU插件的程序,增加1层数据封装,导致嵌入式应用程序和仿真程序有较大差异,无法实现同源维护。在嵌入式装置中,各个处理器插件可视为相对独立的进程,通过硬件总线中断同步。基于进程模式仿真,需实现并行调度,避免各个进程由于运算任务不同,失去同步,故需要一种能够虚拟多处理插件的仿真架构,各个插件保持相对独立,在避免命名冲突的同时,能够控制各个进程的仿真任务启停,保持同步。本案由此产生。
发明内容
本发明的目的是实现嵌入式装置多处理器应用时,仿真任务的同步调度。为了达成上述目的,本发明提供一种基于进程的仿真任务并行调度方法,其特征在于在PC机上创建主进程和若干子进程,用多进程并行协同方式来虚拟仿真嵌入式多处理器装置,采用共享内存实现每个周期任务并行调度。具体包括如下步骤:
第一步:开发虚拟仿真管理主进程,命名为Master,将各处理器插件的程序编译为可执行进程,即处理器运算子进程,可命名为Dsp1、Dsp2等。
第二步:设置仿真周期和仿真总时间,计算仿真总次数,并启动主进程Master。主进程Master获取仿真参数并读取仿真配置文件,根据插件配置信息和数据交换配置信息,创建调度共享内存和数据共享内存,主进程Master启动若干处理器运算子进程,进入等待休眠状态,休眠结束后,读取各个子进程是否结束初始化或结束单个周期运算的标志,如果未读取到结束标志,继续休眠等待。
第三步:各处理器运算子进程启动后,打开和映射共享内存,并进行初始化等工作。完成该进程的初始化工作后,在调度共享内存中设置该子进程初始化结束标志,并进入等待休眠状态,并周期读取是否可以启动周期运算标志。主进程Master读取到所有子进程初始化结束标志或者读取到所有子进程结束单次运算标志后,在调度共享内存中设置开始仿真运算标志。
第四步:各子进程读取到Master设置的开始仿真运算标志后,置本进程进入运算状态,读取数据共享内存中其它进程数据,执行本进程的周期任务,将跨进程交换的输出数据写入到数据共享内存,然后置本进程单次周期运算结束标志,进入等待休眠状态,休眠结束后,并读取是否可以启动下个周期运算的标志,如果未读取到开始运算标志,继续休眠等待。
重复第三、四步,直到仿真运算次数达到设置的上限。
进一步地,所述的第二步中,主进程Master根据配置文件获取需要创建的子进程个数,可以适用于不同嵌入式装置的不同处理器应用。
进一步地,所述的第四步中,主进程负责设置运算任务开始标志,仅当所有子进程结束单次运算后,才能触发进入下次运算,实现每个周期内,各个子进程是并发运行的,虚拟实现了嵌入式装置多处理器插件基于硬件总线中断同步机制。
采用上述方案后,本发明具有如下有益效果:通过主从协同的主子进程架构,虚拟仿真了嵌入式装置多处理器插件的应用,并解决了单进程下不同插件程序混合编译时命名冲突问题,可最大程度复用嵌入式程序代码。基于共享内存实现仿真任务的并行调度,简单稳定可靠,已经在工业控制装置虚拟仿真中进行了应用,用户可以在PC机进行应用程序的仿真测试和培训,降低了开发风险,提高了开发效率。
附图说明
图1 是本发明中基于进程的嵌入式装置仿真架构图。
图2 是本发明中基于共享内存的仿真任务调度流程图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。嵌入式装置多处理器插件的仿真架构如图1所示,是基于主从架构模式,通过1个主进程和若干子进程协同,完成装置的仿真。具体实施方式包括如下步骤:
1)在PC机上开发主进程Master,主进程Master是仿真管理进程,它提供
配置文件解析、子进程创建和结束、变量管理、共享内存管理等功能。
2)将嵌入式装置的各个处理器程序编译为PC机可执行进程。导入相关程序
文件,自动形成Makefile,调用第3方编译器,链接仿真用***程序库,形成可执行程序。优选地,在Windows平台下,调用nmake工具,编译形成Dsp1.exe、Dsp2.exe等各个处理器的仿真程序。
3)提供人机界面,可设置仿真周期和仿真总时间,可计算得到仿真总次数。
选择需要仿真装置的配置文件,启动主进程Master。如图2所示, 主进程Master获取仿真参数并读取仿真配置文件,根据插件配置信息和数据交换配置信息,得到需要创建的子进程数,计算调度用共享内存大小,并创建调度共享内存。可基于预定义的结构体数据映射调度共享内存,优选地,该结构体定义如下:
struct ScheduleMemory{
char dspNum;
char startRun;
char dspFinishInit[32];
char dspStartRun[32];
char dspFinishRun[32];
char resv[2]; };
根据插件间信号拉线信息,计算跨插件交换的数据共享内存大小,创建数据共享内存。调用Windows的API函数,例如CreateFileMapping、MapViewOfFile、OpenFileMapping等接口,完成共享内存的操作。
4)主进程Master根据配置文件中的插件处理器信息,获取实际运行的dspNum个数,通过调用CreateProcess的API接口,创建处理器运算子进程。
5)主进程Master进入等待休眠状态,休眠结束后,读取各个子进程是否结束初始化或结束单个周期运算的标志,如果未读取到结束标志,则继续休眠等待后再读取。主进程Master读取到所有子进程初始化结束标志或者读取到所有子进程结束单次运算标志后(dspFinishRun[i]=1, 0<=i<dspNum),在调度共享内存中设置开始仿真运算标志(startRun=1)。
6)各子进程读取到Master设置的开始仿真运算标志后,置本进程进入运算状态(dspStartRun[i]=1, dspFinishRun[i]=0),读取数据共享内存中其它进程数据,执行本进程的周期任务,将跨进程交换的输出数据写入到数据共享内存,然后置本进程单次周期运算结束标志(dspStartRun[i]=0, dspFinishRun[i]=1),进入等待休眠状态,休眠结束后,读取下个周期开始运算的标志,若开始运算标志startRun=0,则继续休眠等待并读取。重复步骤5、6,直到仿真运算次数达到设置的上限。
综上所述,基于共享内存和主从架构的多进程模式,在完成各个进程的初始化工作后,进入仿真运行状态,主进程Master负责读取各个子进程的运算结束标志,仅当所有子进程结束单次运算后,才设置运算开始运算标志startRun=1,才能触发子进程进入新的运算周期,实现每个周期内,各个子进程是并发运行的,每个周期结束运行后,各个子进程不会立即运算下个周期,而是等待主进程设置的开始运算标志,避免了不同步的情况,故可虚拟嵌入式装置多处理器插件基于硬件总线中断同步机制。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (2)
1.一种基于进程的仿真任务并行调度方法,其特征在于:创建主进程和若干子进程,用多进程并行协同方式来虚拟仿真嵌入式多处理器装置,采用共享内存实现每个周期任务并行调度,具体步骤包括:
第一步:开发虚拟仿真管理主进程,将各处理器插件的程序编译为可执行进程;
第二步:设置仿真周期和仿真总时间,计算仿真总次数,并启动主进程;
主进程获取仿真参数并读取仿真配置文件,根据插件配置信息和数据交换配置信息,创建调度共享内存和数据共享内存;
主进程启动若干处理器运算子进程,进入等待休眠状态,休眠结束后,读取各个子进程是否结束初始化或结束单个周期运算的标志,如果未读取到结束标志,继续休眠等待;
第三步:各处理器运算子进程启动后,打开和映射共享内存,并进行初始化;
在调度共享内存中设置该子进程初始化结束标志,并进入等待休眠状态,并周期读取是否可以启动周期运算标志;
主进程读取到所有子进程初始化结束标志或者读取到所有子进程结束单次运算标志后,在调度共享内存中设置开始仿真运算标志;
第四步:各子进程读取到主进程设置的开始仿真运算标志后,置本进程进入运算状态,读取数据共享内存中其它进程数据,执行本进程的周期任务,将跨进程交换的输出数据写入到数据共享内存,然后置本进程单次周期运算结束标志,进入等待休眠状态,休眠结束后,读取是否可以启动下个周期运算的标志,如果未读取到开始运算标志,继续休眠等待;
第五步:重复第三、四步,直到仿真运算次数达到设置的上限。
2.如权利要求1所述的一种基于进程的仿真任务并行调度方法,其特征在于:所述的第四步中,主进程负责设置运算任务开始标志,仅当所有子进程结束单次运算后,才能触发进入下次运算,实现每个周期内,各个子进程是并发运行的,虚拟实现了嵌入式装置多处理器插件基于硬件总线中断同步机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610147402.3A CN105718305B (zh) | 2016-03-15 | 2016-03-15 | 一种基于进程的仿真任务并行调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610147402.3A CN105718305B (zh) | 2016-03-15 | 2016-03-15 | 一种基于进程的仿真任务并行调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718305A CN105718305A (zh) | 2016-06-29 |
CN105718305B true CN105718305B (zh) | 2018-11-13 |
Family
ID=56157747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610147402.3A Active CN105718305B (zh) | 2016-03-15 | 2016-03-15 | 一种基于进程的仿真任务并行调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718305B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445640B (zh) * | 2016-10-20 | 2019-06-18 | 南京南瑞继保电气有限公司 | 一种嵌入式虚拟装置运行方法和*** |
CN109960571B (zh) * | 2017-12-14 | 2022-03-25 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及*** |
CN108491278B (zh) * | 2018-03-13 | 2020-09-18 | 网宿科技股份有限公司 | 一种处理业务数据的方法和网络设备 |
CN110516278B (zh) * | 2019-06-16 | 2024-07-12 | 北京中科海讯数字科技股份有限公司 | 用于多源目标平台数据仿真的自动化装配式计算服务器软件架构*** |
CN111176801B (zh) * | 2019-07-17 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 一种多进程管理方法、装置、设备及存储介质 |
CN112989875B (zh) * | 2019-12-13 | 2023-04-18 | 海信集团有限公司 | 人脸识别方法、装置及存储介质 |
CN111460635B (zh) * | 2020-03-19 | 2022-07-22 | 南京南瑞继保电气有限公司 | 一种仿真测试方法、电子设备及存储介质 |
CN112286656B (zh) * | 2020-10-21 | 2023-08-29 | 百度在线网络技术(北京)有限公司 | 小程序模拟方法、装置、电子设备和计算机可读存储介质 |
CN112395773B (zh) * | 2020-12-01 | 2022-06-17 | 福州大学 | 一种提高电网电压暂降仿真效率的并行仿真方法 |
CN112905366A (zh) * | 2021-04-26 | 2021-06-04 | 北京世冠金洋科技发展有限公司 | 仿真模型的运行控制方法、装置及电子设备 |
CN113342499B (zh) * | 2021-06-29 | 2024-04-30 | 中国农业银行股份有限公司 | 分布式任务调用方法、装置、设备、存储介质、程序产品 |
CN116431317B (zh) * | 2023-06-12 | 2023-09-01 | 西安羚控电子科技有限公司 | 一种基于Vxworks仿真接口调度方法 |
CN116541131B (zh) * | 2023-06-29 | 2023-09-22 | 西安羚控电子科技有限公司 | 一种基于VxWorks实时***的多模型运行方法及*** |
CN117408060B (zh) * | 2023-10-13 | 2024-05-14 | 上海同星智能科技有限公司 | 整车模型仿真性能优化方法、存储介质和电子设备 |
CN117408061B (zh) * | 2023-10-13 | 2024-05-03 | 上海同星智能科技有限公司 | 整车模型仿真性能优化***及计算机装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760114A (zh) * | 2011-04-29 | 2012-10-31 | 无锡江南计算技术研究所 | 多处理器***的通信仿真方法、引擎及*** |
CN103077068A (zh) * | 2012-12-27 | 2013-05-01 | 北京仿真中心 | 一种基于共享内存的高性能仿真***实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070204271A1 (en) * | 2006-02-28 | 2007-08-30 | Andrew Gaiarsa | Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform |
-
2016
- 2016-03-15 CN CN201610147402.3A patent/CN105718305B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102760114A (zh) * | 2011-04-29 | 2012-10-31 | 无锡江南计算技术研究所 | 多处理器***的通信仿真方法、引擎及*** |
CN103077068A (zh) * | 2012-12-27 | 2013-05-01 | 北京仿真中心 | 一种基于共享内存的高性能仿真***实现方法 |
Non-Patent Citations (1)
Title |
---|
《多线程控制技术在面向对象实时仿真中的应用》;李跃中 等;《飞机设计》;20010930;第2001年卷(第3期);第61-65页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105718305A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718305B (zh) | 一种基于进程的仿真任务并行调度方法 | |
CN101776994B (zh) | 用于Flash应用程序的具有分布式对象的集成硬件平台的***和方法 | |
CN103955373B (zh) | 一种sdn应用集成开发环境的设计方法 | |
JP5651251B2 (ja) | シミュレーション実行方法、プログラム及びシステム | |
Al-Saadi et al. | Exaworks: Workflows for exascale | |
CN102279766A (zh) | 并行模拟多个处理器的方法及***、调度器 | |
Wei et al. | RGMP-ROS: A real-time ROS architecture of hybrid RTOS and GPOS on multi-core processor | |
Johnsen et al. | Modeling resource-aware virtualized applications for the cloud in Real-Time ABS | |
Pazzaglia et al. | Optimizing the functional deployment on multicore platforms with logical execution time | |
CN115146582A (zh) | 仿真方法及仿真装置、电子设备和计算机可读存储介质 | |
Rehm et al. | Performance modeling of heterogeneous HW platforms | |
Akhmetshina et al. | PicOS: A Tiny Operating System for Extremely Small Embedded Platforms. | |
Sant'Anna et al. | Structured synchronous reactive programming with Céu | |
Carnevali et al. | A formal approach to design and verification of two-level hierarchical scheduling systems | |
EP1993038A1 (en) | Data processing system and data processing method | |
Scheler et al. | The Real‐Time Systems Compiler: migrating event‐triggered systems to time‐triggered systems | |
Rafique et al. | SHeD: A framework for automatic software synthesis of heterogeneous dataflow process networks | |
Main | Virtualization on multicore for industrial real-time operating systems [from mind to market] | |
Thulasidasan et al. | Developing parallel, discrete event simulations in Python-first results and user experiences with the SimX library | |
Socci et al. | A timed-automata based middleware for time-critical multicore applications | |
Titov et al. | RADICAL-Pilot and PMIx/PRRTE: Executing heterogeneous workloads at large scale on partitioned HPC resources | |
Schoeberl | Real-time scheduling on a Java processor | |
Wahler et al. | Reconciling flexibility and robustness in industrial automation systems, and living happily ever after | |
Koltsidas et al. | Virtual AUTOSAR environment on Linux-evaluation study on performance gains from running ECU applications on POSIX threads | |
Sarkar | Functional Programming for Embedded Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |