Особенности управления процессами в ОС РВ
В связи с проблемой дедлайнов главной проблемой в ОСРВ становится планирование задач (scheduling), которое обеспечивало бы предсказуемое поведение системы при всех обстоятельствах. Процесс с дедлайнами должен стартовать и выполняться так, чтобы он не пропустил ни одного своего дедлайна. Если это невозможно, процесс должен быть отклонен.
В связи с проблемами планирования в ОСРВ используются статические алгоритмы планирования (RMS – Rate Monotonic Scheduling) [LL73] и динамические алгоритмы планирования (EDF – Earliest Deadline First).
Статические алгоритмы
Примером такого алгоритма является алгоритм планирования со статическим расписанием. Он подразумевают, что расписание запуска задач составляется заранее, до старта системы. Планировщик лишь просто следует этому расписанию и не составляет его в ходе работы. Строго это относится, разумеется, только к периодическим задачам. Если же имеются еще и спорадические задачи, то планировщик, естественно, должен выбрать моменты времени запуска таких задач по ходу работы.
К преимуществам данного класса алгоритмов относят следующие обстоятельства:
- Исключительная простота, обусловленная отсутствием понятия "процесс"/"поток". Передача управления задаче — вызов подпрограммы
- Как следствие, результаты тестирований и поверок весьма надежны.
Благодаря этим качествам, алгоритмы именно этого типа чаще всего применяются там, где требуется высокая надежность (автопилоты и т.п.)
К недостаткам — следующие:
- Негибкость. Любое изменение (числа задач, времен исполнения и т.д.) требует останова системы и пересчета расписания.
- Планировщик фактически "отвязан" от внешного мира, так как работает по прерываниям от таймера. Учет спорадических задач довольно сложен.
- Размер таблицы с расписанием может оказаться большим при соответствующих соотношениях между периодами задач.
Динамические алгоритмы
Принцип работы планировщиков на основе приоритета задач состоит в том, что в каждый момент момент времени исполняется та задача, которая имеет наивысший приоритет. Различные виды планировщиков различаются правилами, в соответствии с которыми назначается приоритет. У работ одной и той же задачи может быть разный приоритет. В этом случае планировщик (или алгоритм) называется динамическим алгоритмом с динамическими приоритетами.
Рассмотрим 2 алгоритма динамического планирования с динамическими приоритетами
- EDF (earliest deadline first) — приоритет задачам назначается по принципу "в каждый момент времени наивысший приоритет имеет та задача, у которой осталось меньше всего времени до крайнего срока".
- LLF (least laxity first) — приоритет задачам назначается по принципу "в каждый момент времени наивысший приоритет имеет задача с наименьшим резервом времени (laxity)".
Резервом (запасом) времени называется разность между временем, оставшимся до крайнего срока и временем, которое задаче еще нужно проработать
При этом имеются 2 модификации алгоритма EDF:
- с вытесненением задач
- без вытеснения задач
Под вытеснением имеется ввиду то, что если во время работы какой-то задачи возникает работа другой задачи с приоритетом выше, чем у работающей в данный момент, то управление передается вновь возникшей задаче.
При невытесняющем EDF задача всегда доделывает свою очередную работу до конца, независимо от того, появились ли во время работы этой задачи другие задачи с более высоким приоритетом или не появились.
Алгоритмы EDF и LLF считаются оптимальными для любого набора задач (периодические с любым соотношением между периодами и крайними сроками, спорадические) если:
- все задачи независимы
- возможно вытеснение
- вытеснение не требует временных затрат (что не соответствует реальному положению вещей)
Другим классом динамических алгоритмов являются динамические алгоритмы планирования со статическими приоритетами. Напомним, что принцип работы любого планировщика на основании приоритета состоит в том, что в каждый момент времени исполняется та задача, которая имеет наивысший приоритет. В случае динамических планировщиков со статическими приоритетами задач приоритет задачи, будучи однажды ей назначен, не изменяется с течением времени. Приводимые далее способы назначения приоритетов ориентированы на системы периодических задач.
Существует 2 распространенных способа назначения приоритетов:
- RMS (rate monotonic scheduling). Правило назначения приоритетов таково: чем меньше период задачи, тем выше у нее приоритет. Иными словами, чем чаще (отсюда rate) задача переходит в состояние готовности, тем ее приоритет выше.
- DMS (deadline monotonic scheduling). В этом алгоритме приоритеты назначаются по немного другому правилу: чем меньше относительный крайний срок задачи, тем выше ее приоритет.
Эти алгоритмы неоптимальны, так как при определенных условиях могут привести к превышению дедлайна, однако ввиду их относительной простоты именно они чаще используются в системах реального времени