Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы реального времени и технологии разработки кроссплатформенного программного обеспечения. Ч.1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
4.2. Алгоритмы планирования
71
4.2. Алгоритмы планирования
Наличие алгоритма планирования – это отличительная черта совре­менной операционной системы. Обычные ОС не всегда могут похвастаться этим элементом. В них вместо планировщика обычно работает стандартная очередь заданий, основной целью которой является максимальное покры­тие пользовательских задач и имитация их параллельного выполнения. Мо­нополизация задачей процессорного ресурса не допускается, так как всегда должно оставаться место и время для системных процессов и для загрузки новых, не запланированных ранее задач. Эти задачи "вставляются” в рас­писание не по плану, а по желанию пользователя.
В ОС РВ во главу угла поставлено выполнение задач в строгом со­ответствии с требованиями и при этом параллелизм задач не только не яв­ляется важным фактором, но и вовсе запрещается, поскольку время выпол­нения задач во всей их массе будет зависимо от этих задач, а не от распи­сания и выделенных квантов времени.
Одним из самых важных требований к ОС РВ является предсказуе­мость времени выполнения задачи. Оно не должно зависеть от внешних факторов типа загруженности системы, количества задач в очереди и так далее. При этом стараются сделать так, чтобы временные параметры не за­висели от длины очереди (при условии, что они все помещаются в памяти).
Планировщик задач ОС РВ имеет и другие названия: это диспетчер задач, супервизор, шедулер. В любом случае, планировщик – это модуль, отвечающий за разделение времени процессоров системы между выполня­ющимися процессами. Очередь может быть одна для системы и всех ее про­цессоров или же их может быть несколько (например, по числу процессо­ров или групп процессоров).
Приоритетность
Мы привыкли к тому, что приоритетом называется некоторое число, назначенное операционной системой каждому процессу и задаче. Назначе­нием этих чисел заведует планировщик.
На настоящий момент распространено несколько схем назначения приоритетов в ОС РВ:
фиксированные приоритеты;
4. Управление задачами
72
турнирное определение; определение по циклическому алгоритму.
Фиксированные приоритеты назначаются задаче при ее создании и не изменяются на всем протяжении ее существования. В различных вариа­циях это очень распространенная схема. Часто приоритет имеет смысл идентификатора, т.е. является уникальным. Значение приоритета обычно больше 255.
Турнирное определение приоритета описывается как понижение приоритета последней исполнявшейся задачи.
Циклическое определение приоритета также имеет название Round Robin и описывается в документации как определение приоритета задачи по двум критериям: начальное значение приоритета, назначенное при со­здании, и время ее выполнения. Чем больше времени задача находится в работе, тем меньше будет ее приоритет на следующий раунд выполнения.
Приоритет не может иметь отрицательное значение или быть меньше определенного значения (назначается при проектировании си­стемы).
Циклическое назначение приоритетов в основном используется в операционных системах типа Linux.
Конечно, есть и другие алгоритмы, но они менее распространены, а специально разработанные алгоритмы для специфических операционных систем – скорее исключение из правил.
При изучении планировщика задач и системы приоритетов также необходимо помнить о проблеме блокировок. Когда более приоритетная задача блокирована менее приоритетной, но владеющей ресурсом, нужным более приоритетной (заблокированной) задаче, планировщик входит в со­стояние инверсии приоритетов. Для выхода из этой ситуации применяются разные алгоритмы, но самым популярным является алгоритм “наследова­ния приоритетов”. В этом случае нуждающаяся в ресурсе задача, получает его “в аренду”, т.е. во временное пользование, когда занимающая ресурс задача, на время освобождает его.
Когда вся система работает стабильно, нет никаких неполадок, кон­фликтов, то все задачи имеют одинаковый приоритет. Нет необходимости использовать большой диапазон различных приоритетов и схемы принуди­тельного переключения или изменения значений приоритетов. В крайнем
4.2. Алгоритмы планирования
73
случае, используется алгоритм присвоения высокого приоритета “критиче­ски важной” задаче, а остальным задачам присваивается низкий приоритет. В том случае, когда в системе присутствует несколько “критических за­дач”, есть смысл переходить на многопроцессорную конфигурацию, так как однопроцессорные варианты не смогут справляться в дальнейшем.
Методы планирования
Самым элементарным методом планирования является использова­ние циклического назначения приоритетов. Он не требует никакого специ­ального программного обеспечения или аппаратных блоков. Более того, за­частую в систему даже не встраивается отдельный планировщик. Все ре­шается обычной очередью типа FIFO (First Inpet, First Output) – первый во­шел, первый вышел. В этой схеме каждый процесс получает свой собствен­ный квант времени на выполнение. Если он не завершается в установлен­ный квант времени, то процесс перемещается в очередь, где он будет до­жидаться очередного вызова. Ресурсы процессора всегда предоставляются следующему процессу из этой очереди.
Алгоритм простой и имеет следующие основные достоинства:
простое использование;
прозрачность для понимания и простота встраивания;
линейность проектирования систем с таким планировщиком;
предсказуемость поведения;
детерминированность системы выполнения задач;
минимальный размер кода и данных;
отсутствие “гонки” и “конкурентности” процессов.
В принципе, алгоритм имеет и недостатки. К ним можно отнести от­сутствие мощной системы приоритетов и отсутствие нескольких очередей.
Задачи здесь могут быть вызваны вне зависимости от того, должны ли они в данный момент работать (что-то делать) или не должны.
Основная нагрузка ложится на системного и прикладного програм­миста, которому предстоит решать задачу управления переключением за­дач и процессов в системе.
Режим разделения времени
Сейчас распространено несколько вариантов этого алгоритма:
4. Управление задачами
74
нарезание времени (time slicing); разделение времени (time sharing).
Алгоритмы реализуются следующим образом. Каждой задаче отво-
дится определенное количество квантов времени, обычно кратных 1 мс. В течение каждого кванта задача может монополизировать ресурсы микро­процессора. После стечения кванта времени, управление передается следу­ющей задаче в очереди, которая готова, ожидает выполнения и имеет выс­ший приоритет. Эта задача выполняется в течение своего кванта времени, после чего к ней применяется алгоритм, аналогичный циклическому назна­чению приоритетов.
Можно заметить, что данный алгоритм приводит к появлению следу­ющей проблемы: низкоприоритетные задачи могут никогда не получить воз­можность выполнения, так как вершину очереди будут занимать высокопри­оритетные задачи. Единственная возможность для задач с низким значением приоритета получить возможность запуска на выполнение – это ситуация, когда в очереди нет более приоритетных задач или они заблокированы.
Эту проблему частично решает принцип “равной доступности” за­дач, когда приоритет назначается адаптивным алгоритмом, учитывающим общее время, когда задача находится на выполнении. Согласно такому под­ходу, приоритет задачи корректируется со временем.
Кооперативная многозадачность
Данный алгоритм реализует схемы переключения задач, принятых в операционных системах типа Windows. В этой системе задача выполняется столько времени, сколько ей требуется. Когда задача “приходит к выводу”, что ей было выделено достаточно времени, она сама передает управление другой задачи. По своей сути это тот же Round Robin, только он контроли­руется не системным процессом или планировщиком, а самими задачами в кооперативе. В чистом виде практически не применяется в операционных системах реального времени.
Приоритетная многозадачность с вытеснением
Это наиболее часто используемая в ОС РВ схема управления зада­чами и их приоритетами. Фактически – это принцип планирования. Основ-
4.2. Алгоритмы планирования
75
ная идея подхода состоит в том, что задача с высоким приоритетом немед­ленно вытесняет из потока выполнения задачу с более низким приорите­том, когда для нее появляется “работа”. Другими словами, если текущая активная задача имеет более низкий приоритет, чем другая задача, полу­чившая статус “готовности”, она немедленно передает управление.
Вытеснение происходит, например, тогда, когда задача с высоким приоритетом получила сообщение, освободился ее ресурс, истек выделен­ный лимит времени или произошло ожидаемое внешнее событие, связан­ное с запросом на прерывание.
Многоуровневые очереди с обратными связями
В любых системах реального времени предпочтение отдается зада­чам с небольшим прогнозируемым временем выполнения. Этим обеспечи­вается высокая “плотность” использования как внутренних, так и внешних ресурсов системы. Но так как не все задачи удовлетворяют этим условиям или имеют малое время выполнения, то они ранжируются в системе.
Для учета результатов такого разделения задач было введено не­сколько уровней вложенности задач, и им была добавлена “обратная связь”.
При таком подходе каждый новый процесс помещается уже не в одну очередь, а в систему очередей, и перемещается по ней до тех пор, пока не получит возможность выполнения и все необходимые ресурсы. Если процесс, занявший центральный процессор, не успевает выполниться до конца в установленный квант времени, то он перемещается в конец очереди с более низким уровнем и ожидает перемещения в очереди более высокого уровня со временем.
В обычной многоуровневой системе предусмотрена самая нижняя очередь, для которой реализованы циклические сдвиги приоритетов. В оче­редях нижнего уровня процесс циркулирует до полного своего завершения. Следует заметить, что при перемещении процесса в очередь с понижением уровня, ему будет увеличен размер кванта времени на выполнение.
Таким образом, для процессов, сдвигаемых вниз по уровням очере­дей, наблюдается снижение приоритета, но увеличение разрешенного вре­мени на обработку.
4. Управление задачами
76
Обратная связь в этом процессе позволяет более эффективно разде­лить процессы на категории в соответствии с их потребностью в ресурсах системы. Дело в том, что состояние процесса сохраняется в системе в виде статистики и, в частности, запоминается уровень очереди, из которой этот процесс был выгружен. При возврате процесса в систему очередей на вы­полнение он будет поставлен в ту очередь, в которой он находился в по­следний раз.
Многоуровневые очереди с обратными связями – это показательный пример адаптивного подхода к построению механизма планирования. При этом система как бы реагирует на изменение поведения процессов в системе.
Стратегии планирования задач
Далее перечислим все способы, которыми планировщик задач ре­шает, какой процесс запускать дальше и как передавать управление про­цессору.
1. Используя очередь типа “первый вошел – первый вышел” (FIFO).
Здесь следующей будет выполнена первая поступившая в очередь задача.
2. Используя упорядоченную по времени очередь. Здесь первой бу-
дет выполняться задача, находящаяся в конце очереди, куда она была по­мещена, так как имела до этого самое короткое время выполнения.
3. Используя несколько очередей ожидания. При таком подходе к
планированию в системе используется несколько очередей, перечисленных выше типов. Задача размещается в одной из них в зависимости от многих факторов: приоритета, времени выполнения и так далее. Выборка обычно производится из головы одной из очередей. Если выбранная очередь пуста, планировщик переходит к следующей. Каждая очередь имеет в системе свой номер, и этот номер соответствует различным квантам времени вы­полнения. Самый младший номер имеет очередь с самыми малыми кван­тами времени выполнения.
4. Используя очереди с учетом приоритета задачи. Подход, анало-
гичный второму типу очередей, только сортировка (упорядочивание) про­изводится не по времени выполнения, а по приоритету задачи.
Планирование можно рассмотреть на примере Linux-подобных си­стем. В них все кванты времени имеют одинаковый размер, так что сорти­ровать задачи по длительности выполнения не имеет смысла. Все готовые
4.3. Особенности управления процессами в операционных системах реального…
77
к выполнению задачи получают свой квант времени и периодически от­правляются на выполнение. Этот период зависит от общего количества го­товых к выполнению задач.
Основное ранжирование задач производится согласно их приори-
тету. В начале работы, а именно в момент создания задачи, последняя имеет высокий приоритет. Каждое возвращение задачи в очередь (пул) сни- жает значение приоритета. Изменение приоритета происходит всегда, кроме одного исключения: когда задача использует именно процессорные ресурсы и блокируется. Если задача выбрала свой квант полностью и не была заблокирована, то ее приоритет гарантировано снижается.
Данный механизм позволяет обеспечить высокий уровень средней
производительности системы при переключении задач и высокий уровень отзывчивости интерактивных приложений (т.е. программ, которые взаимо­действуют с пользователем в реальном времени).
Однако в чистых операционных системах реального времени такой
метод не применим, так как процессорное время, используемое задачей, напрямую зависит от количества запущенных задач, т.е. не является пред­сказуемым ресурсом.
Для систем реального времени, произведенных от Linux-подобных
систем, на практике применяется модификация такого планировщика. Все задачи имеют фиксированное значение приоритета, которое может ме­няться только самой задачей или принудительно планировщиком. Во время возврата или выполнения приоритет не может быть изменен. Доступ к ре­сурсам процессора всегда получает задача, имеющая самый высокий прио­ритет. Если таких задач много, то запускается механизм Round Robin
Schedulig (RRS).
В этом случае реализуется концепция, когда задача с любым уров­нем приоритета, даже с уровнем ядра системы, может быть прервана дру­гой задачей, при условии того, что у нее будет более высокий приоритет.
4.3. Особенности управления процессами в операционных системах реального времени
Как уже неоднократно говорилось, планирование задач в системе
должно соответствовать критериям оптимальности. Для систем “жесткого
4. Управление задачами
78
реального времени” – это соответствует фразе: делать все и всегда вовремя, а для систем с “мягким” временем – это может быть: минимальное запаз­дывание или средняя “своевременность” выполнения задач.
В зависимости от основного для системы критерия, могут вноситься
изменения в алгоритм планирования задач.
В любом случае в современных системах введен новый параметр,
так называемый дэдлайн (deadline). Дэдлайн означает лимит времени, вы­деленного на выполнение операций. С этой проблемой как раз и должен справляться планировщик, чтобы максимально приблизить поведение си­стемы к предсказуемому состоянию.
Дэдлайны могут быть назначены системе в целом или каждому про-
цессу по отдельности. Во втором случае процесс не должен пропустить ни один свой дэдлайн. Если это заранее невозможно, процесс попросту откло­няется.
Чаще всего сейчас применяются следующие типы алгоритмов пла-
нирования:
статические; динамические.
К статическим алгоритмам планирования в основном относятся ал-
горитмы группы RMS (Rate Monotonic Scheduling), а к динамическим – EDF
(Earliest Deadline First).
Статические алгоритмы имеют свое статическое расписание. Оно составляется заранее, до старта основной системы. После старта планиров­щик просто следует установленному расписанию, не отклоняясь от него. Разумеется, это следует в основном периодическим заданиям, состав и по­следовательность которых известны заранее. Все задачи, которые не вхо­дят в этот статический список, “вставляются” в расписание в свободные слоты или моменты, т.е. по ходу работы.
Преимущества данного подхода:
простота. Здесь нет понятия “поток” или “процесс” в привычном для нас смысле – выполнение задачи означает просто передачу управления или вызов;
надежность. В условиях стабильного расписания вероятность сбоя чрезвычайно мала;
4.3. Особенности управления процессами в операционных системах реального…
79
тестируемость. И компоненты системы и ее саму легко протести-
ровать;
стабильность. Система получается детерминированной и все в
ней случается в определенное время.
Как ни странно, но из этих преимуществ возникают и недостатки. Во-первых, это “негибкость” системы. Любое существенное измене-
ние в расписании приводит к необходимости остановки всей системы, пе­ресчету расписания и новому запуску.
Во-вторых, планировщик работает в своем изолированном про-
странстве, так как основным источником событий для него является внут­ренний таймер.
В-третьих, при большом количестве заданий, размер таблицы вы-
полнения задач может быть большим, так как в ней описывается не только очередь задач, но и условия запуска, соотношения времени, связи и прочие детали.
Статические планировщики в основном применяются в тех случаях, когда можно жертвовать гибкостью в пользу стабильности и когда системе достаточно выполнять небольшой набор действий, но обеспечивать высо­кую надежность.
Динамические алгоритмы лишены этих недостатков, но имеют свои особенности. Для планировщиков динамического типа основной считается та задача, которая имеет высший приоритет. Методы назначения приори­тетов применяются различные. У задач одного типа или у процессов, реа­лизующих одну и ту же задачу, приоритеты могут различаться.
Поэтому большинство планировщиков такого класса называются планировщиками с динамическими приоритетами.
Можно рассмотреть два примера динамического планирования с ди­намическими приоритетами:
EDF (Earliest Deadline First);
LLF (Least Laxity First).
EDF занимается задачами, назначая им приоритет по принципу: в каждый момент времени высший приоритет назначается той задаче, у ко­торой осталось меньше всего времени до конца выделенного ей срока ис­полнения. При этом у EDF есть две распространенные модификации: с вы­теснением задач и без вытеснения. Здесь под вытеснением мы понимаем
4. Управление задачами
80
ситуацию, когда во время выполнения задачи Х создается работы задачи Y, приоритет которой выше. В этом случае задача Х вытесняется задачей Y из потока выполнения, даже если ее работа оказывается не доделанной. Если вытеснение не применяется, то задача Х всегда будет заканчивать свою ра­боту вне зависимости, появились ли в системе задачи Y, Z или какие дру­гие, с более высоким приоритетом.
LLF раздаёт приоритеты в соответствии с принципом: высший при­оритет всегда имеет задача с минимальным резервом времени. Этот резерв времени называется Laxity, а резервом здесь называют разницу во времени между крайним сроком выполнения и временем, которое необходимо еще проработать задаче.
Алгоритмы EDF и LLF считаются оптимальными для любого набора задач любого типа если:
все задачи не зависят друг от друга;
задачи могут и имеют право вытеснять друг друга;
вытеснение не требует особых временных затрат.
Также существуют динамические алгоритмы планирования со ста­тическими приоритетами. Если в таком планировании задаче назначается приоритет, то он уже не будет изменен с течением времени. Принципы ра­боты такого планировщика составлены на примере статического планиров­щика с небольшими изменениями. В таких решениях существуют не­сколько способов назначения приоритетов. Рассмотрим два наиболее попу­лярных метода:
RMS (Rate Monotonic Scheduling);
DMS (Deadline Monotonic Scheduling).
RMS использует следующее правило назначения приоритетов: са­мый высокий приоритет назначается задаче с самым меньшим периодом.
DMS действует немного по-другому: приоритет задачи тем выше, чем меньше ее относительный крайний срок.
У этих алгоритмов так же есть недостатки. Так, например, в опреде­ленной ситуации возможен выход за пределы дэдлайна. Однако данные ме­тоды просты в реализации и часто применяются на практике именно в опе­рационных системах реального времени.
Применение планировщиков с приоритетами и прерыванием обслу­живание типа RMS – достаточно частое явление для ОС РВ. Для последних
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]