МИНОБРНАУКИ РОССИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
“ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ”
Факультет компьютерных наук
Кафедра информационных систем
Системы реального времени. Реализация на базе микрокомпьютера.
Курсовая работа
230400 Информационные системы и технологии
Зав. кафедрой _____________ Э. К. Алгазинов, д.ф.-м.н., профессор __.__.20___
Студент __________________ А. С. Вакулин, 3 курс, д/о
Руководитель _______________С. А. Зуев, к.т.н., ассистент ___.___.20___
Воронеж2016
Содержание
Введение…………………………………………………………………………..3
1. Основные понятия…………………………………………………………….. 4
1.1 Понятие ОСРВ……………………………………………………………. .4
1.2 Классификация ОСРВ…………………………………………………….. 8
2. Языковые средства для создания приложений……………………………….8
2.1 Языки программирования ПЛК…………………………………………...9
2.2 Языки реального времени………………………………………………...11
3. Пример проектирования и реализациина базе микрокомпьютера ……….12
3.1 Постановка задачи………………………………………………………...12
3.2 Общее описание системы………………………………………………...13
3.3 Выбор частоты опроса датчика биений…………………………………14
3.4 Алгоритмы и методы обработки данных………………………………..15
3.5 Классификация сигналов…………………………………………………15
3.6 Первичная обработка данных…………………………………………….16
3.7 Оптимизация циклических расчетных алгоритмов…………………….18
3.8 Алгоритм сбора данных и управления…………………………………..20
4. Примеры ОС реального времени…………………………………………….22
4.1 QNX………………………………………………………………………..22
4.2 TNKernel…………………………………………………………………...24
4.3 ChorusOS…………………………………………………………………..26
Заключение………………………………………………………………………27
Список использованных источников…………………………………………..28
Введение
Система реального времени – это система, которая способна обеспечить требуемый уровень сервиса в определённый промежуток времени.
В системах реального времени (СРВ) главным критерием эффективности является обеспечение временных характеристик вычислительного процесса, поэтому планирование здесь имеет особое значение. Любая система реального времени должна реагировать на сигналы управляемого объекта в течение заданных временных ограничений. Но в системах реального времени весь набор выполняемых задач известен заранее, поэтому необходимость тщательного планирования работ несколько облегчается. Кроме того, часто в системе имеется информация о временах выполнения задач, моментах активизации, предельных допустимых сроках ожидания ответа и т. д. Эти данные могут быть использованы планировщиком для создания статического расписания или для построения адекватного алгоритма динамического планирования.
Чаще всего одно или несколько внешних физических устройств генерирует входные сигналы, и компьютер должен адекватно на них реагировать в течение заданного временного интервала. Например, компьютер в проигрывателе компакт-дисков получает биты от дисковода и должен за очень маленький промежуток времени преобразовать их в музыку. Если процесс преобразования будет слишком долгим, звук окажется искаженным. Подобные системы также используются для наблюдения за пациентами в палатах интенсивной терапии, в качестве автопилота самолета, для управления роботами на автоматизированном производстве и в других случаях, когда запоздалая реакция ничуть не лучше, чем отсутствие реакции.
1. Основные понятия
1.1 Понятие операционной системы реального времени
Существует достаточно большое количество определений понятия системы реального времени, но главные черты могут быть определены как комбинация следующих двух определений:
1. Система называется системой реального времени, если правильность ее функционирования зависит не только от логической корректности вычислений, но и от времени, за которое эти вычисления производятся. То есть для событий, происходящих в такой системе, то, когда эти события происходят, так же важно, как и логическая корректность самих событий.
2. Реальное время (программное обеспечение) (IEEE 610.12 – 1990): Относится к системе или режиму работы, в котором вычисления проводятся в течение времени, определяемого внешним процессом, с целью управления или мониторинга внешнего процесса по результатам этих вычислений.
Оба эти выражения подчеркивают главное требование к СРВ – эти системы должны выполнять свои операции вовремя.
Операционная система реального времени (ОСРВ) — тип операционной системы, основное назначение которой — предоставление необходимого и достаточного набора функций для работы систем реального времени на конкретном аппаратном оборудовании.
В настоящее время микрокомпьютерами называют встраиваемые системы управления (например: в бытовую технику или электростанции), характерными особенностями которых являются миниатюрная конструкция, низкое энергопотребление, работа в жёстких условиях и специализированная ОС, как правило, реального времени.
В таблице 1 представлены отличия ОСРВ от ОС общего назначения.
Таблица 1 – Сравнение ОСРВ и ОС общего назначения
ОСРВ |
ОС общего назначения |
|
Основная задача |
Успеть среагировать на события, происходящие на оборудовании |
Оптимально распределить ресурсы компьютера между пользователями и задачами |
На что ориентирована |
Обработка внешних событий |
Обработка действия пользователя |
Как позиционируется |
Инструмент для создания конкретного аппаратно-программного комплекса реального времени |
Воспринимается пользователем как набор приложений, готовых к использованию |
Кому предназначена |
Квалифицированный разработчик |
Пользователь средней квалификации |
ОСРВ должны удовлетворять следующим требованиям:
1. Детерминизм. ОС детерминирована, если она выполняет операции в фиксированное, предопределённое время или в пределах предопределённых интервалов времени. Насколько детерминированно система способна удовлетворять запросы, зависит в первую очередь от скорости, с которой она способна реагировать на прерывания, а также от того, обладает ли система достаточной пропускной способностью для обработки всех запросов за требуемое время. Мерой способности операционной системы к детерминированному функционированию служит длительность максимальной задержки между поступлением в систему прерывания от высокоприоритетного устройства и началом его обработки. В ОС, не являющихся операционными системами реального времени, задержка может составлять от десятков до сотен миллисекунд, в то время как в ОСРВ такая задержка должна иметь верхнюю границу от нескольких микросекунд до миллисекунды.
2. Чувствительность. Чувствительность рассматривает вопрос о том, сколько времени требуется операционной системе для обслуживания прерывания после распознавания. Чувствительность включает в себя следующее:
1) Количество времени, требующееся для начальной обработки прерывания и начала выполнения подпрограммы обработки прерывания (Interrupt Service Routine – ISR). Если выполнения ISR требует переключения процессов, то задержка оказывается большей, чем при ISR, которая может выполняться в пределах контекста текущего процесса.
2) Количество времени, требующееся для выполнения ISR. Обычно это время зависит от используемой аппаратной платформы.
3) Влияние вложенных прерываний. Если ISR может быть прервано поступлением нового прерывания, то обслуживание текущего прерывания будет отложено.
3. Управление со стороны пользователя. Управление со стороны пользователя в ОСРВ обычно значительно шире, чем в обычной ОС. В типичной ОС, не являющейся операционной системой реального времени, пользователь либо не в состоянии управлять функцией планирования ОС, либо может осуществлять только самое общее руководство типа группирования пользователей по нескольким классам приоритетов; однако в ОСРВ важной составляющей является обеспечение возможности тонкой настройки приоритетов задач. Пользователь должен иметь возможность разделять задачи на жесткие и мягкие и определять относительные приоритеты в пределах каждого класса. Кроме того, ОСРВ позволяют пользователю определять и такие характеристики, как использование страничной организации памяти или свопинг процессов, а также определять, какие процессы должны постоянно находиться в основной памяти, какой алгоритм дисковых операций должен использоваться, какие права у процессов из разных групп и многое другое.
4. Надежность. Случайная ошибка в обычной системе может быть в худшем случае обработана просто посредством перезагрузки системы; сбой одного из процессоров в обычной многопроцессорной системе приведёт к снижению уровня обслуживания до замены или починки этого процессора. Но ОСРВ работает, как и следует из её названия, с событиями в реальном времени, и потеря производительность может привести к катастрофическим последствиям – от финансовых потерь до потерь оборудования и человеческих жизней.
5. Восстановление после сбоев. ОСРВ должна быть разработана таким образом, чтобы уметь отреагировать на ошибки разного типа. Восстановление после сбоев – характеристика системы, которая описывает способность системы сохранить максимальную функциональность и не потерять данные при сбое. ОСРВ будет пытаться либо исправить ситуацию полностью, либо минимизировать её влияние на продолжающуюся работу системы. Обычно система информирует пользователя или пользовательский процесс о необходимости корректирующих действий и продолжает работу, возможно, со сниженным уровнем обслуживания. Если необходимо выключение системы, она пытается сохранить согласованность файлов и данных.
Важным аспектом восстановления после сбоев является стабильность системы. Система стабильна, если в случаях, когда невозможно выдержать предельные сроки всех задач, она выдерживает предельные сроки для наиболее критических высокоприоритетных задач (даже если не всегда удаётся выдержать условия работы над некоторыми менее критическими задачами).
1.2 Классификация ОСРВ
Принято различать системы мягкого (Soft) и жесткого (Hard) реального времени. В системах жесткого реального времени неспособность обеспечить реакцию на какие-либо события в заданное время ведет к отказам и невозможности выполнения поставленной задачи. В большинстве русскоязычной литературы такие системы называют системами с детерминированным временем. При практическом применении время реакции должно быть минимальным. Системами мягкого реального времени называются системы, не попадающие под определение «жесткие». Системы мягкого реального времени могут не успевать решать задачу, но это не приводит к отказу системы в целом.
В системах реального времени необходимо введение некоторого директивного срока (в англоязычной литературе – Deadline), до истечения которого задача должна обязательно (для систем мягкого реального времени – желательно) выполниться. Этот директивный срок используется планировщиком задач как для назначения приоритета задачи при ее запуске, так и при выборе задачи на выполнение.
2. Языковые средства для создания приложений
Задачи РВ решаются при помощи разбиения на сравнительно небольшое множество типовых подзадач, таких как: опрос источников данных, обработка данных средствами типовых алгоритмов, накопление собранных данных и результатов обработки, визуализация собранных данных и результатов обработки, передача собранных данных и результатов обработки, диалоговое взаимодействие с оператором и т. п. Все эти задачи целесообразно решать на основе стандартизации и унификации языков программирования, алгоритмов и т. п. Рассмотрим ряд типовых решений, в которых нам помогут языки программирования ПЛК и языки реального времени.
2.1 Языки программирования ПЛК
ПЛК — программируемый логический контроллер — электронная составляющая промышленного контроллера, специализированного (компьютеризированного) устройства, используемого для автоматизации технологических процессов. В качестве основного режима работы ПЛК выступает его длительное автономное использование, зачастую в неблагоприятных условиях окружающей среды, без серьёзного обслуживания и практически без вмешательства человека.
Международный стандарт IEC 1131-3 описывает семантику и синтаксис пяти специализированных языков программирования ПЛК: SFC, LD, FBD, ST и IL. Применением этих языков обеспечивается легкая переносимость реализационных решений с одной платформы на другую.
1. SFC (Sequential Function Chart) – высокоуровневый графический язык, используемый для написания алгоритма в виде набора связанных пар шагов и переходов (см. рис. 1).
Рисунок 1 – Язык SFC
2. LD (Ladder Diagram) – графический язык программирования для описания алгоритмов в виде множества релейных схем, в которых логические и вычислительные операции представлены в виде множества «шин», «контактов» и «катушек» (см. рис. 2).
Рисунок 2 – Язык LD
3. FBD (Functional Block Diagram) – в этом графическом языке используются функциональные блоки – элементы типа " логическое И", "логическое ИЛИ", блоки сравнения, сложения и вычитания, и прочие элементы, соединенные линиями (см. рис. 3).
Рисунок 3 – Язык FBD
4. ST (Structured Text) – текстовый высокоуровневый язык общего назначения, по синтаксису сходный с языков Pascal (см. рис. 4).
Рисунок 4 – Язык ST
5. IL (Instruction List) – текстовый язык низкого уровня, похожий на язык Ассемблера (см. рис. 5).
Рисунок 5 – Язык IL
Написание, отладка и сборка программ производится на ПЭВМ в операционной системе, имеющей развитые графические средства (например, Windows или QNX), а затем результат (подготовленный к работе программный модуль) передается на ПЛК, не имеющий ни клавиатуры, ни монитора, через один из стандартных интерфейсов, например, через RS-232. Подобная технология называется кросс-платформенной технологией (или просто «кросс-технологией»).
2.2 Языки реального времени
Программное обеспечение для систем реального времени (СРВ) можно писать и на обычных языках программирования. При этом наиболее целесообразно использование специализированных языков реального времени, в синтаксис (или в стандартные библиотеки) которых заложены возможности работы с параллельно выполняющимися задачами:
1. Modula-2;
2. Ada;
3. Java (спецификация RTSJ).
Эти возможности не зависят от используемой ЭВМ и операционной системы. Например, TopSpeed Modula-2 фирмы JPI обеспечивает кооперативную и вытесняющую многозадачность для программ, выполняющихся даже в принципиально однозадачной операционной системе MS-DOS.
3. Пример проектирования и реализации на базе микрокомпьютера
Особенности проектирования и практической реализации систем реального времени рассмотрим на следующем конкретном примере: «Автоматизированная система (микрокомпьютер) для измерения биений вала».
3.1 Постановка задачи
На электростанциях для передачи крутящего момента между рабочим колесом и подвижной обмоткой гидроагрегатов и парогенераторов используется горизонтально расположенный стальной цилиндрический вал диаметром D = 0,8 м, частота вращения которого F = 68,2 об/мин (см. рис. 6). Необходимо измерять «биения» вала, т.е. отклонения ΔZ внешней поверхности вращения от номинального положения Z0, вызванные неидеальностью формы вала в поперечном сечении; прогибом вала; прецессией оси вращения вала. В процессе измерения требуется контролировать выполнение условия |Z0-ΔZ | ≤ ΔZmax = 3 мм. Измерения необходимо производить в течение одного оборота вала на участке длиной L= 5 м с шагом Lш = 0,5 м. Предельная абсолютная погрешность измерения биений – 0,2 мм, позиционирования вдоль вала – 10 мм.
Рисунок 6 – Вал рабочего колеса
3.2 Общее описание системы
На рисунке 7 изображена функциональная схема автоматизированной системы. Датчик Д1, используемый для измерения «биений», располагается на подвижной каретке, способной двигаться по направляющим рейкам вдоль вала. Для перемещения каретки используются ролики, вращаемые электродвигателем постоянного тока ЭД. Контроль положения каретки выполняется при помощи датчика Д2. Выходные сигналы датчиков Д1 и Д2 имеют унифицированные пределы 0..10В, следовательно промежуточные преобразователи для подключения к АЦП не требуются. Для управления электродвигателем ЭД необходим электрический сигнал определенного уровня и определенной мощности, который генерируется специализированным управляющим контроллером УК, совмещенным с усилителем мощности.
Рисунок 7 – Функциональная схема АС
3.3 Выбор частоты опроса датчика биений
При измерении случайно изменяющегося во времени сигнала (случайного процесса) существует общее правило, позволяющее выбирать частоту дискретизации этого сигнала. Оно базируется на теореме Котельникова (известной также, как критерий Найквиста). Вот это правило: частота дискретизации сигнала выбирается из условия Fизм ≥ 2×F, где F – максимальная частота изменения сигнала.
Имея априорную информацию о поведении процесса (например, выполнив кратковременные измерения с максимально возможной частотой), можно оценить частоту его изменения. (Примечание: при этом предполагается выполнение условий стационарности случайного процесса – т.е. неизменности его параметров во времени и эргодичности случайного процесса – т.е. неизменности его параметров от реализации к реализации.) Для этого, воспользовавшись преобразованием Фурье, можно получить и проанализировать спектр сигнала, т.е. представление его в виде суммы синусоид со всевозможными частотами.
Рисунок 8 – Спектр сигнала «биений» вала
Анализ спектра «биений» вала (см. рис. 8) позволяет сделать вывод о значительном вкладе в формирование сигнала всего двух частот: F1≈ 1,14 Гц и F2≈ 4,2 Гц. Следовательно, достаточно измерять сигнал с частотой 2×F2≈8,4 Гц. Выбираем Fизм = 100 Гц (период ΔTизм = 0,01 с, 88 измерений на оборот).
3.4 Алгоритмы и методы обработки данных
Данные, поступающие на ЭВМ с управляемого объекта, не могут быть использованы без обработки. Различают два этапа обработки:
1. Первичный (или предварительный), в ходе которого (обычно, в режиме реального времени) приводят данные к удобному для дальнейшего использования виду – очищают от помех, выявляют и исправляют искажения, удаляют избыточность, рассчитывают оценки измеряемых величин и их погрешности и т.п.;
2. Вторичный (или основной), в процессе которого строят и рассчитывают параметры математических моделей, выполняют их анализ и делают выводы, используемые для формирования управляющих воздействий на объект.
Иногда часть задач, характерных для вторичной обработки, так же решают в реальном времени – это режим экспресс-анализа данных.
Обычно наличие обоих этапов характерно для СРВ, управляющих сложными процессами, на ход которых влияют многочисленные разнородные факторы. В остальных случаях и для остальных классов автоматизированных систем обычно хватает этапа первичной обработки.
Далее будут рассмотрены алгоритмы и методы, характерные именно для этого этапа.
3.5 Классификация сигналов
Методы, используемые для обработки данных, сильно зависят от вида сигнала, в котором эти данные содержатся (см. рис. 9).
Рисунок 9 – Классификация сигналов
Цифровые сигналы – это сигналы, значения которых представимы в виде двух логических уровней: «0» и «1». Данные подобного вида поступают с цифровых датчиков, реле, сигнализаторов состояния и т.п. Информация может быть заключена как в самом значении сигнала, так и в частоте его изменения, в интервалах времени между изменениями, в количестве этих изменений и т.п.
Аналоговые сигналы - это сигналы, значения которых непрерывны по уровню. Информация в сигналах подобного вида может быть заключена как в одиночном значении (рассматриваемом безотносительно значений, измеренных в другие моменты времени), в характере изменения значения по времени, в частоте его изменения и т.п.
Рассмотренная классификация не является взаимоисключающей, т.е. один и тот же сигнал, в зависимости от решаемой задачи, может быть измерен и обработан, как принадлежащий к разным видам.
3.6 Первичная обработка данных
Поскольку автоматизированная система расположена на территории электростанции, то на результат любых измерений оказывают влияние сильные электромагнитные помехи, приводящие к значительным случайным погрешностям. Поэтому целесообразно производить многократные измерения физических величин и рассчитывать их оценки в результате статистической обработки.
Данные, поступающие с
датчика, измеряющего положение подвижной каретки, представляют собой постоянную
величину. Результат измереия постоянной величины обычно представляется в форме , где
- приближенная оценка
измеряемой величины; ΔXизм –
приближенная оценка погрешности измерений, представленная в виде верхней и
нижней границ диапазона значений. Расчеты ведутся по формулам:
,
(1)
,
(2)
,
(3)
,
(4)
где N – количество наблюдений («замеров»);
Xi – результат i-го наблюдения («замера»); K – некий коэффициент,
зависящий от N и от Pдов (например,
при Pдов = 0,95
используют K = 1,96); – оценка с.к.о. полной
ошибки измерений; S2 –
дисперсия случайной составляющей погрешности измерений; θ2 – дисперсия
инструментальной погрешности, приписываемой использованному средству измерения.
Данные, поступающие с датчика, который измеряет «биения» вала, представляют собой изменяющийся во времени случайный процесс вида
X(t) = g(t) + ξ(t) ,
(5)
где g(t) – «тренд», т.е. детерминированная функция, описывающая поведение процесса во времени; ξ(t) – случайный «шум», вызванный воздействием электромагнитных помех.
Для разделения процесса на «тренд» и «шум» используются разные подходы. Проиллюстрируем один из них, основанный на методах цифровой фильтрации.
Метод скользящего среднего по n точкам представляет собой применение
для каждого i-го отсчета выборки следующей системы правил (на примере n=3):
(6)
где – новое, «сглаженное» значение отсчета.
Обратите внимание, что
этот метод работает «с задержкой», т.е., например, при n=3 для выполнения
расчетов для i-го элемента выборки необходимо дождаться появления (i+1)-го
элемента. Можно избавиться от задержки, применив правило , но в этом случае
погрешность сглаживания будет выше.
Также можно использовать метод медианной фильтрации по n точкам, основанный на правиле:
(7)
где означает среднее по
величине из группы значений.
После сглаживания необходимо рассчитать Zmin и Zmax – предельные значения в выборке и проверить выполнение условия Zmin > -3 мм и Zmax< +3 мм.
3.7 Оптимизация циклических расчетных алгоритмов
Введем обозначения: ω – числовая последовательность; F(ω) – некоторая функция, вычисляемая по числовой последовательности; * – операция присоединения нового члена к числовой последовательности; x – новый член последовательности. Функция F(ω) называется индуктивной, если существует такая функция G, что: F(ω*x) = G(F(ω),x), т.е. по значению функции и по значению нового члена последовательности можно вычислить новое значение функции.
Пример 1. Пусть F(ω) – сумма членов последовательности. F(ω*x)=F(ω)+x= G(F(ω),x). Значит, F(ω) – индуктивная.
Пример 2. Пусть F(ω) = max(ω) - min(ω) – разность между максимальным и минимальным членом последовательности. Зная значение этой функции и новый член x, новое значение функции вычислить невозможно. Значит, F(ω) – не индуктивная.
Если F(ω) – не индуктивная функция, но существует другая такая индуктивная функция H(ω), что F(ω*x) = G(F(ω), H(ω), x, то H(ω) – индуктивное расширение для F(ω).
Пример 3. Пусть F(ω) – количество элементов ω, равных max(ω). Функция max(ω) – индуктивное расширение для F(ω), т.к. F(ω*x) = F(ω)+1, если x = max(ω), и F(ω*x) = F(ω) – иначе.
Метод индуктивных функций удобен для построения алгоритмов расчета по выборке «скользящих» числовых оценок, т.е. оценок, получаемых в процессе сбора данных, а не по результатам накопления полного их набора.
Пример 4. Пусть F(ω) – среднее арифметическое членов последовательности. Индуктивное расширение для нее N(ω) – количество членов последовательности, поскольку F(ω*x) = ((F(ω)⋅(N(ω)))+x)/N(ω*x). Таким образом, можно получать новые значения среднего арифметического по части выборки и «пересчитывать» их по мере получения новых членов:
Традиционный метод: mx := 0; n := 0; while not конец do begin mx := mx + Новое_значение; n:=n+1; end; mx := mx / n; |
«Индуктивный» метод: mx := 0; n := 0; while not конец do begin x := Новое_значение; mx := (mx * n + x)/(n+1); n:=n+1; end; |
Подобная модификация возможна также для алгоритмов расчета моментов высших порядков, например, дисперсии.
3.8 Алгоритмы сбора данных и управления
Алгоритм работы автоматизированной системы имеет циклический характер и может быть представлен схемой, изображенной на рис. 10.
Рисунок 10 – Общий алгоритм
Особенности реализации отдельных его частей (блоков) пояснены ниже:
1. При сборе данных с датчиков (блоки 2 и 3 алгоритма) возникает задача расчета значений измеряемых величин. Измерительные каналы имеют структуру, изображенную на рис. 4.9. Функции преобразования датчиков линейны Y=A⋅X, а функции преобразования АЦП имеют вид:
, (8)
где N – разрядность АЦП; D – входной диапазон АЦП. Следовательно, полная функция преобразования измерительного канала будет иметь вид:
,
(9)
а приближенное значение X можно вычислять по формуле:
,
(10)
2. Измерение положения каретки (блок 2 алгоритма) выполняется многократно (n=30) с максимально возможной частотой, расчет значения измеряемой величины выполняется в соответствие с формулой (1) по «скользящему» алгоритму, рассмотренному в разделе «Оптимизация циклических расчетных алгоритмов». При управлении перемещением подвижной каретки (блок 2 алгоритма) используется алгоритм П-регулятора. Этот алгоритм работает в дискретном времени, поскольку электродвигатель способен воспринимать управляющие воздействия, поступающие на его вход с периодом не меньше Δt2=0,2 сек. Завершение перемещения каретки выполняется при одновременном достижении двух условий:
1) Абсолютное значение ошибки позиционирования не превышает Lш = 10 мм;
2) Абсолютное значение скорости перемещения не превышает Lш/Δt2= 10мм/0,2c = 50 мм/с.
Для достижения
необходимой «точности» управления значение коэффициента пропорционального
усиления П-регулятора должно выбираться из условия.
3. Измерение биений вала (блок 3 алгоритма) в каждом сечении выполняется n = 88 раз с периодом ΔTизм = 0,01 с. После измерений (блок 4) выполняется сглаживание выборки методом медианной фильтрации по 3 точкам и отображение графика биений на экране ЭВМ, а также контроль выборочных значений на выполнение условия |Zi – 2,5| < 3.
4. Перемещение каретки осуществляется на
роликах радиусом R=25 мм, следовательно максимальная скорость перемещения
составит мм/c, а обратная функция
преобразования канала управления кареткой U = V/41,8 + 5 В⋅с/мм.
4. Примеры ОС реального времени
4.1 QNX
QNX — POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем. Считается одной из лучших реализаций концепции микроядерных операционных систем. Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов, как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы — одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Использование микроядра в QNX позволяет пользователям (разработчикам) отключить любую ненужную им функциональность, не изменяя ядро. Вместо этого можно просто не запускать определённый процесс.
Микроядро QNX Neutrino не работает постоянно, а получает управление только в случае системных вызовов, исключений и прерываний. Также микроядро во время своей работы выполняет планирование потоков. Отсюда можно сделать верный вывод, что операция планирования потоков происходит не сама по себе, а по какому-то событию. На самом деле таких событий немного:
1. Вытеснение. Если поток с более высоким приоритетом, чем выполняющийся в настоящее время, перешёл в состояние готовности (READY), то микроядро остановит поток, выполняющийся в данный момент, переключит контексты и запустит на выполнение поток с более высоким приоритетом. Поток, который выполнялся до этого останется первым в очереди на выполнение.
2. Блокирование. Поток во время своего выполнения (т.е. во время работы) может вызвать функцию, которая приведёт к его блокированию. Например, попытается захватить семафор. В этом случае ядро удалит такой процесс из очереди на выполнение и передаст управление другому потоку.
3. Уступка (передача управления). Поток может добровольно передать управление. В этом случае поток ставится последним в очереди на выполнение и микроядро передаст управление другому потоку (может быть и тому, который только что отдал управление).
Одна из основных функций микроядра QNX Neutrino (и, пожалуй, самая важная после обмена сообщениями) — это планирование потоков. Именно микроядро переключает контексты и выбирает, какой поток будет выполняться в следующий момент времени. Микроядро делает всё это, основываясь на следующих параметрах потоков:
1. Приоритет потока (уровень приоритета потока). Каждый поток в ОСРВ QNX6 выполняется на каком-то определённом приоритете. Чем выше приоритет, тем больше шансов у потока получить процессор в первую очередь. При наличии в системе двух и более потоков в состоянии READY (готовых к выполнению), микроядро передаст управление тому потоку, чей приоритет выше.
2. Дисциплина планирования. Каждый поток в системе выполняется с определённой дисциплиной планирования. Микроядро учитывает дисциплину планирования при наличии в системе двух и более потоков в состоянии READY, выполняющихся, на одном приоритете.
Приоритет потока — это число в диапазоне 0-255 для потоков суперпользователя и 0-63 для потоков обычных пользователей. Диапазон доступных рядовому пользователю приоритетов может быть изменён при подготовке загрузочного образа. Также следует учитывать, что на нулевом (самом низком) приоритете выполняется поток idle, который всегда получает управление, если в системе нет больше потоков с более высокими приоритетами в состоянии READY.
В операционной системе QNX поддерживается несколько дисциплин планирования потоков: FIFO, карусельная (циклическая, round-robin, RR) и спорадическая.
4.2 TNKernel
TNKernel — компактная и быстрая многозадачная ОСРВ для встроенных систем.
Задача в TNKernel это часть программного кода, которая с точки зрения программиста выполняется одновременно с другими задачами, что обеспечивается разделением процессорного времени между ними. Каждая задача может быть представлена как независимое приложение, которое владеет уникальными ресурсами (регистры процессора, указатель стека и т.п.). Эти ресурсы называются контекстом задачи, а время в течении которого задача выполняется можно назвать временем в контексте задачи.
Когда текущая задача приостанавливает выполнение (в случае прерывания или вызова сервиса), осуществляется переключение контекста - контекст текущей задачи сохраняется в ее стеке, а контекст наиболее приоритетной задачи из готовых к выполнению восстанавливается. Этот механизм в TNKernel называется "диспетчером".
Определение наиболее приоритетной задачи в момент переключения контекста осуществляется на основании набора правил, а механизм, который обеспечивает соблюдение этих правил называется "планировщиком".
В TNKernel используется приоритетное вытесняющее планирование, основанное на приоритете, назначаемом каждой задаче, при этом чем меньше величина, тем выше уровень приоритета. В TNKernel доступно 32 уровня приоритета для 32-битных контроллеров (ARM, MIPS) и 16 уровней приоритета для 16-битных контроллеров (PIC24/dsPIC).
Приоритеты 0 (самый высокий) и 31(15) (самый низкий) зарезервированы для системных задач. Для пользовательских задач доступны приоритеты от 1 до 30(14) включительно. В TNKernel несколько задач могут иметь одинаковый приоритет.
Задачи в TNKernel могут находиться в одном из четырех состояний:
1. RUNNING – задача выполняется в данный момент
2. READY – задача готова к выполнению, но не может получить процессорное время, так как в данный момент выполняется задача с более высоким (или равным) приоритетом.
3. WAIT/SUSPEND – когда задача находится в состоянии WAIT/SUSPEND она не может начать выполнение до тех пор пока не выполнится условие, которого задача ожидает. При входе в состояние WAIT/SUSPEND контекст задачи сохраняется, при выходе из этого состояния контекст восстанавливается. Состояние WAIT/SUSPEND делится на три типа:
1) WAITING – задача находится в состоянии WAIT/SUSPEND до тех пор пока не наступит событие, которого она ожидает - завершится таймаут, освободится семафор, установится флаг и т.п.
2) SUSPENDED – задача перемещена в состояние WAIT/SUSPEND другой задачей или самостоятельно путем вызова специального сервиса
3) WAITING_SUSPENDED – задача находится как в состоянии WAITING, так и в состоянии SUSPENDED (ожидает события и приостановлена специальным сервисом). Если задача освобождается от состояния WAITING (ожидаемое событие наступило), то она остается в состоянии SUSPENDED и наоборот.
4. DORMANT – задача уже создана, но еще ни разу не запускалась или выполнение задачи завершено с помощью специального таймера.
Можно так же выделить состояние задачи, в котором она еще не создана - состояние NON-EXISTENT.
В TNKernel во время выполнения задачи с наивысшим приоритетом ни одна из других задач не может получить управление до тех пор, пока эта задача не перейдет в состояние WAITING/SUSPEND или DORMANT.
Если несколько задач с разными приоритетами готовы к выполнению (т.е. находятся в состоянии READY), управление получит задача с наивысшим приоритетом.
Если несколько задач с одинаковым приоритетом готовы к выполнению, то управление получит задача, которая перешла в состояние READY раньше остальных, т.е. первой стоит в очереди готовых к выполнению.
4.3 ChorusOS
Операционная система ChorusOS — это масштабируемая встраиваемая ОС, широко применяемая в телекоммуникационной индустрии. В сочетании с широким набором сервисов, полной интеграцией ПО и аппаратуры, удобным администрированием и поддержкой Java-технологии, которая посвящена нуждам телекоммуникации, ОС ChorusOS дает возможность эффективно развертывать новые возможности и приложения, поддерживая надежность и функциональность современных сетей.
Планирование включает приоритетное планирование в стиле FIFO (first-in-first-out), разностильное планирование (multi-class scheduling), циклическое планирование (round-robin).
Заключение
В течение многих лет приложения на базе операционных систем реального времени использовались во встроенных системах специального назначения и микрокомпьютерах, а с недавнего времени они стали применяться повсюду, от бортовых систем управления летательных аппаратов, до бытовых приборов.
Системы реального времени не допускают задержек реакции системы, так как это может привести к: потере актуальности результатов, большим финансовым потерям, авариям и катастрофам.
Важнейшим свойством систем реального времени является предсказуемость временных реакций системы на внешние события. Исходя из этого свойства, можно говорить о состоятельности и обоснованности решений, заложенных в конкретной операционной системе реального времени.
В связи с отличием операционных систем реального времени от операционных систем общего назначения алгоритмы планирования в ОСРВ тоже отличаются от алгоритмов планирования ОС общего назначения.
Современные операционные системы реального времени базируются на новых архитектурных подходах, дополняются средствами разработки прикладных систем, которые позволяют создавать их в сокращённые сроки с наилучшими характеристиками, кроме того, созданные на основе микроядра обладают рядом преимуществ по сравнению с монолитной архитектурой, а в комбинации с объектно-ориентированным подходом, позволяют системе стать аппаратно-независимой и обеспечивать быструю реакцию на внешние события.
И именно в свете временной предсказуемости ОСРВ должна быть тщательно спроектирована, чтобы поддерживать приложения реального времени.
Список использованных источников
1. Бурдонов И.Б., Косачев А.С., Пономаренко В.Н.. Операционные системы реального времени. – М.: ИСП РАН. – 2006.
2. Горошко Е. Операционные системы реального времени. – Харьков.: ИРЭ НАН Украины. – 2003.
3. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. –
СПб.: Питер, 2002.
4. Столлингс У. Операционные системы. Внутреннее устройство и принципы проектирования. Четвертое издание - М.: Изд-во Вильямс, 2002.
5. Таненбаум Э. Современные операционные системы. 2-е изд. – СПб.: Питер, 2002.
6. Википедия – свободная энциклопедия (электронный ресурс), - Режим доступа: http://ru.wikipedia.org
7. ОСРВ QNX: Планирование потоков (электронный ресурс), - Режим доступа: http://habrahabr.ru/blogs/nix/125835/
8. Операционные системы реального времени (электронный ресурс), - Режим доступа: http://www.studfiles.ru/dir/cat32/