CN101013384A - 一种基于模型的实时系统的可调度性分析方法 - Google Patents
一种基于模型的实时系统的可调度性分析方法 Download PDFInfo
- Publication number
- CN101013384A CN101013384A CN 200710067221 CN200710067221A CN101013384A CN 101013384 A CN101013384 A CN 101013384A CN 200710067221 CN200710067221 CN 200710067221 CN 200710067221 A CN200710067221 A CN 200710067221A CN 101013384 A CN101013384 A CN 101013384A
- Authority
- CN
- China
- Prior art keywords
- task
- current
- limit
- subtask
- time
- 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
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及嵌入式实时系统的模拟仿真技术,旨在提供一种基于模型的实时系统的可调度性分析方法。该方法包括以下步骤:(1)建立系统模型;(2)以系统模型作为输入,进行任务分割;(3)设计模拟用数据结构;(4)对有向图执行算法进行仿真,得到结果执行序列;(5)输出模拟结果。本发明对任务的执行顺序进行详细的模拟,具有很好的预测性,可靠性,易用性;节省了软件开发的时间;消除了以往的可调度性分析只给一个比较笼统,比较模糊的结果的不良方面;本发明使得可调度行分析更具可行性,更加可视化,输出内容详尽,界面友好。
Description
技术领域
本发明涉及嵌入式实时系统的模拟仿真技术,更具体的说,是涉及一种基于模型的实时系统的可调度性分析方法。
背景技术
第一方面:实时系统和可调度性时间分析。
嵌入式实时系统,也叫实时内核,是在各类嵌入式芯片的应用程序上实现多任务的机制。它的核心功能,是实现多任务调度,以及任务间的通讯等。
在特定的操作系统中采用某一特定的调度方法的情况下,如果所有的任务都能够在特定的约束内实现,那么这种调度就是可行的。验证调度可行有两种基本的方法:一、对进程集在约束内进行严密的可行性实验;二、推导出最坏情况响应时间,并与截止期进行比较。
第二方面:目前存在的可调度性时间分析方法。
可调度性分析决定是否所有的任务可以调度运行,并且满足它们使用调度算法建立的死线,同时仍要获得优化的处理器利用率。注意,可调度性分析只观察系统如何满足时序要求,而不是满足功能要求。
对于实时系统,普遍使用的分析方法是速率单调分析RMA(Rate MonotonicAnalysis)。此模型是基于称为速率单调调度RMS(Rate Monotic Scheduling)的调度机制开发的。它是可抢占的调度算法,采用单调优先权分配作为任务的优先权分配策略。速率单调优先权分配(rate monotonic priority assignment)是一种方法,分配给任务的优先权是此任务执行速率的单调函数;换句话说,每次执行之间的周期越短,分给此任务的优先权越高。
有一组与基本RMA相关的假设。这些假设是:所有的任务是周期性的,任务相互独立并且任务之间不发生交互,任务的死线是其下一个周期的开始,每个任务具有不随时间变化的定常时间,所有的任务具有同等关键性级别,限制非周期任务初始化和失败恢复工作,并且这些非周期任务不具有硬死线。
虽然RMA分析方法已经得到了很好的应用,但是RMA分析方法的假设条件比较严格,一般的任务集不一定能够满足,导致了对分析的结果有误差。而且,它所得到的结果是一个笼统的、模糊的结果,不能以很友好的方式提供给用户。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供了一种基于模型的实时系统的可调度性分析方法。
为了解决上述技术问题,本发明是通过以下技术方案实现的。
一种基于模型的实时系统的可调度性分析方法,包括以下步骤:
(1)建立系统模型:
通过建模工具建立系统模型,系统模型包含三个方面:任务、定时器、任务和任务/任务和定时器之间的通讯;
(2)以系统模型作为输入,进行任务分割:
进行任务分割通过任务分割算法实现,所述的任务分割算法如下:把任务分割成n个,其中:n=任务的入度+任务的出度-1-入边中激活任务的边的条数;
未经过分割的任务称为父任务,父任务分割后得到的任务称为子任务;一个父任务的所有子任务称为这个父任务的子任务集;根据系统模型的具体情况,对父任务和子任务进行手动加边形成时序图;
(3)设计模拟用数据结构:
根据时序图中的任务和各任务之间的相互关系设计模拟用数据结构,把时序图中的信息组织成有向图;模拟用数据结构分为三部分:任务节点、子任务集和有向图;
(4)对有向图执行算法进行仿真,得到结果执行序列:
在执行仿真算法以前,要设置就绪队列;在一般情况和最差情况下设置就绪队列的算法为:在一般情况下,将自启动的任务放入就绪队列;在最差情况下,将入读为零的任务放入就绪队列;对就绪队列设置完毕后,对有向图执行算法进行仿真;
(5)输出模拟结果:
结果以在界面上画图的形式来展现给用户,在输出模拟结果的界面中,提供了最差和一般两种情况下的三大结果:每个时刻执行的任务信息、每个任务的执行时间及CPU的空闲时间和系统是否可调度的信息及输出不可调度的原因。
作为一种改进,所述的任务和任务/任务和定时器之间的通讯,包括一个任务对另一个任务发送事件的通讯、一个任务激活另一个任务的通讯和任务对定时器的控制关系。
作为一种改进,所述的对有向图执行算法仿真包括以下步骤:
(1)设定模拟时间长度,生成时间序列,把在开始状态就绪的任务加入到就绪队列中,令当前执行时间为0;
(2)判断模拟时间是否到,如果模拟时间到,则结束;
(3)在就绪队列中找到优先级最高的任务,为当前执行任务集;如果就绪队列为空,则返回-1;
(4)如果(3)的返回值为-1,则将-1赋给时间序列中当前执行时间列;否则,对当前执行任务集进行处理,处理完以后恢复对任务处理时删除的边;当前执行时间加1;转至(2)执行。
作为一种改进,上述算法中所涉及的对当前执行任务集进行处理的算法如下:
(1)判断当前执行任务集是否是可抢占的任务集,如果不可抢占跳到步骤(7)执行;
(2)得到当前任务集的目前执行子任务,为当前执行子任务,把它的执行时间加1,并且判断它是否执行完成,如果没有则跳到步骤(6)执行;
(3)把当前执行任务集的目前执行子任务标记加1,如果下一个子任务等待或者当前执行子任务为当前执行任务集的最后一个子任务,当前执行任务集任务集等待;
(4)如果当前执行子任务激活时钟,把时钟激活,且把这条激活边删去;
(5)判断当前执行子任务有没有控制其他子任务的边,若有,对这些边进行逐条地处理:如是设置事件边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是激活任务边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪;
(6)将当前执行任务的序号赋给执行序列的当前执行时间列,跳至步骤(14);
(7)判断本次执行当前任务集的子任务是否执行完,如果执行完,则跳至步骤(13);
(8)如果当前执行子任务等待,跳至步骤(13);
(9)判断当前执行子任务是否执行完,如果执行完,则跳至步骤(11);如果没有,将当前执行任务的序号赋给执行序列的当前执行时间列;
(10)把当前执行时间中能够激活的任务激活,当前执行时间加1,跳到步骤(9);
(11)如果当前执行子任务激活时钟,把时钟激活,且把相应的激活变删除;
(12)判断当前执行子任务有没有控制其他子任务的边,若有,对这些边进行逐条地处理:如是设置事件边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是激活任务边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪;跳回到步骤(7);
(13)把当前执行任务集从就绪队列中删除,如果run的子任务执行完,执行子任务标记置0,当前执行时间-1;
(14)结束。
作为一种改进,判断边是任务激活边还是设置时间边的依据如下:如果该边的源节点是任务集的第一个子任务,那么该边是任务激活边;反之是设置时间边。
与现有技术相比,本发明的有益效果是:
(1)本发明对任务的执行顺序进行详细的模拟,具有很好的预测性,可靠性,易用性。
(2)本发明是基于模型的,也就是在模型建立好以后,代码生成以前的阶段,来模拟任务集的执行顺序,这样就使得用户可以更好的把握建模的过程,消除了因建模的出问题而影响全局的情况,大大节省了软件开发的时间。
(3)本发明是通过模拟仿真来对任务集的可调度性进行分析的,他消除了以往的可调度性分析只给一个比较笼统,比较模糊的结果的不良方面。
(4)本发明把仿真模拟得到的任务执行序列交给用户,使得可调度行分析更具可行性,更加可视化。
(5)本发明输出内容详尽,界面友好。
附图说明
图1是本发明算法的总体结构图。
图2是本发明可抢占的多个任务控制一个任务示意图。
图3是对图2分割后的结果示意图。
图4是本发明用户对图3加边处理后的结果示意图。
图5是本发明任务节点的数据结构示意图。
图6是本发明子任务集的数据结构示意图。
图7是本发明有向图的数据结构示意图。
图8本发明有向图遍历的基本算法示意图。
图9是本发明对任务的处理示意图。
图10本发明的运行结果示意图。
图11是本发明模型图。
图12是本发明模型中个任务和定时器的状态示意图。
图13是本发明时序图。
具体实施方式
结合附图,下面对本发明进行详细说明。
本发明解决了在实时多任务操作系统建模中对多个任务的可调度性进行分析的问题,提供了一种基于模型的实时系统的可调度性分析方法,从而增加了所开发系统的可靠性,节省了用户的软件开发周期,大大提高了用户的开发效率。
本发明的主要原理和特征如下:
一、本发明是基于模型的可调度性时间分析。也就是说本发明是在用户通过一定的工具进行建模以后,利用本发明以及实现本发明的系统了解其所建的任务集的执行顺序或者进行可调度行时间分析。这样用户就可以更加直观的了解任务的执行情况,提高设计和开发的效率。
本发明是利用模拟仿真的原理,有较大的算法难度、逻辑难度和实现难度,但是本发明能给出详尽的任务执行顺序的信息。相比之下,一般的可调度分析只能够给出一个较为笼统,较为模糊的信息。从这个层面上讲,本发明进一步减少了用户开发的难度,增加了用户所开发系统的可靠性。
二、本发明的主要技术实现步骤如下:
1、建立系统模型。
本发明的第一步就是要在用户使用的某一个特定的建模工具上建立模型。模型可以包含三个方面特性:A)、任务;B)、定时器;C)、任务和任务/任务和定时器之间的通讯。其中,任务和任务/任务和定时器之间的通讯主要包括一个任务对另一个任务发送事件的通讯(通过两个API:setEvent()和waitEvent()实现)、一个任务激活另一个任务的通讯(通过API:activeTask()来实现)和任务对定时器的控制关系(通过API:setAlarm()来实现)。如图11是一个建好的模型。
2、以系统模型作为输入,进行任务分割。
由于存在任务和任务/任务和定时器之间的通讯,如果某个任务是可抢占的,那么在执行完任意一个API的时候,这个任务都有被抢占的可能性。所以在执行完任意一个API以后,任务都应该被暂停执行,由系统去观察有没有比它的优先级更高的任务在就绪队列,如果有的话就要抢占本任务的执行权力,把执行的权力交给优先级最高的就绪任务。正是这种情况给任务集的执行顺序的模拟仿真增添了不少技术难度,而本发明通过任务分割的办法很好的解决了这个问题。
进行任务分割通过任务分割算法实现,所述任务分割算法如下:不管任务是否可以抢占,把任务分割成为n个。其中:
n=任务的入度+任务的出度-1-入边中激活任务边的条数。
如图2所示,这是一个简单的模型。从模型中我们可以看到任务1和任务3以及任务2和任务3之间分别存在以事件设置和事件等待实现的事件控制关系。假设任务1是可抢占的,任务2是不可抢占的。那么根据任务分割算法,图2经过分割以后可以生成如图3所示的模型图。在这里我们把未经过分割的任务称为父任务;父任务分割后得到的任务称为子任务;一个父任务的所有子任务称为这个父任务的子任务集。
图3中的信息是我们可以确定的信息,其中包括任务2、任务1和任务3分别被分割成2、2、3个子任务,以及各子任务集内的控制关系。这种控制关系是一种顺序的控制关系。但是,到目前为止,我们还不能确定这些子任务集之间的控制关系,即是由于父任务之间存在的通讯关系而在这些子任务集之间存在的先后执行的关系,如:任务21后可以执行任务3的那个子任务?任务11后可以执行任务3的那个子任务?那么这些先后执行的关系就须要用户根据所建立模型的具体情况来手动加边。加边后的情况如图4所示,图中虚线部分表示用户加的边。
经过用户加边以及形成的图,每一条边都表示一种先后执行的关系,箭头的源节点(子任务)运行完以后就可以执行箭头的目标节点(子任务)。这样的图我们称为时序图(sequence图)。
虽然时序图中所有的边都表示子任务之间的先后执行的关系,但是根据他们的先后控制的方式我们可以把他们分成两类:与边和或边。或边是指在指向同一个子任务的所有功能相同的边中,只要有一条边得以实现就可以执行下一个任务;所有的子任务集之间的通讯都是或边。与边是指进入同一个子任务的所有边都完成以后才能执行下一个任务;所有子任务集内部的表示顺序关系的边都是与边。
3、设计模拟用数据结构。
本发明的中心思想就是要将时序图中的任务和各任务之间的相互关系用有向图的形式表现出来,而后再对这一张有向图进行遍历。那么我们现在的工作就是要设计好数据结构,把时序图中的信息合理的组织起来。以方便此后对关系图进行遍历。
在本发明中,我们设计的模拟用数据结构从总体上分为三大部分:任务节点、子任务集和有向图。
(1)子任务节点类,如图5,其中:
Name:类String的实例,表示本子任务的名字;
Len:int型实例变量,表示本子任务一次执行的执行时间;
nowRunTime:int型实例变量,表示目前本子任务本次已执行的时间;
fatherTask:类String的实例,表示本子任务的父节点的名字。
(2)子任务集类,如图6,其中:
Cycle:int型实例变量,表示本任务集的定时器,即定时器第一次启动后每隔多少时间任务启动一次;
alarmStartTime:int型实例变量,记录时钟被激活的时间;
alarmTime:int型实例变量,表示子任务集定时器激活以后第一次启动的时间;
proprity:int型实例变量,表示子任务集的优先级;
SnatchOrNot:布尔型实例变量,表示子任务集是否可抢占;
autoStart:布尔型实例变量,表示子任务集是否可以自启动;
alarmAutoStart:布尔型实例变量,表示子任务集的时钟是否可以自启动;
length:int型的实例变量,表示子任务集的长度;
nowRunTaskIndex:int型实例变量,表示子任务集当前执行的子任务的下标;
subTaskList:类Vector的实例,表示子任务集包括的子任务序列;
fatherName:类String的实例,表示父节点的名字;
在前面我们已经描述过,子任务表示一个任务在分割以后所有子任务的集合,那么我们可以把所有的子任务的共同属性集合到子任务集数据结构中。这样即节约内存空间又方便遍历。
alarmStartTime:int型的变量,用于记录子任务集的定时器的激活时间。
(3)有向图类,如图7,其中:
nodeNum:int型实例变量,记录时序图中的子任务数目;
sNodeNum:int型实例变量,记录静态图中父任务的数目;
nodeList[]:SNode类型的数组,数组长度为nodeNum,用于存储所有子节点的序列;
subTaskSetList[]:NodeList类型的数组,数组长度为sNodeNum,用于存贮所有任务集;
graph[nodeNum][nodeNum]:int型的二维数组,数组的行数和列数都是nodeNum,graph是邻接矩阵,用于存储时序图中各各子节点之间的所有的或边,在这里我们并不需要存储与边,因为我们能在子任务集类中表示与边的情况。
readyList[]:int类型的数组,数组长度为sNodeNum+1,表示就绪队列,在相应的某一位上的值为0,表示没有就绪,1表示就绪,ReadList[sNodeNum]的数字表示当前有多少个就绪任务;
timeList[]:int类型的数组,表示时间序列,用于记录每个毫秒的任务执行情况;
alarmGraph[nodeNum][]:int型的二维数组,数组的行数和列数分别是nodeNum和sNodeNum、alarmGraph是邻接矩阵,用以表示任务和定时器的从属关系的情况。
4、对有向图执行算法进行仿真,得到结果执行序列。
在执行仿真算法以前,要设置就绪队列。在一般情况和最差情况下设置就绪队列的算法为:
在一般情况下,将自启动的任务放入就绪队列;
在最差情况下,将入读为零的任务放入就绪队列。
对有向图执行算法进行仿真具体描述如下:
第一步,设定合适的模拟时间长度runTime,生成时间序列timeList;把在开始状态就绪的任务加入到就绪对了中去;令当前时间i=0。
第二步,判断模拟时间是否到,如果模拟时间到,则结束。
第三步,在就绪队列中找到优先级最高的任务集的序号run,如果就绪队列为空,则返回-1。
第四步,如果run为-1,则timeList[i]=-1;否则,对当前执行任务集run进行处理(具体处理算法如图9),处理完以后恢复对任务处理时删除的边;模拟时间i++;转至第二步执行。
其中,考虑是否是就绪任务的准则就是:任务集的第nowRunTaskIndex(初始化为零)个子任务的在graph图中的入度是否为零。同时,考虑到模拟仿真序列的完整性,本发明把模拟的总时间考虑得尽量合理。现在的公式是所有任务的定时器的最小公倍数×任务的个数。算法的流程如图8所示。
图8对算法总体上进行了描述,但是对如何对当前任务进行处理还没有详细的说明,下面是处理当前任务的算法:
第一步,判断当前执行任务集run是否是可抢占的任务集,如果不可抢占跳到第七步执行。
第二步,得到当前任务集(即第run个任务)的目前执行子任务(第nowRunTaskIndex个子任务)nowNode,把它的执行时间加1,并且判断它是否执行完成,如果没有则跳到第六步执行。
第三步,把当前执行任务集的目前执行子任务标记(nowRunTaskIndex)加1,如果下一个子任务等待或者当前子任务为run任务集的最后一个子任务,run任务集等待。
第四步,如果当前执行子任务激活时钟,把时钟激活,且把taskGraph中相应位置零。
第五步,判断当前执行子任务有没有控制其他子任务的边。如果有,对这些边进行逐条地处理:如是setEvent边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是activeTask边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪①。
第六步,记录任务执行情况的时间序列timeList[i]=run。跳至第十三步。
第七步,判断本次执行当前(run)任务集的子任务是否执行完,如果执行完,则跳至第十二步。
第八步,得到当前执行子任务nowNode,如果nowNode等待,跳至第十二步。
第九步,判断nowNode是否执行完,如果执行完,则跳至第十一步;如果没有令timeList[i]=run。
第十步,把i毫秒能够激活的任务激活,i++;跳到第九步。
第十一步,如果当前执行子任务激活时钟,把时钟激活,且把taskGraph中相应位置零。
第十二步,判断当前执行子任务有没有控制其他子任务的边。如果有,对这些边进行逐条地处理:如是setEvent边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是activeTask边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪①。跳回到第七步。
第十三步,把run从就绪队列中删除,如果run的子任务执行完,执行子任务标记置0,i--。
其中在算法第五步和第十二步的①标志处,对一条边是setEvent()还是activeTask()边的判断依据如下:
如果某条边的source节点是任务集的第一个子任务,即子任务名的最后一个字符为“1”,那么这条边是activeTask()边;反之是setEvent()边。
5、输出模拟结果。
在本发明中,把结果以在新建的界面上画图的形式来展现给用户。在输出模拟结果的界面中,提供给用户提供了最差和一般两种情况下的三大结果:
(1)每个时刻执行的任务信息;
(2)每个任务的执行时间和CPU的空闲时间;
(3)系统是否可调度的信息并且输出不可调度的原因。其中每个任务都有一条执行序列的显示图,白色表示没有执行,黑色表示在当前时候执行,其中还有可以放大和缩小的选择框和按钮,以方便用户使用本发明。
具体实施例如图11所示。图中有两个定时器和四个任务,他们的属性分别见图12。另外Task1以setavtive()的方式控制Task2,Task2以setavtive()的方式控制Task3,Task3以setavtive()的方式控制Task4。Task3以setAlarm()控制alarm2,alarm1是自启动的。
其次,在转化成时序图的过程中。根据任务分割的算法,我们把Task1、Task2、Task3和Task4分别分割成2、3、3、2个子任务,他们的分割的情况和设置执行时间如表:
父任务 | 子任务集 | 子任务的执行时间 |
Task1 | T11 | 5 |
T12 | 5 | |
Task2 | T21 | 7 |
T22 | 4 | |
T23 | 4 | |
Task3 | T31 | 4 |
T32 | 3 | |
T33 | 3 | |
Task4 | T41 | 5 |
T42 | 5 |
另外,再更加模型的具体情况。加上T11到T21、T21到T31、T32到T41、T31到alarm1的边,就形成了如图13的时序图。
最后,用算法来遍历时序图。生成的结果如图10所示。
最后,还需要注意的是,以上列举的仅是本发明的一个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (5)
1、一种基于模型的实时系统的可调度性分析方法,其特征在于,包括以下步骤:
(1)建立系统模型:
通过建模工具建立系统模型,系统模型包含三个方面:任务、定时器、任务和任务/任务和定时器之间的通讯;
(2)以系统模型作为输入,进行任务分割:
进行任务分割通过任务分割算法实现,所述的任务分割算法如下:把任务分割成n个,其中:n=任务的入度+任务的出度-1-入边中激活任务的边的条数;
未经过分割的任务称为父任务,父任务分割后得到的任务称为子任务;一个父任务的所有子任务称为这个父任务的子任务集;根据系统模型的具体情况,对父任务和子任务进行手动加边形成时序图;
(3)设计模拟用数据结构:
根据时序图中的任务和各任务之间的相互关系设计模拟用数据结构,把时序图中的信息组织成有向图;模拟用数据结构分为三部分:任务节点、子任务集和有向图;
(4)对有向图执行算法进行仿真,得到结果执行序列:
在执行仿真算法以前,要设置就绪队列;在一般情况和最差情况下设置就绪队列的算法为:在一般情况下,将自启动的任务放入就绪队列;在最差情况下,将入读为零的任务放入就绪队列;对就绪队列设置完毕后,对有向图执行算法进行仿真;
(5)输出模拟结果:
结果以在界面上画图的形式来展现给用户,在输出模拟结果的界面中,提供了最差和一般两种情况下的三大结果:每个时刻执行的任务信息、每个任务的执行时间及CPU的空闲时间和系统是否可调度的信息及输出不可调度的原因。
2、根据权利要求1所述的一种基于模型的实时系统的可调度性分析方法,其特征在于,所述的任务和任务/任务和定时器之间的通讯,包括一个任务对另一个任务发送事件的通讯、一个任务激活另一个任务的通讯和任务对定时器的控制关系。
3、根据权利要求1所述的一种基于模型的实时系统的可调度性分析方法,其特征在于,所述的对有向图执行算法仿真包括以下步骤:
(1)设定模拟时间长度,生成时间序列,把在开始状态就绪的任务加入到就绪队列中,令当前执行时间为0;
(2)判断模拟时间是否到,如果模拟时间到,则结束;
(3)在就绪队列中找到优先级最高的任务,为当前执行任务集;如果就绪队列为空,则返回-1;
(4)如果(3)的返回值为-1,则将-1赋给时间序列中当前执行时间列;否则,对当前执行任务集进行处理,处理完以后恢复对任务处理时删除的边;当前执行时间加1;转至(2)执行。
4、根据权利要求3所述的一种基于模型的实时系统的可调度性分析方法,其特征在于,所述的对当前执行任务集进行处理包括以下步骤:
(1)判断当前执行任务集是否是可抢占的任务集,如果不可抢占跳到步骤(7)执行;
(2)得到当前任务集的目前执行子任务,为当前执行子任务,把它的执行时间加1,并且判断它是否执行完成,如果没有则跳到步骤(6)执行;
(3)把当前执行任务集的目前执行子任务标记加1,如果下一个子任务等待或者当前执行子任务为当前执行任务集的最后一个子任务,当前执行任务集任务集等待;
(4)如果当前执行子任务激活时钟,把时钟激活,且把这条激活边删去;
(5)判断当前执行子任务有没有控制其他子任务的边,若有,对这些边进行逐条地处理:如是设置事件边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是激活任务边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪;
(6)将当前执行任务的序号赋给执行序列的当前执行时间列,跳至步骤(14);
(7)判断本次执行当前任务集的子任务是否执行完,如果执行完,则跳至步骤(13);
(8)如果当前执行子任务等待,跳至步骤(13);
(9)判断当前执行子任务是否执行完,如果执行完,则跳至步骤(11);如果没有,将当前执行任务的序号赋给执行序列的当前执行时间列;
(10)把当前执行时间中能够激活的任务激活,当前执行时间加1,跳到步骤(9);
(11)如果当前执行子任务激活时钟,把时钟激活,且把相应的激活变删除;
(12)判断当前执行子任务有没有控制其他子任务的边,若有,对这些边进行逐条地处理:如是设置事件边,将边删除,判断此时被控子任务所在的任务集是否就绪;如果是激活任务边,且被激活子任务所在的任务集等待且它的当前执行子任务为第一个子任务,把这个任务集置为就绪;跳回到步骤(7);
(13)把当前执行任务集从就绪队列中删除,如果run的子任务执行完,执行子任务标记置0,当前执行时间-1;
(14)结束。
5、根据权利要求4所述的一种基于模型的实时系统的可调度性分析方法,其特征在于,判断边是任务激活边还是设置时间边的依据如下:如果该边的源节点是任务集的第一个子任务,那么该边是任务激活边;反之是设置时间边。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710067221 CN101013384A (zh) | 2007-02-08 | 2007-02-08 | 一种基于模型的实时系统的可调度性分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710067221 CN101013384A (zh) | 2007-02-08 | 2007-02-08 | 一种基于模型的实时系统的可调度性分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101013384A true CN101013384A (zh) | 2007-08-08 |
Family
ID=38700916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710067221 Pending CN101013384A (zh) | 2007-02-08 | 2007-02-08 | 一种基于模型的实时系统的可调度性分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101013384A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901186A (zh) * | 2010-07-08 | 2010-12-01 | 西北工业大学 | 一种嵌入式系统可靠性分析与评估方法 |
CN101923489A (zh) * | 2010-08-06 | 2010-12-22 | 西华师范大学 | 基于模糊重要性和空闲时间的嵌入式实时任务调度方法 |
WO2011076278A1 (de) * | 2009-12-23 | 2011-06-30 | Inchron Gmbh | Verfahren und datenverarbeitungssystem zur simulation eines eingebetteten systems |
CN101408850B (zh) * | 2008-11-27 | 2011-11-23 | 中国人民解放军信息工程大学 | 一种在任务流方式下求解复杂问题的方法 |
CN102364447A (zh) * | 2011-10-28 | 2012-02-29 | 北京航空航天大学 | 一种优化多任务间通信能耗的作业调度方法 |
CN101615120B (zh) * | 2009-08-13 | 2012-11-14 | 电子科技大学 | Aadl模型的一种调度分析方法 |
CN101620550B (zh) * | 2009-05-27 | 2013-01-02 | 西华师范大学 | 一种基于任务模糊多特征的嵌入式实时调度方法 |
CN101593129B (zh) * | 2008-05-28 | 2013-01-23 | 国际商业机器公司 | 触发具有约束关系的多个事件的执行的方法和设备 |
CN103377035A (zh) * | 2012-04-12 | 2013-10-30 | 浙江大学 | 针对粗颗粒度流应用的流水并行化方法 |
CN103970612A (zh) * | 2014-05-07 | 2014-08-06 | 田文洪 | 一种基于虚拟机预分割的负载均衡方法和装置 |
CN104503942A (zh) * | 2014-12-30 | 2015-04-08 | 合肥金星机电科技发展有限公司 | 串口指令解码方法 |
CN104598302A (zh) * | 2015-02-09 | 2015-05-06 | 西北工业大学 | 基于资源竞争模型的aadl模型可调度性验证方法 |
CN105260188A (zh) * | 2015-10-24 | 2016-01-20 | 北京航空航天大学 | 一种时间特征模型及其建模方法 |
CN105700941A (zh) * | 2015-12-18 | 2016-06-22 | 西安工业大学 | 三维调度器模型及其调度算法 |
CN108564281A (zh) * | 2018-04-13 | 2018-09-21 | 浙江传媒学院 | 基于结构化的外包工作任务调度系统的实现方法 |
CN109815537A (zh) * | 2018-12-19 | 2019-05-28 | 清华大学 | 一种基于时间预测的高通量材料仿真计算优化方法 |
CN113535356A (zh) * | 2021-07-01 | 2021-10-22 | 中国科学院软件研究所 | 一种能量感知的分层任务调度方法和装置 |
CN114925979A (zh) * | 2022-04-19 | 2022-08-19 | 北京人人云图信息技术有限公司 | 一种机场加油派工的装置 |
CN116991373A (zh) * | 2023-09-27 | 2023-11-03 | 杭州华望系统科技有限公司 | 一种序列图模型的语义解析与仿真系统 |
-
2007
- 2007-02-08 CN CN 200710067221 patent/CN101013384A/zh active Pending
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593129B (zh) * | 2008-05-28 | 2013-01-23 | 国际商业机器公司 | 触发具有约束关系的多个事件的执行的方法和设备 |
CN101408850B (zh) * | 2008-11-27 | 2011-11-23 | 中国人民解放军信息工程大学 | 一种在任务流方式下求解复杂问题的方法 |
CN101620550B (zh) * | 2009-05-27 | 2013-01-02 | 西华师范大学 | 一种基于任务模糊多特征的嵌入式实时调度方法 |
CN101615120B (zh) * | 2009-08-13 | 2012-11-14 | 电子科技大学 | Aadl模型的一种调度分析方法 |
WO2011076278A1 (de) * | 2009-12-23 | 2011-06-30 | Inchron Gmbh | Verfahren und datenverarbeitungssystem zur simulation eines eingebetteten systems |
US8543369B2 (en) | 2009-12-23 | 2013-09-24 | Inchron, Gmbh | Method and data processing system for simulating an embedded system |
CN101901186A (zh) * | 2010-07-08 | 2010-12-01 | 西北工业大学 | 一种嵌入式系统可靠性分析与评估方法 |
CN101901186B (zh) * | 2010-07-08 | 2012-06-06 | 西北工业大学 | 一种嵌入式系统可靠性分析与评估方法 |
CN101923489A (zh) * | 2010-08-06 | 2010-12-22 | 西华师范大学 | 基于模糊重要性和空闲时间的嵌入式实时任务调度方法 |
CN102364447A (zh) * | 2011-10-28 | 2012-02-29 | 北京航空航天大学 | 一种优化多任务间通信能耗的作业调度方法 |
CN103377035A (zh) * | 2012-04-12 | 2013-10-30 | 浙江大学 | 针对粗颗粒度流应用的流水并行化方法 |
CN103970612A (zh) * | 2014-05-07 | 2014-08-06 | 田文洪 | 一种基于虚拟机预分割的负载均衡方法和装置 |
CN104503942A (zh) * | 2014-12-30 | 2015-04-08 | 合肥金星机电科技发展有限公司 | 串口指令解码方法 |
CN104503942B (zh) * | 2014-12-30 | 2017-10-31 | 合肥金星机电科技发展有限公司 | 串口指令解码方法 |
CN104598302A (zh) * | 2015-02-09 | 2015-05-06 | 西北工业大学 | 基于资源竞争模型的aadl模型可调度性验证方法 |
CN104598302B (zh) * | 2015-02-09 | 2017-10-27 | 西北工业大学 | 基于资源竞争模型的aadl模型可调度性验证方法 |
CN105260188A (zh) * | 2015-10-24 | 2016-01-20 | 北京航空航天大学 | 一种时间特征模型及其建模方法 |
CN105700941B (zh) * | 2015-12-18 | 2019-04-05 | 西安工业大学 | 三维调度器模型的调度方法 |
CN105700941A (zh) * | 2015-12-18 | 2016-06-22 | 西安工业大学 | 三维调度器模型及其调度算法 |
CN108564281A (zh) * | 2018-04-13 | 2018-09-21 | 浙江传媒学院 | 基于结构化的外包工作任务调度系统的实现方法 |
CN108564281B (zh) * | 2018-04-13 | 2022-04-05 | 浙江传媒学院 | 基于结构化的外包工作任务调度系统的实现方法 |
CN109815537A (zh) * | 2018-12-19 | 2019-05-28 | 清华大学 | 一种基于时间预测的高通量材料仿真计算优化方法 |
CN113535356A (zh) * | 2021-07-01 | 2021-10-22 | 中国科学院软件研究所 | 一种能量感知的分层任务调度方法和装置 |
CN113535356B (zh) * | 2021-07-01 | 2023-09-12 | 中国科学院软件研究所 | 一种能量感知的分层任务调度方法和装置 |
CN114925979A (zh) * | 2022-04-19 | 2022-08-19 | 北京人人云图信息技术有限公司 | 一种机场加油派工的装置 |
CN116991373A (zh) * | 2023-09-27 | 2023-11-03 | 杭州华望系统科技有限公司 | 一种序列图模型的语义解析与仿真系统 |
CN116991373B (zh) * | 2023-09-27 | 2024-01-05 | 杭州华望系统科技有限公司 | 一种序列图模型的语义解析与仿真系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101013384A (zh) | 一种基于模型的实时系统的可调度性分析方法 | |
Peng et al. | Assignment and scheduling communicating periodic tasks in distributed real-time systems | |
Kirsch et al. | The logical execution time paradigm | |
Oliver et al. | Workflow automation for cycling systems | |
Santinelli et al. | A component-based framework for modeling and analyzing probabilistic real-time systems | |
Murray-Rust et al. | A collaboration model for community-based software development with social machines | |
Manolache et al. | Optimization of soft real-time systems with deadline miss ratio constraints | |
Owicki | Specifications and proofs for abstract data types in concurrent programs | |
Ke et al. | Verification of COMDES-II systems using UPPAAL with model transformation | |
Craveiro et al. | hsSim: an extensible interoperable object-oriented n-level hierarchical scheduling simulator | |
Catthoor et al. | Scenarios in dataflow modeling and analysis | |
Hsiung et al. | Synthesis of real-time embedded software with local and global deadlines | |
Shorin | Model-based development of energy-efficient automation systems | |
Posse et al. | Kiltera: A language for timed, event-driven, mobile and distributed simulation | |
Cuadrado et al. | Automated distributed simulation in Ptolemy II | |
De Silva et al. | Planning with time limits in BDI agent programming language | |
Hsiung et al. | Quasi-dynamic scheduling for the synthesis of real-time embedded software with local and global deadlines | |
Barbierato et al. | Map-reduce process algebra: a formalism to describe directed acyclic graph task-based jobs in parallel environments | |
Cicirelli et al. | Agent Methodological Layers In Repast Simphony. | |
Wu et al. | A multi-agent system architecture for coordination of the real-time control functions in complex industrial systems | |
Schönherr et al. | Important components for modeling production systems with sysml | |
Bunde et al. | PReMAS: Simulator for resource management | |
Wang et al. | Modular Scheduling/Reconfiguration with Exact Execution Time Based on RW Method | |
Zaneldin | AOA-based modelling and simulation of construction operations | |
Zhang et al. | A Scientific Workflow Engine Design and Implementation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |