Приоритетное наследование
В реального времени вычислениях наследование приоритетов — это метод устранения неограниченной инверсии приоритетов . Используя этот метод программирования , планирования процессов алгоритм увеличивает приоритет процесса (A) до максимального приоритета любого другого процесса, ожидающего любого ресурса , на котором A имеет блокировку ресурса (если он выше, чем исходный приоритет A).
Основная идея протокола наследования приоритетов заключается в том, что когда задание блокирует одно или несколько заданий с высоким приоритетом, оно игнорирует исходное назначение приоритета и выполняет свою критическую часть с повышенным уровнем приоритета. После выполнения критической секции и снятия блокировок процесс возвращается к исходному уровню приоритета.
Пример
[ редактировать ]Рассмотрим три вакансии:
Название вакансии | Приоритет |
---|---|
ЧАС | Высокий |
М | Середина |
л | Низкий |
Предположим, что и H, и L требуют некоторого общего ресурса. Если L получит этот общий ресурс (входя в критическую секцию), а H впоследствии потребует его, H будет блокировать до тех пор, пока L не освободит его (покинув свою критическую секцию). Без наследования приоритета процесс M может вытеснить процесс L во время критической секции и задержать его завершение, в результате чего процесс M с более низким приоритетом косвенно вытеснит процесс H с высоким приоритетом. Это ошибка инверсии приоритета .
При наследовании приоритетов L будет выполнять свою критическую секцию с высоким приоритетом H всякий раз, когда H блокируется на общем ресурсе. В результате M не сможет вытеснить L и будет заблокирован. То есть задание M с более высоким приоритетом должно дождаться выполнения критического раздела задания L с более низким приоритетом, поскольку L унаследовал приоритет H. Когда L выходит из своей критической секции, он восстанавливает свой первоначальный (низкий) приоритет и пробуждает H (который был заблокирован L). H, имеющий высокий приоритет, вытесняет L и выполняется до завершения. Это позволяет M и L возобновлять работу последовательно и работать до завершения без инверсии приоритета.
Операционные системы, поддерживающие наследование приоритетов
[ редактировать ]- ЭРИКА Предприятие [ 1 ] [ циклическая ссылка ]
- FreeRTOS
- Microsoft Azure RTOS, ранее ThreadX от Express Logic
- Линукс [ 2 ]
- Вксворкс
- iRMX [ 3 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- Луи Ша; Рагунатан Раджкумар и Джон П. Лехочки (сентябрь 1990 г.). «Протоколы наследования приоритетов: подход к синхронизации в реальном времени» (PDF) . Транзакции IEEE на компьютерах . 39 (9): 1175–1185. дои : 10.1109/12.57058 . Архивировано из оригинала (PDF) 19 апреля 2022 г.
- ^ «ЭРИКА Энтерпрайз» . Проверено 3 января 2024 г.
- ^ «Подсистема RT-мьютекса с поддержкой PI» . Проверено 27 ноября 2021 г.
- ^ «Ресурсоориентированные службы ядра и промежуточного программного обеспечения реального времени» (PDF) . п. 3 . Проверено 1 января 2024 г.
Внешние ссылки
[ редактировать ]- « Приоритетное наследование: реальная история » Дуга Локка
- « Против наследования приоритетов », Виктор Йодайкен
- « Реализация управления параллелизмом с наследованием приоритетов в CORBA реального времени » , Стивен Волевер , Виктор Фэй Вульф и Рассел Джонстон
- « Спин-блокировки с наследованием приоритета для многопроцессорных систем реального времени », авторы Цай-Донг Ван , Хироаки Такада и Кен Сакамура
- « Аппаратная поддержка наследования приоритетов » , Бильге Э.С. Акгул , Винсент Дж. Муни , Хенрик Тейн и Прамоте Куачароен.