6. Управление задачами
Определение. Ситуацию, когда более приоритетная задача блокирована менее приоритетной,
владеющей разделяемым ресурсом, требуемым приоритетной задаче, называют инверсией приоритетов.
Все ОСРВ, осуществляющие планирование задач на основе их приоритетов, используют те или иные
механизмы борьбы с этим явлением. Наиболее часто используют механизм т.н. наследования приоритетов,
когда задача, владеющая разделяемым ресурсом временно получает приоритет более приоритетной задачи,
ожидающей этот ресурс. Приоритет возвращается к прежнему значению, когда задача освобождает разделя-
емый ресурс.
6.1.2. Стратегии планирования задач
Рассмотрим способы, которыми планировщик выбирает очередную задачу для передачи на выполнение
процессору. Ниже мы вначале рассмотрим "чистые" способы, обычно применяемые только в сочетании с
другими.
•65535 Очередь ожидания типа FIFO: первой будет исполнена первой поступившая задача.
•65535 Очередь ожидания, отсортированная по времени исполнения задач: первой будет
исполнена задача, исполнявшаяся до этого самое короткое время.
•65535 Несколько очередей ожидания (одного из приведенных выше типов): поступившая задача
попадает в одну из очередей в зависимости от приоритета задачи, выборка производится из головы
первой очереди, если последняя пуста, то выбирается голова второй очереди и т.д.; часто задачи в
разных очередях получают разный квант времени в зависимости от номера очереди (первая очередь -
меньший квант, так как задачи в ней получают доступ к процессору чаще).
•65535 Очередь ожидания, отсортированная по приоритету задач: первой будет исполнена
задача, имеющая наивысший приоритет.
В UNIX системах применяется следующий способ планирования. Все процессорное время разбито на
кванты фиксированной длины. Все готовые задачи получат свой квант времени, но частота этого зависит от
общего количества готовых задач и их приоритета. Изначально задача получает высокий приоритет. Если в
течение своего кванта задача использует процессор (не блокируется с самого начала), то ее приоритет не
меняется или даже повышается. С другой стороны, если задача использует свой квант полностью (не
блокируется до его окончания), то ее приоритет понижается. Такая стратегия обеспечивает высокую сред -
нюю производительность системы и быстрое время реакции для интерактивных программ (типа текстовых
редакторов), но абсолютно не годится для систем реального времени, поскольку процессорное время,
получаемое задачей, зависит от количества других задач и их активности.
В системах реального времени обычно применяется следующий алгоритм планирования. Задачи имеют
фиксированные приоритеты, которые могут динамически меняться самой задачей или планировщиком.
Процессор получает задача, имеющая самый высокий приоритет. Если такая задача не одна (например, не
все задачи имеют разный приоритет), то среди задач с самым высоким приоритетом организуется
планирование с изменением приоритета по схеме round robin (так называемая схема RRS, round robin
scheduling).
Подобная схема автоматически обеспечивает preemtion - задача с любым приоритетом (включая ядро
системы) может быть прервана задачей с более высоким приоритетом.
6.1.3. Планирование периодических задач
Большинство задач в системах реального времени — периодические, активизируемые сигналом таймера
или датчика. Для таких задач разработаны специальные приемы разделения времени.
Очевидно, что в однопроцессорной системе должно быть выполнено соотношение
где Ti и Ri - соответственно период и максимальное время работы задачи i , п - количество задач в системе.
Любая схема планирования должна обеспечивать выполнение этого соотношения.
В 1973г. Liu и Layland предложили метод анализа периодических задач в ОСРВ, названный RMA (Rate
Monotonic Analysis), и соответствующую схему планирования, названную RMS (Rate Monotonic Scheduling).
44