基于线性链表的实时任务可调度性测试拷贝模拟方法

文档序号:9432461阅读:380来源:国知局
基于线性链表的实时任务可调度性测试拷贝模拟方法
【专利说明】
[0001]
技术领域: 本发明设及一种基于线性链表的实时任务可调度性测试拷贝模拟方法。
[000引【背景技术】: 在实时系统设计和应用过程中,对于给定的n个周期性或者不定时发生的实时任务, 在真正调度和执行之前判定运组实时任务是否可调度,即每个任务被释放之后是否都能在 其相对最后期限内执行完毕,运是一个十分重要的问题,对于保证实时系统安全运行具有 极为重要的意义。
[0003] 经典的优先抢占调度模型,简称为CP模型,其中CP即classicpreemptive,CP 模型的调度方式为:每当低优先级任务在运行过程中有高优先级任务到来时,低优先级任 务将被剥夺执行权而高优先级任务开始执行,当高优先级任务执行完毕且没有其它高优 先级任务等待执行时,该低优先级任务从被剥夺的位置处继续执行;事务处理方式的优先 抢占调度模型,简称为TP模型,其中TP即transactionalpreemptive,例如,TP模型有 基于优先级的功能反应式编程模型,简称为?斗3?模型,其中?斗3?即/priori冰-如56^/ /W7Creac或者中止并重新开始模型,简称为AR模型,其中 AR即油ort-and-restart;或者软件事务存储器模型,简称为STM模型,STM即software transactionalmemo巧,STM模型包括渴望冲突检测策略和懒惰冲突检测策略,渴望冲突检 测策略简称为ECD策略,其中ECD即eagerconflictdetection,懒惰冲突检测策略简称 为LCD策略,其中LCD即la巧conflictdetection;TP模型的调度方式为:每当低优先级 任务在运行过程中有高优先级任务到来时,低优先级任务将被剥夺执行权而高优先级任务 开始执行,该低优先级任务已执行的结果都被废弃,当高优先级任务执行完毕且没有其它 高优先级任务等待执行时,该低优先级任务从其最开始位置重新执行;符号串3表示将 变量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);【和】之间、 K和3之间、『和j之间、巧日]、「和」之间分别表示一个语句体;任务实例执行中止包括执行 被高优先级任务中断和执行完成。
[0004] 给定调度模型为CP模型或者TP模型;在一组n个实时任务的可调度性(或可行 性)区间测试(或检验或检查或检测)运组任务的可调度性。如果该组任务是可调度的,那 么在一个时间点S之后,每隔时间长度LCM。,运组任务的调度情况就出现重复,即后续调度 过程实际上是一段在长度为LCM。的时间区间[S,S+LCM。)内的调度的重复。
[0005] 系统启动时刻为时间0,实际测试可调度性时,由于运组任务在区间[0,巧内的调 度包含初次到达情形而往往不具有重复性,因此,传统上将[0,S+LCM。)作为实际的可调度 性测试区间。运段可调度性测试区间长度越小,实际测试中效率越高。从普遍情况来看,可 调度性测试区间长度一般不小于LCM。。此前没有采用线性链表记录调度过程对任务集的可 调度性进行测试的方法。
[000引
【发明内容】
: 本发明的目的是提供一种基于线性链表的实时任务可调度性测试拷贝模拟方法,通过 使用链表结点表示任务(或事件)的调度执行阶段,采用线性链表记录测试的调度过程的方 法来达到确定实时任务(或事件)可调度性测试的目的;适用于实时任务或事件优先级固定 的情形。
[0007] 上述的目的通过W下的技术方案实现: 一种基于线性链表的实时任务可调度性测试拷贝模拟方法,该方法包括:对每个i,1i签〇,^任务T1自勺不早于i周度稳定点S释放自勺第一个任务实伤J自勺释放时间为新的 释放偏移,还用〇 1表示,根据给定的调度模型,采用线性链表记录调度模拟和测试过程,对 任务T1从时间点01开始模拟第一个任务实例的调度执行;然后对每个i从小到大,2 i兹n-1,先将当前链表扩展成到LCMi内的调度结果,再对任务X在时间 范围到LCMi内模拟每个任务X1的调度执行;最后在当前链表上对任务Xn 进行测试。
[0008] 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的采用线性链 表记录调度模拟和测试过程,对任务Ti从时间点01开始模拟第一个任务实例的调度执 行;然后对每个i从小到大,2沒i<n-l,先将当前链表扩展成〇min("到巫minW+LCMi内 的调度结果,再对任务在时间范围到〇mmW+LCMi内模拟每个任务X1的调度 执行;最后在当前链表上对任务T。进行测试是指,采用一个线性链表记录任务的调度模拟 执行和测试过程,任务实例开始执行时间点记录到链表结点的Start字段,任务实例执行 中止时间点记录到链表结点的end字段,每个链表结点表示从该结点start字段值给出的 时间点到该结点end字段值给出的时间点之间一个或多个任务实例的连续调度执行;对每 个1,1in,取任务T1的不早于S释放的第一个任务实例的释放时间为新的释放偏 移,还用。康示,〇m"(i)和。1,LRTi-Ci;对每个i,2签i签n,(。和min(〇 。, 〇1),1^1^(:1;给标志变量巧曰旨赋一个初值;首先模拟执行任务T1的第一个任务实例,即 增加一个链表结点,赋值给结点的start字段,C1赋值给结点的end字段,结点的next 字段赋值为NU化或空;【对任务X2,T3,...,1。1执行W下操作:依优先级从高到低,对 每个i,2签i《n-l,K(壹)扩展链表,即将任务X1,12,...,Tii从时间起点 到〇mm(i-"+LCMi1的链表调度结果扩展到0 即,W从时间范围 +LCM11的调度结果的当前链表的第一个结点到最后一个结点为一个整体块block共拷贝LCMi/LCMi_i-1次并依次链入链表中,第k次拷贝时将新块所有结点的Start 字段和end字段分别加上kXLCM1_1,1您k签LCM1/LCM1_1- 1;将min(扩展后的链表最后 一个结点的end字段值,〇mmw+LCMi)赋值给扩展后的链表最后一个结点的end字段;(戴) 令MAXinter-巫min(i)+LCMi;对每个j,1沒j签LCMi/Ti,从小到大依次调用执行模拟单个任 务实例函数。1对任务11的第^'个任务实例I1,,进行模拟;3;】;1^11,调用测试模拟 单个任务函数F2对任务X1进行测试;给出任务集是可调度的信息。 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的执行模拟单个任 务实例函数F1对任务X1的第j个任务实例X1,,进行模拟是指,【根据ri, ,在链表中通过 与结点中的start字段值及end字段值比较查找并从当前作业j在链表中的相对位置开 始,按CP模型调度时将运行时间Ci对应为1个或连续多个任务T1的空闲区间链表结点, 运些结点表示的区间长度之和等于按TP模型调度时将运行时间C1对应为任务X1的一 个允许区间结点PINode,结点PINode表示的区间长度等于C1,且在该任务实例释放时间到 结点PINode之间的全部任务I1的极大空闲区间都合并到其相邻区间;按时间次序依次链 入链表中的相应位置,链入链表的同时合并调度执行区间时间点边界重合的链表结点,在 模拟过程中无法在链表上完成运行时间。的对应时修改标志变量flag值不同于其初值, 在模拟完成后记录任务T1当前的最大响应时间LRT1;如果标志变量flag值不同于其初值 或者LRTi〉Di,则返回不可调度信息并中止对该任务集的可调度性测试;】。
[0009] 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的测试模拟单 个任务函数F2对任务X1进行测试是指,【按TP模型调度时:K依次从每个任务实例的释放 时间点开始至多经历时间长度LCMi1,确定是否有任务T1的允许区间,如果没有,则返回不 可调度信息并中止对该任务集的可调度性测试;每个任务实例模拟完成后记录任务T1当 前的最大响应时间LRTi;如果LRT1〉〇1,则返回不可调度信息并中止对该任务集的可调度性 测试;3 ; 按CP模型调度时:K从时间点〇 开始到时间点巫min("+LCMi,依次对任务X1的每 个任务实例确定是否有区间长度之和大于等于Ci的1个或连续多个极大空闲区间,如果没 有,则返回不可调度信息并中止对该任务集的可调度性测试;每个任务实例模拟完成后记 录任务T1当前的最大响应时间LRT1;如果LRT1〉〇1,则返回不可调度信息并中止对该任务 集的可调度性测试;3 ;】。
[0010] 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的TP模型的 任务的允许区间是指:任务T1的一个空闲区间EI是指,对于任务X1,12,...,1。1的 调度结果中一个没有被占用的连续的时间范围区间[ti,t2),t2〉ti,在该区间内没有任务集 {X1,X2, . . .,T。J中的任务释放,并且在时刻t1及之前所有已释放的任务集{X1,X2,.. .,1。1}中的任务都已执行完毕; 任务的一个空闲区间[ti,t2)称为一个任务X1的极大空闲区间maxEI是指,时刻ti为任务X1的释放时间或者任务集(X1,12,...,中的任务结束时间,并且从时刻t2 开始有任务集(Ti,l2,...,中的任务释放或者t2等于0"Ji"+kXLCMii,kgl^ 于TP模型,如果一个任务I1的空闲区间[ti,t2)或者极大空闲区间[ti,t2)满足t2-ti会 Ci,则区间[ti,t2)称为任务X1的一个允许区间PI。
[0011] 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的给出该任务 集可调度或者不可调度信息,在给出任务集是可调度的信息时,给出maxi《1签。(LRTi),表示 全部任务T1在当前优先级设置和任务释放偏移时的最大响应时间。
[0012] 所述的基于线性链表的实时任务可调度性测试拷贝模拟方法,所述的合并调度 执行区间时间点边界重合的链表结点是指,如果在链表中会产生或者有两个相邻的结点 Node巧日Node2使得Nodel的end字段值等于Node2的start字段值,则将运两个结点合并 为一个结点Node3链入链表中Nodel的位置,代替Node巧日Node2运两个结点,其中Nodes 的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1