例子播报
编辑
考虑下例:
Job Name
High
Low
假定L获取到共享资源后,H申请该资源不得而被阻塞。优先级继承协议把L的优先级升级到H的级别。M将不能抢先L因而M被阻塞。当L释放资源后,恢复到低优先级并唤醒H。H有高优先级因而抢先了L的执行权。随后M、L依次恢复执行。
作用播报
编辑
为了解决由于优先级翻转引起的问题,和WinCE引入了优先级继承的解决方法。优先级继承也就是,高优先级进程TH在等待低优先级的线程TL继承占用的竞争资源时,为了使TH能够尽快获得调度运行,由操作系统把TL的优先级提高到TH的优先级,从而让TL以TH的优先级参与调度,尽快让TL执行并释放调TH欲获得的竞争资源,然后TL的优先级调整到继承前的水平,此时TH可获得竞争资源而继续执行。
图1
有了优先级继承之后的上述现象的执行情况如图1所示。
到了T3时刻,需要占用的同步资源,操作系统检测到这种情况后,就把的优先级提高到的优先级。此时处于可运行状态的线程和中,的优先级大于的优先级,被调度执行 [1]。
执行到T4时刻,释放了同步资源,操作系统何时恢复了的优先级,获得了同步资源,重新进入可执行队列。处于可运行状态的线程和中,的优先级大于的优先级,所以被调度执行。
上述机制,使优先级最高的获得执行的时机提前。