Вернулся к разработке РТОС для ARM на досуге... Основной проблемой остается выбор протокола захвата/освобождения ресурсов для исключения инверсии приоритетов и, в конечном счете, достижению предсказуемости. Может, у кого-нибудь есть какие-либо соображения по этому поводу? Любые предложения приветствуются.
Постановка проблемы: 1. В системе существуют множественные ресурсы (т.е. не единичное количество ресурсов одного вида, типа блоки памяти, слоты для сообщений и т.п.) 2. В системе существует множество задач с различными неуникальными приоритетами (т.е. задачи могут иметь одинаковый приоритет). 3. В каждый момент в системе исполняется задача с самым высоким приоритетом. Есть раунд-робин, т.е. задачи с одинаковыми приоритетами периодически переключаются. 4. Если задача обратилась к ресурсу, то она либо получает его (если есть свободный), либо становится в очередь на ожидание. 5. Если задача освободила ресурс, то из очереди ожидания ставится на выполнение задача с самым высоким приоритетом.
---Все это уже готово.
Задача: по какому протоколу управлять приоритетами задач при захвате/освобождении ресурсов?
|