Wie bekannt ist, Prioritätsumkehrungsproblem - wenn ein Thread mit höherer Priorität für einen Faden mit niedrigerer Priorität wartet: https://en.wikipedia.org/wiki/Priority_inversionVerwendet Linux einige der Lösungen der Prioritätsinversion?
Es passiert, wenn wir 3 Fäden haben: L (niedrig), M (mittel), H (high -Priorität). L und H benutzen den gleichen Mutex, aber L erwirbt es früh als H, und H blockiert und geht schlafen. Und dann besetzt M den CPU-Kern, weil es eine höhere Priorität als L hat, und L geht schlafen, aber der Mutex wird immer noch akquiriert. L & H schlafen, aber M arbeitet.
Es gibt einige solutions Prioritätsinversion:
- alle Interrupts Deaktivieren kritische Abschnitte
- Eine Priorität Decke
- Prioritätsvererbung
- Zufalls Steigerung zu schützen - Bereit Aufgaben Halteverriegelungen werden nach dem Zufallsprinzip verstärkt, bis sie den kritischen Bereich verlassen. Diese Lösung wird in Microsoft Windows verwendet.
- Vermeiden
Does Linux verwenden, um einige der Lösungen von Prioritätsinversion und welche seiner blockiert?