Научная статья на тему 'Планирование строго периодических задач в системах реального времени'

Планирование строго периодических задач в системах реального времени Текст научной статьи по специальности «Математика»

CC BY
750
94
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА РЕАЛЬНОГО ВРЕМЕНИ / ПЕРИОДИЧЕСКАЯ ЗАДАЧА / ПЛАНИРОВАНИЕ / АВИОНИКА / НЕПЕРЕСЕКАЮЩИЕСЯ АРИФМЕТИЧЕСКИЕ ПРОГРЕССИИ

Аннотация научной статьи по математике, автор научной работы — Зеленов С. В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Зеленов С. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Планирование строго периодических задач в системах реального времени»

Планирование строго периодических задач в системах реального времени

С.В. Зеленое 2еІепоу@іі'ргаі'. ги

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

Ключевые слова: система реального времени; периодическая задача; планирование; авионика; непересекаюгциеся арифметические прогрессии.

1. Введение

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

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

независимых задач в однопроцессорной или многопроцессорной системах реального времени достаточно хорошо изучена. Многочисленные результаты, полученные в этой области, приведены, например, в работах [2], [3], [4], [5],

[6], [7], [8].

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

В классической постановке проблемы планирования задач время запуска периодической задачи не привязывается к определенному моменту времени внутри периода, но может варьироваться. Однако, в настоящее время в ряде случаев, например, при разработке систем управления авионикой, возникает необходимость обеспечить, чтобы запуски каждой периодической задачи выполнялись через строго определенные моменты времени (такие задачи мы будем называть строго периодическими). Это дополнительное очень сильное требование не позволяет напрямую использовать классические алгоритмы составления расписаний, такие как Rate Monotonic (RM), в котором преимущество отдается задачам с самыми короткими периодами выполнения, и Earliest Deadline First (EDF), в котором предпочтение отдается задачам с наиболее ранним предельным временем завершения выполнения [9].

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

2. Формальная постановка задачи

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

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

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

Задача Т(й, р). требующая для своего выполнения с! тиков, называется строго периодической, если ее запуск периодически повторяется, причем между соседними точками запуска проходит ровно р тиков, и выполнение задачи на каждом периоде должно завершиться до следующей точки запуска. Величина р называется периодом, с1 - длительностью задачи Т. Всегда верно соотношение Р>с1> 1.

Для данной строго периодической задачи Т(й, р) точка г называется начальной точкой запуска, если р > г> 0, и задача Т запускается только в точках г + кр для всех целых к > 0. В этих обозначениях условия строгой периодичности задачи Т формально записываются так:

задача Т запускается в каждой точке г + кр, на каждом участке [ г + кр, г + кр + (р - 1) ]

включительно имеется ровно с? точек, принадлежащих Т.

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

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

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

Как видно из приведенной формулировки, задача распадается на две подзадачи:

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

3. Предварительные сведения

Наибольший общий делитель (НОД) п целых чисел аь , ап обозначается (аь ..., ап). Два целых числа а и b называются сравнимыми по модулю целого числа с (записывается: a = b( mod с)), если разность (а - Ь) делится на с.

Из теории чисел известна следующая теорема (см., например, [10]):

Теорема 1. Пусть даны целые числа а, Ъ и с, и дано сравнение с одним неизвестным х:

ax = b (mod с).

Тогда если b не делится на (а, с), то сравнение не имеет решений, иначе -сравнение имеет (а, с) решений по модулю с, причем все эти решения сравнимы друг с другом по модулю с / (а, с).

Из Теоремы 1 вытекает следующая теорема:

Теорема 2. Пусть даны целые числа /, с, с’. Тогда для всевозможных целых / решения сравнения

х = / + с/ ( mod с ’) (1)

удовлетворяют соотношению

x-t = 0 (mod (с, с’)). (2)

Доказательство. По Теореме 1, для любого / сравнение (1) имеет единственное решение. Решения сравнения (1) для разных / и / ’ совпадают, если с(/ - /’) = 0 ( mod с’ ), т.е. (по Теореме 1) если / и /’ сравнимы друг с другом по модулю с’ / (с, с’). Отсюда следует, что существует с’ / (с, с’) различных решений сравнения (1) для разных /. Следовательно, поскольку для любого / разность х - t = cl делится на (с, с ’), и число с ’ делится на (с, с ’), то все с’ / (с, с’) различных решений сравнения (1) для разных / удовлетворяют соотношению (2). ►

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

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

X (41рЬ < 1

Для алгоритма EDF это условие является и достаточным [9]. Однако, в случае строго периодических задач это условие уже не является достаточным.

Пример. Пусть даны три строго периодические задачи: Тг( 1, 2), Т2{ 1, 4), 7^(1, 6). Тогда суммарная загруженность процессора строго меньше 1, а НОК периодов этих задач равен 12. Без ограничения общности будем считать, что задача 7:, стартует в точке 0. Тогда она будет запускаться во всех четных точках. В какой бы из оставшихся свободных точек 1 или 3 ни стартовала задача Т2, она будет запускаться каждый четвертый тик, а значит свободными для запуска задачи Т3 останутся точки, образующие арифметическую прогрессию с периодом 4. Однако на такой прогрессии невозможно уместить прогрессию с периодом 6. Таким образом, задачу Т3 спланировать не удастся.

4. Алгоритм перебора потенциальных начальных точек

Сопоставим каждой задаче T,{dh р,) множество Rh состоящее из pt точек, последовательно перенумерованных числами от 0 до (pi - 1). Каждое множество Rt содержит все потенциальные начальные точки для задачи Tt. Однако, в ходе выбора начальных точек для некоторых из задач, множества потенциальных начальных точек для остальных задач будут постепенно сокращаться. Действительно, если для некоторой задачи Тк выбрана начальная точка rk, то для любого m фк нужно удалить из отрезка Rm все такие точки г, что

г-гк = О (mod(phpj), (3)

поскольку если в качестве начальной точки для 7„, будет выбрана точка со свойством (3), то тогда в некоторый момент, по Теореме 2, точки запуска задач ТкиТт совпадут.

Замечание. Иногда для некоторых задач может и не произойти реального сокращения множеств потенциальных начальных точек в силу того, что все точки, которые должны быть удалены согласно приведенному выше правилу, уже были удалены в результате выбора начальных точек для других задач. Поясним это на следующем примере. Пусть даны три задачи: Tj( 1, 4), 741. 8), Т3( 1, 10). Пусть для первой задачи выбрана начальная точка г, = 0. Тогда из множества R2 будут удалены точки 0 и 4 (поскольку (4, 8) = 4), а из множества R3 - точки 0, 2, 4, 6, 8 (поскольку (4, 10) = 2). Тогда если для второй задачи выбрать начальную точку г2 = 2, то из множества R3 нужно будет удалить точки 0, 2, 4, 6, 8 (поскольку (8, 10) = 2), однако все эти точки уже были удалены из этого множества.

Замечание. В том же примере из предыдущего замечания, если для второй задачи выбрать начальную точку r2= 1, то реальное сокращение множества R3 произойдет, а именно нужно будет удалить точки 1, 3, 5, 7, 9.

Будем считать, что выбор начальных точек происходит последовательно по порядку, начиная с г і и заканчивая г„. Из сделанных выше замечаний следует,

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

Установим на кортежах начальных точек { г, } лексикографический порядок: будем говорить, ЧТО кортеж ( Г], Г п) предшествует кортежу (г’], г если для некоторого т выполнены соотношения:

гт<г ’т;

гк = г’к для всех к < т.

Алгоритм перебора потенциальных начальных точек в первом приближении состоит в переборе кортежей { г, } в лексикографическом порядке; при этом для любого к перебор гк осуществляется по актуальному множеству Кк (т.е. полученному в соответствии с выбором начальных точек г..., гкл).

В реальных приложениях количество задач п может достигать значения 20, 30, и даже 40. При этом реальные периоды задач могут достигать значения в несколько тысяч тиков. На подобных входных данных приведенный алгоритм будет работать неприемлемо долго. Однако, на деле нам не требуется перебирать все варианты кортежей { г, }. Требуется как можно быстрее найти такой вариант кортежа начальных точек, при котором количество прерываний задач будет как можно меньше.

Исходя из этого, мы модифицируем алгоритм так, чтобы в первую очередь перебирались те варианты кортежей { ri }, на которых наиболее вероятно будет происходить непрерывное выполнение задач. Более точно, мы сконцентрируемся на обеспечении как можно более длительного непрерывного выполнения первых тиков после запуска каяедой задачи. Для этого мы воспользуемся двумя следующими приемами.

Первый прием состоит в следующем. Заметим, что при выборе очередной начальной точки гк мы фактически резервируем один начальный тик выполнения задачи Тк. Однако можно таким же образом резервировать для этой задачи \/. начальных тиков, где с1к > .\к > 1. При этом для перебора следующих начальных точек гт (при т > к) придется из Кт удалять не только точки, соответствующие (в смысле соотношения (3)) точке гк, но все точки, соответствующие всем точкам из участка [гк,гк + $- 1 ].

Очевидно, наилучшим вариантом будет такое резервирование, когда для всех задач Л/. = с1к. поскольку при этом все задачи будут выполняться без прерываний. Однако такое возможно далеко не всегда. Действительно, после такого резервирования, проведенного лишь для нескольких первых задач, может оказаться, что для какой-то из оставшихся задач множество потенциальных начальных точек стало пустым.

Заметим, что чем меньше период задачи, тем чаще она будет запускаться, а, следовательно, приоритетным является зарезервировать як = с1к для задач с наименьшими периодами. Исходя из этого, поскольку задачи у нас

отсортированы по возрастанию их периодов, а резервирование осуществляется по порядку номеров задач от 1 до п, будем резервировать начальные тики для задач по остаточному принципу: для текущей задачи 7/. будем резервировать вк как можно больше, чтобы для остальных задач Тт (при т > к) можно было зарезервировать хотя бы по одному тику (будем говорить, что в этом случае для задачи Т\ резервирование корректно).

Алгоритм поиска наибольшего корректного резервирования ^ основан на методе половинного деления отрезка [ 1, <4 ], так что на каждом шаге деления левая граница отрезка позволяет корректное резервирования, а правая - нет. Второй прием для обеспечения как можно более длительного непрерывного выполнения первых тиков после запуска каждой задачи состоит в следующем. Заметим, что после осуществления резервирования для первых к-1 задач и удаления всех соответствующих точек из Кк, множество Кк представляет собой участок целых чисел от 0 до рк - 1, в котором некоторые точки «выколоты», а оставшиеся точки образуют несколько непрерывных участков. Для того, чтобы обеспечить наибольшее резервирование % следует в первую очередь перебирать левые концы этих оставшихся непрерывных участков из Кк в порядке убывания длины соответствующего непрерывного участка.

5. Алгоритм построения расписания для данного набора точек старта

Алгоритм построения расписания является модификацией алгоритма ЕЭР. Модификация направлена на то, чтобы обеспечить как можно более длительное непрерывное выполнение первых тиков после запуска каяедой задачи.

В алгоритме ЕББ задачам динамически назначаются приоритеты, так что наибольший приоритет имеет та (еще не завершенная) задача, для которой ближе всего очередная следующая точка запуска.

Наша модификация этого алгоритма состоит в следующем. Рассмотрим две последовательные точки х и у запусков задач (х < у). Пусть в точке х запущена задача Т, для которой зарезервировано 5 начальных тиков. Построим по алгоритму ЕБР предварительное расписание на участке [ х + 5, у - 1 ]. После этого, если на этом участке имеются точки, принадлежащие задаче Т, то перенесем их в начало этого участка. В результате все точки, принадлежащие задаче Т на участке [ х, у - 1 ], будут следовать непрерывно в начале этого участка. Таким же образом будем поступать для всех последовательных точек запусков задач.

6. Результаты экспериментов

Предложенный в настоящей работе алгоритм предполагается использовать в реальных условиях, когда количество задач может достигать значения 20, 30 и

даже 40. При этом расчетная априорная загрузка процессора составляет порядка 50-70%.

Предложенный алгоритм испытывался на множествах задач (от 16 до 44 задач) с псевдослучайными параметрами, удовлетворяющими следующим свойствам:

Период каждой задачи является делителем числа 29-3-53 = 192000 (с тем, чтобы, из соображений потребления ресурсов алгоритмом, НОК периодов всех задач не превышал бы 192 000);

Длительность для каждой задачи равна (с учетом округлений) либо Н, либо Ч, либо от периода этой задачи, деленного на количество задач (так что максимальная загрузка процессора не будет превышать 75%) .

Эксперименты проводились на ПК с процессором Intel с тактовой частотой 2,4 GHz и ОЗУ объемом 1 GB. Для каждого множества задач осуществлялся запуск предложенного алгоритма для поиска наилучшего (в смысле общего количества прерываний задач) расписания в течение первых 10 секунд работы алгоритма. Результаты экспериментов приведены в таблице (под лучшим решением здесь понимается лучшее, найденное за 10 с).

Число задач НОК периодов задач Общая загрузка Время нахождения первого решения (мс) Время нахождения лучшего решения (мс) Количество прерываний на участке НОК Среднее количество прерываний (на 1000 тиков)

16 48000 56.43% 18 451 455 9.48

17 96000 51.90% 34 5045 1807 18.82

18 192000 52.81% 125 8559 2047 10.66

19 96000 57.93% 66 1204 1409 14.68

20 48000 56.05% 26 6412 941 19.60

21 192000 53.98% 105 7650 2425 12.63

22 96000 53.69% 89 3635 1397 14.55

23 96000 59.19% 37 1573 1941 20.22

24 192000 54.58% 103 4758 1859 9.68

25 48000 52.87% 68 6635 738 15.37

26 96000 54.74% 75 3325 1363 14.20

27 192000 55.47% 206 6437 2160 11.25

28 96000 61.22% 66 235 2559 26.66

29 192000 59.37% 238 3480 2819 14.68

30 96000 64.09% 106 9782 2560 26.67

31 192000 51.29% 189 2818 2301 11.98

32 96000 56.58% 96 3730 1878 19.56

33 192000 56.19% 240 6497 2108 10.98

34 96000 64.68% 130 3706 2308 24.04

35 192000 56.28% 290 9993 2978 15.51

36 192000 65.39% 193 2848 4652 24.23

37 96000 58.30% 129 1134 2109 21.97

38 192000 60.03% 302 1698 4348 22.65

39 96000 66.39% 155 9234 2628 27.37

40 192000 61.80% 328 2961 4717 24.57

41 192000 58.73% 229 4857 4531 23.60

42 96000 57.96% 181 2527 1678 17.48

43 192000 69.38% 385 8249 6032 31.42

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

44 192000 58.58% 781 5073 4320 22.50

Табл. 1. Результаты экспериментальных испытаний алгоритма.

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

7. Заключение

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

Эксперименты показывают, что алгоритм позволяет за приемлемое для человека время (порядка 10 секунд) получать достаточно оптимальное расписание. При количестве задач 20—40, когда периоды задач могут достигать значения в несколько тысяч тиков, алгоритм позволяет получать расписания со средним количеством прерываний не более 25 прерываний на 1000 тиков.

В настоящее время алгоритм активно используется в реальных проектах по разработке систем управления авионикой.

Литература

[1] А.С.Косачев, И.Б.Бурдонов, В.Н.Пономаренко. Операционные системы реального времени. // Препринт Института системного программирования РАН, 2006, № 14. http://citforum.ru/operating_systems/rtos/

[2] Liu J.W.S. Real-Time Systems. //Prentice Hall, Englewood Cliffs, NJ, 2000. 600 p.

[3] Cottet F., Kaiser J., Mammeri Z. Scheduling in Real-Time Systems. // John Wiley & Sons Ltd. 2002. 282 p.

[4] N.N. Kuzjurin. Multiprocessor scheduling and expanders. Information Process. Letters, 1994, v. 51, №6, 315-319.

[5] H. H. Кузюрин. Многопроцессорные расписания и комбинаторные конфигурации. Дискретная математика, 1995, т. 7, № 2, 77-87.

[6] S. Zhuk, A. Tchemykh, N. Kuzjurin, A. Pospelov, A. Shokurov, A. Avetisyan, S. Gaissaryan, D. Grushin. Comparison of Scheduling Heuristics for Grid Resource Broker. Proc. of the Third International Conference on Parallel Computing Systems (PCS2004). IEEE Computer Society Press, 2004, 388-392.

[7] A. Tchemykh, J. M. Ramirez, A. Avetisyan, N. Kuzjurin, D. Grushin, S. Zhuk. Two Level Job-Scheduling Strategies for a Computational Grid. Proc. of the Second Grid Resource Management Workshop. LNCS 3911, 2006, 774-781.

[8] A. Tchemykh, U. Schwiegelsohn, R. Yahyapour, N. Kuzjurin. On-line Hierarchical Job Scheduling in Grids with admissible allocation. J. of Scheduling. 2010, v. 13, № 5, 545-552.

[9] Liu C. and Layland J.W. Scheduling algorithms for multiprogramming in a hard realtime environment. // Journal of ACM , 20(1): 46-61, 1973.

[10] И.М.Виноградов. Основы теории чисел. //M.-JL: Еостехиздат, 1952. 180 стр.

i Надоели баннеры? Вы всегда можете отключить рекламу.