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

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

ID:26957159

大小:51.50 KB

页数:5页

时间:2018-11-30

微型抢占式多任务实时内核的设计_第1页
微型抢占式多任务实时内核的设计_第2页
微型抢占式多任务实时内核的设计_第3页
微型抢占式多任务实时内核的设计_第4页
微型抢占式多任务实时内核的设计_第5页
资源描述:

《微型抢占式多任务实时内核的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、微型抢占式多任务实时内核的设计.freelicrostar的设计与实现;提出基于事件的优先级这一新概念。关键词:事件驱动优先级任务管理消息信号同步市面上有很多优秀的嵌入式实时操作系统(rtos),但在中低端微控制器(mcu)上运行性能良好的rtos内核并不多。在高档机下,功能强大、运行极好的嵌入式实时操作系统,移植到中低端机上时性能很可能大幅度下降。一个很重要的原因就是它的大部分功能对中低档系统来说是不需要的,反而成为制约性能的累赘。中低档微控制器与高档机相比,一方面,寻址能力有限,处理速度慢,在相同的实时性能要求下,对内核的代码效率的要求更为严格;另一方面,中低档机完成的任务相对简单,减少了

2、对内核的功能需求,比如可以不需要内存管理。从嵌入式系统的共性来说,.freelicrostar。支持任务的动态创建、删除、睡眠、挂起和恢复,提供消息(message)和信号(signal)两种任务间的通信方案、完善的定时器服务和功能齐全的任务同步函数库。限于篇幅,着重论述几个与众不同的设计思路和实现难点。1调度策略1.1基于事件的优先级牐牰阅诤说氖凳毙阅芾此担调度策略是关键。好的调度策略,既要体现各任务因所处理的事件对实时性的不同要求而带来的优先级差异,又要保证一定的公平性,避免出现低优先级任务长时间得不到执行的极端情形。常用的调度策略有两种:一种是按时间片轮转(roundrobin)调度,如

3、rtx51;另一种是严格按优先级的占先式调度,如μc/os。牐牥词奔淦轮转调度能很好地保证公平,但优先级的差异是通过对处理器的占用时间的多少来体现的。如果各个任务都不主动放弃执行,高优先级的任务能够比低优先级任务获得更多的处理器时间;但在嵌入式系统中,某个事件要求实时处理,并不意味着该处理需要较长的时间,而往往是要求尽快响应。因此,采用按时间片轮转调度,实时性不会太好。牐犎绻严格按任务的优先级来调度,可极大地提升系统的实时性,但却欠缺公平。如果高优先级任务是个无等待的死循环,低优先级任务就无法获得执行机会。牐犚桓龊玫陌旆ㄊ橇秸叩慕岷希即可由任务的优先级产生调度,也可以由时间片到产生新的任务调度

4、,如vxcu。为此,基于以下事实,提出“基于事件的优先级(eventsbasedpriority)”这一新观念。牐牏一个任务往往处理多个事件,各个事件对实时性的要求不尽相同。一般的rtos下,任务的优先级是根据这些事件中对实时性要求最高的一个来确定的。因此,高优先级任务在处理对实时性要求不高的事件时,完全可能会妨碍低优先级任务处理具有一定实时性要求的事件。牐牏有些情况下,对同一事件的处理可分为前台处理和后台处理:前台处理所需时间短,对实时性有较高的要求;后台处理花费时间长,对实时性则无多大要求。牐犎绻根据正在处理和等待处理的事件对实时性的不同要求,更细致地按事件处理的前后台阶段,动态地调整任务

5、的优先级,采用优先级调度策略,既可发挥实时性好的优点,又可在一定限度内保证公平。这种情况下,任务的优先级不再是一成不变的,而是动态地取决于所处理的事件和处理阶段,这就是所谓的“基于事件的优先级”。1.2在microstar中的实现牐燤icrostar中任务的优先级是由静态优先级和动态优先级共同决定的。静态优先级等同于其它rtos中的优先级;动态优先级为基于事件的优先级——由内核根据任务正在处理和等待处理的事件动态调整。静态优先等级限定为0~15级,不允许创建静态优先级相同的任务。动态优先等级目前只有0(亦称紧急级)、1(亦称普通级)两级。任务的实际优先等级可由下式来计算:牐犁畔鹊燃叮蕉态优先等

6、级×16+静态优先等级。牐犁畔鹊燃吨翟酱螅优先级越低。可以看出,动态优先级起决定作用。牐犜跹实现优先级动态可调呢?首先简要介绍macrostar中任务的四个状态:牐犘菝(dormant)——任务因调用睡眠函数、挂起函数或者等待内核同步对象而进入休眠态;牐牭却(waiting)——任务因等待消息或者信号(勿与“信标”、“信号量”相混淆)而进入等待态;牐牼托(ready)——任务运行的条件都已俱备,只等被调度,称为就绪态,亦称可调度态;牐犜诵(running)——任务正在使用处理器的资源,称为运行态。牐犝庑┳刺都是用标志位来实现的。16个静态优先级对应的任务的某一状态刚好可用一个16位的二进制数来

7、标识。休眠态用os_slpstate来表示,从高位算起,第n位为0表示静态优先级为n的任务处于休眠态。等待态是依据“事件驱动”观念而专为消息和信号而设计的,用os_rdyhstate和os_rdystate两个16位的变量来记录。只有当os_rdyhstate和os_rdystate的第n位均为0时,才表示静态优先级为n的任务处于等待态。如果任务处于非等待状态,意味着任务已在处理事件或者有事件要处

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。