嵌入式实时系统中的优先级反转问题

嵌入式实时系统中的优先级反转问题

ID:24869661

大小:50.00 KB

页数:4页

时间:2018-11-16

嵌入式实时系统中的优先级反转问题_第1页
嵌入式实时系统中的优先级反转问题_第2页
嵌入式实时系统中的优先级反转问题_第3页
嵌入式实时系统中的优先级反转问题_第4页
资源描述:

《嵌入式实时系统中的优先级反转问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式实时系统中的优先级反转问题

2、第1lunal>关键词:嵌入式实时系统多任务信号量优先级反转1问题的提出  目前,市场上占有率比较高的商业RTOS有Vxaphore)的机制来实现对共享资源的管理。任何一个想使用临界资源(如打印机等共享资源)的进程在进入临界区(如task1或task2中访问临界资源的代码)之前必须拥有使用临界资源的信号量,否则不可以执行临界区代码。假设系统中有3个任务,分别为task1、task2和task3。task1的优先权高于task2,而task2的优先权高于task3。恰在此时task

3、1和task2因某种原因被阻塞,这时候系统调度task3执行。task3执行一段时间后,task1被唤醒。由于采取的是PBP的调度策略,因此task1抢占task3的CPU,task1执行。task1执行一段时间后要进入临界区,但此时task3占有此临界资源的信号量。因此task1被阻塞,处于等待状态,等待task3释放此信号量。经过这么一段时间后,task2此时此刻处于就绪状态。因此系统调度task2执行。如果task3在task2的执行期间一直没有能够被调度执行的话,那task1和task3将一直等到task

4、2执行完后才能执行,task1更要等到task3释放它所把持的信号量才能执行;而这段时间完全有可能超出task1的Deadline,使得task1崩溃。当系统看到有高优先级的任务崩溃时候,系统认为此时有重大事故发生,为了挽救系统,看门狗电路起作用,系统可能被自动复位。从上面的分析可以看到,导致系统崩溃的原因是由于优先级高的任务task1要获取被低优先级任务task2占有的临界资源而被task2阻塞,而具有中优先级的任务task2抢占task3的CPU,从而导致task2先于task1执行。这时候系统便出现了优先级

5、反转的情况,如图1所示。3优先级反转的解决方法  目前解决优先级反转有许多种方法。其中普遍使用的有2种方法:一种被称作优先级继承(priorityinheritance);另一种被称作优先级极限(priorityceilings)。  在优先级继承方案中,当高优先级任务在等待低优先级的任务占有的信号量时,让低优先级任务继承高优先级任务的优先级,即把低优先级任务的优先权提高到高优先级任务的优先级;当低优先级任务释放高优先级任务等待的信号量时,立即把其优先权降低到原来的优先权。采用这种方法可以有效地解决上面所述的优先

6、权反转的问题。当高优先级任务task1想要进入临界区时,由于低优先级任务task3占有这个临界资源的信号量,导致task1被阻塞。这时候,系统把task3的优先权升到task1的优先权,此时优先权处于task1和task3之间的任务task2,即使处于就绪状态也不可以被调度执行,因为此时task3的优先权已经高于task2,所以task3此时被调度执行。当task3释放task1需要的信号量时,系统立即把task3的优先权降到原来的高度,来保证task1和task2正常有序执行。整个情况如图2所示。目前,有许多R

7、TOS是采用这种方法来防止优先级反转的,如大家比较熟悉的业界有名的WindRiver公司的VXWORKS。  在优先权极限方案中,系统把每一个临界资源与1个极限优先权相联系。这个极限优先权等于系统此时最高优先权加1。当1个任务进入临界区时,系统便把这个极限优先权传递给这个任务,使得这个任务的优先权最高;当这个任务退出临界区后,系统立即把它的优先权恢复正常,从而保证系统不会出现优先权反转的情况。如上例中,当task3进入临界区时,立即把它的优先权升高到极限优先权,保证task3此时能尽快退出临界区,进而释放其占有的

8、信号量。当高优先级任务task1执行的时候就不会出现其等待低优先级任务task3释放信号量而被阻塞的情况,从而保证不会出现上面所说的优先级反转。采用这种方案的另一个有利之处,是仅仅通过改变某个临界资源的优先级就可以使多个任务共享这个临界资源,如下所示。voidTaskA(void){...SetTaskPriority(RES_X_PRIO);//访问共享资源X.SetTaskPriority(TASK_A_PRIO);...}  以上就RTOS中优先级反转问题出现的原因以及解决方法进行了详细的说明。21世纪将是

9、嵌入式系统的时代。从事嵌入式系统设计的人员深入了解RTOS的原理和内部潜在的问题,如优先级反转等,将有助于开发出更加可靠的产品。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。