μCOS-Ⅱ内核任务调度实现.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
µC/OS- Ⅱ内核任务调度的实现 赵二涛,杨春金 武汉理工大学信息工程学院,武汉(430063 ) E-mail:logo10497@163.com 摘 要:任务调度是一个实时操作系统的核心功能,关系到整个操作系统的性能。µC /OS- Ⅱ 内核采用占先式调度方式,保证最高优先级任务一旦进入就绪态,就能立刻得到CPU的使用 权。本文结合µC /OS- Ⅱ内核源代码深入研究就绪态中最高优先级查找算法和任务调度原理 并给出实例加以分析。 关键词:嵌入式实时操作系统,µC /OS- Ⅱ,任务调度,就绪表,优先级 中图分类号:TP316.2 1. 引言 µC /OS- Ⅱ是一个完整的,可移植、可固化、可剪裁的嵌入式实时操作系统。它采用占 先式调度方式,即最高优先级的任务一旦就绪,总能立刻得到CPU 的使用权,从而保证系 统的实时性。 在任务调度的过程中,µC /OS- Ⅱ内核能快速、准确的从众多的就绪态任务中找出优先 级最高的任务,减少系统的响应时间,保证系统的实时性。本文首先介绍与任务有关的概念 和有关任务调度重要的域,接着详细分析µC /OS- Ⅱ的最高优先级查找算法和任务调度原理 并结合实例加以说明。在分析最高优先级查找算法时首先分析将任务置于就绪态的过程,这 样更易于理解内核的查找算法。 2. µC/OS- Ⅱ的任务调度 2.1 µC /OS- Ⅱ的任务 2.1.1 任务及任务状态 任务,也称线程,是一个简单的应用程序。每个任务都被赋予一定的优先级,并有自己 的一套CPU 寄存器和栈空间[1] 。实时应用程序的设计过程是如何把问题分割成多个任务。 每个任务都是一个无限的循环,都处在以下五种状态之一,即休眠态、就绪态、运行态、 挂起态和被中断态。1)休眠态:相当于任务驻留在内存中,但并不能被多任务内核所调度; 2 )就绪态:意味着任务已经准备好,可以运行,但由于该任务的优先级比正在运行的任务 的优先级低,还暂时不能运行;3 )运行态:指任务掌握了CPU的使用权,正在运行中;4 ) 挂起态:指任务在等待,等待某一事件的发生;5 )被中断态:指发生中断时,CPU提供相 应的中断服务,原来正在运行的任务暂不能运行,就进入了中断态。 2.1.2 任务控制块(OS_TCB ) 任务控制块是一个和任务息息相关的重要的结构体。当任务的CPU使用权被剥夺时,µC /OS- Ⅱ用它来保存该任务的状态。当任务重新获得CPU的使用权时,任务控制块能确保任务 从被中断的那一点丝毫不差的继续执行[2] 。每个任务都拥有自己独立的任务控制块,一旦任 务建立,与之相对应的任务控制块就被赋值。 任务控制块结构体在uCOS_II.H 中定义,以下代码是节选OS_TCB中对本文分析相关的 进构体成员。 // File : uCOS_II.H - 1 - typedef struct os_tcb { OS_STK *OSTCBStkPtr; /* 当前任务的栈顶指针 */ … INT8U OSTCBPrio; INT8U OSTCBX; INT8U OSTCBY; INT8U OSTCBBitX; INT8U OSTCBBitY; … } OS_TCB; OSTCBStkPtr 是当前任务的栈顶指针,每个任务都有自己的堆栈和指向栈顶指针。在上 下文切换时,对于优先级低的任务,要将任务当前状态保存于任务堆栈中(以便以后再次调 度到此任务继续执行),然后 OSTCBStkPtr 指向栈顶;对于优先级高的任务,通过 OSTCBStkPtr 找到任务的上次被切换时的状态,把保存的状态恢复到 CPU,这样任务就毫 无差错的继续执行。 OSTCBPrio 是任务的优先级号。OSTCBX,OSTCBBitX,OSTCBY,OSTCBBitY 用于 加速任务进入就绪态的过程或等

文档评论(0)

nnh91 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档