- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
μCOS-II下任务调度的实验方法
μC/OS-II下任务调度的实验方法
作者姓名:指导教师:。本文对的任务调度μC/OS-II下的任务调度,内核基于优先级的抢占式调度算法关键词:;
1引言
μC/OS-II是一个完整的,可移植,可固化,可剪裁的嵌入式实时操作系统。它采用占先式调度方式,即最高优先级的任务一旦就绪,总能立刻得到CPU的使用权,从而保证系统的实时性。
在任务调度过程中,μC/OS-II内核能快速、准确的从众多的就绪态任务中找出优先级最高的任务,减少系统的响应时间,保证系统的实时性。本文μC/OS-II的最高优先级查找算法和任务调度原理并结合实例加以说明。在分析最高优先级查找算法时首先分析将任务置于就绪态的过程,这样更抑郁理解内核的查找。接着讨论为实时操作系统μC/OS-II下的结果μC/OS-II的最高优先级查找算法和任务调度原理并结合实例加以说明。在分析最高优先级查找算法时首先分析将任务置于就绪态的过程,这样更抑郁理解内核的查找。接着讨论为实时操作系统μC/OS-II下的结果。
4.1.1任务及其任务状态
任务,也称线程,是一个简单的应用程序,每个任务都是被赋予一定的优先级,并有自己的一套CPU寄存器和栈空间。实时应用程序的设计过程是如何把问题分割成多个任务。每个任务都是一个无限的循环,都处在一下五种状态之一,即休眠态,就绪态,运行态,挂起态和被中断态。
休眠态:相当于任务驻留在内存中,但并不能被多任务内核所调度;
就绪态:意味着任务已经准备好,可以运行,但是由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行;
运行态:指任务掌握了CPU的使用权,正在运行中;
挂起太:指任务在等待,等待某一事件的发生;
被中断态:指发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂时不能运行,就进入了中断态。
4.1.2任务控制块(OS_TCB)Typedef struts os_tcb{
OS_STK OSTCBStkPtr;
...
INT8U OSTCBPrio;
INT8U OSTCBX;
INT8U OSTCBY;
INT8U OSTCBBitX;
INT8U OSTCBBitY;
...
}OS_TCB;
OSTCBStkPtr是当前任务的栈顶指针,每个任务都有自己的堆栈和指向栈顶指针。在上下文切换时,对于优先级的任务,要将任务当前状态保存于任务堆栈中(以便以后再次调度到此任务继续执行),然后OSTCBStkPtr指向栈顶;对于优先级高的任务,通过OSTCBStrPtr找到任务的上次被切换是的状态,把保存的状态恢复到CPU,这样任务就毫无差错的继续执行。
OSTCBPrio是任务的优先级号。OSTCBX,OSTCBBitX,OSTCBY,OSTCBBitY用于加速任务进入就绪态的过程或等待事件发生状态的过程,这些值在任务建立时调用OS_TCBInit进行赋值。
4.2 μC/OS-II最高优先级查找算法
在μC/OS-II中,每个就绪的任务都是放在就绪表(ready list)中,内核通过就绪表找到就绪太最高优先级的任务让其占用CPU,进入运行态。
μC/OS-II中最多运行任务是64哥,内核把任务优先级分组,八个为一组,如图1所示。任务优先级号中Y 是所属组部分,X 是所在组部分,在就绪表中有2 个变量OSRdyGrp和OSRdyTbl[ ],OSRdyGrp 表示所属组,每一位代表一个组内是否有进入就绪态的任务,OSRdyTbl[ ]表示所在组,一组八个任务,即一位代表一个任务是否进入就绪态。当任务进入就绪态时,就绪表OSRdyGrp 和OSRdyTbl[ ]相应位置1。OSRdyGrp 和OSRdyTbl[ ]之间的关系见图1,OSRdyGrp 的第n 位对应OSRdyTbl[ n ],即OSRdyTbl[ n ]中任何一位是1时,OSRdyGrp 的第n 位要置1。
任务创建成功后被置于就绪态,这里就以任务被创建时为例来说明内核是如何把任务置于就绪态。首先,建立任务,调用函数OSTaskCreat( )或OStaskCreatExt( ),OSTaskCreat( )和OStaskCreatExt( )都将调用OS_TCBInit( )来初始化任务控制块,函数OS_TCBInit( )完成将任务优先级放就绪表中,使任务置于就绪态,函数OS_TCBInit( )中有关将任务优先级放就绪表的部分如下所示
// File : OS_CORE.C
INT8U OS_TCBInit(INT8U prio,...){
…
OS_TCB* ptcb;
…
/* 初始化OS_TCB 中OSTCBX,OSTCBBitX, OSTCBY,OSTCBBitY */
ptcb-OSTCBY=
您可能关注的文档
- UG课程设计说明书-台灯底座.doc
- UPSU-Cooling-rib零件的加工工艺分析.doc
- U型制件冲压工艺及模具设计 .doc
- U形弯曲件的冲压模具设计.doc
- VB6.0+Access图书管理系统.doc
- VB6.0学生信息管理系统设计.doc
- VB6.0学生档案管理系统的设计与实现.doc
- VB6.0企业工资管理系统设计.doc
- VB6.0学生缴费注册系统的开发设计.doc
- VB6.0家庭财务管理系统.doc
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
最近下载
- 公司绿化养护方案.pdf VIP
- 《农村公路技术状况评定标准》(JTG 5211—2024) .pdf VIP
- 患者跌倒、坠床的应急预案和处置流程.pptx VIP
- 事业单位考试职业能力倾向测验(医疗卫生类E类)试题及解答参考(2024年).docx VIP
- 第18讲 电容器 带电粒子在电场中的运动(学生版) 2025届高考物理一轮复习考点精讲精练(全国通用).pdf VIP
- 2023微细气泡技术 超细气泡水分散体系的存储和运输.pdf VIP
- 广西充电站可行性研究报告.docx VIP
- 中药材 黄芪 第1部分:种子种苗繁育技术规程.docx VIP
- 2025《期末模拟练习》语文八上-试卷.pdf VIP
- 高盛“最惊艳的中国制造业分析”报告.docx
文档评论(0)