[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN105138401B - 基于线性链表的实时任务可调度性测试直接模拟方法 - Google Patents

基于线性链表的实时任务可调度性测试直接模拟方法 Download PDF

Info

Publication number
CN105138401B
CN105138401B CN201510481237.0A CN201510481237A CN105138401B CN 105138401 B CN105138401 B CN 105138401B CN 201510481237 A CN201510481237 A CN 201510481237A CN 105138401 B CN105138401 B CN 105138401B
Authority
CN
China
Prior art keywords
task
time
node
value
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.)
Expired - Fee Related
Application number
CN201510481237.0A
Other languages
English (en)
Other versions
CN105138401A (zh
Inventor
任健
姜誉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Heilongjiang University
Original Assignee
Heilongjiang University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Heilongjiang University filed Critical Heilongjiang University
Priority to CN201510481237.0A priority Critical patent/CN105138401B/zh
Publication of CN105138401A publication Critical patent/CN105138401A/zh
Application granted granted Critical
Publication of CN105138401B publication Critical patent/CN105138401B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

基于线性链表的实时任务可调度性测试直接模拟方法。本发明方法包括:根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行。本发明用于需要确定给定的一组实时任务是否是可调度的模拟或仿真或实际应用系统中。

Description

基于线性链表的实时任务可调度性测试直接模拟方法
技术领域:
本发明涉及一种基于线性链表的实时任务可调度性测试直接模拟方法。
背景技术:
在实时系统设计和应用过程中,对于给定的n个周期性或者不定时发生的实时任务,在真正调度和执行之前判定这组实时任务是否可调度,即每个任务被释放之后是否都能在其相对最后期限内执行完毕,这是一个十分重要的问题,对于保证实时系统安全运行具有极为重要的意义。
经典的优先抢占调度模型,简称为CP模型,其中CP即classic preemptive,CP模型的调度方式为:每当低优先级任务在运行过程中有高优先级任务到来时,低优先级任务将被剥夺执行权而高优先级任务开始执行,当高优先级任务执行完毕且没有其它高优先级任务等待执行时,该低优先级任务从被剥夺的位置处继续执行;事务处理方式的优先抢占调度模型,简称为TP模型,其中TP即transactional preemptive,例如,TP模型有基于优先级的功能反应式编程模型,简称为P-FRP模型,其中P-FRP即priority-based functional reactive programming;或者中止并重新开始模型,简称为AR模型,其中AR即abort-and-restart;或者软件事务存储器模型,简称为STM模型,STM即software transactionalmemory,STM模型包括渴望冲突检测策略和懒惰冲突检测策略,渴望冲突检测策略简称为ECD策略,其中ECD即eager conflict detection,懒惰冲突检测策略简称为LCD策略,其中LCD即lazy conflict detection;TP模型的调度方式为:每当低优先级任务在运行过程中有高优先级任务到来时,低优先级任务将被剥夺执行权而高优先级任务开始执行,该低优先级任务已执行的结果都被废弃,当高优先级任务执行完毕且没有其它高优先级任务等待执行时,该低优先级任务从其最开始位置重新执行;符号串r←s表示将变量s的值赋值给变量r;min(a,b)即取a和b中的最小值,max(a,b)即取a和b中的最大值;mod(a,b)即a模b后的余数;lcm(a,b)即a和b的最小公倍数;任务的一次释放称为该任务的一个任务实例(job)或者调用(invoke)或者任务实例(instance);【和】之间、〖和〗之间、『和』之间、[和]、「和」之间分别表示一个语句体;任务实例执行中止包括执行被高优先级任务中断和执行完成。
给定调度模型为CP模型或者TP模型;在一组n个实时任务的可调度性(或可行性)区间测试(或检验或检查或检测)这组任务的可调度性。如果该组任务是可调度的,那么在一个时间点S之后,每隔时间长度LCMn,这组任务的调度情况就出现重复,即后续调度过程实际上是一段在长度为LCMn的时间区间[S,S+LCMn)内的调度的重复。
系统启动时刻为时间0,实际测试可调度性时,由于这组任务在区间[0,S)内的调度包含初次到达情形而往往不具有重复性,因此,传统上将[0,S+LCMn)作为实际的可调度性测试区间。这段可调度性测试区间长度越小,实际测试中效率越高。从普遍情况来看,可调度性测试区间长度一般不小于LCMn。此前没有采用线性链表记录调度过程对任务集的可调度性进行测试的方法。
发明内容:
本发明的目的是提供一种基于线性链表的实时任务可调度性测试直接模拟方法,通过使用链表结点表示任务(或事件)的调度执行阶段,采用线性链表记录测试的调度过程的方法来达到确定实时任务(或事件)可调度性测试的目的;适用于实时任务或事件优先级固定的情形。
上述的目的通过以下的技术方案实现:
一种基于线性链表的实时任务可调度性测试直接模拟方法,该方法包括:根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行。
所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行是指,采用一个线性链表记录任务的调度模拟执行和测试过程,任务实例开始执行时间点记录到链表结点的start字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示从该结点start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任务实例的连续调度执行;MAXinter←SimEP;给标志变量flag赋一个初值;对每个i,1in,LRTi←Ci;【在时间范围SimSP到SimEP模拟任务τ1的从第1个到第个任务实例的执行,即建立个链表结点,对每个j,1j ,〖第j个链表结点的start字段赋值为任务实例τ1,j的释放时间r1,j,第j个链表结点的end字段赋值为r1,j+C1;〗;然后对任务τ23,...,τn,在时间范围SimSP到SimEP内依优先级从高到低顺序模拟每个任务τi的从第1个到第个任务实例的执行,即,〖对每个i,2in,每个j,1j ,j从小到大依次调用执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟;〗;】;链表最后一个结点的end字段赋值为min(该结点的end字段值,SimEP);给出任务集是可调度的信息。
所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟是指,【根据ri,j在链表中通过与结点中的start字段值及end字段值比较查找并从当前作业j在链表中的相对位置开始,按CP模型调度时将运行时间Ci对应为1个或连续多个任务τi的空闲区间链表结点,这些结点表示的区间长度之和等于Ci;按TP模型调度时将运行时间Ci对应为任务τi的一个允许区间结点PINode,结点PINode表示的区间长度等于Ci,且在该任务实例释放时间到结点PINode之间的全部任务τi的极大空闲区间都合并到其相邻区间;按时间次序依次链入链表中的相应位置,链入链表的同时合并调度执行区间时间点边界重合的链表结点,在模拟过程中无法在链表上完成运行时间Ci的对应时修改标志变量flag值不同于其初值,在模拟完成后记录任务τi当前的最大响应时间LRTi;如果标志变量flag值不同于其初值或者LRTi>Di,则返回不可调度信息并中止对该任务集的可调度性测试;】。
所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的TP模型的任务τi的允许区间是指:任务τi的一个空闲区间EI是指,对于任务τ12,...,τn-1的调度结果中一个没有被占用的连续的时间范围区间[t1,t2),t2>t1,在该区间内没有任务集{τ12,...,τn-1}中的任务释放,并且在时刻t1及之前所有已释放的任务集{τ12,...,τn-1}中的任务都已执行完毕;
任务τi的一个空闲区间[t1,t2)称为一个任务τi的极大空闲区间maxEI是指,时刻t1为任务τi的释放时间或者任务集{τ12,...,τn-1}中的任务结束时间,并且从时刻t2开始有任务集{τ12,...,τn-1}中的任务释放或者t2等于Φmin (i-1)+k×LCMi-1,k1;对于TP模型,如果一个任务τi的空闲区间[t1,t2)或者极大空闲区间[t1,t2)满足t2-t1 Ci,则区间[t1,t2)称为任务τi的一个允许区间PI。
所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的给出该任务集可调度或者不可调度信息,在给出任务集是可调度的信息时,给出max1 i n(LRTi),表示全部任务τi在当前优先级设置和任务释放偏移时的最大响应时间。
所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的合并调度执行区间时间点边界重合的链表结点是指,如果在链表中会产生或者有两个相邻的结点Node1和Node2使得Node1的end字段值等于Node2的start字段值,则将这两个结点合并为一个结点Node3链入链表中Node1的位置,代替Node1和Node2这两个结点,其中Node3的start字段值赋值为Node1的start字段值,Node3的end字段值赋值为Node2的end字段值,Node3的next字段值赋值为Node2的next字段值。
有益效果:
1.本发明的方法不同于已有的实时任务(或事件)可调度性测试方法,本发明的方法通过用链表结点表示任务(或事件)的调度执行阶段,采用线性链表记录测试的模拟和调度过程,已有的实时任务(或事件)可调度性测试方法没有采用线性链表记录测试的模拟和调度过程。
.本发明的方法采用线性链表记录测试的模拟和调度过程,使本发明的方法的时间复杂度是测试区间内总的任务实例数量的多项式时间,因此,与已有的实时任务(或事件)可调度性测试方法的指数时间相比,从普遍情况来看,提高了效率;特别是在n个任务最小到达周期的最小公倍数LCMn远大于任务数时能够显著提高效率。
.本发明的方法在模拟过程中将满足条件的相邻链表结点合并有利于减少链表结点数量即链表长度,提高测试的效率。例如,在实施例8和9中所用链表结点数量最多为5,即模拟过程中扫描链表长度最大为5,比传统方法模拟步数为区间长度LCMn-1=LCMn=24要小得多。在S已知时取SimSP等于S,SimEP等于S+LCMn;在S未知时取SimSP等于Φmin (n),SimEP等于Φmin (n)+LCMn
本发明方法中,对于分配在一个处理器或者CPU或者Core上的n≥1个实时任务或者事件的任务集{τ12, ...,τn},这些任务是周期性的或者不定时发生的,需要确定该任务集的可调度性,每个任务τi,1in,被赋予一个唯一的固定优先级i,1代表最高优先级,n代表最低优先级。
本发明方法中,所述的每个任务τi具有以下参数:最大计算时间或者最大运行时间Ci ',拷贝时间0Ci copy 1,装入时间0Ci restore 1,Ci←Ci copy+Ci '+Ci restore,对于经典的优先抢占调度CP模型,Ci copy=Ci restore=0,即Ci←Ci ';每个任务的相邻两个任务实例或者调用或者作业的最短到达时间为Ti;每个任务实例执行完成的相对最后期限为Di;0<Ci min(Di,Ti);系统启动时间t为时刻0;每个任务的第一个任务实例相对于时间时刻0的释放偏移为Φi,即任务τi的第一个任务实例从时间0开始经过时间Φi被释放,以后至少每隔时间长度Ti被释放,即任务τi的第j个任务实例的释放时间不早于为Φi+(j–1)×Ti,这里j是大于等于1的整数;变量LRTi记录任务τi在当前优先级设置和任务释放偏移时的最大响应时间,对每个k,2kn,LRT1←C1,LRTk←Ck;LCM1←T1,LCMk←lcm(LCMk–1,Tk);i,j,k,n都取正整数。对每个i,1in,记任务τi的不早于调度稳定点S释放的第一个任务实例的释放时间为新的释放偏移,还用Φi表示,这时Φmin (n)与S相等。
附图说明:
附图1是本发明实施例8所述方法在时间区间[11,11+24)之间的可调度性测试图。
附图2是本发明实施例9所述的方法在时间区间[16,16+24)之间的可调度性测试图。
具体实施方式:
实施例1:
一种基于线性链表的实时任务可调度性测试直接模拟方法,该方法包括:根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行。
实施例2:
根据实施例1所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行是指,采用一个线性链表记录任务的调度模拟执行和测试过程,任务实例开始执行时间点记录到链表结点的start字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示从该结点start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任务实例的连续调度执行;MAXinter←SimEP;给标志变量flag赋一个初值;对每个i,1in,LRTi←Ci;【在时间范围SimSP到SimEP模拟任务τ1的从第1个到第个任务实例的执行,即建立个链表结点,对每个j,1j ,〖第j个链表结点的start字段赋值为任务实例τ1,j的释放时间r1,j,第j个链表结点的end字段赋值为r1,j+C1;〗;然后对任务τ23,...,τn,在时间范围SimSP到SimEP内依优先级从高到低顺序模拟每个任务τi的从第1个到第个任务实例的执行,即,〖对每个i,2in,每个j,1j ,j从小到大依次调用执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟;〗;】;链表最后一个结点的end字段赋值为min(该结点的end字段值,SimEP);给出任务集是可调度的信息。
实施例3:
根据实施例1或2所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟是指,【根据ri,j在链表中通过与结点中的start字段值及end字段值比较查找并从当前作业j在链表中的相对位置开始,按CP模型调度时将运行时间Ci对应为1个或连续多个任务τi的空闲区间链表结点,这些结点表示的区间长度之和等于Ci;按TP模型调度时将运行时间Ci对应为任务τi的一个允许区间结点PINode,结点PINode表示的区间长度等于Ci,且在该任务实例释放时间到结点PINode之间的全部任务τi的极大空闲区间都合并到其相邻区间;按时间次序依次链入链表中的相应位置,链入链表的同时合并调度执行区间时间点边界重合的链表结点,在模拟过程中无法在链表上完成运行时间Ci的对应时修改标志变量flag值不同于其初值,在模拟完成后记录任务τi当前的最大响应时间LRTi;如果标志变量flag值不同于其初值或者LRTi>Di,则返回不可调度信息并中止对该任务集的可调度性测试;】。
实施例4:
根据实施例1或2或3所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的TP模型的任务τi的允许区间是指:任务τi的一个空闲区间EI是指,对于任务τ12,...,τn-1的调度结果中一个没有被占用的连续的时间范围区间[t1,t2),t2>t1,在该区间内没有任务集{τ12,...,τn-1}中的任务释放,并且在时刻t1及之前所有已释放的任务集{τ12,...,τn-1}中的任务都已执行完毕;
任务τi的一个空闲区间[t1,t2)称为一个任务τi的极大空闲区间maxEI是指,时刻t1为任务τi的释放时间或者任务集{τ12,...,τn-1}中的任务结束时间,并且从时刻t2开始有任务集{τ12,...,τn-1}中的任务释放或者t2等于Φmin (i-1)+k×LCMi-1,k1;对于TP模型,如果一个任务τi的空闲区间[t1,t2)或者极大空闲区间[t1,t2)满足t2-t1 Ci,则区间[t1,t2)称为任务τi的一个允许区间PI。
实施例5:
根据实施例1或2或3或4所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的给出该任务集可调度或者不可调度信息,在给出任务集是可调度的信息时,给出max1 i n(LRTi),表示全部任务τi在当前优先级设置和任务释放偏移时的最大响应时间。
实施例6:
根据实施例1或2或3或4或5所述的基于线性链表的实时任务可调度性测试直接模拟方法,所述的合并调度执行区间时间点边界重合的链表结点是指,如果在链表中会产生或者有两个相邻的结点Node1和Node2使得Node1的end字段值等于Node2的start字段值,则将这两个结点合并为一个结点Node3链入链表中Node1的位置,代替Node1和Node2这两个结点,其中Node3的start字段值赋值为Node1的start字段值,Node3的end字段值赋值为Node2的end字段值,Node3的next字段值赋值为Node2的next字段值。
实施例7:
根据实施例1或2或3或4或5或6所述的基于线性链表的实时任务可调度性测试直接模拟方法,执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟,即,【tempCi←Ci;根据ri,j在链表中通过与结点中的start字段值及end字段值比较查找当前作业j在链表中的相对位置,分以下5种情形,且在模拟过程中尽可能合并调度占用区间时间点边界重合的结点:(一)如果ri,j大于最后一个结点的end字段值,则〖inter← MAXinter–ri,j;增加一个新结点作为链表中的最后结点链入,新结点的start字段值赋值为ri,j,新结点的end字段值赋值为min(ri,j+tempCi,MAXinter);如果inter<tempCi,则修改标志变量flag值不同于其初值;〗;(二)如果ri,j等于最后一个结点的end字段值,则〖令inter←MAXinter–ri,j;将min(MAXinter,ri,j+tempCi)赋值给最后一个结点的end字段;如果inter<tempCi,则修改标志变量flag值不同于其初值;〗;(三)如果ri,j小于第一个结点的start字段值,则〖记第一个结点为Node1,令inter←Node1的start字段值–ri,j;如果inter< tempCi,则『将Node1的start字段值赋值为ri,j;如果是按CP模型调度,则tempCi←tempCi–inter;如果是按TP模型调度,则tempCi←Ci;接着按下面的情形(五)继续调度当前第j个任务实例;』;如果inter>tempCi,则增加一个新结点作为链表中的第一个结点链入,其中,新结点的start字段值赋值为ri,j,新结点的end字段值赋值为ri,j+tempCi;如果inter等于tempCi,则将第一个结点的start字段值赋值为ri,j;〗;(四)如果存在结点Node1和Node2使ri,j大于Node1的end字段值并且ri,j小于Node2的start字段值,则〖inter← Node2的start字段值–ri,j;如果inter>tempCi,则在链表中Node1和Node2之间增加一个新结点链入,其中,新结点的start字段值赋值为ri,j,新结点的end字段值赋值为ri,j+tempCi;如果inter等于tempCi,则将Node2的start字段值赋值为ri,j;如果inter<tempCi,则『将Node2的start字段值赋值为ri,j;如果是按CP模型调度,则tempCi← tempCi–inter;如果是按TP模型调度,则tempCi←Ci;此时将Node2记为Node1,接着按下面的情形(五)继续调度当前第j个任务实例;』;〗;(五)如果存在结点Node1使得ri,j大于等于Node1的start字段值并且小于等于Node1的end字段值,则继续调度当前第j个任务实例,直到当前第j个任务实例的剩余时间tempCi为零,即执行循环体H,其循环控制条件为:当tempCi>0;循环体H具体为:〖如果Node1之后没有其它结点,则『令inter ← MAXinter–Node1的end字段值;如果intertempCi,则[将Node1的end字段值加上tempCi赋值给Node1的end字段;LRTi←max(Node1的end字段值–ri,j,LRTi);tempCi←0;];如果inter< tempCi,则[将Node1的end字段值赋值为MAXinter,修改标志变量flag值不同于其初值,tempCi←0;];』;如果Node1之后有其它结点,则:记Node1的next字段所指结点为Node2,inter ← Node2的start字段值–Node1的end字段值;如果inter>tempCi,则『将Node1的end字段值+tempCi赋值给Node1的end字段,LRTi←max(Node1的end字段值–ri,j,LRTi);tempCi←0;』;如果inter等于tempCi,则『LRTi←max(Node1的end字段值–ri,j,LRTi);将Node1的end字段值赋值为Node2的end字段值,将Node1的next字段值赋值为Node2的next字段值;tempCi←0;』;如果inter<tempCi,则『将Node1的end字段值赋值为Node2的end字段值,将Node1的next字段值赋值为Node2的next字段值;如果是按CP模型调度,则tempCi←tempCi–inter;如果是按TP模型调度,则tempCi←Ci;』;〗;如果标志变量flag值不同于其初值或者LRTi>Di,则返回不可调度信息并中止对该任务集的可调度性测试;】。
实施例8:
根据实施例1或2或3或4或5或6或7所述的基于线性链表的实时任务可调度性测试直接模拟方法,按CP模型进行调度,本实施例中每个任务实例的优先级即为相应任务的优先级,即每个任务实例的优先级固定。
给定由n=4个周期性任务(或事件)构成的任务集合{τ1234},有关参数如表1所示。
表1 任务参数
在采用已有方法确定了稳定点S=11和调整释放偏移之后见表2,按给定的CP模型,采用线性链表记录调度过程,给标志变量flag值赋一个初值,从点S开始,使用直接模拟方法,进行任务集{τ1234}的可调度性测试;其中,LCM1=6,LCM2=24,LCM3=24,LCM4=24。Φmin (1)min (2)min (3)min (4)=11。取SimSP等于S,SimEP等于S+LCMn,任务τ1234在区间[11,11+24)的任务调度图如附图1所示,都可调度。模拟完成时该任务集可调度且最大响应时间为9。
表2 给定稳定点S=11和经过调整释放偏移之后的任务参数
实施例9:
根据实施例1或2或3或4或5或6或7或8所述的基于线性链表的实时任务可调度性测试直接模拟方法,本实施例给定的是按TP模型进行调度,每个任务实例的优先级即为相应任务的优先级,即每个任务实例的优先级固定。
给定由4个周期性任务(或事件)构成的任务集合{τ1234},有关参数如表3所示。
表3任务参数
在采用已有方法确定了稳定点S=16和调整释放偏移之后见表4,按给定的TP模型,采用线性链表记录调度过程,给标志变量flag值赋一个初值;从点S开始,使用直接模拟方法,进行任务集{τ1234}的可调度性测试;其中,LCM1=6,LCM2=24,LCM3=24,LCM4=24。任务τ1234在区间[16,16+24)的任务调度图如附图2所示,都可调度。模拟完成时该任务集可调度且最大响应时间为12。
表4 给定稳定点S=16和经过调整释放偏移之后的任务参数

Claims (5)

1.一种基于线性链表的实时任务可调度性测试直接模拟方法,其特征是:该方法包括:根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行;
所述的根据给定的调度模型,采用一个线性链表记录调度模拟和测试过程,对任务τ12,...,τn,在给定的时间起点SimSP到截止时间点SimEP内按优先级从高到低顺序模拟每个任务τi的所有任务实例的调度执行是指,采用一个线性链表记录任务的调度模拟执行和测试过程,任务实例开始执行时间点记录到链表结点的start字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示从该结点start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任务实例的连续调度执行;MAXinter←SimEP;给标志变量flag赋一个初值;对每个i,1in,LRTi←Ci;在时间范围SimSP到SimEP模拟任务τ1的从第1个到第个任务实例的执行,即建立个链表结点,对每个j,1j ,第j个链表结点的start字段赋值为任务实例τ1,j的释放时间r1,j,第j个链表结点的end字段赋值为r1,j+C1;然后对任务τ23,...,τn,在时间范围SimSP到SimEP内依优先级从高到低顺序模拟每个任务τi的从第1个到第个任务实例的执行,即,对每个i,2in,每个j,1j ,j从小到大依次调用执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟;链表最后一个结点的end字段赋值为min(该结点的end字段值,SimEP);给出任务集是可调度的信息;
其中:Ci表示任务τi的最大计算或运行时间,Ti表示任务τi的相邻两个作业或任务实例或调用的到达周期常数。
2.根据权利要求1所述的基于线性链表的实时任务可调度性测试直接模拟方法,其特征是:所述的执行模拟单个任务实例函数F1对任务τi的第j个任务实例τi,j进行模拟是指,根据ri,j在链表中通过与结点中的start字段值及end字段值比较查找并从当前作业j在链表中的相对位置开始,按CP模型调度时将运行时间Ci对应为1个或连续多个任务τi的空闲区间链表结点,这些结点表示的区间长度之和等于Ci;按TP模型调度时将运行时间Ci对应为任务τi的一个允许区间结点PINode,结点PINode表示的区间长度等于Ci,且在该任务实例释放时间到结点PINode之间的全部任务τi的极大空闲区间都合并到其相邻区间;按时间次序依次链入链表中的相应位置,链入链表的同时合并调度执行区间时间点边界重合的链表结点,在模拟过程中无法在链表上完成运行时间Ci的对应时,修改标志变量flag值不同于其初值,在模拟完成后记录任务τi当前的最大响应时间LRTi;如果标志变量flag值不同于其初值或者LRTi>Di,则返回不可调度信息并中止对该任务集的可调度性测试;
每个任务实例执行完成的相对最后期限为Di。
3.根据权利要求2所述的基于线性链表的实时任务可调度性测试直接模拟方法,其特征是:所述的TP模型的任务τi的允许区间是指:任务τi的一个空闲区间EI是指,对于任务τ12,...,τn-1的调度结果中一个没有被占用的连续的时间范围区间[t1,t2),t2>t1,在该区间内没有任务集{τ12,...,τn-1}中的任务释放,并且在时刻t1及之前所有已释放的任务集{τ12,...,τn-1}中的任务都已执行完毕;
任务τi的一个空闲区间[t1,t2)称为一个任务τi的极大空闲区间maxEI是指,时刻t1为任务τi的释放时间或者任务集{τ12,...,τn-1}中的任务结束时间,并且从时刻t2开始有任务集{τ12,...,τn-1}中的任务释放或者t2等于Φmin (i-1)+k×LCMi-1,k1;对于TP模型,如果一个任务τi的空闲区间[t1,t2)或者极大空闲区间[t1,t2)满足t2-t1 Ci,则区间[t1,t2)称为任务τi的一个允许区间PI;
LCMi-1表示前i-1个较高优先级任务的最小到达周期的最小公倍数。
4.根据权利要求3所述的基于线性链表的实时任务可调度性测试直接模拟方法,其特征是:所述的给出该任务集可调度或者不可调度信息,在给出任务集是可调度的信息时,给出max1 i n(LRTi),表示全部任务τi在当前优先级设置和任务释放偏移时的最大响应时间。
5.根据权利要求4所述的基于线性链表的实时任务可调度性测试直接模拟方法,其特征是:所述的合并调度执行区间时间点边界重合的链表结点是指,如果在链表中会产生或者有两个相邻的结点Node1和Node2使得Node1的end字段值等于Node2的start字段值,则将这两个结点合并为一个结点Node3链入链表中Node1的位置,代替Node1和Node2这两个结点,其中Node3的start字段值赋值为Node1的start字段值,Node3的end字段值赋值为Node2的end字段值,Node3的next字段值赋值为Node2的next字段值。
CN201510481237.0A 2015-08-07 2015-08-07 基于线性链表的实时任务可调度性测试直接模拟方法 Expired - Fee Related CN105138401B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510481237.0A CN105138401B (zh) 2015-08-07 2015-08-07 基于线性链表的实时任务可调度性测试直接模拟方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510481237.0A CN105138401B (zh) 2015-08-07 2015-08-07 基于线性链表的实时任务可调度性测试直接模拟方法

Publications (2)

Publication Number Publication Date
CN105138401A CN105138401A (zh) 2015-12-09
CN105138401B true CN105138401B (zh) 2019-08-30

Family

ID=54723757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510481237.0A Expired - Fee Related CN105138401B (zh) 2015-08-07 2015-08-07 基于线性链表的实时任务可调度性测试直接模拟方法

Country Status (1)

Country Link
CN (1) CN105138401B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6712934B2 (ja) * 2016-08-31 2020-06-24 株式会社日立ソリューションズ データ分析装置及びデータ分析方法
CN109918181B (zh) * 2019-01-12 2023-04-14 西北工业大学 基于最差响应时间的混合关键系统任务可调度性分析方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833478A (zh) * 2010-05-28 2010-09-15 浙江大学 一种基于Alarm的调度表实现方法
CN103106222A (zh) * 2011-11-15 2013-05-15 阿里巴巴集团控股有限公司 定时器的处理方法及装置
CN103699455A (zh) * 2013-12-27 2014-04-02 重庆大学 一种多核实时容错系统中获取准确的最晚截止时间的方法
CN103885881A (zh) * 2014-04-03 2014-06-25 北京航空航天大学 一种基于VxWorks系统多任务机制的高实时并发测试方法
CN104156266A (zh) * 2014-08-14 2014-11-19 黑龙江大学 确定实时任务或事件可调度性测试最小区间的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833478A (zh) * 2010-05-28 2010-09-15 浙江大学 一种基于Alarm的调度表实现方法
CN103106222A (zh) * 2011-11-15 2013-05-15 阿里巴巴集团控股有限公司 定时器的处理方法及装置
CN103699455A (zh) * 2013-12-27 2014-04-02 重庆大学 一种多核实时容错系统中获取准确的最晚截止时间的方法
CN103885881A (zh) * 2014-04-03 2014-06-25 北京航空航天大学 一种基于VxWorks系统多任务机制的高实时并发测试方法
CN104156266A (zh) * 2014-08-14 2014-11-19 黑龙江大学 确定实时任务或事件可调度性测试最小区间的方法

Also Published As

Publication number Publication date
CN105138401A (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN104156266B (zh) 确定实时任务或事件可调度性测试最小区间的方法
JP2002544621A (ja) タスクスケジューリングおよびメッセージ受け渡し
CN105260497B (zh) 基于线性链表的实时任务可调度性测试半直接模拟方法
CN105138401B (zh) 基于线性链表的实时任务可调度性测试直接模拟方法
CN103995778A (zh) 一种基于事件和动作的脚本文件生成方法及其装置
Brucker et al. Scheduling jobs with equal processing times and time windows on identical parallel machines
CN105183640B (zh) 基于线性链表的实时任务可调度性测试拷贝模拟方法
CN100484140C (zh) 一种规范驱动的网格工作流描述和验证方法
CN105224400B (zh) 采用线性链表记录实时任务调度过程的方法
Friese et al. Estimating latencies of task sequences in multi-core automotive ecus
Liu et al. An optimal online algorithm for single machine scheduling to minimize total general completion time
Matsikoudis et al. On the schedulability of real-time discrete-event systems
Liu et al. Online scheduling to minimize modified total tardiness with an availability constraint
CN110046809B (zh) 作业调度方法及装置
RU2678469C1 (ru) Способ составления и исполнения плана задания последовательности реально-временных задач
Adjir et al. Testing real-time systems using TINA
Allen et al. Closed-loop determinism for non-deterministic environments: Verification for IEC 61499 logic controllers
CN117290113B (zh) 一种任务处理方法、装置、系统和存储介质
Leung et al. Minimizing sum of completion times and makespan in master-slave systems
Nguyen et al. Approximation scheme for real-time tasks under fixed-priority scheduling with deferred preemption
Carter et al. Customizing internal activity behaviour for flexible process enforcement
Doose et al. The Generalized Graph Real-Time Task Model
Neilsen Symbolic Schedulability Analysis of Task Sets with Arbitrary Deadlines.
Zhang et al. Specifying time-sensitive systems with TLA+
CN115766505A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190830

Termination date: 20210807

CF01 Termination of patent right due to non-payment of annual fee