- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实时系统优先级反转的研究
实时系统优先级反转的研究
摘要:在实时多任务操作系统中,由于外部事件需要有快速的反应能力,选择一种合适的任务调度算法非常重要。如果多个任务访问共享资源时,可能会导致优先级的反转问题。对此给出了目前经常采用的两种解决此问题的方法。分析了它们可能存在的不足,重点分析了优先级继承,并对它作了进一步改进。通过测试证明,该方法行之有效。
关键词: 实时系统; 调度算法; 信号量; 优先级反转; 优先级继承
中图分类号:TP316.2文献标志码:A
文章编号:1001-3695(2008)06-1728-03
实时系统与其他系统之间的最大不同之处就是要满足处理与时间的关系。在实时计算中,系统的正确性不仅仅依赖于计算结果的正确性而且还依赖于计算结果产生的时间。对于实时系统来说,最重要的要求就是实时系统必须有满足在一个事先定好的时间限制中对外部或内部的事件进行响应和处理的能力。因此,一种合适的任务调度算法对于实时多任务系统的这种要求就显得非常重要。典型的调度算法有优先级抢占调度、时间片轮转调度等[1~3]。多任务系统将信号量机制作为一种普通的方式来控制共享资源。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量;一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到信号量,也不能使用该资源,这也将会导致优先级的反转[4] 。针对这个问题,目前比较有效的解决方法是采用优先级置顶协议和优先级继承协议。??
1优先级反转及解决方法??
1.1优先级反转问题分析??
对于可抢占的实时内核,一般高优先级的任务应该能够从初始化开始就抢占较低优先级的任务立即执行。优先级反转是指一个任务等待比它优先级低的任务释放资源而被阻塞,如果这时有中等优先级的就绪任务,阻塞会进一步恶化,甚至超过了任务的最后期限。这种情况通常产生在两个任务同时要访问共享资源时,直接导致了不确定的优先级反转时间和系统可调度性的降低,从而严重危害了系统的实时性能[6]。??
图1为优先级反转的示意图。在t1、t2、t3三个任务中,它们的优先级顺序是t1t2t3,t3通过得到分配的信号量已经获得一些资源。当t1抢占t3,并且为满足得到相同信号量的资源时,t1就会被阻塞。如果要确保t1不会被长时间阻塞,由于资源是不能被抢占的,通常要等t3的资源用完后t1才能得到信号量。然而,低优先级任务抢占较高优
先级任务(如t2)时,较高优先级任务能够放弃资源而使t3禁止,这也使低优先级任务容易受损。这种情况可以断定:可以无限期地阻塞t1。假如在实际系统中,t1任务是显示报警信息,那么这种被长时间阻塞的情况无疑是致命的。??
上述现象中,优先级高的任务要等优先级低的任务运行完之后才能被调度。如果优先级低的任务执行的是很费时的操作,显然优先级高的任务被调度的时机就不能得到保证,整个实时调度的性能就很差了。??
1.2优先级反转的解决方法??
目前解决优先级反转问题主要有两种方案:??
a)优先级置顶协议。把系统中每一个临界资源与一个优先级上限相联系,当一个任务进入临界区时,系统把这个优先级上限传递给这个任务,使得该任务的优先级最高,以完成任务。这样每一个资源都会拥有一个叫priority ceiling的事先设计好的保留优先级。当高优先级的任务要求访问该资源时,如果这个资源已经被低优先级的任务占有,那么程序当中就把该低优先级任务临时提高到priority ceiling来,将低优先级的任务先完成。当这个任务退出临界区后系统立即将其优先级恢复正常,从而保证系统不会出现优先级反转。??
b)优先级继承协议。当一个任务阻塞一个或多个高优先级任务时,该任务便忽略自己的原始优先级分配而以它阻塞的所有任务的最高优先级执行临界区,使得该任务能尽快释放出优先级较高的任务所需要的资源。在退出临界区后,该任务再恢复原来的优先级。??
2优先级反转解决方法的技术改进??
2.1分析目前方法存在的不足??
在发生优先级反转的时候,利用优先级置顶协议的缺点是(回到图1优先级反转示意图):如果在任务t3申请信号量的时候,发现信号量已经被t1所占用,那么将执行优先级置顶协议,将任务t1临时提升到priority ceiling的优先级。假设目前存在一个任务t4,而t4的优先级高于t3,但是又比priority cei-ling要低,那么在t1的优先级提升到priority cei-ling后, t4已经就绪要求执行了。而这时由于t4的优先级比priority ceiling要低,t4不能执行,必须等待t1执行完
原创力文档


文档评论(0)