IT-словарь › Программирование › Инверсия приоритетов

Инверсия приоритетов

Программирование Svenska → Обновлено: 2026-11-02

Высокоприоритетная задача фактически ждёт низкоприоритетную, потому что на пути стоит задача со средним приоритетом.

Нужны три задачи. Низкая держит мьютекс. Высокая хочет тот же мьютекс и блокируется. Средняя, которой мьютекс вообще не нужен, становится готовой и вытесняет Низкую — так что Низкая не может отпустить блокировку. Высокая теперь ждёт Среднюю, хотя планировщик делает ровно то, что ему велено.

Знаменитый случай произошёл на Марсе в 1997 году: посадочный модуль Pathfinder постоянно перезагружался по сигналу сторожевого таймера. В JPL воспроизвели ошибку на копии на Земле и командой с Земли включили наследование приоритетов в VxWorks: тот, кто держит блокировку, временно получает наивысший приоритет из ожидающих её. Решение опубликовали Ша, Раджкумар и Лехочки ещё в 1990 году. Альтернатива — потолок приоритета — применяется, в частности, в Ada и AUTOSAR.

← Назад к словарю