碧波液压网 欢迎你,游客。 登录 注册

微型抢占式多任务实时内核设计

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  

  

  市面上有很多优秀的嵌入式实时操作系统(RTOS),但在中低端微控制器(MCU)上运行性能良好的RTOS内核并不多。在高档机下,功能强大、运行极好的嵌入式实时操作系统,移植到中低端机上时性能很可能大幅度下降。一个很重要的原因就是它的大部分功能对中低档系统来说是不需要的,反而成为制约性能的累赘。中低档微控制器与高档机相比,一方面,寻址能力有限,处理速度慢,在相同的实时性能要求下,对内核的代码效率的要求更为严格;另一方面,中低档机完成的任务相对简单,减少了对内核的功能需求,比如可以不需要内存管理。从嵌入式系统的共性来说,大多数情况下用户程序和系统内核是紧密结合在一起的,运行时存储器容量消耗、任务的数量、执行时间和结果都是可以预计的,这可进一步缩小对内核的功能需求。

  ??事件驱动的观点认为,任务应该是被动地响应外界发生的各种事件,而不是主动地去“查询”,浪费处理器时间。采用事件驱动编程的方法,不仅提高了运行效率,而且降低了事件处理之间的耦合,使程序流程非常清晰,从而可大大提高开发效率。

  ??充分考虑中低端微控制器的硬件特点和嵌入式系统软件的需求,引入“事件驱动”的观念,笔者开发了一个微型的抢占式多任务RTOS内核——MicroStar。支持任务的动态创建、删除、睡眠、挂起和恢复,提供消息(message)和信号(signal)两种任务间的通信方案、完善的定时器服务和功能齐全的任务同步函数库。限于篇幅,着重论述几个与众不同的设计思路和实现难点。

  1 调度策略

  1.1 基于事件的优先级

  ??对内核的实时性能来说,调度策略是关键。好的调度策略,既要体现各任务因所处理的事件对实时性的不同要求而带来的优先级差异,又要保证一定的公平性,避免出现低优先级任务长时间得不到执行的极端情形。常用的调度策略有两种:一种是按时间片轮转(round robin)调度,如RTX51;另一种是严格按优先级的占先式调度,如μC/OS。

  ??按时间片轮转调度能很好地保证公平,但优先级的差异是通过对处理器的占用时间的多少来体现的。如果各个任务都不主动放弃执行,高优先级的任务能够比低优先级任务获得更多的处理器时间;但在嵌入式系统中,某个事件要求实时处理,并不意味着该处理需要较长的时间,而往往是要求尽快响应。因此,采用按时间片轮转调度,实时性不会太好。

  ??如果严格按任务的优先级来调度,可极大地提升系统的实时性,但却欠缺公平。如果高优先级任务是个无等待的死循环,低优先级任务就无法获得执行机会。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论