- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统操作系统 吴国伟 wgwdut@dlut.edu.cn 大连理工大学软件学院 第三章 任务管理 3.2 多任务 多任务运行的实现实际上是靠CPU在许多任务之间转换,调度实现的。 多任务运行是CPU利用率得到最大的发挥,并使应用程序模块化 在实际应用中,多任务化的最大特点是,可发人员可以将很复杂的应用程序层次化。 使用多任务,应用程序将更容易设计与维护 3.2.1任务优先权及优先级别 当有多个任务需要运行时,操作系统必须在这些待运行任务中选择一个来运行。 uC/OS-II采用了按优先级抢占式规则 系统中每个任务都按照其任务的重要性分配有一个唯一的优先级别 优先级别高的任务先运行,优先级别低的任务后运行 uC/OS-II最多可创建64个任务,任务优先级别最多64级,用整数表示,0,1,2...,63.数字越小,优先级越高 uC/OS-II系统配置文件OS_CFG.H中定义了LOWEST_PRIO:定义了一个用来表示最低优先级别的常数 系统总是把最低优先级LOWEST_PRIO赋给空闲任务 如果应用程序中使用了统计任务,系统会将OS_LOWEST_PRIO-1自动赋给统计任务 用户任务可以使用优先级从0~OS_LOWEST_PRIO-2 用户任务的优先级要由用户在创建一个任务时显示地定义 3.2.2可剥夺型内核 uC/OS-II属于可剥夺型内核 总是让就绪态的高优先级的任务先运行 中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务) 任务级响应时间得到了最优化,且是可知的 应用程序不应直接使用不可重入型函数 3.2.3 任务就绪表 uC/OS-II用一个就绪任务登记表,记录系统中所有处于就绪状态的任务 uC/OS-II中这个登记表就是一个位图,每个任务在这个位图中占据一个二进制位 该位置的状态(1/0)就表示任务是否处于就绪状态 是一个类型为INT8U的数组OSRdyTbl[] 在就绪表中以任务优先级别(也是任务的标识)的高低,为每个任务安排了一个二进制位,并规定该位的值为1表示对应的任务处于就绪状态 为了便于对就绪表的查找uC/OS-II定义了一个数据类型为INT8U的变量OSRdyGrp,并使该变量的每一个位都对应OSRdyTbl[]的一个任务组 如果某任务组中有任务就绪,则变量OSRdyGrp里把该任务组所对应的位置为1;否则置为0 由于优先级别是一个单字节的数字,而其其最大值不会超过63,即二进制形式因此,可以把优先级别看成是一个6位的二进制数,这样就可以用高3位来指明变量OSRdyGrp的具体数据位,并用来确定就绪表数据元素的下标。用低3位来表明该数组元素具体数据位 对任务就绪表的操作 系统对于就绪表的主要有三个操作:登记,注销和从就绪表的就绪任务中得知具有最高优先级任务的标识 1.登记:当某个任务处于就绪态时,系统就将该任务登记在任务就绪表中,即在就绪表中将改任务的对应位置1. OSRdyGrp | =OSMapTbl[prio3]; OSRdyTbl[prio3] |=OSMapTbl[prio0x07]; 2.注销:当某个任务需要脱离就绪状态时,系统在就绪表中将该任务的对应位置0 if((OSRdyTbl[prio 3] -OSMapTbl[prio0x07])==0) OSRdyGrp=-OSMapTbl[prio 3]; 3.最高优先级就绪任务的查找 y=OSUnMapTal[OSRdyGrp]; //获得优先级别的高三位x=OSUnMapTal[OSRdyGrp[x]]; //获得低三位 prio=(y3)+x; //获得就绪任务的优先级别 OSUnMapTbl[]识uc/os为提高查找速度定义的一个数组,共有256个元素 根据就绪表确定最高优先级 通过OSRdyGrp值确定高3位,假设OSRdyGrp=0x08,对应OSRdyTbl[3],通过OSRdyTbl[3]的值来确定低3位,假设OSRdyTbl[3]=0x3a,最高优先级的任务为25 使任务进入就绪态 如果prio是任务优先级,也是任务的识别号,则将任务放入就绪表,即使任务进入就绪态的方法是: OSRdyGrp|=OSMapTbl[prio3]; OSRdyTbl[prio3] |=OSMapTbl[prio 0x07]; 假设优先级为12——1100b OSRdyGrp|=0x02; OSRdyTbl[1] |=0x10; 在这里我们要特别注意OSMapTbl[ ]的值 3.2.4 任务调度 在多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行任务切换的工作叫做任务的调度 uC/OS-II中,任务调度由调度器
您可能关注的文档
最近下载
- 叠合板专项施工方案--超危大.pdf VIP
- 4.1 观察物体(一)(课件)数学青岛五四版二年级上册(新教材).pptx VIP
- 【外研社Unipus】新探索研究生英语(基础级)读写教程U6课件_AE1.pptx VIP
- 横纹肌溶解症ppt课件.pptx VIP
- 职业生涯规划管理课件PPT.pptx VIP
- 22G101图集三维解读(现浇砼框架)2023年.pptx VIP
- 辽宁省学业水平测试近三年物理真题.docx
- 马克思劳动价值理论教案.docx VIP
- 汉语词性类(实词).ppt VIP
- ISO 9001(DIS)-2026《质量管理体系——要求》(含附录使用指南-中文版-雷泽佳译-2025年9月10日).pdf VIP
文档评论(0)