Введение

Изучение аппаратных и программных систем, имеющих ограничение по времени реального времени.

Вычисления в реальном времени (RTC) – это термин в информатике, обозначающий аппаратные и программные системы, подверженные ограничению по времени реального времени, например, время между событием и реакцией системы. Программы, работающие в реальном времени, должны гарантировать реакцию в пределах заданных временных ограничений, часто называемых «дедлайнами» (сроками). Термин «реальное время» также используется в моделировании для обозначения того, что системные часы идут с той же скоростью, что и реальные часы. Реакции в реальном времени обычно измеряются миллисекундами, а иногда и микросекундами. Система, не предназначенная для работы в реальном времени, обычно не может гарантировать реакцию в течение какого-либо определенного промежутка времени, хотя могут быть указаны типичные или ожидаемые времена отклика. Обработка в реальном времени считается неудачной, если она не завершена в пределах установленного дедлайна относительно события; дедлайны всегда должны соблюдаться, независимо от загрузки системы. Система реального времени описывается как система, которая «управляет окружением, получая данные, обрабатывая их и возвращая результаты достаточно быстро, чтобы оказать влияние на окружение в данный момент времени». Термин «реальное время» используется в системах управления процессами и корпоративных системах для обозначения «работы без значительной задержки». Программное обеспечение, работающее в реальном времени, может использовать один или несколько из следующих компонентов: синхронные языки программирования, операционные системы реального времени (RTOS) и сети реального времени, каждый из которых предоставляет основные платформы для разработки приложений реального времени. Системы, используемые во многих критически важных приложениях, должны работать в реальном времени, например, системы управления полетом самолета или антиблокировочные тормоза, которые требуют немедленного и точного механического отклика.

История

Термин "реальное время" возник из его использования в раннем моделировании, где процесс реального мира имитировался со скоростью, соответствующей скорости реального процесса (сейчас это называется моделированием в реальном времени, чтобы избежать неоднозначности). Аналоговые компьютеры, как правило, могли моделировать гораздо быстрее, чем в реальном времени, и такая ситуация могла быть столь же опасной, как и медленное моделирование, если это не было распознано и учтено. Миникомпьютеры, особенно начиная с 1970-х годов, при интеграции во встроенные системы, такие как сканеры DOG (цифровые графические дисплеи), повысили потребность в откликах с низкой задержкой и приоритетным обслуживанием важных взаимодействий с поступающими данными. Поэтому операционные системы, такие как RDOS (операционная система дисков реального времени) от Data General и RTOS с фоновым и передним планом планирования, а также RT 11 от Digital Equipment Corporation, относятся к этой эпохе. Планирование с разделением на передний и задний планы позволяло задачам с низким приоритетом использовать время процессора, когда задачи переднего плана не требовали выполнения, и обеспечивало абсолютный приоритет в пределах переднего плана потокам/задачам с наивысшим приоритетом. Операционные системы реального времени также использовались для организации совместного доступа нескольких пользователей. Например, Data General Business Basic мог работать на переднем или заднем плане RDOS и вносить дополнительные элементы в алгоритм планирования, чтобы сделать его более подходящим для пользователей, взаимодействующих через "глупые" терминалы. Когда MOS Technology 6502 (используемый в Commodore 64 и Apple II) и позже Motorola 68000 (используемый в Macintosh, Atari ST и Amiga) были популярны, любой мог использовать свой домашний компьютер как систему реального времени. Возможность отключения других прерываний позволяла использовать жестко заданные циклы с определенным временем выполнения, а низкая задержка прерываний позволяла реализовать операционную систему реального времени, при этом пользовательский интерфейс и дисководы имели более низкий приоритет, чем потоки реального времени. По сравнению с ними программируемый контроллер прерываний процессоров Intel (8086, 80586) генерирует очень большую задержку, а операционная система Windows не является операционной системой реального времени и не позволяет программе полностью захватить процессор и использовать свой собственный планировщик, не прибегая к машинному коду и, таким образом, обходя весь прерывающий код Windows. Однако существует несколько библиотек кодирования, которые предлагают возможности реального времени на языке высокого уровня в различных операционных системах, например, Java Real Time. Motorola 68000 и последующие модели семейства (68010, 68020 и т.д.) также стали популярны среди производителей промышленных систем управления. Эта область применения – одна из тех, в которой управление в реальном времени обеспечивает реальные преимущества с точки зрения производительности и безопасности процессов.

Критерии вычислений в режиме реального времени

Система считается системой реального времени, если общая корректность операции зависит не только от ее логической корректности, но и от времени, в течение которого она выполняется. Системы реального времени, а также их сроки выполнения, классифицируются в зависимости от последствий пропуска срока:
Жесткие системы реального времени: пропуск срока приводит к полной неработоспособности системы. В системах с фиксированными сроками пропуски сроков допустимы нечасто, но могут снизить качество обслуживания. Полезность результата равна нулю после истечения срока его действия. В системах с мягкими сроками полезность результата снижается после истечения срока его действия, что также снижает качество обслуживания. Таким образом, целью жесткой системы реального времени является обеспечение соблюдения всех сроков, а для мягких систем реального времени целью становится соблюдение определенного подмножества сроков для оптимизации специфических критериев приложения. Конкретные критерии оптимизации зависят от приложения, но типичные примеры включают максимизацию количества выполненных сроков, минимизацию задержки задач и максимизацию количества задач с высоким приоритетом, выполняющихся в срок. Жесткие системы реального времени используются, когда необходимо реагировать на событие в строго определенный срок. Такие строгие гарантии требуются для систем, в которых отсутствие реакции в течение определенного промежутка времени может привести к значительным потерям, особенно к физическому повреждению окружающей среды или угрозе жизни людей (хотя строгое определение заключается в том, что пропуск срока является отказом системы). Некоторые примеры жестких систем реального времени:
Система управления двигателем автомобиля является жесткой системой реального времени, поскольку задержка сигнала может привести к отказу двигателя или его повреждению. Медицинские системы, такие как кардиостимуляторы. Несмотря на простоту задачи кардиостимулятора, из-за потенциального риска для жизни человека, такие медицинские системы обычно требуют тщательного тестирования и сертификации, что, в свою очередь, требует вычислений в реальном времени для предоставления доказуемых гарантий того, что отказ маловероятен или невозможен. Промышленные контроллеры, такие как станок на сборочной линии. Если станок задерживается, деталь на конвейере может оказаться вне зоны досягаемости станка (оставляя продукт необработанным), или станок или сам продукт могут быть повреждены из-за активации робота в неподходящий момент. В случае обнаружения неисправности, оба сценария приведут к остановке конвейера, что замедлит производство. Если неисправность не обнаружена, дефектный продукт может пройти через производственный процесс или вызвать повреждения на более поздних этапах. Жесткие системы реального времени обычно взаимодействуют на низком уровне с физическим оборудованием во встроенных системах. Ранние игровые системы, такие как Atari 2600 и Cinematronics с векторной графикой, имели жесткие требования к реальному времени из-за особенностей графики и синхронизирующего оборудования. Softmodems заменяют аппаратный модем программным обеспечением, работающим на центральном процессоре компьютера. Программное обеспечение должно выполняться каждые несколько миллисекунд для генерации следующих аудиоданных для вывода. Если эти данные поступают с задержкой, принимающий модем потеряет синхронизацию, что приведет к длительному прерыванию при восстановлении синхронизации или к полной потере соединения. Многие типы принтеров имеют жесткие требования к реальному времени, такие как струйные принтеры (чернила должны быть нанесены в нужный момент, когда печатающая головка пересекает страницу), лазерные принтеры (лазер должен быть активирован в нужный момент, когда луч сканирует вращающийся барабан), и матричные и различные типы линейных принтеров (ударный механизм должен быть активирован в нужный момент, когда печатающий механизм выравнивается с желаемым результатом). Отказ в любом из этих случаев приведет к отсутствию вывода или искаженному выводу. В контексте многозадачных систем политика планирования обычно основана на приоритетах (прерывающие планировщики). В некоторых ситуациях они могут гарантировать производительность жесткого реального времени (например, если набор задач и их приоритеты известны заранее). Существуют и другие планировщики жесткого реального времени, такие как Rate Monotonic, которые не распространены в системах общего назначения, поскольку для планирования задачи требуется дополнительная информация: а именно, оценка верхней границы или наихудшего случая времени выполнения задачи. Существуют конкретные алгоритмы для планирования таких задач жесткого реального времени, как Earliest Deadline First, который, не учитывая накладные расходы на переключение контекста, достаточен для системной нагрузки менее 100%. Новые системы накладного планирования, такие как адаптивный планировщик разделов, помогают управлять большими системами со смесью задач жесткого и не жесткого реального времени. Системы с фиксированными сроками реального времени определены менее четко, и некоторые классификации не включают их, различая только жесткие и мягкие системы реального времени. Некоторые примеры систем с фиксированными сроками реального времени:
Станок на сборочной линии, описанный ранее как жесткая система реального времени, может вместо этого рассматриваться как система с фиксированными сроками. Пропуск срока все равно вызывает ошибку, которую необходимо устранить: может быть оборудование для маркировки детали как бракованной или ее выброса с конвейера, или конвейер может быть остановлен, чтобы оператор мог исправить проблему. Однако, если эти ошибки возникают нечасто, они могут быть допустимы. Системы мягкого реального времени обычно используются для решения проблем одновременного доступа и необходимости поддержания актуальности нескольких подключенных систем в меняющихся ситуациях. Некоторые примеры систем мягкого реального времени:
Программное обеспечение, которое поддерживает и обновляет планы полетов для коммерческих авиалайнеров. Планы полетов должны поддерживаться в актуальном состоянии, но они могут работать с задержкой в несколько секунд. Системы живого аудио- и видеопотока также обычно являются системами мягкого реального времени. Поздняя передача аудиокадра может вызвать кратковременный сбой в звуке (и может привести к задержке всего последующего звука, создавая впечатление, что звук воспроизводится медленнее, чем обычно), но это может быть лучше, чем альтернативы: продолжение воспроизведения тишины, статического шума, предыдущего аудиокадра или оценочных данных. Задержка видеокадра обычно вызывает еще меньше проблем для зрителей. Система может продолжать работать и восстанавливаться в будущем, используя методы прогнозирования нагрузки и реконфигурации. Аналогично, видеоигры часто являются системами мягкого реального времени, особенно когда они пытаются достичь целевой частоты кадров. Поскольку следующее изображение не может быть вычислено заранее, поскольку оно зависит от ввода данных игрока, доступно лишь короткое время для выполнения всех вычислений, необходимых для генерации кадра видео, прежде чем этот кадр должен быть отображен. Если срок не соблюдается, игра может продолжаться с более низкой частотой кадров; в зависимости от игры это может повлиять только на ее графику (в то время как игровой процесс продолжается с нормальной скоростью), или игровой процесс также может быть замедлен (что было распространено на консолях третьего и четвертого поколений).

Реальное время в цифровой обработке сигналов

В процессе цифровой обработки сигналов (DSP) в реальном времени, анализируемые (входные) и генерируемые (выходные) отсчеты могут обрабатываться (или генерироваться) непрерывно за время, необходимое для ввода и вывода одного и того же набора отсчетов, независимо от задержки обработки. Это означает, что задержка обработки должна быть ограничена, даже если обработка продолжается неограниченно долго. Следовательно, среднее время обработки одного отсчета, включая накладные расходы, не должно превышать период дискретизации, который является величиной, обратной частоте дискретизации. Это является критерием, определяющим, группируются ли отсчеты в большие сегменты и обрабатываются блоками, или обрабатываются по отдельности, а также наличие длинных, коротких или отсутствующих входных и выходных буферов. Рассмотрим пример аудио DSP: если для анализа, синтеза или обработки 2,00 секунд звука требуется 2,01 секунды, то это не обработка в реальном времени. Однако, если это занимает 1,99 секунды, то это является обработкой в реальном времени или может быть реализовано как таковая. Распространенная аналогия из жизни – ожидание в очереди на кассу в продуктовом магазине. Если очередь асимптотически растет без ограничений, то процесс обслуживания не является реальным временем. Если длина очереди ограничена, клиенты "обрабатываются" и выдаются, в среднем, так же быстро, как и поступают, то этот процесс происходит в реальном времени. Продавец может обанкротиться или, по крайней мере, потерять клиентов, если не сможет обеспечить обработку в реальном времени; поэтому принципиально важно, чтобы этот процесс был реализован в реальном времени. Алгоритм обработки сигналов, который не успевает за потоком входных данных, при этом выход все больше отстает от входа, не является алгоритмом реального времени. Но если задержка выхода (относительно входа) ограничена для процесса, работающего неограниченно долго, то этот алгоритм обработки сигналов является алгоритмом реального времени, даже если задержка пропускной способности может быть значительной.

Живое и реальное время

Обработка сигнала в реальном времени необходима, но сама по себе недостаточна для живой обработки сигнала, как это требуется при поддержке прямых трансляций и мероприятий. Живая цифровая обработка сигнала требует как работы в реальном времени, так и достаточного ограничения задержки передачи, чтобы она была приемлема для исполнителей, использующих сценические или внутриканальные мониторы, и незаметна для зрителей как рассинхронизация звука и изображения. Допустимые пределы задержки для живой обработки в реальном времени являются предметом исследований и обсуждений, но оцениваются в пределах от 6 до 20 миллисекунд. Двунаправленные телекоммуникационные задержки в реальном времени менее 300 мс ("время туда и обратно", или вдвое больше однонаправленной задержки) считаются "приемлемыми", чтобы избежать нежелательных перебиваний в разговоре.

Реальное время и высокая производительность

Иногда вычисления в реальном времени ошибочно принимают за высокопроизводительные вычисления, но это неверная классификация. Например, мощный суперкомпьютер, выполняющий научное моделирование, может демонстрировать впечатляющую производительность, однако он не выполняет вычисления в реальном времени. И наоборот, как только аппаратное и программное обеспечение антиблокировочной системы тормозов спроектированы для соблюдения требуемых сроков, дальнейшее повышение производительности не является обязательным и даже полезным. Более того, если сетевой сервер сильно загружен сетевым трафиком, его время отклика может увеличиться, но (в большинстве случаев) он все равно успеет выполнить задачу до истечения времени ожидания (достижения крайнего срока). Следовательно, такой сетевой сервер нельзя считать системой реального времени: временные сбои (задержки, таймауты и т. д.) обычно незначительны и локализованы (ограничены по воздействию), но не являются критическими. В системе реального времени, такой как индекс FTSE 100, превышение допустимых временных рамок часто считается катастрофическим в контексте ее применения. Наиболее важным требованием к системе реального времени является стабильный результат, а не высокая пропускная способность. Некоторые виды программного обеспечения, например многие шахматные программы, могут относиться к любой из этих категорий. Например, шахматная программа, предназначенная для игры в турнире с таймером, должна определить ход до определенного срока, иначе она проиграет, и поэтому представляет собой вычисление в реальном времени, в то время как шахматная программа, которой разрешено работать неограниченно долго перед ходом, таковым не является. В обоих случаях, однако, высокая производительность желательна: чем больше работы турнирная шахматная программа может выполнить за отведенное время, тем лучше будут ее ходы, и чем быстрее работает шахматная программа без ограничений, тем быстрее она сможет сделать ход. Этот пример также иллюстрирует существенное различие между вычислениями в реальном времени и другими вычислениями: если турнирная шахматная программа не примет решение о следующем ходе в отведенное время, она проиграет партию, то есть потерпит неудачу как вычисление в реальном времени, в то время как в другом сценарии соблюдение сроков не считается необходимым. Высокая производительность характеризует объем обработки, выполняемой за определенный период времени, в то время как реальное время – это способность завершить обработку и получить полезный результат в доступное время.

Почти в реальном времени

Термин "почти реальное время" (NRT) в телекоммуникациях и вычислительной технике обозначает временную задержку, вносимую автоматизированной обработкой данных или сетевой передачей между моментом возникновения события и моментом использования обработанных данных, например, для отображения, обратной связи или управления. Например, отображение в почти реальном времени показывает событие или ситуацию такой, какой она была в текущий момент времени за вычетом времени обработки, максимально приближенно к моменту события в реальном времени. Разграничение между терминами "почти реальное время" и "реальное время" достаточно размыто и должно определяться в каждом конкретном случае. Термин подразумевает отсутствие значительных задержек. Во многих случаях обработка, описываемая как "реальное время", точнее была бы названа "почти реальным временем". "Почти реальное время" также относится к задержке при передаче голоса и видео. Это позволяет воспроизводить видеоизображения практически в реальном времени, не дожидаясь полной загрузки большого видеофайла. Несовместимые базы данных могут экспортировать и импортировать данные в общие плоские файлы, которые другая база данных может импортировать и экспортировать по расписанию, чтобы синхронизировать и обмениваться общими данными друг с другом в "почти реальном времени".

Методы проектирования

Существует несколько методов, облегчающих разработку систем реального времени, одним из которых является MASCOT – старый, но весьма эффективный метод, представляющий собой конкурентную структуру системы. Среди других примеров можно назвать HOOD, Real Time UML, AADL, профиль Ravenscar и Real Time Java.