上一篇 CPU Scheduling 提到,Scheduler 不一定把所有 Thread 完全平等看待。系統會存在:Priority
High Priority通常更優先取得 CPU
↓
Medium Priority
↓
Low Priority
↓
通常較晚取得 CPU
在RTOS中假設有三條 Thread:
H = High Priority
M = Medium Priority
L = Low Priority
執行優先程度應該是:H -> M -> L
結果卻可能發生一件非常奇怪的事情:H 正在等 L 但 L 又一直被 M 搶走 CPU,M 竟然間接阻止 H 執行,這種優先權關係被「倒過來」的現象,就是:
假設現在有三條 Thread:
H = High Priority
M = Medium Priority
L = Low Priority
以及一把:Mutex X
這時的關係:
H 等待
↓
L 持有 Mutex
因此,H 能不能繼續,現在取決於 L 什麼時候釋放 Mutex。
直覺上:
H 等 L
↓
那趕快讓 L 跑
↓
L unlock
↓
H 就能繼續