# 优先级反转

> 優先權倒置，又称優先權反轉、優先權逆轉、優先權翻轉，是一种不希望发生的任务调度状态。在该种状态下，一个高优先级任务间接被一个低优先级任务所抢先(preempted)，使得两个任务的相对优先级被倒置。 这往往出现在一个高优先级任务等待访问一个被低优先级任务正在使用的临界资源，从而阻塞了高优先级任务；同时，该低优先级任务被一个次高优先级的任务所抢先，从而无法及时地释放该临界资源。这种情况下，该次高优先级任务获得执行权。 在多數個案，發生優先權倒置並不導致直接傷害──高優先權任務的延遲執行不被察覺，最終，低優先權任務釋放共享資源。雖然，亦存在很多情況優先權倒置會導致嚴重問題

- ID: m04391
- 分类: system
- 领域: 系统论

## 定义

一个高优先级任务被一个低优先级任务阻塞（因为低优先级占用了共享资源），而低优先级任务又被一个中优先级任务抢占。结果是，中优先级任务竟然“间接压制”了高优先级任务。脚手架作用： 揭示了层级的意外失效。在公司里，CEO（高）的战略可能被一个实习生（低）卡住（因为实习生掌握了签字流程），而实习生又在忙经理（中）布置的琐事。要解决此问题，必须采用“优先级继承”——提升实习生的临时权限，让他赶紧把路让开。

## 机制

高优先级任务被低优先级任务阻塞（低者占共享资源），而低者又被中优先级抢占，结果中优先级间接压制高优先级。层级预期意外失效。

## 练习

1. 识别被阻塞的高优任务及其占资源的低优任务；2. 采用优先级继承，临时提升低者权限让其尽快让路；3. 审查资源锁设计；4. 用优先级天花板协议防反转。

## 脚手架用法

揭示了层级的意外失效。在公司里，CEO（高）的战略可能被一个实习生（低）卡住（因为实习生掌握了签字流程），而实习生又在忙经理（中）布置的琐事。要解决此问题，必须采用“优先级继承”——提升实习生的临时权限，让他赶紧把路让开。

[阅读网页](https://thinkingmodels.site/entries/detail/m04391)
