
- •Тема 1. Введение
- •§ 1.1. Определение и виды систем реального времени (срв)
- •§ 1.2. Технология olap как пример срв
- •Тема 2. Комплекс технических средств (ктс) срв
- •§ 2.1. Устройства связи с оперативным персоналом (усоп)
- •§ 2.2. Датчики
- •§ 2.3. Исполнительные устройства (механизмы)
- •Тема 3. Последовательное программирование и программирование задач рв
- •§ 3.1. Задачи, процессы, потоки
- •Основные свойства задач
- •§ 3.2. Режимы планирования задач в срв
- •Циклический (круговой) алгоритм
- •Разделение времени
- •Кооперативная многозадачность
- •Приоритетная многозадачность с вытеснением
- •§ 3.3. Синхронизация задач в осрв
- •Связанные задачи
- •Общие ресурсы
- •Синхронизация с внешними и внутренними внештатными событиями
- •Синхронизация по времени
- •Тема 4. Специфика и свойства (параметры) осрв
- •§ 4.1. Параметры осрв
- •§ 4.2. Краткий обзор и классификация осрв
- •§ 4.3. Требования к языкам рв
- •§ 4.4. Структура программ срв
- •Тема 5. Назначение, цели и функции асу тп
- •§ 5.1. Системы диспетчерского управления (Scada-системы)
- •Функциональная структура Scada
- •Особенности Scada как процесса управления
- •Основные требования к Scada-системе
- •Область применения
§ 3.2. Режимы планирования задач в срв
Важной (центральной) частью ОСРВ является планировщик задач, который в разных источниках называется по-разному, например, диспетчер задач, супервизор.
При этом функции планировщика остаются теми же, а именно: определить какая из задач должна выполняться в системе в каждый конкретный момент времени.
Циклический (круговой) алгоритм
Каждая задача выполняется циклически. Можно отметить основные преимущества циклического алгоритма:
Простота использования и прозрачность понимания.
Задачи всегда вызываются в одной и той же последовательности, что позволяет достаточно просто произвести анализ «наихудшего» случая и вычислить максимальную временную задержку.
К недостаткам этого алгоритма относят:
Отсутствие приоритетности и очередей.
К тому же задачи вызываются независимо от того, должны они в данный момент что-то делать или нет.
Разделение времени
Как правило, данный алгоритм реализуется следующим образом: каждой задаче отводится определенное количество квантов времени, например, 1 миллисекунды, в течение которого задача монопольно занимает процессорное время. После того как заданный интервал времени истекает, управление передается следующей готовой к выполнению задаче с наивысшим приоритетом. Та, в свою очередь, выполняется в течение отведенного для нее промежутка времени, после чего указанные действия повторяются.
Следует отметить, что такой алгоритм работы может привести к серьезной проблеме, а именно к тому, что низкоприоритетные задачи могут вообще никогда не получить управление, т.к. высокоприоритетные задачи будут делить все процессорное время между собой. Единственная возможность для низкоприоритетных задач получить управление предоставляет ситуация, когда все высокоприоритетные задачи находятся в блокированном состоянии.
Для решения этой проблемы применяется прием, называемый равнодоступностью. При этом реализуется принцип адаптивной (динамической) приоритетности, когда приоритет задачи, которая выполняется слишком долго, постепенно уменьшается, позволяя менее приоритетным задачам получить свою долю процессорного времени.
Равнодоступность применяется главным образом в многопользовательских системах (системах «мягкого» РВ), а многорежимность применяются собственно в СРВ (системах «жесткого» РВ).
Кооперативная многозадачность
При использовании этого алгоритма задача, получающая управление, выполняется до тех пор, пока она сама, по своей инициативе, не передаст управление другой задаче. В чистом виде кооперативная многозадачность применяется в СРВ достаточно редко.
Приоритетная многозадачность с вытеснением
Наиболее часто используемый в ОСРВ принцип планирования задач. Суть алгоритма в том, что высокоприоритетная задача, как только для нее появляется работа, прерывает (вытесняет) низкоприоритетную задачу, т.е. если какая-либо задача переходит в состояние готовности, она немедленно получает управление. Если текущая активная задача имеет более низкий приоритет, следовательно, происходит «вытеснение», в частности, когда высокоприоритетная задача получила ожидаемое сообщение, освободился запрошенный ею ресурс, произошло связанное с ней внешнее событие, исчерпался заданный интервал времени.
Рис. 3.2.1. Основные варианты планирования задач в СРВ
Диапазон СРВ весьма широк, начиная от полностью статических систем, где все задачи и их приоритеты заранее определены, до динамических систем, где набор выполняемых задач, их приоритеты и режимы планирования может меняться в процессе планирования.
Существуют, в частности, системы, где каждая отдельная задача может участвовать в любом из двух или более алгоритмов планирования, например, вытеснение, разделение времени и кооперативность.
В общем случае режимы планирования задач должны соответствовать критериям оптимальности функционирования системы. Однако, если для систем «жесткого» РВ такой критерий очевиден, т.е. всегда и все делать во время, то для системы «мягкого» РВ этот критерий, как правило, размыт и имеет, например, вид: минимальное «максимальное запаздывание» или средневзвешенная своевременность завершения операций.
В зависимости от критериев оптимальности может применяться более изощренные (сложные) алгоритмы (режимы) планирования задач, которые могут существенно отличаться от рассмотренных. Например, планировщик может анализировать момент выдачи критичных по времени управляющих воздействий и запускать на выполнение ту задачу, которая отвечает за ближайшие из них.
Необходимо отметить, что в одной СРВ могут одновременно сосуществовать задачи «жесткого» и «мягкого» РВ, и что только одна из этих задач, обладающая наивысшим приоритетом, может быть по-настоящему детерминированной.
Не рекомендуется увлекаться приоритетами. Если СРВ нормально работает, когда все задачи имеют одинаковый приоритет, то этот режим можно обосновано считать вполне приемлемым. Если нет (СРВ не работает нормально), то можно присвоить высокий приоритет «критической» задаче и низкий приоритет – всем остальным.
Если у вас больше одной критической задачи при недостаточном быстродействии системы, имеет смысл рассмотреть вариант использования более быстродействующего оборудования или вариант использования многопроцессорной конфигурации, либо, отказавшись от ОСРВ, перейти к простому циклическому режиму (алгоритму) планирования.
Часто разработчики стараются свести СРВ, а точнее ПО СРВ, к наиболее простым конфигурациям, иногда даже в ущерб эффективности использования вычислительных ресурсов. Причина понятна, поскольку сложные динамические (с изменяющимися приоритетами) системы весьма трудно анализировать и отлаживать. Поэтому предпочтительнее использовать более мощный процессор, чем иметь в будущем проблемы из-за непредвиденного поведения системы.
В связи с этим большинство существующих СРВ представляют собой статические системы с фиксированным приоритетом. Часто в системах реализуется несколько режимов работы, каждый из которых имеет свой набор выполняемых задач с заранее заданными приоритетами.
Значительная часть особо ответственных систем реализуется вообще без использования ОСРВ.