2012-09-21 5 views
7

На работе мы обсуждаем дизайн новой платформы и один из верхних типов управления, который сказал, что нужно запустить нашу текущую базу кода (C на Linux), но быть в режиме реального времени, потому что ей нужно было ответить менее чем за секунду до различные входы. Я указал, что:Есть ли разница между системой реального времени и детерминированной?

  1. Эта точка не означает, что она должна быть «в реальном времени» только что ему нужно быстрее часов и более рационализацию в обработке прерываний
  2. Одним из ключевых моментов, чтобы рассмотреть ОС, которая используется. Они хотели придерживаться встроенного Linux, я указал, что нам нужна RTOS. Использование Linux предотвратит «реальное время» из-за разрыва памяти ядра/пользователя, поэтому ввод-вывод выполняется через файлы и сокеты, которые вводят задержку.
  3. Нам действительно нужно определить, нужно ли это детерминировать (необходимо ответьте на ввод в < 200 мс 90% времени, например).

Действительно, на мой взгляд, если точка 3 истинна, то это должна быть система реального времени, а затем точка 2 является самым большим соображением.

Я чувствовал уверенность в ответе, но потом я думал об этом позже ... Что думают другие? Я на правильном пути здесь или я чего-то не хватает?

Есть ли какая-то разница в том, что мне не хватает системы «реального времени» и «детерминированной»? И, кроме RTC и RTOS, я пропускаю что-то важное, что требуется для выполнения реальной системы реального времени?

С нетерпением жду некоторых замечательных отзывов!

EDIT:

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

  1. Моя компания продает единицы в десяти тысячах, поэтому я не хочу идти за убийством по цене
  2. Обычно мы продаем основную плату процессора и независимый дисплей. Также есть подключенная сеть других CAN-устройств.
  3. Плата (в настоящее время) управляет устройствами, а также выступает в качестве веб-сервера отправки основные документы XML на дисплей для конечных пользователей

Требования приходят сюда, где руководство хочет дисплей будет обновляться «быстро» (< 1s), однако true Ограничения IMO исходят от устройств, которые можно подключить через CAN. Эти устройства часто являются управляемыми двигателем устройствами с требованиями, в том числе «должны отвечать менее чем за 200 мс».

+2

в режиме реального времени компьютер подразумевает * жесткий * ограничение времени, а не один, что достаточно для удовлетворения лишь 90% времени. Является ли ограничение времени жестким или нет? Это определяет, какой тип системы вам нужен. – bdares

+0

Я бы сказал, это зависит от ожидаемого объема вашей платформы. Это в миллион раз легче и быстрее поддерживать ваш существующий Linux-код и просто покупать очень быстрый процессор, чем пытаться подключиться к RTOS и жить без таких вещей, как защита адресного пространства. Но если продукт очень большой, то стоимость процессора больше учитывается. – TJD

+0

@TJD - проблема в том, что даже с самым быстрым процессором нет гарантии, что ограничение будет выполнено. Насколько я понимаю, система с UC, которая имеет RTC и высокую тактовую частоту, будет (может) быть узким местом для ОС. – Mike

ответ

10

Вы должны различать:

  • Hard реальном времени: есть абсолютный предел по времени отклика, которое не должно быть нарушено (засчитывается как отказ) - например, это целесообразно, например, когда вы управляете роботизированными двигателями или медицинские устройствами, где несоблюдение срока может быть катастрофическим
  • Soft в реальное время: есть требования, чтобы быстро реагировать большую часть времени (возможно 99,99% +) , но приемлемо, чтобы время, которое время от времени было нарушено, обеспечивало бы, чтобы реакция в среднем была очень быстрой. например это целесообразно при выполнении в режиме реального времени анимации в компьютерной игре - отсутствует срок может привести к пропущенным кадр, но принципиально не испортить игровой опыт

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

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

Важно отметить, что большинство бизнес-приложений не требуют ни: в частности, я думаю, что нацеливание времени отклика на < 1сок является далеко от того, что большинство людей считают «в реальное время» требование. Сказав это, если время ответа явно указано в требованиях, тогда вы можете рассматривать его как мягкое реальное время с довольно свободным сроком.

+0

+1 для жесткого/мягкого различия. Другим хорошим примером для жестких систем реального времени являются авионики/системы управления полетом на самолетах, где крайне важно соблюдение сроков. – prelic

+0

+1, Интересный момент, мне нравится настройка определения. У нас в системе есть НЕКОТОРЫЕ «жесткие реальные» ограничения. Например, управление двигателем для наших EEV (электронные значения расширения), но не все «жесткие» требования ... возможно, разделенная архитектура - это лучшая идея с использованием двух «арендованных» процессоров с RTOS для управления двигателем. Являются ли ваши требования HW просто RTC (для подачи RTOS) и достаточной вычислительной мощностью? – Mike

+0

По сути да, часы с высоким разрешением являются ключом к аппаратным средствам реального времени. Задача RTOS заключается в том, чтобы запланировать таким образом, чтобы обеспечить соблюдение предельных сроков для данной вычислительной мощности. Технически, если требования достаточно свободны, часы с высоким разрешением даже не нужны, при планировании обработки RTOS. – prelic

5

Из определения real-time тега:

Задачи является в реальное время когда своевременности завершения мероприятий, является функциональным требованием и корректности состояния, а не просто метрик производительности , Система реального времени - это та, в которой некоторые (хотя, возможно, и не все) задачи являются задачами реального времени.

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

система реального времени не нужно быть детерминированным: если время отклика случайным образом изменяется между 50мс и 150ms, но время отклика никогда не превышает 150 мс, то система не является детерминированным, но он по-прежнему в режиме реального времени.

+0

_shouldn't_ система реального времени должна быть или иметь возможность быть детерминированной по определению? – Mike

+0

Нет, детерминизм не является обязательным требованием. Рассмотрим систему, в которой, если прерывание A поступает до прерывания B, системный отклик может быть рассчитан в 50 мс, но если прерывание B поступило до прерывания A, для вычисления ответа системы требуется 150 мс. Тогда, если время поступления прерываний является случайным, время отклика системы является случайным, но ** ограничено **, а система все еще в режиме реального времени. – markgz

+0

'Если что-то плохое произойдет, у вас проблемы, независимо от того, какая у вас ОС. Даже RTOS столкнется с проблемами, если у него заканчиваются границы с помощью слишком большого количества задач, плохо написанного кода и т. Д. Таким образом, неважно, насколько много, будь то мягкое, жесткое или даже нереальное время; гарантированное 50 мс можно легко получить в окнах без особых усилий, но вы не сможете делать резервные копии или играть в эго-шутеры. Однако бы вы сделали это на RTOS? – Arno

1

Звучит так, будто вы на правильном пути с RTOS. Различные RTOS расставляют приоритеты по разным причинам: надежность, скорость или что-то еще. Вам нужно будет выяснить, нужна ли вам жесткая или мягкая RTOS и на основе того, что вам нужно, как ваш планировщик будет управляться. Одно можно сказать наверняка, существует серьезная разница между использованием обычной ОС и RTOS.

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

2

Возможно, вы могли бы попытаться использовать RTLinux или RTAI, если у вас есть достаточно времени для экспериментов. При этом вы можете хранить приложения реального времени в Linux, но приложения realtime будут перемещены в часть RTOS. В этом случае вы сможете (возможно) достичь < 1сек. Времени отклика.

Преимущества -

  • Большой объем кода может быть использована повторно
  • Вы можете вручную разбить в реальном времени и не в реальном времени задачи и попытаться достичь ОТКЛИКА < 1s, как вы хотите.
  • Я думаю, что время миграция не будет очень высокой, так как большая часть кода будет в Linux

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

Следующая архитектура RTLinux может помочь вам понять, как это возможно.

RT Linux System

+0

+1 Интересная идея: я еще не использовал RT Linux до того, как ... планировщик RT планировал использовать нестандартный планировщик, это просто рассматривается как «более высокий приоритет»? – Mike

+1

Простой задачей в RT Linux является операционная система linux (non-RT). Таким образом, в конечном счете, когда в RT-Linux нет задачи реального времени, linux получает возможность запускаться, и она выполняется нормально. – Raj