Немного более гибким является подход, в котором расписание генери-
руется оперативно. В этом случае для каждой задачи заранее определяются:
время реакции и время выполнения. Рассмотрим планирование, основанное
на времени. Время реакции задаёт интервал, в течение которого предполага-
ется ответ системы и после которого возникает угроза пропуска срока, требу-
ющая выделения дополнительных ресурсов для задачи. Время выполнения за-
даёт интервал, после выхода за границы которого, задача считается невыпол-
ненной и требуется уже приостановка выполнения задачи для сохранения ста-
бильности всей системы в целом.
Для динамического перераспределения ресурсов системы можно ис-
пользовать политику управления – round-robin. В этом случае процесс выпол-
няется либо пока выделенный ему квант времени не истечёт, либо пока не бу-
дет приостановлен другим процессом с более высоким приоритетом. После
того, как время, выделенное для данного процесса, истечёт, активируется сле-
дующий готовый к запуску процесс.
Когда процесс получает более высокий приоритет и приостанавливает
выполнение текущего, планировщик сохраняет контекст, приостановленного
процесса для того, чтобы далее продолжить его выполнение с места приоста-
новки. Приостановленный процесс остаётся готовым к запуску.
Процессы в списке готовых к запуску задач должны быть упорядочены,
согласно методу EDF, в порядке возрастания времени реакции. При наличии
блокировки запускаются только задачи с приоритетом выше или равным при-
оритету инициировавшей блокировку задачи.
Подготовка к запуску планировщика
Главная программа запускает функцию инициализации планировщика,
в которую передается массив структур, состоящий из указателей на планируе-
мые процедуры и из параметров выполнения. В число параметров входят:
идентификатор (задается главной программой), приоритет, интервал/квант
выполнения, время реакции, время выполнения (для мягких задач может не
определяться), период (для периодических функций), количество запусков
или время работы (для спорадических задач), порядок, относительно других
задач. Также возможна передача указателя на входные параметры процедуры.
В планировщике создается список задач, процесс-таймер, для формиро-
вания последовательности сообщений для планировщика.
Во время работы планировщика главная программа выполняет вызовы
функции, отсылающей сообщения о начале работы определённой задачи.
Планировщик создаёт отдельные процессы для каждого задания. Запущенные
задачи сами могут вызывать функции планирования для себя или других за-
дач.
Таймер получает от планировщика сообщения и создаёт соответствую-
щие метки отсылки сообщений для планировщика. В дальнейшем по дости-
жении метки таймер посылает планировщику сообщение инициировать рабо-
ту определённой задачи. Если это метка периодической или спорадической