优先级继承和优先级上限协议都用于最大限度地减少竞争条件的后果。它们都动态地改变持有资源的任务的优先级,这是执行更高优先级任务所需的,从而“解除”它。
我在任何文献中都找不到的是:
它们之间的区别在于,持有共享资源的低优先级任务的优先级被提升的确切时间。
PC 立即将其提高到最高优先级,这会导致平均情况性能时间更差 - 即使资源没有竞争,算法仍然会触发。但仅触发一次,这有助于其在最坏情况下的良好性能。 PC 完全不会出现死锁。
PI 仅在每次高优先级任务尝试争夺低优先级任务占用的共享资源时才会执行此操作。如果有很多任务争夺资源,则没有好处,因为每次都会触发算法。在 FreeRTOS 中,当使用互斥锁来保护关键部分时,它是默认实现的。