为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > uc-os-ii内核超时等待机制的分析

uc-os-ii内核超时等待机制的分析

2017-10-30 6页 doc 18KB 8阅读

用户头像

is_447713

暂无简介

举报
uc-os-ii内核超时等待机制的分析uc-os-ii内核超时等待机制的分析 uC/OS-II内核超时等待机制的分析 本文从源代码角度分析了u/S-II内核超时等待机制,证实在情况下超时间隔不,在间隔到期 的情况下,内核仍有返回,这不符合的操作系统原理。,超时等待机制的通用模型主流内核 的方法,了之处的改正方法。关键词:超时等待… 本文从源代码角度分析了u/S-II内核超时等待机制,证实在情况下超时间隔不,在间隔到 期的情况下,内核仍有返回,这不符合的操作系统原理。,超时等待机制的通用模型主流内 核的方法,了之处的改正方法。关键词:超时等待;资源;内核 A...
uc-os-ii内核超时等待机制的分析
uc-os-ii内核超时等待机制的 uC/OS-II内核超时等待机制的分析 本文从源代码角度分析了u/S-II内核超时等待机制,证实在情况下超时间隔不,在间隔到期 的情况下,内核仍有返回,这不符合的操作系统原理。,超时等待机制的通用模型主流内核 的方法,了之处的改正方法。关键词:超时等待… 本文从源代码角度分析了u/S-II内核超时等待机制,证实在情况下超时间隔不,在间隔到 期的情况下,内核仍有返回,这不符合的操作系统原理。,超时等待机制的通用模型主流内 核的方法,了之处的改正方法。关键词:超时等待;资源;内核 Analysis f aiting-tieut in kernelAbstrat:aiting-tieut f kernel is analyzed fr sure de in this paper.It indiates aiting-tieut f u/S-II is nt rrest in se ase.The kernel an return suess hile it is tie ut.This is nt rrest.Based n the general type f aiting-tieut f kernel and the ther ain real-tie kernel ,a ethd is advaned t reslve this prble in the end.Key rds: aiting-tieut;resure;kernel 1引言u/S-II是著名的源码公开的实时内核[1],是专为嵌入式应用设计的,可用于8位16 位和32位单片机或DSP。现在有使用者正在或将其移植到类型的芯片。源码公开,u/S-II也 经常被嵌入式实时内核的教材,为专业人员了学习实时内核的难得机会。在使用中不管基于 何种操作系统平台,应用程序经常会等待系统资源,如信号量,事件标志,消息等。等待类 型共有三种:(1)马上获取,悬挂等待;(2)不管能获取资源,马上返回,不会等待;(3) 马上 获取资源,将有限的等待,即超时等待。 2超时等待机制的原理 应用程序操作系统的系统调用接口获取资源时,在系统调用的入口参数里可以指定超时等待 的最大,通常以毫秒为,内核会将其转化为系统的时钟滴嗒数(tik)。内核都会:(1)资源 能马上获取,系统调用将返回。(2)资源马上获取,内核将设置时器计时,把当前任务悬挂 在该资源的等待队列上,该任务从就绪表中删除,并调度,让出PU的使用权。(3)在指定的 内资源变得可以获取了,定时器应马上停止计时,该任务从等待队列里摘下并且重新回到就 绪表中等候调度。(4)定时器到时,任务应该从等待队列里摘下并且重新回到就绪表中,系 统调用返回超时信息。内核在每tik都会做一系列的工作,包括任务的延迟超时等待资源的 定时器等的检查操作。来讲,在指定的间隔以外到达的资源和信号被是无效的,这指定超时 间隔的原意所在,有些对要求苛刻的场合就有需求,内核好这的问题。3u/S-II内核超时等待 机制的分析假设某任务T超时等待信号量资源R,先来分析时钟节拍函数的源代码。vid STieTik(vid){S_TB *ptb;STieTikHk();ptb=STBList;hile(ptb- STBPri!=S_IDLE_PRI){S_ENTER_RITIAL();if(ptb- STBDly!=0){if(--ptb- STBDly==0){if(!(ptb- STBStat S_STAT_SUSPEND)){//(1)SRdyGrp|=ptb- STBBity; //(2)SRdyTbl[ptb- STBY]|=ptb- STBBitX;//(3)}else {ptb- STBDly=1;}}}ptb=ptb- STBNext;S_EXIT_RITIAL();}S_ENTER_RITIAL();STie++;S_EXIT_RITIAL();}语句(1),(2),(3)表明:时钟中断服务程序在每时钟中断在需要的情况下对任务的延迟项减1操 作,任务T的定时间隔到期(延迟项被减为0),并且任务T附加的挂起操作,任务T就会 就绪表,然而该函数却将任务T移出资源R的等待队列,也说此时任务T跨了两个状态,这 两个状态从本质上讲是矛盾的。任务T此时就绪状态,但未必马上就能权,这取决于任务T 的优先级。在任务T被调度之前的这段内,假设资源R到达了,比如中断服务程序调用了 SSePst函数,会是情况呢,再来分析SSePst函数。vid SSePst(S_EVENT *pevent){S_ENTER_RITIAL();if(pevent- SEventGrp!=0x00){S_EventTaskRdy(pevent,(vid*)0,S_STAT_SE);//(4)S_EXIT_RITIAL();S_Shed();return(S_N_ERR);}if(pevent- SEventnt 65535){pevent- SEventnt++;S_EXIT_RITIAL();return(S_N_ERR);}S_EXIT_RITIAL();return(S_SE_VF);}}从语句(4)可以 看出,在资源R的等待列表中有等待任务的情况下,等待表中最高优先级的任务将从等待列 表中删除,并且就绪表。等待表中的最高优先级任务前面讲的等待超时的任务T,这于任务 T又一次就绪表,不过一次从等待表中删除。任务T获取到了资源,只不过是在超时以外获 取到的。任务T权以后从调度程序返回将运行函数SSePend()语句(6)处的条件代码,此时语 句(5)处的条件不成立,任务按获取到资源对待。vid SSePend(S_EVENT *pevent,INT16U tieut,INT8U *err){S_ENTER_RITIAL();if(pevent- SEventType!=S_EVENT_TYPE_SE){S_EXIT_RITIAL();*err=S_ERR_EVENT_TYPE;}if(pevent- SEventnt 0){pevent- SEventnt--;S_EXIT_RITIAL();*err=S_N_ERR;}else if(SIntNesting 0){S_EXIT_RITIAL();*err=S_ERR_PEND_ISR;}else{STBur- STBStat|=S_STAT_SE;STBur- STBDly=tieut;SEventTaskait(pevent);S_EXIT_RITIAL();SShed();S_ENTER_RITIAL();if(STBur- STBStat S_STAT_SE){ //(5)SEventT(pevent);S_EXIT_RITIAL();*err=S_TIEUT;}else{ //(6)STBur- STBEventPtr=(S_EVENT*0);S_EXIT_RITIAL();*err=S_N_ERR;}}}vid SEventT(S_EVENT *pevent){if((pevent- SEventTbl[STBur- STBY] =~STBur- STBBitX)==0){pevent- SEventGrp =~STBBitY;}STBur- STBStat=S_STAT_RDY;vSTBur- STBEventPtr=(S_EVENT*0);}任务T超时就绪态, 到T权之前,仍获取到资源R,将运行语句(5)处的条件代码,由函数SEventT()可以看出,此 时任务T才被从等待表中删除,最后返回超时状态。分析开放源码的nuleus内核,nuleus 在超时到期时定时器的回调函数,此回调函数马上将等待任务从等待链表中删除,将返回状 态定性为超时。在任务权前,即使资源到达,该任务也不会。一来,u/S-II内核只要在时钟 节拍函数里代码将延时期满的任务从的资源等待列表中删除即可。工作很容易,内核任务控 制块有指向所等待的信号量,消息等事件控制块的指针,事件控制块里有的等待表。u/S-II 新引进的事件标志组[2],任务控制块有指向的等待节点的指针,等待节点有指向的事件标 志组控制块的指针,删除等待节点也能。 4结论 u/S-II其它资源的等待机制,比如消息包括2.5.2版引入的事件标志组的都上述的超时不的问 题,这是由中断节拍函数STieTik()决定的,该函数只将任务移入就绪表,而不的等待表。参 考文献:[1]Labrsse Jean J.u/S-II-源码公开的实时嵌入式操作系统[].北京:电力出版社, 2001.[2]Labrsse Jean J. 嵌入式实时操作系统u/S-II[].北京:北京航空航天大学出版社,2003.
/
本文档为【uc-os-ii内核超时等待机制的分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索