论文研究-基于社会认知算法的软件可靠性分配问题研究.pdf

所需积分/C币:7 2019-09-08 03:07:15 531KB .PDF

针对分布式实时系统对操作系统内核的新需要,为避免因时间触发任务相互影响而造成的抖动,研究了时间触发任务的调度器设计,提出了一种改进的调度策略;在开放源代码的uCOSII嵌入式操作系统内核的基础上扩展了时间触发功能,设计了支持事件/时间混合触发的嵌入式实时操作内核TTuCOSII(Time-Triggered Micro Operating System II)。仿真实验表明TTuCOSII具有较高的时间触发精度,良好的调度性能,可以满足事件/时间混合触发的要求。
陈曦,吕伟杰,刘鲁源:事件/时间触发嵌入式操作系统内核的设计 2008,44(16)89 OSTTTCBCur oSTtTCBList->OSTTTCBNext T任务代码中的 OSTTEnd()函数其主要作用是使 OSTTTCBCur-> OSTTTCBCont= OS FALSE,即使T任务“继续 OS EXIT CRITICALO 执行的状态”为假。如果 MTAsk在时间额度规定的时间内完 因为时间同步帧通常由通讯中断服务程序捕获,而T'任成, OSTTEnd()函数一定会被执行,从而使 OSTTTCBCur-> 务调度器也是在时钟节拍中断服务程序中运行的,两个中断程 OSTTTCBCont= OS FALSE,T任务切换函数 OSTTCtXSW()检 序之间交换信息的方法是通过全局变量,所以利用全局变量测到 OSTTTCBCur-> OSTTTCBCont为 OS FALSE就会从头开 OSTTRestart米判断是否有时间同步帧,如果有即 OSTTRestart始执行 MTAsk;如果 TTTask并未在规定的时间内完成,OST OS TRUE,则要更新当前任务指针 OSTTTCBCur使它重新Tnd(函数就不会执行,T任务切换函数 OSTTCtXSW()检测 指向TT任务列表的第一个任务且把计时变量 OSTTTick清零。 OSTTTCBCur-> OSTTTCBCont为OS_TRUE,就会继续执行未完 (2)检测计时变量 OSTTTick是否到达最大值OSTT成的部分。 TICKS MAX,其代码如下: T任务切换函数 OSTTCtXSW()的C语言形式伪代码如下 if( OSTTTick ==OS_TT_TICKS_MAX)( 所示: OSTTTick =0 void OSTTCtxSw( void OSTTTCBCur osttTCBList->OSTTTCBNext if( OSTTTCBCur->OSTTTCBStat==OS TT STAT RDY 如果 OSTTTick已达到最大值,那么意味着要开始新一轮 H. OSTTTCBCur->OSTTTCBCont=OS_FALSE)( 的调度,所以更新当前任务指针 OSTTTCBCur使它重新指向任 取当前任务的堆栈 OSTTTCBCur-> OSTTTCBStkPtr; 务列表的第一个任务且把计时变量 OSTTTick清零。 TT任务指针指向下一个要运行的任务 OSTTTCBCur= (3)取TT任务列表中的当前任务,如果当前任务的 OSTTTCBCur->Next; OSTTTCBTime和 OSTTTick相等,那么首先调用 OSETSched 进行TT任务切换; Lock来禁止 u cosiI的任务切换,抢占ET任务,然后更新计时 i else if(OSTTTCBCur->Status==OS_TT_STAT_PEND ) 变量 OSTTTick,最后进行TT任务切换;如果不等,那么在更新 f(任务通讯或同步事件=就绪) 计时变量 OSTTTick后通过调用uCOS的时钟节拍函数OS T任务指针指向下一个要运行的任务OSTT TimeTick来允许ET任务切换。其代码如下 TCBCur=OStttCBCur->Next if( OSTTTick== OSTTTCBCur-> OSTTTCBTime)( 从挂起处继续执行代码; OSETSchedLock ( OSTTTick++ I else if( OSTTTCBCur->OSTTTCBCont=OS_TRUE ) OSTTCtxSw( 取当前任务的堆栈 OSTTTCBCur-> OSTTTCBStkPtr; TT任务指针指向下一个要运行的任务 OSTTTCBCur= OSETSchedUnlock() OSTTTCBCur->Next OSTTTick++ 从原任务切换处执行代码; OSTime Tick( 其中的T任务切换函数 OSTTCtxSW()因为要涉及到堆栈 指针的操作,所以需要用汇编语言实现 3仿真实验 23TT任务切换函数的实现与抖动的处理 为了验证 TTuCosll的系统性能,使用 Keil mdK以 理想情况下T任务应该能够在时间额度规定的时间内完AT9SAM7X256芯片为对象进行了仿真。实验设置为:T任务 成但是在T任务实际运行过程中,可能会出现T任务运行1,m任务2,T任务3分别使AT91SAMX256的三个10口 时间超过时间额度的情况,如果采用如图1(b)所示的调度策定时产生单脉冲。ET任务1和ET任务2使 ATOISAM7X256 略,由于TT任务2的运行时间超过了时间额度规定的时间,造的两个1O口产生单脉冲,且ET任务1的优先级高于ET任务 成TT任务3产生了启动抖动因为抖动的传递性,所以在最坏2,时间额度为25m5。使用CAN总线通讯产生时间同步消息。 情况下会造成所有的T任务产生抖动。为了避兔这种情况, Keil mdK的 Logic analyzer观察到的波形如图6,测得的 TCO采用了如图1(a)所示的调度策略即无论TT任务在 TTuCosii主要时间参数如表1所示 时间额度规定的时间内是否完成任务,TT任务调度器都会在 指定的时间点上进行切换,如图1(a)中的T任务2虽然在时 表1 TTuCOSⅡ的主要时间参数 时间参数 时间/u 间槽2内并未完成,但是在时间点b处TT任务调度器仍旧进 T任务建立时间17.1 行TT任务调度,转而执行TT任务3。T任务2未完成的部分 任务建立时间 13.0 将在下一次指定的时间槽到后继续执行,当任务执行完成后再 T任务切换时间 12.3 开始执行新一轮T任务2。这种调度策略的优点是使T任务 ET任务切换时间 的启动抖动只取决于该任务本身,消除了TT任务之间的相互 IRQ相应时间 0.9 影响而造成的TT任务抖动。为了实现这种调度策略,方面在 通过表1可以看到 TTuCOSI的各项性能指标能够满足大 T任务的结束处要调用系统函数 OSTENd,另一方面要对TT多数嵌入式系统的需要。TT任务的建立时间长于 uCosiI的建 任务切换函数进行处理。 (下转144页)

...展开详情
试读 3P 论文研究-基于社会认知算法的软件可靠性分配问题研究.pdf
img
  • 至尊王者

    成功上传501个资源即可获取

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐
    论文研究-基于社会认知算法的软件可靠性分配问题研究.pdf 7积分/C币 立即下载
    1/3
    论文研究-基于社会认知算法的软件可靠性分配问题研究.pdf第1页

    试读已结束,剩余2页未读...

    7积分/C币 立即下载 >