Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Протокол захвата/освобождения ресурсов...
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
TMX
Вернулся к разработке РТОС для ARM на досуге...
Основной проблемой остается выбор протокола захвата/освобождения ресурсов для исключения инверсии приоритетов и, в конечном счете, достижению предсказуемости.
Может, у кого-нибудь есть какие-либо соображения по этому поводу? Любые предложения приветствуются.

Постановка проблемы:
1. В системе существуют множественные ресурсы (т.е. не единичное количество ресурсов одного вида, типа блоки памяти, слоты для сообщений и т.п.)
2. В системе существует множество задач с различными неуникальными приоритетами (т.е. задачи могут иметь одинаковый приоритет).
3. В каждый момент в системе исполняется задача с самым высоким приоритетом. Есть раунд-робин, т.е. задачи с одинаковыми приоритетами периодически переключаются.
4. Если задача обратилась к ресурсу, то она либо получает его (если есть свободный), либо становится в очередь на ожидание.
5. Если задача освободила ресурс, то из очереди ожидания ставится на выполнение задача с самым высоким приоритетом.

---Все это уже готово.

Задача: по какому протоколу управлять приоритетами задач при захвате/освобождении ресурсов?
si21
Цитата(TMX @ Sep 9 2005, 14:08)
Вернулся к разработке РТОС для ARM на досуге...
Основной проблемой остается выбор протокола захвата/освобождения ресурсов для исключения инверсии приоритетов и, в конечном счете, достижению предсказуемости.
Может, у кого-нибудь есть какие-либо соображения по этому поводу? Любые предложения приветствуются.

Постановка проблемы:
1. В системе существуют множественные ресурсы (т.е. не единичное количество ресурсов одного вида, типа блоки памяти, слоты для сообщений и т.п.)
2. В системе существует множество задач с различными неуникальными приоритетами (т.е. задачи могут иметь одинаковый приоритет).
3. В каждый момент в системе исполняется задача с самым высоким приоритетом. Есть раунд-робин, т.е. задачи с одинаковыми приоритетами периодически переключаются.
4. Если задача обратилась к ресурсу, то она либо получает его (если есть свободный), либо становится в очередь на ожидание.
5. Если задача освободила ресурс, то из очереди ожидания ставится на выполнение задача с самым высоким приоритетом.

---Все это уже готово.
Задача: по какому протоколу управлять приоритетами задач при захвате/освобождении ресурсов?
*

Может для Вас Америку я не открою biggrin.gif , но сам бы поступил так - проштудировал описания/исходники открытых текстов существующих RTOS - часто т.о. находишь "изюминки", которые не упоминаются. Сам, когда начинал программировать (а это уже более 25 лет), т.о. получил хорошую школу.
TMX
Цитата(si21 @ Sep 9 2005, 16:31)
Может для Вас Америку я не открою  biggrin.gif , но сам бы поступил так - проштудировал описания/исходники открытых текстов существующих RTOS - часто т.о. находишь "изюминки", которые не упоминаются. Сам, когда начинал программировать (а это уже более 25 лет), т.о. получил хорошую школу.
*

Да я уже проштудировал несколько десятков, даже хотел результатами делиться, здесь есть тред по этому поводу, но обстоятельства изменились,времени не хватает.
Выводы, в общем, неутешительные - в большинстве открытых ОС используется протокол FIFO, даже без учета приоритета ожидающих задач.
В части оставшихся используются простейшие механизмы. В основном, потолок приоритетов (для множественного ресурса не оптимален).
Не знаю, читали ли вы фундаментальные исследования, когда начинали программировать, однако я это сделал, чтобы ориентироваться в проблеме.
Пока ничего подходящего не нашел, просто везде рассматриваются модели с одним ресурсом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.