1 / 2
文档名称:

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

格式:docx   大小:65KB   页数:2页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:zxwziyou8 2018/5/7 文件大小:65 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:优先级反转分析

优先级反转(Priority Inversion),是由于多任务共享资源,具有最高优先级的任务被低优先级任务祖册,反而使得具有中优先级的任务先于高优先级的任务执行,影响系统的实时性,甚至导致系统崩溃。
具体说明如下:
假设系统中有Task1、Task2、Task3三个任务,分别对应高、中、低三个优先级(如图1所示)。某一时刻系统的状态如下:
T1:Task1和Task2正在等待某一事件的发生,处于挂起状态,Task3正在执行。
T2:Task1等待的事件发生,Task1剥夺Task3的CPU使用权开始执行,Task3被阻塞。T3:Task1执行到某一时刻,需要申请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和Task2的优先级发生了反转。在更坏的情况下,如Task1和Task3之间有多个这样的“Task2”存在,这样的优先级反转问题可能会导致整个系统的崩溃。
 
一些RTOS使用”优先级继承“解决这个问题:即在低优先级进程持有信号量,并且高优先级进程在等待该信号量时,将低优先级进程提高到与高优先级进程相同。

优先级继承和优先级天花板:
如果任务之间由于有共享资源出现了竞争或者死锁,是会严重影响系统安全的。因此uC/OS对共享资源提供了保护机制。一般情况下使用的是信号量方法。创建一个信号量并对他进行初始化,当一个任务