CN105045666B - Windows操作系统环境下的分区调度方法 - Google Patents
Windows操作系统环境下的分区调度方法 Download PDFInfo
- Publication number
- CN105045666B CN105045666B CN201510399843.8A CN201510399843A CN105045666B CN 105045666 B CN105045666 B CN 105045666B CN 201510399843 A CN201510399843 A CN 201510399843A CN 105045666 B CN105045666 B CN 105045666B
- Authority
- CN
- China
- Prior art keywords
- subregion
- scheduling
- module
- configuration information
- partition
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Windows操作系统环境下的分区调度方法,用于解决现有分区调度方法实用性差的技术问题。技术方案是利用Windows系统亲缘性设定,对系统CPU资源进行重新分配,指定实时任务运行核心,以保证实时任务所需资源;采用两级调度模型,该模型包含两个级别的调度器:调度分区的模块调度器和调度分区内进程的分区调度器。其中,二级调度模型又倾向于模块调度器周期轮转调度分区,而分区调度器则基于固定优先级抢占调度进程。本发明在Windows环境下,虚拟出ARINC653的两级调度策略,为嵌入式软件提供了一个良好的开发与调试环境,实用性好,而且降低了开发成本。
Description
技术领域
本发明涉及一种分区调度方法,特别是涉及一种Windows操作系统环境下的分区调度方法。
背景技术
真实的机载操作系统,需要运行在真正的飞机上。但运行在真实的硬件平台上,会给应用软件的开发和测试带来极大的不便。虚拟仿真验证平台就成了当下的研究热点。航空电子仿真系统是仿真技术与航空电子系统相结合的产物。它主要是对机载航空电子系统的研制、测控、管理和应用等环节进行全面的系统分析、方案设计与性能评估。
国外比较成熟的航空电子仿真实时操作系统是美国WindRiver公司的Vxworks。但该机载操作系统仅能在Linux操作系统下进行仿真,并没有在通用的操作系统平台下实现。
文献“航空电子双层任务分区调度设计北京航空航天大学学报,第34卷11期,2008年”公开了一种分区调度方法。该文献简述了在航空电子中,双层分区任务分区调度方法。在航空电子系统中,一个核心模块可以支持一个或多个航空电子应用软件,对运行在核心模块上的多个应用软件按功能可划分为多个分区,一个分区由一个或多个并发执行的进程组成。在操作系统层,系统采用轮转调度的方式激活每一个分区,在每一个分区中,系统根据分区内定义的调度策略进行调度。每一个分区内部的任务只能在当前分区处于激活状态才有可能被执行。
但该文献所述方法是应用在真实机载环境中,并没有虚拟在通用的Windows平台下。这种方法对嵌入式系统的软件开发的成本十分巨大,而且调试也十分复杂。
发明内容
为了克服现有分区调度方法实用性差的不足,本发明提供一种Windows操作系统环境下的分区调度方法。该方法利用Windows系统亲缘性设定,对系统CPU资源进行重新分配,指定实时任务运行核心,以保证实时任务所需资源;采用两级调度模型,该模型包含两个级别的调度器:调度分区的模块调度器和调度分区内进程的分区调度器。其中,二级调度模型又倾向于模块调度器周期轮转调度分区,而分区调度器则基于固定优先级抢占调度进程。本发明在Windows环境下,虚拟出ARINC653的两级调度策略,为嵌入式软件提供了一个良好的开发与调试环境,实用性好,而且降低了开发成本。
本发明解决其技术问题所采用的技术方案是:一种Windows操作系统环境下的分区调度方法,其特点是采用以下步骤:
步骤一、加载XML配置文件,读取XML文件的标签和属性,对XML配置文件进行解析,获得配置文件中与调度、分区有关的配置信息,包括模块配置信息、分区配置信息、伪分区配置信息、队列端口配置信息、采样端口配置信息和调度模块配置信息。所述调度模块的配置信息包括主时间框架配置信息、调度ID号和调度的优先级。
步骤二、根据在XML文件中所解析的模块配置信息创建系统模块。每个模块绑定在一个CPU上,根据既定的每个模块需要的共享内存的大小,为每个模块创建共享内存。然后根据XML文件中的分区配置信息和伪分区配置信息在每个模块中进行分区初始化。再根据XML文件中的队列端口配置信息和采样端口陪配置信息进行端口信息初始化。最后根据XML文件中的调度模块配置信息进行调度的初始化。当整个系统启动之后,将加载用户应用程序,对用户的进程进行调度运行。
步骤三、系统开启分区调度器线程,执行分区调度。分区调度器会得到在XML文件中所解析的主时间框架配置信息,分区调度器会按照主时间框架的时间信息进行调度。分区调度器会根据分区激活时间激活该分区。根据时间窗口,让该分区执行该时间窗口大小的时间。在进行分区间调度之前,判断当前所指定的模块状态。当所指定模块的状态为分区空白时,在模块内的每个分区创建一个调度事件,等到所有分区的调度事件创建完毕后,将模块的状态改为分区运行状态。
当分区状态为分区运行时,系统进行调度。首先判断当前的系统时间是否小于当前调度方案的调度时间。如果系统时间小于当前调度时间,则暂不进行调度,需要等待。直到当前时刻大于等于开始调度时刻,才开始调度。
当系统时间大于等于当前调度时刻时,开始调度。首先判断当前是否是第一次调度。如果是第一次调度,将根据主时间框架中的第一个时间窗口所对应的分区进行调度。如果不是第一次调度,将当前活跃的分区挂起,根据下一个被调度的时间窗口获取所对应的分区进行调度。
步骤四、分区内调度以进程作为基本单位,基本调度策略为优先级抢占,对于同优先级进程,采用先进先出的调度策略。
在冷启动或者热启动模式下,分区内的进程处于等待或者休眠状态;在空闲状态下,分区为空白分区,不会初始化分区内的进程;只有在正常状态下,分区内的进程将处于准备状态变为运行状态。
分区调度器在调度分区内的进程时,还要根据当前分区的状态来做出正确的判断,是否调度分区内进程使其运行,通过设置一个标志位来标识分区内的进程是否允许调度,当分区模式为NORMAL时,标志位置位为1,允许分区内进程参与调度运行,当分区模式为非NORMAL时,标志位复位为0,不允许分区内进程调度运行。分区调度器只需在每次调度时,根据此标志位来决定是否调度分区内的进程。
最终使ARINC653操作系统的两级调度方法在Windows通用环境下得以实现。
本发明的有益效果是:该方法利用Windows系统亲缘性设定,对系统CPU资源进行重新分配,指定实时任务运行核心,以保证实时任务所需资源;采用两级调度模型,该模型包含两个级别的调度器:调度分区的模块调度器和调度分区内进程的分区调度器。其中,二级调度模型又倾向于模块调度器周期轮转调度分区,而分区调度器则基于固定优先级抢占调度进程。本发明在Windows环境下,虚拟出ARINC653的两级调度策略,为嵌入式软件提供了一个良好的开发与调试环境,实用性好,而且降低了开发成本。
下面结合附图和具体实施方式对本发明作详细说明。
附图说明
图1是本发明Windows操作系统环境下的分区调度方法模型。
具体实施方式
参照图1。本发明Windows操作系统环境下的分区调度方法具体步骤如下:
步骤一:加载XML配置文件,读取XML文件的标签,属性,对XML配置文件进行解析。获得配置文件中与调度、分区有关的配置信息。包括了模块配置信息,分区配置信息,伪分区配置信息,队列端口配置信息,采样端口配置信息,调度模块配置信息。其中调度模块的配置信息还包括主时间框架配置信息,调度ID号,调度的优先级信息。
具体的,加载XML配置文件,将XML解析出来,读取其中配置信息。由XML配置文件的信息可知,配置了两个模块,模块分别为Moudle0模块和Moudle1模块。然后可在Moudle0中配置三个分区,可以知道这三个分区分别是:ACT4A-SAMPLE-0000,ACT4A-SAMPLE-0001,ACT4A-SAMPLE-0002。在Moudle1中配置三个分区,可以知道这三个分区分别是:ACT4A-SAMPLE-0003,ACT4A-SAMPLE-0004,ACT4A-SAMPLE-0005。
同时为每个模块创建了1个队列端口和一个采样端口。其名字分别为QueuePort和SamplingPort。同时在XML文件中配置了两个调度信息,调度ID号分别为0和1。调度ID号为0的调度信息配置了模块调度的信息。主时间框架信息为1ms。调度ID号为1的调度信息配置了分区内进程的调度信息。
步骤二:进行系统配置。根据在XML文件中所解析的模块配置信息来创建系统模块。每个模块会绑定在一个CPU上,同时根据既定的每个模块需要的共享内存的大小,为每个模块创建共享内存。原则上,创建模块数不能多于当前平台的CPU核心数。然后根据XML文件中的分区配置信息和伪分区配置信息在每个模块中进行分区的初始化。再根据XML文件中的队列端口配置信息和采样端口陪配置信息进行端口信息初始化。最后根据XML文件中的调度模块配置信息进行调度的初始化。当整个系统启动之后,将加载用户应用程序,对用户的进程进行调度运行。
具体的,启动系统服务,通过启动系统服务,系统会自动获取当前平台上CPU核心个数,每个CPU上会维护一个模块,根据CPU个数为模块创建共享内存。根据当前情况,只需要两个CPU核心维护这两个模块。
步骤三:分区间调度以分区为单位。系统开启分区调度器线程,执行分区调度。分区调度器会得到在XML文件中所解析的主时间框架配置信息,分区调度器会按照主时间框架的时间信息进行调度。分区调度器会根据分区激活时间,把该分区激活。根据时间窗口,让该分区执行该时间窗口大小的时间。在进行分区间调度之前,要判断当前所指定的模块状态。当所指定模块的状态为分区空白时,就在模块内的每个分区来创建一个调度事件,等到所有分区的调度事件创建完毕后,将模块的状态改为分区运行状态。
当分区状态为分区运行时,系统将进行调度。首先判断当前的系统时间是否小于当前调度方案的调度时间。如果系统时间小于当前调度时间,则暂不进行调度,需要等待。直到当前时刻大于等于开始调度时刻,才开始调度。
当系统时间大于等于当前调度时刻时,开始调度。首先判断当前是否是第一次调度。如果是第一次调度,将根据主时间框架中的第一个时间窗口所对应的分区进行调度。如果不是第一次调度,将当前活跃的分区挂起,根据下一个被调度的时间窗口获取所对应的分区,将其进行调度。
具体的,每个模块下根据配置信息中配置的分区及时间窗口信息,不停地根据调度配置进行分区间切换。
按照配置文件中的新,会调度模块0中的ACT4A-SAMPLE-0000分区,然后会调度ACT4A-SAMPLE-0001分区,最后调度ACT4A-SAMPLE-0002分区。模块0中的三个分区会按照这种调度的方式轮询的调度下去,每个分区的执行时间是由主时间框架的时间窗口决定的。在模块1中,模块调度器将会先调度这一个ACT4A-SAMPLE-0003分区,然后会调度ACT4A-SAMPLE-0004分区,最后调度ACT4A-SAMPLE-0005分区。模块1也会按照这种调度分区的方式轮询调度下去。
步骤四:分区内调度是以进程作为基本单位,基本调度策略为优先级抢占,对于同优先级进程,采用先进先出的调度策略。
由于分区存在不同模式,在不同模式下,分区内的进程调度策略也有所不同。在冷启动或者热启动模式下,分区内的进程只能处于等待或者休眠状态;在空闲状态下,分区为空白分区,将不会初始化分区内的进程;只有在正常状态下,分区内的进程才可以将处于准备状态变为运行状态。
分区调度器在调度分区内的进程时,还要根据当前分区的状态来做出正确的判断,是否调度分区内进程使其运行,通过设置一个标志位来标识分区内的进程是否允许调度,当分区模式为NORMAL时,标志位置位为1,允许分区内进程参与调度运行,当分区模式为非NORMAL时,标志位复位为0,不允许分区内进程调度运行。分区调度器只需在每次调度时,根据此标志位来决定是否调度分区内的进程。
该调度方法,最终使ARINC653操作系统的两级调度方法在Windows通用环境下得以实现。
具体的,加载用户测试程序。在Moudle0模块中,每个分区运行两个进程,即分区ACT4A-SAMPLE-0000运行进程1和进程2,分区ACT4A-SAMPLE-0001运行进程3和进程4,分区ACT4A-SAMPLE-0002运行进程5和进程6。六个进程的优先级都为100。周期都为1000000000。验证可知,在ACT4A-SAMPLE-0000分区内,进程1和进程2轮流被调度。在ACT4A-SAMPLE-0001分区内,进程3和进程4被轮流调度,ACT4A-SAMPLE-0002分区内,进程5和进程6被轮流调度。在Moudle1模块中,每个分区仍旧运行两个进程。即分区ACT4A-SAMPLE-0003运行进程1和进程2,分区ACT4A-SAMPLE-0004运行进程3和进程4,分区ACT4A-SAMPLE-0005运行进程5和进程6。六个进程的优先级都为100。周期都为1000000000。验证可知,在ACT4A-SAMPLE-0003分区内,进程1和进程2轮流被调度。在ACT4A-SAMPLE-0004分区内,进程3和进程4被轮流调度,ACT4A-SAMPLE-0005分区内,进程5和进程6被轮流调度。
Claims (1)
1.一种Windows操作系统环境下的分区调度方法,其特征在于包括以下步骤:
步骤一、加载XML配置文件,读取XML文件的标签和属性,对XML配置文件进行解析,获得配置文件中与调度、分区有关的配置信息,包括模块配置信息、分区配置信息、伪分区配置信息、队列端口配置信息、采样端口配置信息和调度模块配置信息;所述调度模块的配置信息包括主时间框架配置信息、调度ID号和调度的优先级;
步骤二、根据在XML文件中所解析的模块配置信息创建系统模块;每个模块绑定在一个CPU上,根据既定的每个模块需要的共享内存的大小,为每个模块创建共享内存;然后根据XML文件中的分区配置信息和伪分区配置信息在每个模块中进行分区初始化;再根据XML文件中的队列端口配置信息和采样端口配置信息进行端口信息初始化;最后根据XML文件中的调度模块配置信息进行调度的初始化;当整个系统启动之后,将加载用户应用程序,对用户的进程进行调度运行;
步骤三、系统开启分区调度器线程,执行分区调度;分区调度器会得到在XML文件中所解析的主时间框架配置信息,分区调度器会按照主时间框架的时间信息进行调度;分区调度器会根据分区激活时间激活该分区;根据时间窗口,让该分区执行该时间窗口大小的时间;在进行分区间调度之前,判断当前所指定的模块状态;当所指定模块的状态为分区空白时,在模块内的每个分区创建一个调度事件,等到所有分区的调度事件创建完毕后,将模块的状态改为分区运行状态;
当分区状态为分区运行时,系统进行调度;首先判断当前的系统时间是否小于当前调度方案的调度时间;如果系统时间小于当前调度时间,则暂不进行调度,需要等待;直到当前时刻大于等于开始调度时刻,才开始调度;
当系统时间大于等于当前调度时刻时,开始调度;首先判断当前是否是第一次调度;如果是第一次调度,将根据主时间框架中的第一个时间窗口所对应的分区进行调度;如果不是第一次调度,将当前活跃的分区挂起,根据下一个被调度的时间窗口获取所对应的分区进行调度;
步骤四、分区内调度以进程作为基本单位,基本调度策略为优先级抢占,对于同优先级进程,采用先进先出的调度策略;
在冷启动或者热启动模式下,分区内的进程处于等待或者休眠状态;在空闲状态下,分区为空白分区,不会初始化分区内的进程;只有在正常状态下,分区内的进程将处于准备状态变为运行状态;
分区调度器在调度分区内的进程时,还要根据当前分区的状态来做出正确的判断,是否调度分区内进程使其运行,通过设置一个标志位来标识分区内的进程是否允许调度,当分区模式为NORMAL时,标志位置位为1,允许分区内进程参与调度运行,当分区模式为非NORMAL时,标志位复位为0,不允许分区内进程调度运行;分区调度器只需在每次调度时,根据此标志位来决定是否调度分区内的进程;
最终使ARINC653操作系统的两级调度方法在Windows通用环境下得以实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510399843.8A CN105045666B (zh) | 2015-07-09 | 2015-07-09 | Windows操作系统环境下的分区调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510399843.8A CN105045666B (zh) | 2015-07-09 | 2015-07-09 | Windows操作系统环境下的分区调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105045666A CN105045666A (zh) | 2015-11-11 |
CN105045666B true CN105045666B (zh) | 2018-06-01 |
Family
ID=54452230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510399843.8A Active CN105045666B (zh) | 2015-07-09 | 2015-07-09 | Windows操作系统环境下的分区调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045666B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550027A (zh) * | 2015-12-09 | 2016-05-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于分区操作系统的多时间调度表切换方法 |
CN106201719A (zh) * | 2016-07-05 | 2016-12-07 | 西北工业大学 | 管理分布式任务RapidIO共享内存的方法及设备 |
CN106681812B (zh) * | 2016-12-14 | 2020-09-29 | 西北工业大学 | 一种分区调度方法 |
CN107544843A (zh) * | 2017-08-28 | 2018-01-05 | 北京翼辉信息技术有限公司 | 一种分区系统调度算法 |
CN110109743B (zh) * | 2019-05-09 | 2023-07-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种实时进程调度方法 |
CN111680585B (zh) * | 2020-05-26 | 2024-02-06 | 湖南澄科科技有限公司 | 基于轮胎识别的集卡车装卸安全监测方法 |
CN112214277B (zh) * | 2020-09-04 | 2024-03-19 | 深圳航天科技创新研究院 | 基于虚拟机的操作系统分区方法、装置及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049311A (zh) * | 2011-10-11 | 2013-04-17 | 北京科银京成技术有限公司 | 分区操作系统的综合化调度算法 |
CN103207782A (zh) * | 2013-03-27 | 2013-07-17 | 北京航空航天大学 | 基于multi-kernel MOS 的分区系统构建方法 |
CN103235756A (zh) * | 2013-04-22 | 2013-08-07 | 北京航空航天大学 | 一种面向嵌入式系统分区应用程序软件的仿真测试方法 |
CN103744726A (zh) * | 2014-01-02 | 2014-04-23 | 西北工业大学 | 一种Windows系统实时扩展的两级调度方法 |
US9003405B1 (en) * | 2012-05-22 | 2015-04-07 | The Boeing Company | Synchronization of virtual machine-based desktop environments |
-
2015
- 2015-07-09 CN CN201510399843.8A patent/CN105045666B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049311A (zh) * | 2011-10-11 | 2013-04-17 | 北京科银京成技术有限公司 | 分区操作系统的综合化调度算法 |
US9003405B1 (en) * | 2012-05-22 | 2015-04-07 | The Boeing Company | Synchronization of virtual machine-based desktop environments |
CN103207782A (zh) * | 2013-03-27 | 2013-07-17 | 北京航空航天大学 | 基于multi-kernel MOS 的分区系统构建方法 |
CN103235756A (zh) * | 2013-04-22 | 2013-08-07 | 北京航空航天大学 | 一种面向嵌入式系统分区应用程序软件的仿真测试方法 |
CN103744726A (zh) * | 2014-01-02 | 2014-04-23 | 西北工业大学 | 一种Windows系统实时扩展的两级调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105045666A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045666B (zh) | Windows操作系统环境下的分区调度方法 | |
Prisaznuk | ARINC 653 role in integrated modular avionics (IMA) | |
CN110795219B (zh) | 适用于多种计算框架的资源调度方法及系统 | |
CN103098032B (zh) | 仿真方法和系统 | |
EP2591419B1 (en) | Simulating and testing avionics | |
KR101355676B1 (ko) | 다기종 무인기용 비행 제어 시스템 | |
US20060268967A1 (en) | Supplying instruction to operational stations | |
Lauer et al. | Latency and freshness analysis on IMA systems | |
US9986036B2 (en) | Apparatus and method of operating a system | |
Han et al. | Resource partitioning for Integrated Modular Avionics: comparative study of implementation alternatives | |
CN115879323B (zh) | 自动驾驶仿真测试方法、电子设备及计算机可读存储介质 | |
Hilbrich et al. | Model-based generation of static schedules for safety critical multi-core systems in the avionics domain | |
CN115454629A (zh) | 基于云原生技术的ai算法与微服务调度方法及其装置 | |
Indrusiak et al. | Dynamic resource allocation in embedded, high-performance and cloud computing | |
US20140052432A1 (en) | Method for a design evaluation of a system | |
CN110503318A (zh) | 综合模块化航空电子处理系统资源配置与仿真评估平台 | |
Glonina et al. | On the correctness of real-time modular computer systems modeling with stopwatch automata networks | |
Görke et al. | Flexible platform approach for fly-by-wire systems | |
El Khazen et al. | Work in progress: Kdbench-towards open source benchmarks for measurement-based multicore WCET estimators | |
CN106681812B (zh) | 一种分区调度方法 | |
CN108874534B (zh) | 一种pcpu资源的调度方法和装置 | |
Fuchsen | Preparing the next generation of IMA: A new technology for the scarlett program | |
Lumpp et al. | Enabling Kubernetes orchestration of mixed-criticality software for autonomous mobile robots | |
CN103064727A (zh) | 一种强实时混合任务调度方法 | |
CN113254143A (zh) | 虚拟化网络功能网元编排调度方法、装置和系统 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221101 Address after: 710065 Room 11805, Unit 1, Building 1, No. Chazhang Road, Hi tech Zone, Xi'an, Shaanxi Patentee after: Zhiying Future (Xi'an) Information Technology Co.,Ltd. Address before: 710072 No. 127 Youyi West Road, Shaanxi, Xi'an Patentee before: Northwestern Polytechnical University |