最新-嵌入式实时系统中的优先级反转问题-精品4页_第1页
最新-嵌入式实时系统中的优先级反转问题-精品4页_第2页
最新-嵌入式实时系统中的优先级反转问题-精品4页_第3页
最新-嵌入式实时系统中的优先级反转问题-精品4页_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式实时系统中的优先级反转问题摘要嵌入式实时系统中由于多任务共享资源,通常会出现一些奇怪的现象。本文就什么是优先级反转及其产生原因进行分析,并提出2个行之有效的解决方案。关键词嵌入式实时系统多任务信号量优先级反转1问题的提出目前,市场上占有率比较高的商业有、,、等。这些为数众多的绝大多数都是多任务实时微内核的结构,采用的是基于优先级的可抢占式调度策略。系统为每一个任务分配一个优先权,调度程序保证当前运行的进程是优先权最高的进程。但是,有时候会出现一种比较奇怪的现象由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是

2、所谓的优先级反转。2优先级反转普遍具有2个特点实时性和多任务。实时是指系统的响应时间必须在规定的时间内,超出这个时间限制将会使系统出现致命的错误;同时,实时性还要求对时间要求非常急迫的任务要先于对时间不是很紧急的任务执行。正是由于这2个原因,的进程调度普遍采用的是基于优先级的可抢占式的调度策略。多任务是嵌入式系统的内在要求。如今的嵌入式系统普遍要求具有多任务并发执行的能力,因此中也必须提供多任务并发执行的支持。由于多任务并发,必然会导致多个任务共享资源。如有2个任务1和2并发执行,都需要向打印机输出结果。由于只有1台打印机,所以在某个时间段内只能有1个任务,如1占有打印机并向打印机输出,而这时

3、另一个任务2处于等待状态。当1输出完毕后,2由等待转为就绪,当再次调度它时,方可占有打印机向打印机输出。试想如果不采取这种方式,不对打印机这种共享资源加以控制,而让1和2同时向打印机输出,这时候打印机打印的结果谁也看不懂,是一堆乱七八糟的东西。因此,大多数的采用了一种称作信号量的机制来实现对共享资源的管理。任何一个想使用临界资源如打印机等共享资源的进程在进入临界区如1或2中访问临界资源的代码之前必须拥有使用临界资源的信号量,否则不可以执行临界区代码。假设系统中有3个任务,分别为1、2和3。1的优先权高于2,而2的优先权高于3。恰在此时1和2因某种原因被阻塞,这时候系统调度3执行。3执行一段时间

4、后,1被唤醒。由于采取的是的调度策略,因此1抢占3的,1执行。1执行一段时间后要进入临界区,但此时3占有此临界资源的信号量。因此1被阻塞,处于等待状态,等待3释放此信号量。经过这么一段时间后,2此时此刻处于就绪状态。因此系统调度2执行。如果3在2的执行期间一直没有能够被调度执行的话,那1和3将一直等到2执行完后才能执行,1更要等到3释放它所把持的信号量才能执行;而这段时间完全有可能超出1的,使得1崩溃。当系统看到有高优先级的任务崩溃时候,系统认为此时有重大事故发生,为了挽救系统,看门狗电路起作用,系统可能被自动复位。从上面的分析可以看到,导致系统崩溃的原因是由于优先级高的任务1要获取被低优先级

5、任务2占有的临界资源而被2阻塞,而具有中优先级的任务2抢占3的,从而导致2先于1执行。这时候系统便出现了优先级反转的情况,如图1所示。3优先级反转的解决方法目前解决优先级反转有许多种方法。其中普遍使用的有2种方法一种被称作优先级继承;另一种被称作优先级极限。在优先级继承方案中,当高优先级任务在等待低优先级的任务占有的信号量时,让低优先级任务继承高优先级任务的优先级,即把低优先级任务的优先权提高到高优先级任务的优先级;当低优先级任务释放高优先级任务等待的信号量时,立即把其优先权降低到原来的优先权。采用这种方法可以有效地解决上面所述的优先权反转的问题。当高优先级任务1想要进入临界区时,由于低优先级

6、任务3占有这个临界资源的信号量,导致1被阻塞。这时候,系统把3的优先权升到1的优先权,此时优先权处于1和3之间的任务2,即使处于就绪状态也不可以被调度执行,因为此时3的优先权已经高于2,所以3此时被调度执行。当3释放1需要的信号量时,系统立即把3的优先权降到原来的高度,来保证1和2正常有序执行。整个情况如图2所示。目前,有许多是采用这种方法来防止优先级反转的,如大家比较熟悉的业界有名的公司的。在优先权极限方案中,系统把每一个临界资源与1个极限优先权相联系。这个极限优先权等于系统此时最高优先权加1。当1个任务进入临界区时,系统便把这个极限优先权传递给这个任务,使得这个任务的优先权最高;当这个任务退出临界区后,系统立即把它的优先权恢复正常,从而保证系统不会出现优先权反转的情况。如上例中,当3进入临界区时,立即把它的优先权升高到极限优先权,保证3此时能尽快退出临界区,进而释放其占有的信号量。当高优先级任务1执行的时候就不会出现其等待低优先级任务3释放信号量而被阻塞的情况,从而保证不会出现上面所说的优先级反转。采用这种方案的另一个有利之处,是仅仅通过改变某个临界资源的优先级就可以使多个任务共享这个临界资源,如下所示。_;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论