优先级反转问题及常见解决方案

上传人:夏** 文档编号:431597950 上传时间:2023-07-16 格式:DOC 页数:2 大小:66.54KB
返回 下载 相关 举报
优先级反转问题及常见解决方案_第1页
第1页 / 共2页
优先级反转问题及常见解决方案_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《优先级反转问题及常见解决方案》由会员分享,可在线阅读,更多相关《优先级反转问题及常见解决方案(2页珍藏版)》请在金锄头文库上搜索。

1、优先级反转问题及常见解决方案优先级反转分析一优先级反转优先级反转(Priority Inversion),是由于多任务共享资源,具有最高优先级的任务被低优先级任务祖册,反而使得具有中优先级的任务先于高优先级的任务执行,影响系统的实时性,甚至导致系统崩溃。具体说明如下:假设系统中有Task1、Task2、Task3三个任务,分别对应高、中、低三个优先级(如图1所示).某一时刻系统的状态如下:T1:Task1和Task2正在等待某一事件的发生,处于挂起状态,Task3正在执行.T2:Task1等待的事件发生,Task1剥夺Task3的CPU使用权开始执行,Task3被阻塞。T3:Task1执行到某

2、一时刻,需要申请Task3使用且还未释放的资源。则Task1挂起,Task3开始执行。T4:Task3执行过程中,Task2进入就绪态,剥夺Task3的CPU使用权开始执行。T5:Task2执行完,Task3开始执行T6:Task3执行完,释放资源,Task1开始执行。从上述过程中,可以看出Task1必须等待Task3执行完毕,释放资源之后才能得到该资源的使用权继续执行。这种情况下,Task1的优先级实际降到了Task3的优先级水平。在此过程中,处于中间优先级的Task2剥夺了Task3的CPU使用权,使Task1的状况恶化,即Task2使得Task1增加了额外的时间延迟,也就是Task1和T

3、ask2的优先级发生了反转。在更坏的情况下,如Task1和Task3之间有多个这样的“Task2”存在,这样的优先级反转问题可能会导致整个系统的崩溃.一些RTOS使用”优先级继承“解决这个问题:即在低优先级进程持有信号量,并且高优先级进程在等待该信号量时,将低优先级进程提高到与高优先级进程相同。二常见解决方案优先级继承和优先级天花板:如果任务之间由于有共享资源出现了竞争或者死锁,是会严重影响系统安全的.因此uCOS对共享资源提供了保护机制。一般情况下使用的是信号量方法.创建一个信号量并对他进行初始化,当一个任务需要使用一个共享资源时,他必须先申请得到这个信号量.在这个过程中即使有优先权更高的任

4、务进入了就绪态,因为无法得到信号量,也不能使用该资源。在uCOS中称为优先级反转。简单地说,就是高优先级任务必须等待低优先级任务的完成。优先级天花板策略(Priority ceilings): 优先级天花板是指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板) 。在上述例子中体现为当低优先级任务申请占有某资源时就将这个低优先级任务的优先级升为能访问该资源的所有任务中最高优先级任务的优先级优先级继承策略对任务执行流程的影响相对较小,因为只有当高优先级任务申请已被低优先级任务占有的临界资源这一事实发生时,才抬升低优先级任务的优先级.而天花板策略是谁占有就直接升到最高。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号