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