



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、uC/OS-II内核超时等待机制的分析摘要:本文从源代码角度分析了uC/OS-II内核超时等待机制,证实在一定情况下超时时间间隔不准确,在时间间隔到期的情况下,内核仍有可能返回成功,这不符合一般的操作系统原理。另外,结合超时等待机制的通用模型以及一些主流内核的实现方法,提出了这一不足之处的改正方法。关键词:超时等待;资源;内核Analysis of waiting-timeout in kernelAbstract:Waiting-timeout of kernel is analyzed from source code in this paper.It indicates waiting-
2、timeout of uC/OS-II is not correst in some case.The kernel can return success while it is time out.This is not correst.Based on the general type of Waiting-timeout of kernel and the other main real-time kernel ,a method is advanced to resolve this problem in the end.Key words: waiting-timeout;resour
3、ce;kernel 1引言uC/OS-II是著名的源码公开的实时内核1,是专为嵌入式应用设计的,可用于各类8位16位和32位单片机或DSP。现在有很多使用者正在或已经将其移植到各种类型的芯片。因为源码公开,uC/OS-II也经常被作为嵌入式实时内核的教材,为专业人员提供了学习实时内核的难得机会。在实际使用中不管基于何种操作系统平台,应用程序经常会等待一些系统资源,如信号量,事件标志,消息等。等待类型共有三种:(1)如果不能马上获取,悬挂等待;(2)不管是否能获取资源,马上返回,不会等待;(3) 如果不能马上获取资源,将进行有限时间的等待,即超时等待。2超时等待机制的基本原理应用程序通过操作系统
4、提供的系统调用接口获取资源时,在系统调用的入口参数里可以指定超时等待的最大时间,通常以毫秒为单位,内核会将其转化为系统的时钟滴嗒数(tick)。一般内核都会执行以下流程:(1)如果资源能马上获取,系统调用将成功返回。(2)如果资源不能马上获取,内核将设置一定时器进行计时,把当前任务悬挂在该资源的等待队列上,该任务从就绪表中删除,并进行调度,让出CPU的使用权。(3)如果在指定的时间内资源变得可以获取了,定时器应马上停止计时,该任务从等待队列里摘下并且重新回到就绪表中等候调度。(4)如果定时器到时,任务应该从等待队列里摘下并且重新回到就绪表中,系统调用返回超时信息。内核在每一个tick都会做一系
5、列的工作,包括任务的延迟以及超时等待资源的定时器等相关的检查操作。一般来讲,在指定的时间间隔以外到达的资源和信号被认为是无效的,这也是指定超时时间间隔的原意所在,有些对时间要求苛刻的场合就有这种需求,内核必须处理好这方面的问题。3uC/OS-II内核超时等待机制的分析假设某任务T超时等待信号量资源R,先来分析时钟节拍函数的源代码。void OSTimeTick(void)OS_TCB *ptcb;OSTimeTickHook();ptcb=OSTCBList;while(ptcb-OSTCBPrio!=OS_IDLE_PRIO)OS_ENTER_CRITICAL();if(ptcb-OSTCB
6、Dly!=0)if(-ptcb-OSTCBDly=0)if(!(ptcb-OSTCBStat&OS_STAT_SUSPEND)/(1)OSRdyGrp|=ptcb-OSTCBBity; /(2)OSRdyTblptcb-OSTCBY|=ptcb-OSTCBBitX;/(3)else ptcb-OSTCBDly=1;ptcb=ptcb-OSTCBNext;OS_EXIT_CRITICAL();OS_ENTER_CRITICAL();OSTime+;OS_EXIT_CRITICAL();语句(1),(2),(3)表明:时钟中断服务程序在每一个时钟中断在需要的情况下对任务的延迟项进行减1操作,如果任
7、务T的定时时间间隔到期(延迟项被减为0),并且任务T没有附加的挂起操作,任务T就会进入就绪表,然而该函数却没有进一步将任务T移出资源R的等待队列,也就是说此时任务T跨了两个状态,这两个状态从本质上讲是矛盾的。虽然任务T此时处于就绪状态,但未必马上就能获得执行权,这取决于任务T的优先级。在任务T没有被调度执行之前的这段时间内,假设资源R到达了,比如一个中断服务程序调用了OSSemPost函数,会是什么情况呢?我们再来分析OSSemPost函数。void OSSemPost(OS_EVENT *pevent)OS_ENTER_CRITICAL();if(pevent-OSEventGrp!=0x0
8、0)OS_EventTaskRdy(pevent,(void*)0,OS_STAT_SEM);/(4)OS_EXIT_CRITICAL();OS_Sched();return(OS_NO_ERR);if(pevent-OSEventCntOSEventCnt+;OS_EXIT_CRITICAL();return(OS_NO_ERR);OS_EXIT_CRITICAL();return(OS_SEM_OVF);从语句(4)可以看出,在资源R的等待列表中有等待任务的情况下,等待表中最高优先级的任务将从等待列表中删除,并且进入就绪表。如果等待表中的最高优先级任务就是前面讲的等待超时的任务T,这相当于
9、任务T又一次进入就绪表,不过只有一次从等待表中删除。任务T获取到了资源,只不过是在超时时间以外获取到的。任务T获得执行权以后从调度程序返回将运行函数OSSemPend()语句(6)处的条件代码,此时语句(5)处的条件不成立,任务按获取到资源对待。void OSSemPend(OS_EVENT *pevent,INT16U timeout,INT8U *err)OS_ENTER_CRITICAL();if(pevent-OSEventType!=OS_EVENT_TYPE_SEM)OS_EXIT_CRITICAL();*err=OS_ERR_EVENT_TYPE;if(pevent-OSEven
10、tCnt0)pevent-OSEventCnt-;OS_EXIT_CRITICAL();*err=OS_NO_ERR;else if(OSIntNesting0)OS_EXIT_CRITICAL();*err=OS_ERR_PEND_ISR;elseOSTCBCur-OSTCBStat|=OS_STAT_SEM;OSTCBCur-OSTCBDly=timeout;OSEventTaskWait(pevent);OS_EXIT_CRITICAL();OSSched();OS_ENTER_CRITICAL();if(OSTCBCur-OSTCBStat&OS_STAT_SEM) /(5)OSEve
11、ntTo(pevent);OS_EXIT_CRITICAL();*err=OS_TIMEOUT;else /(6)OSTCBCur-OSTCBEventPtr=(OS_EVENT*0);OS_EXIT_CRITICAL();*err=OS_NO_ERR;void OSEventTo(OS_EVENT *pevent)if(pevent-OSEventTblOSTCBCur-OSTCBY&=OSTCBCur-OSTCBBitX)=0)pevent-OSEventGrp&=OSTCBBitY;OSTCBCur-OSTCBStat=OS_STAT_RDY;vOSTCBCur-OSTCBEventPtr=(OS_EVENT*0);如果任务T由于超时进入就绪态,到T获得执行权之前,仍没有获取到资源R,将运行语句(5)处的条件代码,由函数OSEventTo()可以看出,此时任务T才被从等待表中删除,最后返回超时状态。通过分析开放源码的nucleus内核,发现nucleus在超时到期时执行定时器的一个回调函数,此回调函数马上将等待任务从等待链表中删除,将返回状态定性为超时。这样在任务获得执行权前,即使资源到达,该任务也不会得到。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材物流园工程可行性研究报告(参考)
- 国际冷链物流产业园扩建项目可行性研究报告(范文模板)
- 河南省开封市五县联考2023-2024学年高二上学期12月月考历史含解析
- 重庆第二师范学院《中级法语(二)》2023-2024学年第二学期期末试卷
- 平顶山学院《有机化学实验一》2023-2024学年第二学期期末试卷
- 广东茂名健康职业学院《节目策划通论》2023-2024学年第二学期期末试卷
- 四川信息职业技术学院《纳米工程导论》2023-2024学年第二学期期末试卷
- 湖南化工职业技术学院《体育赛事组织》2023-2024学年第二学期期末试卷
- 南阳科技职业学院《环境科学前沿》2023-2024学年第二学期期末试卷
- 贵州交通职业技术学院《网络与新媒体》2023-2024学年第二学期期末试卷
- 2024年全国青少年航天创新大赛航天知识竞赛试题
- 辽宁省锦州市2024年中考二模考试道德与法治历史试题
- 生物安全培训试题及答案
- 山东省滨州地区2024届中考二模历史试题含解析
- 知识创业思维与方法智慧树知到期末考试答案章节答案2024年湖南师范大学
- MOOC 急诊医学-山东大学 中国大学慕课答案
- 体格检查病历示范范文16篇
- 国家开放大学《Python语言基础》实验2:基本数据类型和表达式计算参考答案
- 2024统编本语文二年级下册第四、第五单元测试题及答案(各一套)
- 国家婚检培训课件
- 多目标粒子群优化算法的改进及应用研究
评论
0/150
提交评论