- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uCOS操作系统内部交流
μC/OS-II 操作系统内部交流 μC/OS-II内核结构 还是接着上面的例子,系统中存在两个任务,优先级分别为20、43。观察其调度过程: 计算最高优先级代码: y = OSUnMapTbl[ OSRdyGrp ]; x = OSUnMapTbl[ OSRdyTbl [y] ]; OSPrioHighRdy = (INT8U)((y 3) + x); 根据前面假设的初始化结果,此时OSRdyGrp =36 =0x24 =; OSRdyTbl[2] = 0x10 ; OSRdyTbl[5] = 0x08 。 最高优先级计算结果: OSPrioHighRdy = 20 y = OSUnMapTbl[ OSRdyGrp ] = OSUnMapTbl[36] = 2 ; x = OSUnMapTbl[ OSRdyTbl [y] ] = OSUnMapTbl[OSRdyTbl [2] ]=OSUnMapTbl[0x10] = 4 ; OSPrioHighRdy = (INT8U)((y 3) + x) = (23)+4 = 0x14 = 20; OSUnMapTbl[]的作用与OSMapTbl[]相反,用于加快查找速度。其数字分布也有规律可循。 经典话题之一: μC/OS-II的任务调度实现 μC/OS-II 操作系统内部交流 μC/OS-II内核结构 任务调度算法是任何一个操作系统中最核心的代码,被执行的频率最高。相对于任务上下文切换代码的机械性,这段代码更能体现一个操作系统设计者的智慧水平。 μC/OS-II的任务调度算法是一个典型的用存储空间换取调度速度的例子。它巧妙地解决了,操作系统中需要高频繁运行的代码的执行速度问题。 用这个解决方案μC/OS-II实现了任务调度的时间与需要调度的任务数量没有关系的O(1)调度策略,提高了调度确定性。成就了μC/OS-II 成为强实时操作系统的目标。被其它操作系统广泛借鉴。 经典话题之一: μC/OS-II的任务调度实现 μC/OS-II 操作系统内部交流 μC/OS-II内核结构 经典话题之一: μC/OS-II的任务调度实现 提示:空间与时间的取舍建议! 在编程实践中,牺牲空间的目的是节约时间。对于那些牺牲了空间也换不来时间的描述,可以进行压缩。特别对于全局变量,可以巧用bit描述,能8位的别用16位,能16位的别用32位,缩小空间占用。 形象的说:“可以根据具体场景,参考寄存器的设计理念,规划全局变量”。 如何把握任务切换时间与代码存储空间需求量的矛盾呢? 提示: DSP编程中要注意字节边界处理问题! DSP CCS编译环境中在字节边界处理相关上和ISO C标准不兼容 !!! 例如:在DSP c6000中,下面的结构体占用存储区8字节,如需要让它占用7字节,目前还办不到。而在其它32位系统上这可以通过类似“#pragma pack(8) PC中”或“__attribute__((packed)) ARM中”这样的命令实现。 struct testA { unsigned char is8Bit; unsigned int short is16Bit; unsigned int is32Bit; } 类似的问题在指针转换中还会暴露出来! μC/OS-II 操作系统内部交流 μC/OS-II内核结构 一:μC/OS-II的任务调度实现 二:关于优先级反转的问题 两个经典话题 μC/OS-II 操作系统内部交流 μC/OS-II内核结构 优先级反转问题的产生:多个用户任务使用了同一个互斥信号量不当引起的结果。如: ◆多个用户任务(A、B、C),其优先级分别为(10、20、30), ABC; ◆ A、C使用了同一个互斥信号量; ◆ C先占有,然后CPU执行权被A剥夺,但A得不到互斥信号量; ◆ A自我挂起。但新的任务调度导致B开始执行; ◆结果优先级低的任务B先于高优先级任务A完成。即优先级发生反转。 经典话题之二:再议优先级反转的问题 μC/OS-II 操作系统内部交流 μC/OS-II内核结构 经典话题之二:再议优先级反转的问题 μC/OS-II 操作系统内部交流 μC/OS-II内核结构 优先级反转的解决方案: 优先级继承:当场景发生时,将低互斥信号量占用任务的优先级,提高至当前任务优先级上一级。如VxWorks。 优先级置顶:一旦发现已经有任务占用了互斥信号量,其优先级马上置顶到预定义的优先级(或者叫天花板ceiling)
您可能关注的文档
最近下载
- 四年级数学上册(人教版)周周练(附答案).pdf VIP
- 水利工程软件:MIKE二次开发_(4).MIKE11模块介绍.docx VIP
- UL1557标准中文版-2018半导体UL中文版标准.docx
- 国民经济行业分类 .pdf VIP
- 7-中国石化动土作业安全管理规定(中国石化制〔2022〕14 号).pdf VIP
- 富平县林业发展十五五规划定稿2.docx
- 2023届高考地理二轮复习课件微专题3大气的水平运动——风.pptx VIP
- 领导干部政治理论考试100题及答案.doc VIP
- 人教B版高中数学选择性必修第一册1-1-1空间向量及其运算课件.ppt VIP
- 慢性心力衰竭及药物治疗.pptx VIP
文档评论(0)