Методы планирования выполнения задач в системах реального времени

затраты несложно определить аналитически или экспериментально. Вторая причина состоит в том, что между блоками считывания показаний TSC и интервалом времени (tserTice, tact) могут возникать (и обрабатываться) внешние прерывания. Поэтому для оценки задержки реакции на внутрисистемные прерывания следует использовать величину min{Di}- Tread.

Рассмотренные методы измерения задержек реакций СРВ на внешние прерывания и внутрисистемные события позволяют проводить экспериментальные оценки этих ключевых характеристик СРВ пу-

тем разработки и выполнения измерительных программных приложений без привлечения специальных аппаратных средств.

Список литературы

1. Kopetz H. Real-Time Systems. Design Principles for Distributed Embedded Applications. Kluwer Academic Publishers. MA, 1997.

2. Никифоров В.В., Павлов В.А. Операционные системы реального времени для встроенных программных комплексов. // Программные продукты и системы. - № 4, 1999. - С. 24-30.

3. Tindell K., Hansson H. Real-Time Systems by Fixed Priority Scheduling. DoCS, Uppsala University, 1997.

МЕТОДЫ ПЛАНИРОВАНИЯ ВЫПОЛНЕНИЯ ЗАДАЧ В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ

М.В. Данилов

Механизмы планирования выполнения задач -неотъемлемая составляющая любой операционной системы, во многом определяющая эффективность использования аппаратных ресурсов. Для разных классов систем критерии определения эффективности организации вычислений различны. Специфика процесса планирования в системах реального времени (СРВ) определяется требованием своевременного выполнения прикладных задач. По мере расширения практики применения СРВ расширялся и совершенствовался состав методов организации вычислений. В частности, расширялся состав, и повышалась эффективность используемых методов планирования выполнения задач. В данной статье приводятся наиболее значимые результаты, полученные к настоящему моменту в области планирования в СРВ.

Согласно общепризнанному определению СРВ -это системы, для которых специфицированы ограничения на время выполнения решаемых задач [1]. В зависимости от характера требований ко времени выполнения принято различать мягкие и жесткие СРВ. СРВ принадлежит к классу жестких, если нарушение установленных сроков выполнения задач недопустимо. СРВ называют мягкой, если получение результата выполнения задач после установленного срока приводит к снижению качества работы системы, но не влечет недопустимых последствий.

С точки зрения планирования СРВ мягкого типа отличает от жесткого только метод анализа соответствия системы исходным требованиям (анализ выполнимости). В данной статье преимущественно рассматриваются методы планирования, общие для обоих типов СРВ. Методы анализа выполнимости рассматриваются только для СРВ жесткого типа, так как именно для этих систем получены наиболее значимые результаты.

Требования к планировщикам реального времени. Механизмы планирования для СРВ должны задавать порядок выполнения задач, обеспечи-

вающий своевременное выполнение прикладных задач при ограниченном объеме ресурсов [2]. Необходимость соблюдения сроков выполнения выдвигает на передний план такое свойство планировщика, как предсказуемость. Это означает, что в любой момент времени порядок выполнения задач, определяемый планировщиком, должен быть однозначным.

Механизмы планирования для СРВ имеют специфический критерий эффективности, определяющий степень обеспечения выполнения временных ограничений задач. Более эффективный планировщик обеспечивает своевременное выполнение большего числа задач, чем менее эффективный. Отсюда вытекает определение: оптимальным алгоритмом планирования называется алгоритм, обеспечивающий выполнение временных ограничений задач всегда, когда это возможно. Или, другими словами, если порядок выполнения задач, определяемый оптимальным алгоритмом, приводит к нарушению установленных сроков выполнения задач, то ни какой другой алгоритм не может обеспечить своевременное выполнение всех задач [3].

Планировщик в СРВ имеет две составляющие: планировщик периода разработки (off-line) и планировщик периода исполнения (on-line, run-time) [3]. На этапе разработки СРВ в распоряжении разработчика имеется часть информации о прикладных задачах и структуре их взаимодействия. Планирование периода разработки заключается в обработке этой информации до начала работы системы. Обработка имеющейся информации на этапе разработки позволяет существенно сократить издержки на планирование периода исполнения. Планировщик периода исполнения является составляющей разрабатываемой системы и начинает работать при ее запуске; он использует информацию, полученную в результате планирования периода разработки.

Общий объем работ, выполняемый двумя составляющими планировщика, остается неизменным

28

при переходе от одного механизма планирования к другому. Изменяется распределение работ между планировщиками периодов разработки и исполнения. Это распределение работ является одним из основных признаков классификации планировщиков реального времени.

Планирование периода разработки часто включает анализ выполнимости (schedulability analysis, feasibility analysis), необходимость в котором возникает в случае, когда ограничения на время выполнения задач системы четко сформулированы, и нарушение установленных сроков получения результатов вычислений может привести к выходу системы из строя. Успешное завершение анализа выполнимости дает гарантию того, что при любой возможной нагрузке выполнение всех задач будет завершено в срок.

Исследования показали, что практически для всех систем, содержащих взаимодействующие задачи, точный метод анализа выполнимости является задачей НП-трудной [3,4]. Поэтому на практике чаще всего используются специализированные механизмы взаимодействия задач и методы анализа, положительный результат которых является достаточным условием выполнимости приложения реального времени.

Классификация планировщиков реального времени по распределению работ между составляющими периодов разработки и исполнения. По

распределению работ различают два типа планировщиков: статические и динамические [5,6]. Первые СРВ оснащались статическими планировщиками. Статическое планирование используется тогда, когда еще до работы системы имеется полная информация о решаемых задачах: время активации, сроки и время выполнения, структура и временные параметры взаимодействия задач. В этом случае, на этапе разработки системы строится статический график, содержащий полную информацию о решениях планировщика периода исполнения, и планировщик периода исполнения вырождается в простой интерпретатор статического графика.

К достоинствам статического планирования относится высокая предсказуемость и низкие накладные расходы на планирование периода исполнения. Однако имеются существенные недостатки, ограничивающие сферу применения данного типа планировщиков. Во-первых, статические планировщики имеют низкую гибкость, добавление в систему новой задачи требует полной переделки статического графика. Во-вторых, данный тип планировщика требует наличия всей информации о многозадачном приложении уже на этапе разработки, а эта информация доступна не всегда. В-третьих, для размещения статического графика требуется выделять память, следовательно, размер статического графика не должен быть слишком большим. Это требование может оказаться трудновыполнимым для сложных систем.

В противоположность статическому планированию в динамическом планировании порядок выполнения задач определяется в ходе работы системы. В распоряжении планировщика имеется информация

только о текущем множестве активных задач. Время появления новых задач не определено. Динамическое планирование отличает высокая гибкость и адаптивность поведения. К недостаткам планировщиков этого типа относятся высокие накладные расходы на планирование периода исполнения и низкая предсказуемость.

В реальных системах часто используются смешанные планировщики, имеющие черты статического и динамического, что позволяет наиболее эффективно организовать планирование задач. Одним из наиболее интересных вариантов смешанного планирования является планирование в синхронных (time-triggered) системах [2]. Система называется синхронной, если любая вычислительная или коммуникационная активность в системе инициируется в предопределенные моменты времени. Этот компромиссный вариант находит применение в автомобильной и авиационной промышленности.

Классификация планировщиков реального времени по алгоритму планирования. Свойства механизма планирования также определяет используемый алгоритм - критерий, по которому производится упорядочение задач. На рисунке 1 приведена диаграмма существующих алгоритмов планирования.

Планирование в СРВ

Без приоритетов Приоритетное

Фиксированные Динамические

приоритеты приоритеты

Монотонные Монотонные По алгоритму Наиболее С наименьшим по частоте по срокам Оудсли срочная первой резервом первой

Рис. 1. Классификация алгоритмов планирования реального времени

Алгоритмы планирования для простых систем, в которых вопрос эффективности не стоит, могут не использовать приоритеты. Однако в большинстве случаев предпочтительным является использование алгоритмов, основанных на приоритетах задач. Согласно этим алгоритмам каждой задаче ставится в соответствие приоритет - некое число, определяющее степень ее привилегированности при распределении ресурсов системы. Все готовые задачи упорядочиваются по значению приоритета, при перепланировании управление получает готовая задача с наибольшим приоритетом. Приоритеты задачам назначаются с учетом их временных характеристик.

Фиксированные и динамические приоритеты. По способу назначения приоритетов задачам различают алгоритмы планирования с фиксированными и динамическими приоритетами. В первом случае приоритеты задачам назначаются при включении их в состав приложения (как правило, это происходит во время разработки). На протяжении всего периода работы системы значение приоритетов прикладных задач остается неизменным. Во втором случае приоритеты задачам назначаются заново при каждом их порождении. При этом значение приоритетов меняется с течением времени.

29

Алгоритмы, использующие динамические приоритеты, отличает большая эффективность и оптимальность в общем случае. Недостатком алгоритмов с динамическими приоритетами является высокая сложность для понимания и реализации. Алгоритмы, использующие динамические приоритеты, имеют еще один недостаток - эффект домино при нарушении сроков выполнения задачи. Нарушение сроков выполнения одной из задач может привести к нарушению сроков выполнения всех задач в системе.

Алгоритмы с фиксированными приоритетами менее эффективны, но они лишены указанных недостатков алгоритмов с динамическими приоритетами. Кроме того, распространенной практикой является назначение более важным задачам больших приоритетов, в этом случае за счет снижения эффективности планирования достигается повышение надежности системы. Алгоритмы с динамическими приоритетами лишены такой возможности. В силу перечисленных обстоятельств на практике преимущественно используются алгоритмы с фиксированными приоритетами.

Вытесняющие и невытесняющие планировщики. Приоритетные планировщики реализуют политику, при которой в результате перепланирования управление передается наиболее приоритетной задаче. Тип планировщика во многом определяет то, в какие моменты времени возможно перепланирование. С этой точки зрения существуют два основных типа планировщиков: вытесняющие и невытесняющие (рис. 2).

Планирование в СРВ

Вытесняющее Частично вытесняющее Невытесняющее

Групповое Кооперативное

Рис. 2. Классификация планировщиков по времени разрешенного перепланирования

Вытесняющие планировщики откладывают выполнение текущей задачи в момент появления более приоритетной задачи, требующей ресурс процессора. В этом случае говорят, что низкоприоритетная задача была вытеснена. В невытесняющих планировщиках управление передается более приоритетной задаче не раньше, чем текущая задача завершит выполнение.

Вытесняющие планировщики обеспечивают большую эффективность планирования, чем невытесняющие. По этой причине в СРВ преимущественно используются вытесняющие планировщики. Однако невытесняющие планировщики обеспечивают более высокую производительность системы за счет сокращения накладных расходов. Снижение издержек достигается за счет уменьшения общего числа перепланирований. Кроме того, использование механизма невытесняющего планирования позволяет без дополнительных расходов на синхронизацию разделять такие ресурсы, как оперативная память, которая используется под разделяемые структуры данных, и стековое пространство.

В реальных системах часто используются смешанные планировщики, которые назовем частично вытесняющими. В качестве примера рассмотрим два из них - групповой [7] и кооперативный [8]. При групповом планировании задачи, принадлежащие одной группе, невытесняемы друг для друга. При кооперативном планировании перепланирование возможно только в предопределенные моменты выполнения задач. Использование частично вытесняющих планировщиков часто позволяет значительно повысить общую производительность системы при сохранении эффективности планирования на высоком уровне.

Обслуживание раеноприоритетных задач.

Приоритетная дисциплина обслуживания задач требует уточнения в случае, если в системе существуют задачи с равными приоритетами. Классические алгоритмы назначения приоритетов задачам работают только с уникальными приоритетами. Однако в ряде случаев желательным является назначение нескольким задачам одного приоритета (по причинам, сходным с причинами использования невытесняющего планирования).

Наиболее простой и эффективный метод разрешения ситуации с равноприоритетными задачами -обслуживание их в порядке поступления (FIFO) [9]. В некоторых системах равноприоритетные задачи выполняются в циклическом порядке (Round-Robin), время выполнения каждой задачи лимитируется.

Формальная модель алгоритмов планирования независимых задач. Рассмотрим приоритетные алгоритмы планирования независимых задач. В системе используется вытесняющий механизм планирования. В случае алгоритмов планирования с фиксированными приоритетами приоритеты уникальны.

Приложение реального времени представляет собой множество задач T={ti, Т2,..., тп}. Поведение каждой периодической задачи т во времени характеризуется следующими неизменными параметрами: Т - период задачи, С - время выполнения задачи и Di - относительный срок выполнения задачи, равный длине временного интервала, началу которого соответствует момент порождения задачи, концу - абсолютный срок выполнения задачи.

В ходе работы системы каждый экземпляр задачи т характеризуется динамическим параметром di -абсолютный срок выполнения задачи. Производным параметром является величина li - резерв (laxity), равный разности di и Q.

Рассматриваемые алгоритмы планирования создавались для систем со следующими ограничениями: время выполнения всех задач неизменно, все задачи строго периодические и время переключения контекста пренебрежимо мало.

Однако все сказанное также справедливо и для систем, содержащих задачи, время выполнения которых не фиксировано, но ограничено. В этом случае значение С определяет время выполнения задачи в худшем случае. Рассматриваемые алгоритмы также подходят для планирования апериодических задач, имеющих ограничение на длину временного интервала между двумя соседними порождениями. В этом

30

случае Т принимается равным длине минимального интервала между двумя порождениями задачи. Для планирования в системах, в которых время переключения контекста - значимая величина, оно должно включаться в процессе выполнения задач [4].

Наиболее срочная первой. Алгоритм планирования задач наиболее срочная первой (earliest deadline first - EDF, НСП) основан на использовании динамических приоритетов [10]. Согласно алгоритму НСП активные задачи упорядочиваются по значению абсолютного срока выполнения, задача с наименьшим абсолютным сроком выполнения является наиболее приоритетной.

Необходимым и достаточным условием выполнимости множества задач является выполнение неравенства

n г £ Г < 1, iixDj

то есть выполнимым является любое приложение с плотностью загрузки процессора (utilization), не превышающей единицы, следовательно, алгоритм НСП оптимален.

С наименьшим резервом первой. Алгоритм

планирования задач с наименьшим резервом первой (least laxity first - LLF, НРП) [6] - еще один оптимальный алгоритм, использующий динамические приоритеты. Согласно алгоритму НРП все активные задачи упорядочиваются по значению резерва, задача с наименьшим резервом является наиболее приоритетной.

Необходимым и достаточным условием выполнимости множества задач также является плотность загрузки процессора, не превышающая единицы (1).

Планирование, монотонное по частоте. Алгоритм планирования, монотонный по частоте (ratemonotonic scheduling - RMS, ПМЧ) [10] основан на использовании фиксированных приоритетов. Все задачи упорядочиваются по значению частоты порождения задачи (величине, обратной периоду задачи), задаче с наибольшей частотой назначается наибольший приоритет. В случае, когда в системе несколько задач имеют одинаковую частоту, их порядок определяется произвольно. Алгоритм ПМЧ предложен для систем, в которых относительный срок выполнения каждой задачи равен ее периоду. При выполнении всех условий алгоритм ПМЧ оптимален.

Граничная плотность загрузки. Разработчиками алгоритма ПМЧ был также предложен метод анализа выполнимости многозадачных приложений. В качестве критерия используется так называемая граничная плотность загрузки (utilization bound). Если плотность загрузки процессора приложением не превышает рассчитываемой границы, то приложение выполнимо всегда. Предлагаемый метод анализа выполнимости не является точным, условие с граничной плотностью загрузки является достаточным, то есть если оно не выполняется, из этого не следует с неизбежностью, что приложение невыполнимо. Ниже приведены формула для расчета граничной плотности загрузки и основное условие критерия:

' 1 ' Ub =n 2n-1

n Г-

£ Г- < u„ . i=1Ti

При больших n значение граничной плотности загрузки сходится к 69%. Отсюда следует интересный вывод, что любое приложение выполнимо, если плотность загрузки процессора приложением не превышает 69%. Однако не следует забывать, что это справедливо только при соблюдении всех изначальных условий метода. Применение этого критерия называют частотно-монотонным анализом (rate-monotonic analysis - RMA, ЧМ-анализ) выполнимости приложения реального времени. Более совершенные критерии, рассматриваемые ниже, часто также называют ЧМ-анализом.

Доказательство справедливости критерия оценки выполнимости базируется на понятии критического момента (critical instant), момента, в который одновременно порождаются все задачи. Показано, что время отклика задач, порожденных в критический момент, будет максимальным. В этом случае, если доказано, что задача, порожденная в критический момент, выполняется в установленные сроки, то она выполняется своевременно всегда. Все рассматриваемые далее методы анализа выполнимости для алгоритмов, использующих фиксированные приоритеты, также базируются на понятии критического момента.

Базовый метод анализа выполнимости. В [11]

предложен метод анализа выполнимости, точный при выполнении всех условий. Будем называть этот метод базовым, так как на его основе строятся практически все современные методы оценки выполнимости приложений реального времени.

Суть базового метода анализа выполнимости заключается в определении максимального значения времени отклика задач (R) - общей продолжительности выполнения задач с учетом времени их вытеснения более приоритетными задачами. Выполнение задачи Ti всегда будет завершаться своевременно, если максимальное значение времени отклика не превышает относительного срока выполнения (Ri<Di).

Итак, время отклика задачи т складывается из времени выполнения самой задачи и времени ее вытеснения (суммы длин временных интервалов, в течение которых задача ожидает выполнения более приоритетных задач):

Ri

C + £

jEhp

Ri

где Ьр(1) - множество задач с приоритетами большими, чем приоритет задачи т^

Следует заметить, что время отклика фигурирует как в левой, так и в правой части уравнения, то есть формула рекурсивна. Найти можно, используя рекуррентное выражение:

Ri"

= C + £

jehp

Ri"

31

где

и условием остановки является

n n+1 „ n

Приложение реального времени признается выполнимым, если для всех задач максимальное значение времени отклика не превышает относительного срока выполнения.

Планирование, монотонное по срокам. Монотонная по частоте модель разработана для систем, в которых для всех задач период совпадает с относительным сроком выполнения. Но на практике часто встречаются задачи, у которых относительный срок выполнения меньше периода. Для систем, содержащих такие задачи, алгоритм ПМЧ утрачивает свойство оптимальности, оптимальным для них является алгоритм планирования, монотонный по срокам (deadline-monotonic scheduling — DMS, ПМС) [12]. Согласно алгоритму ПМС все задачи упорядочиваются по значению относительного срока выполнения, задаче с наименьшим относительным сроком назначается наибольший приоритет. В случае, когда в системе несколько задач имеют одинаковый относительный срок выполнения, их порядок определяется произвольно.

Алгоритм ПМС является обобщением алгоритма ПМЧ, и для него также применим рассмотренный ранее базовый метод анализа выполнимости.

Алгоритм Оудсли. До настоящего момента рассматривались приложения, в которых экземпляр задачи должен выполняться до порождения следующего, то есть для всех задач выполнялось условие D<T. Хотя на практике встречаются ситуации, когда одновременно активными могут являться несколько экземпляров одной задачи, то есть T<D. Такие системы принято называть системами с произвольными сроками выполнения задач, что означает неопределенность отношения между периодом задачи и ее относительным сроком выполнения. В [13] показано, что в таких системах алгоритмы ПМС и ПМЧ не являются оптимальными, однако нового оптимального алгоритма предложено не было. Между тем решение задачи о распределении приоритетов между п задачами путем полного перебора имеет трудоемкость О(п!). Позже был предложен оптимальный алгоритм планирования трудоемкостью О(п2+п) [14]. В отличие от рассмотренных ранее, данный алгоритм основан не на одном простом правиле, а на ограниченном переборе. Поэтому будем называть этот алгоритм по имени автора, алгоритмом Оудсли.

В основе алгоритма Оудсли лежит теорема, ограничивающая пространство возможных решений: если задача т еытолняется своевременно с низшим приоритетом и существует еытолнимое распределение приоритетов для полного множества задач, то существует также вытолнимое распределение приоритетов с задачей т на низшем приоритетом уровне.

Под выполнимым распределением приоритетов понимается распределение, при котором приложение выполнимо.

Суть алгоритма заключается в следующем. Множество задач разбивается на два подмножества: множество распределенных по приоритетным уровням задач (М1) и множество нераспределенных (М2). В начале работы алгоритма все задачи входят в М2, М1 пусто. Далее для каждого приоритетного уровня 1, начиная с наименьшего, выполняется следующее: для всех задач из М2 последовательно проверяется их выполнимость на текущем приоритетном уровне, при этом принимается, что все остальные задачи из М2 имеют большие приоритеты (какие именно - значения не имеет), если одна из задач выполнима, то она переходит в М1 с приоритетом 1 и можно переходить к следующему (1+1) приоритетному уровню, если ни одна задача из М2 не выполнима с приоритетом 1, то не существует выполнимого распределения приоритетов, при котором приложение выполнимо. В случае успешного завершения работы алгоритма в М1 находится множество задач с выполнимым распределением приоритетов.

Метод окон. В [13] показано, что базовый метод анализа выполнимости не подходит для анализа систем с произвольными сроками выполнения, в таких системах максимальное время отклика может быть у экземпляра задачи, порожденного не в критический момент, а позже. В этой же работе было предложено расширение базового метода анализа выполнимости для систем этого класса - метод окон. Расширение построено с использованием понятия окна w(q) -временного интервала, началу которого соответствует критический момент, концу - момент завершения работы q-го экземпляра задачи, где номеру 0 соответствует экземпляр задачи, порожденный в критический момент. С учетом вышесказанного формула (4) базового метода анализа выполнимости приобретает вид:

Wj(q) = (q + l)Cj + 2

JEhp

Wj

Cj.

Для последовательных экземпляров задачи т ^=0,1,...) рекурсивно определяется ряд значений размера окна. Время отклика каждого q-го экземпляра задачи т рассчитывается по формуле:

= w¡

Число рассчитываемых окон экземпляров задачи Т достаточно ограничить наименьшим числом q, для которого справедливо неравенство:

< Т.

В этой точке экземпляр задачи завершает работу до появления следующего, то есть последовательные окна не пересекаются. Максимальное время отклика для задачи т вычисляется по формуле:

= шахИ^).

Следует заметить, что при выполнении условия Б<Т достаточно ограничиться значением q=0, подставив его в формулу (8), мы получаем формулу (4) базового метода анализа выполнимости, следовательно, метод окон обобщает базовый метод анализа выполнимости.

R,° = 0

Tj

32

До сих пор рассматривались методы планирования независимых задач, между тем большинство приложений реального времени строится в виде совокупности взаимодействующих задач. Типы межзадачного взаимодействия, используемые в СРВ, могут быть сведены к двум основным: отношение предшествования (ОП) и разделение ресурсов.

ОП (precedence constraints) между задачами T и Tj обозначается как T|—и означает, что выполнение задачи т| должно быть завершено до начала работы задачи Tj. В общем случае поиск оптимального порядка выполнения задач, связанных ОП, - задача НП-трудная [3,4]. Поэтому на практике ОП задач преимущественно имеют простую структуру.

Типичным ограничением на структуру ОП является то, что все задачи, связанные ОП, порождаются одновременно и имеют общий срок выполнения [3,15]. При выполнении указанных условий произвольный граф, отражающий структуру ОП, можно трансформировать в цепочку (цепочки), определяющую порядок выполнения задач.

Рассмотрим два алгоритма, строящих цепочку (цепочки) предшествования из произвольного графа ОП.

Первый алгоритм [16] строит из графа единственную цепочку предшествования. Строится цепочка с конца. Суть алгоритма заключается в следующем: на каждом шаге алгоритма в начало цепочки добавляется любая задача, не имеющая последующих, не добавленных в цепочку.

Второй алгоритм [15] строит несколько цепочек, началу каждой цепочки соответствует задача, не имеющая предшествующих, концу - задача, не имеющая последующих. Число цепочек равно минимальному количеству путей, перекрывающих все дуги (это число будет определяться количеством входных/выходных вершин и количеством ветвлений). Данный алгоритм достаточно сложен для изложения, поэтому ограничимся рассмотрением результатов его работы. Рассмотрим на примере, как из графа ОП строятся цепочки с использованием первого и второго алгоритмов (рис. 3).

б

а в

Рис. 3. Преобразование графа ОП в цепочки предшествования: а) исходный граф, б) цепочка, построенная по первому алгоритму, в) цепочки, построенные по второму алгоритму

Итак, первый алгоритм значительно проще второго, кроме того, результатом его работы является всего одна цепочка. Однако построение цепочек в соответствии с первым алгоритмом приводит к потере дуг, что нежелательно, когда дугам соответствуют какие-либо реальные действия, например, передача сообщений. В таких случаях следует использовать второй алгоритм.

Один из способов организации цепочек предшествования - сокрытие связей в приоритетах, назначаемых входящим в цепочку задачам. Первой задаче в цепочке назначается максимальный приоритет, приоритеты последующих задач монотонно понижаются. Таким образом, одновременно порождаемые задачи цепочки выполняются в нужном порядке без дополнительной синхронизации. При таком способе организации цепочки предшествования для доказательства ее выполнимости достаточно доказать своевременность выполнения только последней задачи в цепочке.

Одним из наиболее распространенных типов межзадачного взаимодействия является разделение ресурсов. Введение разделяемых ресурсов в систему приводит к появлению ограничений взаимного исключения (mutual exclusion). Одним из наиболее распространенных способов защиты разделяемых ресурсов является использование универсальных синхронизационных механизмов типа семафоров [17]. Однако доказано, что задача оптимального планирования приложения реального времени, в котором режим взаимного исключения обеспечивается с использованием семафоров, является НП-трудной [4].

Причина высокой сложности анализа систем, использующих семафоры, заключается в неконтролируемой инверсии приоритетов. Поэтому в СРВ используются механизмы, реализующие специализированные протоколы защиты разделяемых ресурсов. Ряд ограничений, вносимых этими протоколами, позволяет осуществлять контроль над инверсией приоритетов, что обеспечивает легкость поиска условно-оптимальных решений. Большая часть этих протоколов разрабатывалась для алгоритмов планирования, использующих фиксированные приоритеты. Однако они допускают обобщение для использования в системах с динамическими приоритетами [18].

Неконтролируемая инверсия приоритетов. Инверсией приоритетов называется состояние системы, в котором, вопреки логике планирования выполнение высокоприоритетной задачи задерживает (блокирует) задача с низким приоритетом [19]. Возможность возникновения такой ситуации снижает эффективность приоритетного планирования. Поэтому необходимо ограничивать продолжительность инверсии приоритетов, в противном случае возникает неконтролируемая инверсия приоритетов, препятствующая своевременному выполнению высокоприоритетных задач. Пример взаимодействия задач, с неконтролируемой инверсией приоритетов приведен на рисунке 4.

Две задачи т и т3 разделяют ресурс г, доступ к которому защищен семафором. Низкоприоритетная задача т3 захватывает ресурс и вытесняется высокоприоритетной Tj. Задача т запрашивает доступ к разделяемому ресурсу и, так как ресурс уже занят задачей T3, приостанавливается до момента его освобождения. Задача со средним приоритетом т2 прерывает выполнение критической секции задачи Tj. Суть проблемы заключается в том, что задача т2, может владеть процессором сколь угодно долго, в то время как более приоритетная Tj заинтересована в том,

33

18

Задача ожидает освобождения ресурса Задача является текущей

Задача готова стать текущей

Задача владеет ресурсом r

Рис. 4. Неконтролируемая инверсия приоритетов

чтобы процессор был отдан задаче Т3 для скорейшего освобождения разделяемого ресурса. Положение значительно усугубляется, когда существует несколько задач со средним приоритетом.

Протокол невы1тесняемы!х критических секций. Одним из самых первых протоколов защиты разделяемых ресурсов, осуществляющих контроль над инверсией приоритетов, является протокол не-вытесняемых критических секций (non-preemptable critical section protocol, ПНКС) [4]. Согласно ПНКС, на время работы с разделяемым ресурсом задача объявляется невытесняемой, что равносильно назначению ей максимального приоритета. Эффективность планирования в системах, использующих этот протокол достаточно мала. Достоинство ПНКС заключается в его простоте.

Протокол наследования приоритетов (ПНП). Другой вариант решения проблемы неконтролируемой инверсии приоритетов - использование синхронизационных элементов, реализующих ПНП (priority inheritance protocol - PIP) [20]. Согласно ПНП задаче, захватившей разделяемый ресурс, назначается приоритет наиболее приоритетной задачи из числа ожидающих освобождения этого ресурса. На рисунке 5 показано, как изменится порядок выполнения задач из примера на рисунке 4 в условиях применения ПНП. Поведение системы на рисунке 5 совпадает с ее поведением на рисунке 4 только до момента t3. В этот момент ядро системы временно повышает приоритет задачи Т3 до уровня приоритета задачи Т1 (происходит наследование). В момент освобождения ресурса г задаче Т3 возвращается прежнее значение приоритета.

Н t<

Рис. 5. Протокол наследования приоритетов

Как видно из примера, этот несложный прием позволяет ограничить продолжительность инверсии приоритетов. Однако использование ПНП не исклю-

чает возможности многократного блокирования высокоприоритетной задачи и выхода системы из строя по причине взаимной блокировки. Время блокирования задачи определить достаточно сложно: на него влияет не только то, какие задачи какие ресурсы используют, но и то, в каком порядке захватываются ресурсы.

Протокол пороговых приоритетов (ППП). Для устранения указанных недостатков ПНП был разработан ППП (priority ceiling protocol - PCP) [20]. Согласно ППП каждому ресурсу ставится в соответствие пороговый приоритет, численно равный приоритету задачи с наибольшим приоритетом из числа тех задач, что используют данный ресурс:

ceilr = max pri,.

(ilreused_by(i)}

Пусть некоторая задача т, пытается захватить разделяемый ресурс r и r* - ресурс с наибольшим пороговым приоритетом из числа пороговых приоритетов ресурсов, захваченных в текущий момент другими задачами. Задача т, может захватить ресурс только в том случае, если ее приоритет строго больше, чем пороговый приоритет ресурса r*. Когда это условие не выполняется, решение текущей задачи блокируется, и низкоприоритетная задача, владеющая r*, наследует ее приоритет.

Свойства протокола неявно задают порядок захвата разделяемых ресурсов, чем исключают возможность выхода системы из строя по причине взаимной блокировки. Кроме того, задача с высоким приоритетом может войти в первую критическую секцию не раньше, чем низкоприоритетные задачи освободят все необходимые ей ресурсы, следовательно, выполнение задачи из-за занятости разделяемого ресурса может быть отложено лишь однажды.

Авторами протокола было предложено расширение методов анализа выполнимости для систем с разделяемыми ресурсами. В формулу расчета времени отклика задачи был добавлен фактор блокирования (B), равный времени блокирования задачи в худшем случае:

Wj

Wi(q) = (q + 1)Ci +Bi + £

jehp

Tj

Cj .

Введем два дополнительных ограничения в ППП: 1) задача не может завершить выполнение до освобождения всех, захваченных ею ресурсов; 2) критические секции вложены, то есть разделяемые ресурсы освобождаются в порядке, обратном их захвату. Добавление этих ограничений позволяет свести к простой формульной зависимости отношение между фактором блокирования задачи и длинами критических секций (под длиной критической секции подразумевается время ее выполнения). Для ППП фактор блокирования может быть найден из следующего выражения:

Bi =

max csk r,

{k,rlkelp(i)nrGused_by(k)nceil(r)>pri(i)} '

что означает: фактор блокирования для задачи 1 равен наибольш

ей длине критической секции С8 задачи к и ресурса г,

2

Т

Т

Т

2

7

t.

4

34

где k и г удовлетворяют следующим условиям: задача k имеет приоритет меньший, чем задача I; задача k использует ресурс г; пороговый приоритет ресурса г больше либо равен приоритету задачи I.

ППП достаточно сложен для понимания и реализации [21]. Рассматриваемый ниже протокол обеспечивает ту же эффективность планирования, являясь более простым.

Протокол превентивного наследования приоритетов [22] (immediate inheritance protocol — IIP, ППНП), предложенный на десять лет раньше ППП, также основан на понятии порогового приоритета. Отличие ППНП заключается в том, что приоритет задачи, захватывающей ресурс, безотлагательно повышается до уровня порогового приоритета занимаемого ресурса. На рисунке 6 показано, как изменится порядок выполнения задач из примера на рисунке 4 в условиях применения ППНП. Как видно из рисунка, задача, владеющая ресурсом г, не вытесняема задачами, приоритет которых ниже либо равен пороговому приоритету г. С другой стороны, высокоприоритетная задача начинает выполнение не раньше, чем освободится необходимый ей ресурс.

t  t4 '2 1-4 t5,

t3 i- ♦(Ту*

1

Рис. 6. Протокол превентивного наследования приоритетов

Помимо полезных свойств ППП, ППНП имеет дополнительные преимущества. При использовании этого протокола уменьшается общее количество переключений контекста задач. Кроме того, метод позволяет задачам, разделяющим ресурсы, выполняться в одностековом режиме, что существенно для систем с жесткими ограничениями на объем доступной оперативной памяти [23]. ППНП легко обобщается для синхронизации с обработчиками прерываний.

По указанным причинам на практике преимущественно используют ППНП, называя его при этом ППП или его модификацией [24].

По мере увеличения масштабов применения СРВ возрастает актуальность задач повышения эффективности и обобщения существующих методов планирования. С другой стороны, расширение сфер применения СРВ требует создания новых специализированных методов планирования. В частности, в последнее десятилетие интенсивно развивается область разработки протоколов защиты разделяемых ресурсов. Примерами результатов этого развития могут послужить специализированная версия ПНКС -протокол локально невытесняемых критических секций (см. с. 36-40 настоящ. ном. журн.) - и асиммет-

ричный ППП [25], представляющий собой более эффективное обобщение ППП.

Список литературы

1. Никифоров В.В., Павлов В.А.. Операционные системы реального времени для встроенных программных комплексов. //Программные продукты и системы.- 1999.- №4.- С.24-30.

2. Kopetz H. Real-Time Systems. Design Principles for Distributed Embedded Applications. Dordrecht: Kluwer Academic Publishers. 1997.

3. Stankovic J.A., Spuri M., Natale M.D., Buttazzo G. Implication of Classical Scheduling Results For Real-Time Systems. Pisa, 1994.

4. Mok A.K. Fundamental Design Problems of Distributed Systems of the Hard-Real-Time Environment. Ph.D. Thesis, Cambridge, Massachusetts, 1983.

5. Tindell K., Hansson H. Real Time Systems by Fixed Priority Scheduling. DoCS, Uppsala University, 1997.

6. Audsley N., Burns A. Real-Time System Scheduling. University of York, UK.

7. SSX5. NRTA, http://www.nrtg.com.

8. White paper ERCOS. v.1.0. ETAS GmbH&Co, http://www.etas.de, 36p.

9. Information technology — Portable Operating System Interface (POSIX ) - Part 1: System Application Program Interface (API) [C Language]. International Standard ISO/IEC 9945-1: 1996 (E) IEEE Std 1003.1, 1996 Edition.

10. Liu C.L., Layland J.W. Scheduling Algorithms for Multiprogramming in a Hard Real-Time Environment. J. ACM, 1973-20, pp. 40-61.

11. Joseph M., Pandya P. Finding Response Times in a RealTime Systems. BCS Computer Journal, 1986-5-29, pp.390-395.

12. Leung J.Y.T., Whitehead J. On the Complexity of Fixed-Priority Scheduling of Periodic, Real-Time Tasks. Perf. Eval. (Netherlands), 1982-2, pp. 237-250.

13. Lehoczky J.P. Fixed Priority Scheduling of Periodic Task Sets With Arbitrary Deadlines. 11th IEEE RTS Symposium, 1990, pp.201-209.

14. Audsley N. Optimal Priority Assignment and Feasibility of Static Priority Tasks With Arbitrary Start Times. University of York, UK, 1991.

15. Larsson J. ScheduLite: A Fixed Priority Scheduling Analysis Tool. Uppsala University, 1996.

16. Lawler E.L. Optimal sequencing of a Single Machine Subject to Precedence Constraints. Management Science, 1973-19.

17. Дийкстра Э. Взаимодействие последовательных процессов. В сб.: Языки программирования. //Под ред. Ф.Женюи.-М.: Мир, 1972.

18. Chen M., Lin K. Dynamic Priority Ceilings: A Concurrency Control Protocol for Real-Time Systems. J. of RTS, 1990-2.

19. Audsley N.C. Resource Control For Hard Real-Time Systems. University of York, UK, 1991.

20. Sha L., Rajkumar R., Lehoczky J.P. Priority Inheritance Protocols: An Approach to Real-Time Synchronization. IEEE Transactions on computers, 1990-39-9.

21. Tindell K. Embedded Systems In The Automotive Industry. NRTA, http://www.nrtg.com.

22. Lampson B.W., Redell D.D. Experiences with processes and monitors in Mesa. Communication ACM. 1980-23-2, pp.105117.

23. Никифоров В.В. Разработка программных средств для встроенных систем. - СПб: СПбГЭТУ, 2000.

24. Henriksson R. Scheduling garbage collection in embedded systems. Lund, 1998.

25. Данилов М.В. Асимметричный протокол приоритетных порогов. //Программные продукты и системы. - 2000.-№4.- С.33-36.

T

T

T

35