CN103345426A - 一种非实时操作系统的并发过程处理方法 - Google Patents
一种非实时操作系统的并发过程处理方法 Download PDFInfo
- Publication number
- CN103345426A CN103345426A CN2013102602792A CN201310260279A CN103345426A CN 103345426 A CN103345426 A CN 103345426A CN 2013102602792 A CN2013102602792 A CN 2013102602792A CN 201310260279 A CN201310260279 A CN 201310260279A CN 103345426 A CN103345426 A CN 103345426A
- Authority
- CN
- China
- Prior art keywords
- time
- operating system
- variable
- dispatching
- 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.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种非实时操作系统的并发过程处理方法,能够保证多个过程并发运行时各个过程相对独立的运行,避免相互之间的影响。其包括,用于建立并启动多个控制过程的步骤;用于分别对多个控制过程进行分块的步骤,每个控制过程经过分块后产生若干个子块;用于设置调度进程的步骤其中,设置调度进程中系统基础运行的时钟节拍,每个子块的运行时间均小于时钟节拍的长短;为每个控制过程设置一个状态机,一个节拍延时变量和布尔变量;用于根据调度进程同时执行多个控制过程的步骤其中,调度的执行以时钟节拍为基础,每隔一个时钟节拍,系统都会给调度进程发送一个消息通知调度进程执行调度动作;当所有子块都被调度执行后,完成多个控制过程的执行。
Description
技术领域
本发明涉及通讯控制技术领域,具体涉及一种非实时操作系统的并发过程处理方法。
背景技术
工业过程控制中有时需要由一台计算机对多个生产过程进行控制,每个过程都有其自己特定的运行时序和计算工作。这时对控制计算机系统的基本要求是当新的过程控制任务加入到已经运行的计算机系统时,不应对已有的正在控制过程产生影响,尤其是不能对已经运行的控制过程计算、定时和时序产生影响。
在Windows系统中当用线程实现每个过程控制任务时,当新的任务投入运行时,常常会对已有的过程任务产生很大的影响,致使整个控制过程产生混乱。
发明内容
本发明解决的问题在于提供一种非实时操作系统的并发过程处理方法,能够保证多个过程并发运行时各个过程相对独立的运行,避免了相互之间的影响。
本发明是通过以下技术方案来实现:
一种非实时操作系统的并发过程处理方法,其特征在于,包括:
用于建立并启动多个控制过程的步骤;
用于分别对多个控制过程进行分块的步骤,每个控制过程经过分块后产生若干个子块;
用于设置调度进程的步骤;其中,设置调度进程中系统基础运行的时钟节拍,每个子块的运行时间均小于时钟节拍的长短;为每个控制过程设置一个状态机,一个节拍延时变量和布尔变量;状态机用于将调度执行的子块和状态机的每个状态相对应,节拍延时变量用于存储要调度该控制过程需要等待的时钟节拍数,布尔变量用于表明该控制过程是否被已经被调度执行;
用于根据调度进程同时执行多个控制过程的步骤;其中,调度的执行以时钟节拍为基础,每隔一个时钟节拍,系统都会给调度进程发送一个消息通知调度进程执行调度动作;调度动作时,先检查每个布尔变量为未调度的控制过程对应的节拍延时变量,当节拍延时变量不为零时,进行减一操作,然后去检查其它节拍延时变量,直至所有控制过程所对应的节拍延时变量检查完毕,完成本次调度活动;当子块的节拍延时变量为零时,调度执行对应控制过程的状态机,执行状态对应的子块,完成后将该控制过程对应的布尔变量设置为已调度;当所有子块都被调度执行后,完成多个控制过程的执行。
优选的,所述的时钟节拍的长短小于调度过程的最小时间延迟。
优选的,所述的时钟节拍采用非实时操作系统中的时间消息机制。
优选的,所述的节拍延时变量在每个控制过程进行调度执行时,初始值设置为零。
优选的,所述的节拍延时变量在前一个执行的子块的调度动作完毕时进行设置。
优选的,所述的状态机当每次子块投入调度时均初始化为初始状态,每次调度执行都确定下一次的调度状态,状态机能够保存各自的执行状态,当新的调度动作到来时确保能够衔接上一次往下执行。
与现有技术相比,本发明具有以下有益的技术效果:
通过将多个控制过程分别进行按时间特性的分块,从而使得每个子块的运行时间都小于时钟节拍的长短,因此其相对于过程运行时间很短,任何一个子块的调度与否对系统的影响都可以忽略不计,配合多个参数的标定,能够准确迅速的对所需要执行的子块调用并进行处理,同时由对应的状态机进行执行,因此避免了当新控制过程的加入对原有控制过程的干扰,提高了系统对多个控制过程执行的稳定性,保证了控制过程的稳定和流畅。
附图说明
图1为实例中对于控制过程P和Q的分块处理的流程图。
图2为实例中调度进程同时执行控制过程P和Q的伪代码。
图3为实例中调度进程同时执行多个控制过程的流程图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明非实时操作系统的并发过程处理方法,其包括:
用于建立并启动多个控制过程的步骤;
用于分别对多个控制过程进行分块的步骤,每个控制过程经过分块后产生若干个子块;
用于设置调度进程的步骤;其中,设置调度进程中系统基础运行的时钟节拍,每个子块的运行时间均小于时钟节拍的长短;为每个控制过程设置一个状态机,一个节拍延时变量和布尔变量;状态机用于将调度执行的子块和状态机的每个状态相对应,节拍延时变量用于存储要调度该控制过程需要等待的时钟节拍数,布尔变量用于表明该控制过程是否被已经被调度执行;
用于根据调度进程同时执行多个控制过程的步骤;其中,调度的执行以时钟节拍为基础,每隔一个时钟节拍,系统都会给调度进程发送一个消息通知调度进程执行调度动作;调度动作时,先检查每个布尔变量为未调度的控制过程对应的节拍延时变量,当节拍延时变量不为零时,进行减一操作,然后去检查其它节拍延时变量,直至所有控制过程所对应的节拍延时变量检查完毕,完成本次调度活动;当子块的节拍延时变量为零时,调度执行对应控制过程的状态机,执行状态对应的子块,完成后将该控制过程对应的布尔变量设置为已调度;当所有子块都被调度执行后,完成多个控制过程的执行。
进一步,时钟节拍的长短小于调度过程的最小时间延迟;时钟节拍采用非实时操作系统中的时间消息机制;节拍延时变量在每个控制过程进行调度执行时,初始值设置为零;节拍延时变量在前一个执行的子块的调度动作完毕时进行设置;状态机每次当子块投入调度时均初始化为初始状态,每次调度执行都确定下一次的调度状态,状态机能够保存各自的执行状态,当新的调度动作到来时确保能够衔接上一次往下执行。
具体的,参见图1,以控制过程P和Q同时进行运行为例,对于每个独立运行的过程,对其进行适当的分块,对于控制过程任务P,可以在考察它的运行时间特征后,将其分为子块p1,p2,…,分块的标准是每一个子块的处理时间小于时钟节拍,其对于整个控制过程的运行时间来说小到可以忽略不计,也就是说,每个子块的运行时间相对于全过程的执行时间很短,子块之间经常根据过程控制的需要进行一定的延时处理,每两个相邻的子块之间的延时均根据过程的需要而有所不同。对于过程P和Q,分块的操作可以表示成图1所示,图1中子块之间箭头线上标的是表示两子块之间的延迟时间。
过程的调度以子块为基础,设置统一的时钟节拍,时钟节拍是过程调度的最小时间单位,它的大小应远小于最小延迟时间。
非实时操作系统应设置调度进程,系统会以设置的时钟节拍为时间单位向调度进程发送消息,调度进程判断在当前时钟下需要将哪个过程的哪个子块投入运行,根据需要,相应的过程控制功能会被执行,不被调度的过程处于过程调度之间的等待状态。由于子块的运行时间相对于过程运行时间很短,某个子块的调度与否对系统的影响可以忽略不计。
调度过程的伪C代码框架如图2所示,并参见图3,在同时执行多个控制过程时,其流程如下:
1)根据各调度过程的定时关系设置系统的时钟节拍,整个调度将以这个时钟节拍为基础进行。时钟节拍时间的长短应小于调度过程的最小时间延迟,原则上离散的调度时间节拍带来的调度误差不应该对调度结果有显著影响,时钟节拍越小,对系统产生的影响越小。节拍的实现可以利用操作系统中的时间消息机制,根据设置,每个节拍系统将向调度进程发送一个定时消息,调度进程根据状态进行调度。
2)为每个被调度的控制过程设置一个节拍延时变量,其用于变量存储要调度该控制过程需要等待的时钟节拍数,每个控制过程投入运行时初始值设置为零,每个时钟节拍调度进程将分别检查各个调度过程所对应的节拍延时变量,当某各节拍延时变量为零时,将调度执行该变量所对应的调度过程。当节拍延时变量不为零时,不执行对应的调度过程,将每个不为零的节拍延时变量分别减1。
3)为每一调度过程对应设置一个状态机,状态机的每个状态对应于本过程调度执行的子块,状态机之间的迁移关系就是子块的前后执行关系或状态转移。本子块的执行到下一个子块的执行之间的延时节拍变量在该调度执行完毕时进行设置。
4)为每个调度过程设置一个布尔变量,表明该过程活动与否,当某个过程调度完毕时可以将对应的布尔变量设置为已调度,这样对应的过程将不再参与调度排队。
5)调度的执行以时钟节拍为基础,每隔一个时钟节拍,也就是图2中所示的每隔一个延时节拍,系统都会给调度进程发送一个消息通知调度进程执行调度动作。调度动作以检查每一活动的调度过程对应的延时变量开始。当某个过程的延时变量不为零时,本次调度为这个变量减一,然后转去检查其它变量,直至所有控制过程所对应的变量检查完毕,完成本次调度活动。当检查到某各节拍延时变量为零时(因为上一次调度的减动作),说明对应过程的调度延时完成,调度执行对应的控制过程的状态机。状态机每次当控制过程投入调度时均初始化为初始状态,每次调度执行都确定下一次的调度状态,状态机能够保存各自的执行状态,并根据每次调度依据各自的迁移关系,当新的调度到来时确保能够衔接上一次往下执行。
Claims (6)
1.一种非实时操作系统的并发过程处理方法,其特征在于,包括:
用于建立并启动多个控制过程的步骤;
用于分别对多个控制过程进行分块的步骤,每个控制过程经过分块后产生若干个子块;
用于设置调度进程的步骤;其中,设置调度进程中系统基础运行的时钟节拍,每个子块的运行时间均小于时钟节拍的长短;为每个控制过程设置一个状态机,一个节拍延时变量和布尔变量;状态机用于将调度执行的子块和状态机的每个状态相对应,节拍延时变量用于存储要调度该控制过程需要等待的时钟节拍数,布尔变量用于表明该控制过程是否被已经被调度执行;
用于根据调度进程同时执行多个控制过程的步骤;其中,调度的执行以时钟节拍为基础,每隔一个时钟节拍,系统都会给调度进程发送一个消息通知调度进程执行调度动作;调度动作时,先检查每个布尔变量为未调度的控制过程对应的节拍延时变量,当节拍延时变量不为零时,进行减一操作,然后去检查其它节拍延时变量,直至所有控制过程所对应的节拍延时变量检查完毕,完成本次调度活动;当子块的节拍延时变量为零时,调度执行对应控制过程的状态机,执行状态对应的子块,完成后将该控制过程对应的布尔变量设置为已调度;当所有子块都被调度执行后,完成多个控制过程的执行。
2.根据权利要求1所述的非实时操作系统的并发过程处理方法,其特征在于,所述的时钟节拍的长短小于调度过程的最小时间延迟。
3.根据权利要求1或2所述的非实时操作系统的并发过程处理方法,其特征在于,所述的时钟节拍采用非实时操作系统中的时间消息机制。
4.根据权利要求1所述的非实时操作系统的并发过程处理方法,其特征在于,所述的节拍延时变量在每个控制过程进行调度执行时,初始值设置为零。
5.根据权利要求1或4所述的非实时操作系统的并发过程处理方法,其特征在于,所述的节拍延时变量在前一个执行的子块的调度动作完毕时进行设置。
6.根据权利要求1所述的非实时操作系统的并发过程处理方法,其特征在于,所述的状态机当每次子块投入调度时均初始化为初始状态,每次调度执行都确定下一次的调度状态,状态机能够保存各自的执行状态,当新的调度动作到来时确保能够衔接上一次往下执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310260279.2A CN103345426B (zh) | 2013-06-26 | 2013-06-26 | 一种非实时操作系统的并发过程处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310260279.2A CN103345426B (zh) | 2013-06-26 | 2013-06-26 | 一种非实时操作系统的并发过程处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345426A true CN103345426A (zh) | 2013-10-09 |
CN103345426B CN103345426B (zh) | 2016-05-11 |
Family
ID=49280224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310260279.2A Active CN103345426B (zh) | 2013-06-26 | 2013-06-26 | 一种非实时操作系统的并发过程处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345426B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021436A (zh) * | 2017-12-28 | 2018-05-11 | 辽宁科技大学 | 一种进程调度方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394308A (zh) * | 2000-09-22 | 2003-01-29 | 索尼株式会社 | 运算处理系统和控制方法,任务管理系统和方法 |
CN101572723A (zh) * | 2009-06-02 | 2009-11-04 | 山东大学 | 分布式系统有限状态机扩展模型及检查点准同步方法 |
CN101989191A (zh) * | 2010-10-22 | 2011-03-23 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种多Ready输入中央处理器的实现方法 |
CN102521045A (zh) * | 2011-12-31 | 2012-06-27 | 南京航空航天大学 | 非实时多任务调度内核实现方法 |
-
2013
- 2013-06-26 CN CN201310260279.2A patent/CN103345426B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394308A (zh) * | 2000-09-22 | 2003-01-29 | 索尼株式会社 | 运算处理系统和控制方法,任务管理系统和方法 |
CN101572723A (zh) * | 2009-06-02 | 2009-11-04 | 山东大学 | 分布式系统有限状态机扩展模型及检查点准同步方法 |
CN101989191A (zh) * | 2010-10-22 | 2011-03-23 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种多Ready输入中央处理器的实现方法 |
CN102521045A (zh) * | 2011-12-31 | 2012-06-27 | 南京航空航天大学 | 非实时多任务调度内核实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021436A (zh) * | 2017-12-28 | 2018-05-11 | 辽宁科技大学 | 一种进程调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103345426B (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103823706B (zh) | 一种基于RTLinux的被控对象模型模拟仿真实时调度方法 | |
CN104866374A (zh) | 基于多任务的离散事件并行仿真及时间同步方法 | |
CN102354155B (zh) | 开放式数控系统的实时内核及刀路曲线的实时控制方法 | |
CN103679388B (zh) | 生产调度方法及生产调度系统 | |
Weinstock et al. | Time-decoupled parallel SystemC simulation | |
CN101833438A (zh) | 一种基于多重并行的数据通用处理方法 | |
CN103279622A (zh) | 一种飞行器仿真系统中的分布式仿真模型调度方法 | |
CN103744730B (zh) | 一种任务调度方法和装置 | |
CN108139903B (zh) | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 | |
CN104375893A (zh) | 一种基于两级操作系统架构的分区调度方法 | |
CN109783239B (zh) | SystemC仿真调度核的多线程优化方法、系统及介质 | |
US20160188761A1 (en) | Asynchronous Parallel Simulation Protocol for Stream Processing Platforms | |
CN106802825B (zh) | 一种基于实时系统的动态任务调度方法与系统 | |
CN103345426A (zh) | 一种非实时操作系统的并发过程处理方法 | |
CN110275765A (zh) | 基于分支dag依赖的数据并行作业调度方法 | |
CN105511394B (zh) | 一种在fpga平台实现plc控制的方法 | |
CN111274667B (zh) | 一种跨尺度材料计算软件集成计算系统及方法 | |
CN102354154B (zh) | 一种开放式数控系统的实时内核芯片 | |
CN103413196B (zh) | 改进的基于关系链的作业车间调度关键外协工序辨识方法 | |
Jung et al. | Synchronization of a “Plug-and-Simulate”-capable Co-Simulation of Internet-of-Things-Components | |
Jiang | A novel simulation time and wall clock time synchronization algorithm for HLA | |
CN102253861A (zh) | 一种分步运算插件的执行方法 | |
CN114358577A (zh) | 订单信息处理方法和装置 | |
CN114358578A (zh) | 基于消息队列的订单处理方法和装置 | |
Greenyer et al. | Towards synthesizing energy-efficient controllers for modern production systems from scenario-based specifications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |