μC/OS—II中的时钟节拍管理机制技术分析.doc
《μC/OS—II中的时钟节拍管理机制技术分析.doc》由会员分享,可在线阅读,更多相关《μC/OS—II中的时钟节拍管理机制技术分析.doc(4页珍藏版)》请在三一文库上搜索。
1、COSII中的时钟节拍管理机制技术分析为了有效管理时钟节拍并确保系统的实时性,COSIII不仅增加了一个专门的系统任务来管理时钟节拍,而且采用哈希散列表机制来进一步减少时钟节拍处理过程所花费的时间。本文讨论COSII在时钟节拍管理方面的不足,并介绍COSIII中的高效时钟节拍管理机制。在嵌入式实时操作系统(RTOS)中,任务可通过调用延时函数(比如COS中的OSTImeDly()函数)将自己延时挂起一段时间。任务在延时的过程中会释放CPU使用权,也就是说,延时的任务不占用宝贵的CPU资源。延时的任务由时钟节拍服务跟踪管理。当任务延时结束并准备运行时,时钟节拍服务会使该任务恢复运行。时钟节拍服务
2、定期运行,其运行由周期的时钟节拍中断触发,而时钟节拍中断可由硬件定时器产生。在COSIII中,时钟节拍服务是在时钟节拍中断服务程序中完成的,每次时钟节拍服务都会遍历整个任务链表,递减所有延时任务的延时计数器。当任务数目较多时,时钟节拍服务处理时间很长,会造成中断延迟时间和任务延迟时间都变得很长,影响系统的实时性。在COSIII中,时钟节拍服务不再在时钟节拍中断服务程序中完成,而是放到一个时钟节拍任务中完成。而且,通过采用啥希散列表机制来管理延时任务,每次时钟节拍服务只需要处理极少数的延时任务,从而大大减少了时钟节拍服务花费的时间,提高了系统的实时性。另外,在COS系列RTOS中,时钟节拍服务除
3、了会跟踪延时的任务,还会跟踪那些指定了超时时限的等待任务。也就是说,当指定的超时时限结束时,即使任务等待的事件没有发生,时钟节拍服务也会使该任务恢复运行。1 COSII中的时钟节拍管理机制在COSII中,每次时钟节拍服务都会遍历整个任务链表,依次处理各个任务。如果当前处理的任务的延时计数为0,那么跳过该任务,继续处理下一个任务;否则,把当前任务的延时计数减1,然后,判断减1后的延时计数是否为0。如果为0,表示任务延时结束了或等待超时了。由于COS-允许其他任务调用OSTaskSuspend()函数强制挂起正在延时的任务,在这种情况下,不仅需要等到任务延时结束,还需要由其他任务调用OSTaskR
4、esume()函数解除该任务的强制挂起状态,该任务才能进入就绪态。因此,在延时计数递减为0的时候,还需要判断任务是否被强制挂起。只有任务没有被强制挂起,才能使该任务进入就绪态;否则,把延时计数设置为1,保持任务的延时状态。COSII时钟节拍服务函数的主要代码和注释如下:在COSII中,由于每次时钟节拍服务都要遍历所有任务,因此,在任务数目较多时,其执行时间可能很长。另外,由于时钟节拍服务函数OSTImeTICk()由时钟节拍中断服务程序OSTIcidSR()调用执行,因此当OSTimeTick()执行时间很长时,时钟节拍中断服务程序的执行时间也很长。在中断服务程序执行时,所有任务都无法执行,在
5、这种情况下,系统的实时性会很差。2 COS-III中的时钟节拍管理机制针对COSII时钟节拍服务的问题,COSIII主要做了两点改进:用时钟节拍任务来做时钟节拍处理;用时钟节拍轮盘来分类管理延时任务以及指定超时时限的等待任务。21 时钟节拍任务在COSIII中,增加了一个系统任务,即时钟节拍任务OS_TickTask()。该任务是COS-III中两个总是会创建的系统任务之一。时钟节拍任务负责处理延时任务和指定超时时限的等待任务,这样,COSIII就把时钟节拍的处理工作放到任务级代码中完成了。时钟节拍中断服务程序和时钟节拍任务之间的关系如图1所示。不论在COSII还是在COSIII中,都需要一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OS II 中的 时钟 节拍 管理机制 技术 分析
链接地址:https://www.31doc.com/p-3275604.html