- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式实时系统中的优先级反转问题-Read.doc
嵌入式实时系统中的优先级反转问题 作 者: 中国矿业大学 刘辉 孟凡荣 席景科
摘 要: 嵌入式实时系统中由于多任务共享资源,通常会出现一些奇怪的现象。本文就什么是优先级反转及其产生原因进行分析,并提出2个行之有效的解决方案。
关键词: 嵌入式实时系统 多任务 信号量 优先级反转1 问题的提出 目前,市场上占有率比较高的商业RTOS有VxWorks/PSOS、QNX、 LynxOS、VRTX,、Windows CE等。这些为数众多的RTOS绝大多数都是多任务实时微内核的结构,采用的是基于优先级的可抢占式调度策略。系统为每一个任务分配一个优先权,调度程序保证当前运行的进程是优先权最高的进程。但是,有时候会出现一种比较奇怪的现象:由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。2 优先级反转 RTOS普遍具有2个特点:实时性和多任务。实时是指系统的响应时间必须在规定的时间内,超出这个时间限制将会使系统出现致命的错误;同时,实时性还要求对时间要求非常急迫的任务要先于对时间不是很紧急的任务执行。正是由于这2个原因,RTOS的进程调度普遍采用的是基于优先级的可抢占式PBP(Priority Based Preemptive)的调度策略。多任务是嵌入式系统的内在要求。如今的嵌入式系统普遍要求具有多任务并发执行的能力,因此RTOS中也必须提供多任务并发执行的支持。由于多任务并发,必然会导致多个任务共享资源。如有2个任务task1和task2并发执行,都需要向打印机输出结果。由于只有1台打印机,所以在某个时间段内只能有1个任务,如task1占有打印机并向打印机输出,而这时另一个任务task2处于等待状态。当task1输出完毕后,task2由等待转为就绪,当RTOS再次调度它时,方可占有打印机向打印机输出。试想如果不采取这种方式,不对打印机这种共享资源加以控制,而让task1和task2同时向打印机输出,这时候打印机打印的结果谁也看不懂,是一堆乱七八糟的东西。因此,大多数的RTOS采用了一种称作信号量(semaphore)的机制来实现对共享资源的管理。任何一个想使用临界资源(如打印机等共享资源)的进程在进入临界区(如task1或task2中访问临界资源的代码)之前必须拥有使用临界资源的信号量,否则不可以执行临界区代码。假设系统中有3个任务,分别为task1、task2和task3。task1的优先权高于task2,而task2的优先权高于task3。恰在此时task1和task2 因某种原因被阻塞,这时候系统调度task3执行。task3执行一段时间后,task1被唤醒。由于采取的是PBP的调度策略,因此task1抢占task3的CPU, task1执行。task1执行一段时间后要进入临界区,但此时task3占有此临界资源的信号量。因此task1被阻塞,处于等待状态,等待task3释放此信号量。经过这么一段时间后,task2此时此刻处于就绪状态。因此系统调度task2执行。如果task3在task2的执行期间一直没有能够被调度执行的话,那task1和task3将一直等到task2执行完后才能执行,task1更要等到task3释放它所把持的信号量才能执行;而这段时间完全有可能超出task1的Deadline,使得task1崩溃。当系统看到有高优先级的任务崩溃时候,系统认为此时有重大事故发生,为了挽救系统,看门狗电路起作用,系统可能被自动复位。从上面的分析可以看到,导致系统崩溃的原因是由于优先级高的任务task1要获取被低优先级任务task2占有的临界资源而被task2阻塞,而具有中优先级的任务task2抢占task3的CPU,从而导致task2先于task1执行。这时候系统便出现了优先级反转的情况,如图1所示。
① task3就绪;② task1就绪,系统调度taskk1执行;③ task1因等待task3占有的信号量而被阻塞,此时恰好task2就绪,系统调度task2执行;④ task2结束,由于task3仍然占有task1需要的信号量,因此系统调度task3执行;⑤ task3释放占有的信号量,task1得到需要的信号量而再次被调度执行;⑥ task1结束;⑦ task3结束。
图1 优先级反转示意图
3 优先级反转的解决方法 目前解决优先级反转有许多种方法。其中普遍使用的有2种方法:一种被称作优先级继承(priority inheritance);另一种被称作优先级极限(priority ceilings)。 在优先级继承方案中,当高优先级任务在等待低
您可能关注的文档
最近下载
- 2025版土建水电预埋安装施工合同.docx VIP
- 2024年张家界航空工业职业技术学院单招职业技能测试题库(综合卷).docx VIP
- 500强企业表格模板原料进厂检验记录表(二).doc VIP
- 场内交通呢安全管理制度.pdf VIP
- GB50208-2011 地下防水工程质量验收规范.docx VIP
- (正式版)G-B 5768.3-2009 道路交通标志和标线 第3部分:道路交通标线.docx VIP
- 国有林场森林防火道路设计方案.docx
- D702-1~3:常用低压配电设备及灯具安装(2004年合订本).pdf VIP
- 初级经济师经济基础教材知识点.pdf VIP
- 最全的《国际医学会议交际英语(首都医科大学)》单元测试试题及考核答案.docx VIP
文档评论(0)