- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式操作系统内核原理和开发(优先级的修改)
嵌入式操作系统内核原理和开发(优先级的修改) 之前在和rawos作者的闲聊中,rawos作者认为实时操作系统中最大的特色就是互斥量的问题。一开始,我对这个看法其实是有保留意见的,直到我看到了修改优先级的相关代码,才开始对作者的看法有了很大的认同感。实话说,在嵌入式实时系统中修改优先级是一个很复杂的事情,为什么呢,因为这其中涉及到了互斥量的问题。我们大家都知道,在嵌入式系统中优先级反转是一个绕不去的砍。低优先级的任务因为获得了互斥量因而比高优先级的任务获得了更多的运行机会,这从根本上违背了实时系统设计的初衷。所以,人们为了解决除了这一问题,提出了优先级互斥量和优先级继承两种方法。 优先级互斥量的办法比较简单,ucos也是这么做的。我们在分配一个互斥量的时候,也给这个互斥量分配一定的优先级。任何获得该互斥量的任务都会把自己的优先级修改为互斥量的优先级,这样保证了获得该优先级的任务可以在最短的时间内完成,尽快释放资源。但是,这也会导致一个问题,那就是该互斥量需要占用一个优先级,而且比此优先级高的任务也没办法获得该互斥量。另外一种方法就是优先级继承的方法,简单一点说就是任何对阻塞线程优先级的修改,都会导致拥有此互斥量的任务进行优先级的修改。闲话不多说,我们看看rawos上面的代码是怎么描述的, [cpp] view plaincopy RAW_U16 raw_task_priority_change (RAW_TASK_OBJ *task_ptr, RAW_U8 new_priority, RAW_U8 *old_priority) { RAW_U8 ret_pri; RAW_U16 error; RAW_SR_ALLOC(); #if (RAW_TASK_FUNCTION_CHECK 0) if (task_ptr == 0) { return RAW_NULL_OBJECT; } if (old_priority == 0) { return RAW_NULL_OBJECT; } #endif /*Idle task is not allowed to change priority*/ if (task_ptr-priority = IDLE_PRIORITY) { return RAW_CHANGE_PRIORITY_NOT_ALLOWED; } /*Not allowed change to idle priority*/ if (new_priority == IDLE_PRIORITY) { return RAW_CHANGE_PRIORITY_NOT_ALLOWED; } RAW_CRITICAL_ENTER(); #if (CONFIG_RAW_MUTEX 0) ret_pri = chg_pri_mutex(task_ptr, new_priority, error); if (error != RAW_SUCCESS) { goto error_exit; } task_ptr-bpriority = new_priority; new_priority = ret_pri; #else task_ptr-bpriority = new_priority; #endif *old_priority = task_ptr-priority; error = change_interal_task_priority(task_ptr, new_priority); if (error != RAW_SUCCESS) { goto error_exit; } RAW_CRITICAL_EXIT(); do_possible_sche(); return RAW_SUCCESS;
您可能关注的文档
最近下载
- 中式烹调师高级工理论知识练习题库(附参考答案).docx
- 中央厨房卫生规范与管理指南.docx VIP
- 2025年人工智能工程师(高级)题库.docx VIP
- 社会团体成立登记表.docx
- MITSUBISHI三菱MDS-EM EMH系列规格说明书.pdf
- 高血压科普健康宣教ppt课件.pptx VIP
- 2025入党积极分子发展对象考试题库(含答案).pdf VIP
- YD-T 4244-2023电信网和互联网数据分类分级技术要求与测试方法.pdf VIP
- 2025年新版成人考试模拟真题及答案.doc VIP
- 0523S01019-理解当代中国:汉英翻译-2023版人才培养方案课程教学大纲.docx VIP
文档评论(0)