采用线性链表记录实时任务调度过程的方法

文档序号:9471237阅读:277来源:国知局
采用线性链表记录实时任务调度过程的方法
【专利说明】
[0001]
技术领域: 本发明涉及一种采用线性链表记录实时任务调度过程的方法。
[0002]
【背景技术】: 在实时系统设计和应用过程中,对于给定的n个周期性或者不定时发生的实时任务, 经典的优先抢占调度模型,简称为CP模型,其中CP即classicpreemptive,CP模型的调度 方式为:每当低优先级任务在运行过程中有高优先级任务到来时,低优先级任务将被剥夺 执行权而高优先级任务开始执行,当高优先级任务执行完毕且没有其它高优先级任务等待 执行时,该低优先级任务从被剥夺的位置处继续执行;事务处理方式的优先抢占调度模型, 简称为TP模型,其中TP即transactionalpreemptive,例如,TP模型有基于优先级的功能 反应式编程模型,简称为P-FRP模型,其中P-FRP即jOriarireactive 避?或者中止并重新开始模型,简称为AR模型,其中AR即abort-and-restart; 或者软件事务存储器模型,简称为STM模型,STM即softwaretransactionalmemory,STM 模型包括渴望冲突检测策略和懒惰冲突检测策略,渴望冲突检测策略简称为ECD策略,其 中ECD即eagerconflictdetection,懒惰冲突检测策略简称为LCD策略,其中LCD即lazy conflictdetection;TP模型的调度方式为:每当低优先级任务在运行过程中有高优先级 任务到来时,低优先级任务将被剥夺执行权而高优先级任务开始执行,该低优先级任务已 执行的结果都被废弃,当高优先级任务执行完毕且没有其它高优先级任务等待执行时,该 低优先级任务从其最开始位置重新执行;符号串r-s表示将变量s的值赋值给变量r; lcm(a,b)即a和b的最小公倍数;任务的一次释放称为该任务的一个任务实例(job)或者 调用(invoke)或者任务实例(instance);任务实例执行中止包括执行被高优先级任务中 断和执彳丁完成。
[0003] 给定调度模型为CP模型或者TP模型;系统启动时刻为时间0,在一组n个实时任 务的可调度性(或可行性)区间测试(或检验或检查或检测)这组任务的可调度性。如果该 组任务是可调度的,那么在调度稳定点S之后,每隔时间长度LCMn,这组任务的调度情况就 出现重复,即后续调度过程实际上是一段在长度为LCMn的时间区间[S,S+LCMJ内的调度的 重复;实际测试可调度性时,当已知稳定点S时在区间[S,S+LCMn)内模拟该任务集的调度, 当稳定点S未知时在区间[0,S+LCMn)内模拟该任务集的调度。从普遍情况来看,可调度性 测试区间长度不小于LCMn。传统方法采用从调度时间起点开始,按时间步长增量为1的方 式直至截止时间点完成调度。此前没有采用线性链表记录调度过程对任务集的可调度性进 行测试的方法。
[0004]

【发明内容】
: 本发明的目的是提供一种采用线性链表记录实时任务调度过程的方法,通过使用链表 结点表示任务(或事件)的调度执行阶段,达到采用线性链表记录模拟的调度过程的目的; 适用于实时任务或事件优先级固定的情形。
[0005] 上述的目的通过以下的技术方案实现: 一种采用线性链表记录实时任务调度过程的方法,该方法包括:根据给定的调度模 型,按任务实例当前优先级从高到低顺序,采用一个线性链表记录从给定的时间起点到截 止时间点内所有任务实例的调度执行,任务实例开始执行时间点记录到链表结点的start 字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示从该结点 start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任务实例的 连续调度执行。
[0006] 有益效果: 1.本发明的方法不同于已有的实时任务(或事件)可调度性测试方法,本发明的方法通 过用链表结点表示任务(或事件)的调度执行阶段,采用线性链表记录测试的模拟和调度过 程,已有的实时任务(或事件)可调度性测试方法没有采用线性链表记录实时任务(或事件) 模拟和调度过程。
[0007] .本发明的方法采用线性链表记录调度过程,使本发明的方法的时间复杂度是测 试区间内总的任务实例数量的多项式时间,因此,与已有的实时任务(或事件)可调度性测 试方法的指数时间相比,从普遍情况来看,提高了效率;特别是在前n_l个较高优先级任务 的最小到达周期的最小公倍数LCMn:远大于任务数时,能够显著提高效率。例如,在实施例 2和3中所用链表结点数量最多为5,即调度过程中扫描链表长度最大为5,比传统方法模拟 步数为区间长度LCMnLCMn=24要小得多。
[0008] 本发明所述的对于n彡1个实时任务或者事件的任务集{T17T2, . ..,TJ,这 些任务是周期性的或者不定时发生的,需要确定该任务集的可调度性,每个任务Tplin, 被赋予一个唯一的固定优先级i,l代表最高优先级,n代表最低优先级;每个任务T1具 有以下参数:最大计算时间或者最大运行时间c/,拷贝时间Ocrjy,装入时间ocrstOT6, Ci-C广y+C/+C广st°'对于经典的优先抢占调度CP模型,C广y=C广st°ra=0,即(;一C每 个任务的相邻两个任务实例或者调用或者作业的最短到达时间为T1;每个任务实例执行完 成的相对最后期限为D1;0〈Cpin(D1,T1);系统启动时间t为时刻0;每个任务的第一个任 务实例相对于时间时刻〇的释放偏移为〇 ,,即任务T1的第一个任务实例从时间0开始经 过时间O1被释放,以后至少每隔时间长度T1被释放,即任务Ti的第j个任务实例的释 放时间不早于为OfU-DXT1,这里j是大于等于1的整数;对每个k,2kn,LCMT1, LCMk-lcm(Tk,LCMkJ;i,j,k,n都取正整数。
[0009]【附图说明】: 附图1是本发明在时间区间[11,11+24)之间的可调度性测试图。
[0010] 附图2是本发明在时间区间[16,16+24)之间的可调度性测试图。
[0011]
【具体实施方式】: 实施例1: 一种采用线性链表记录实时任务调度过程的方法,该方法包括:根据给定的调度模 型,按任务实例当前优先级从高到低顺序,采用一个线性链表记录从给定的时间起点到截 止时间点内所有任务实例的调度执行,任务实例开始执行时间点记录到链表结点的Start 字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示从该结点 start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任务实例的 连续调度执行。
[0012] 实施例2: 根据实施例1所述的采用线性链表记录实时任务调度过程的方法,按CP模型进行调 度。本实施例中每个任务的优先级固定,任务实例的优先级即相应任务的优先级。
[0013] 给定由4个周期性任务(或事件)构成的任务集合{Ti,T2,T3,T4},系统启动 时刻为0,给定稳定点S=Il和调整后的释放偏移及有关参数如表1所示。LCM LCM3=24,LCM4=24。按给定的CP模型,采用线性链表记录调度过程,按任务优先级从高到 低,任务T1在时间区间[11,11+6)中调度结果链表中有一个结点,其start字段值为11, end字段值为13;任务TT2在时间区间[11,11+24)中调度结果链表中有5个结点,从第 一个结点开始,每个结点start字段值和end字段值依次分别为11,15;17,19;20,21;23, 25;28, 32;任务T t2, T3在时间区间[11,11+24)中调度结果链表中有5个结点,从第 一个结点开始,每个结点start字段值和end字段值依次分别为11,15;16,19;20,22;23, 26;28, 33;任务T t2, t3, T4在时间区间[11,11+24)中调度结果链表中有1个结点,其 start字段值为11,end字段值为34。
[0014] 表1 给定稳定点S=Il和经过调整释放偏移之后的任务参数
[0015] 实施例3: 根据实施例1或2所述的采用线性链表记录实时任务调度过程的方法,本实施例给定 的是按TP模型进行调度。本实施例中每个任务优先级固定,任务实例的优先级即相应任务 的优先级。
[0016] 给定由4个周期性任务(或事件)构成的任务集合{Ti,T2,T3,T4},系统启动时 刻为〇,给定稳定点s=16和调整后的释放偏移及有关参数如表2所示。LCMi=6,LCM2=24,LCM3=24,LCM4=24。按给定的TP模型,采用线性链表记录调度过程,按任务优先级从高到低, 任务Ti在时间区间[16,16+24)中调度结果链表中有4个结点,从第一个结点开始,每个结 点5^竹字段值和 611(1字段值依次分别为18,19;24,25;30,31;36,37 ;任务丁i,T2在时 间区间[16,16+24)中调度结果链表中有5个结点,从第一个结点开始,每个结点start字 段值和611(1字段值依次分别为16,19;24,27 ;30,31;32,34;36,37;任务丁i,t2,t3在时间 区间[16,16+24)中调度结果链表中有4个结点,从第一个结点开始,每个结点start字段 值和611(1字段值依次分别为16,21;24,29 ;30,31;32,37;任务1 ^t2,t3,t4在时间区间
[16,16+24)中调度结果链表中有1个结点,其start字段值为16,end字段值为40。
[0017] 表2 给定稳定点S=16和经过调整释放偏移之后的任务参数
【主权项】
1. 一种采用线性链表记录实时任务调度过程的方法,其特征是:该方法包括:根据给 定的调度模型,按任务实例当前优先级从高到低顺序,采用一个线性链表记录从给定的时 间起点到截止时间点内所有任务实例的调度执行,任务实例开始执行时间点记录到链表结 点的start字段,任务实例执行中止时间点记录到链表结点的end字段,每个链表结点表示 从该结点start字段值给出的时间点到该结点end字段值给出的时间点之间一个或多个任 务实例的连续调度执行。
【专利摘要】<b>采用线性链表记录实时任务调度过程的方法。实时系统中的可调度性测试、确定调度起始稳定点等都需要模拟任务的调度过程,该过程的表示方法直接关系到相应算法的运行时间或效率。本发明方法包括:根据给定的调度模型,按任务实例当前优先级从高到低顺序,采用一个线性链表记录从给定的时间起点到截止时间点内所有任务实例的调度执行,任务实例开始执行时间点记录到链表结点的</b><b>start</b><b>字段,任务实例执行中止时间点记录到链表结点的</b><b>end</b><b>字段,每个链表结点表示从该结点</b><b>start</b><b>字段值给出的时间点到该结点</b><b>end</b><b>字段值给出的时间点之间一个或多个任务实例的连续调度执行。本发明用于对给定的一组实时任务的模拟或仿真或实际应用系统中。</b>
【IPC分类】G06F9/48
【公开号】CN105224400
【申请号】CN201510481356
【发明人】任健, 姜誉
【申请人】黑龙江大学
【公开日】2016年1月6日
【申请日】2015年8月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1