2012-04-05 2 views
1

В Xenomai's API of Posix skin, я нахожу следующее:Какой код НЕ должен быть записан в режиме реального времени?

POSIX кожи.
Часы и таймеры.
Служебные переменные.
Услуги по управлению прерываниями.
Услуги очереди сообщений.
Услуги Mutex.
Семафоры услуг.
Услуги общей памяти.
Услуги по сигналам.
Услуги по управлению потоками.
Отмена темы.
Решения по планированию потоков.
Атрибуты создания темы.
Данные, относящиеся к конкретной теме.

Я не могу увидеть что-нибудь относительно обработки и сокета программирования файла, поэтому я предполагаю, что, возможно, файл обработки и розетки не должны рассматриваться в режиме реального времени? Неправильно ли это?

Просим руководствоваться.

ответ

4

Xenomai и его происхождение, RTAI, оба управляют вашим планировщиком, обрабатывая ядро ​​linux как поток не в реальном времени.

Они предоставили множество услуг, большинство из которых, как вы можете видеть, связано с потоками и синхронизацией, которые НЕ используют Linux API (в пространстве ядра) или системные вызовы (в пользовательском пространстве). Как вы знаете, в реальном времени речь идет о «гарантировании срока», и вызов Linux нарушает его (потому что Linux ничего не гарантирует).

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

Обработка файлов в ядре сильно неодобрительно. Если вы говорите о приложениях реального времени в пользовательском пространстве, вы можете получить доступ к любым драйверам, которые реализованы в RTDM. Если вы не найдете его для обработки файлов или сокетов, то вы их не сможете использовать. Обратите внимание, что даже printf использует системные вызовы Linux и запрещен.

Обратите внимание, что если вы их используете, ничего не сломается, вы просто потеряете свою реальность! Я лично использую файлы для ведения журнала, но вызываю их только в случае ошибки, которая означает, что в реальном времени все равно разрушена.

Я не знаю о Xenomai, но, по крайней мере, в RTAI, если вы вызываете системный вызов Linux, вы получаете предупреждение, подобное «RTAI: LXRT changed mode: syscall ...» в ваших журналах ядра.

+0

Это очень полезно. Благодарю. Можете ли вы указать мне ссылку, в которой говорится о дозах и не в реальном времени, кроме того, что говорит Ксеномай? –

+0

@ АнишаКауль, позвольте мне искать. К сожалению, не так много приложений/пользователей в режиме реального времени для широкого спектра информации, которая будет доступна в Интернете. – Shahbaz

+0

Да, это проблема. Пожалуйста, если вы найдете здесь что-то ссылку. Благодарю. –

1

В настоящее время это свойство ПОЛНОЙ СИСТЕМЫ. Для достижения свойства реального времени в системе все его компоненты (включая аппаратное обеспечение, операционную систему, драйверы, библиотеки и приложения) должны быть разработаны с учетом требований, предъявляемых к системам реального времени. Такие компоненты (например, RTOS) могут использоваться для создания системы реального времени. Но их использование автоматически не означает, что конечная система будет системой реального времени. Фактически, если хотя бы один из компонентов вашей системы не поддерживает требования систем реального времени, вся ваша система не будет в режиме реального времени!

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

Это полностью зависит от приложения. В общем, весь код, который не используется при обработке задач в реальном времени, МОЖЕТ записываться как не в режиме реального времени. Весь код, который используется при обработке задач реального времени, ДОЛЖЕН быть записан в режиме реального времени.

Что Xenomai делает это изоляция не в реальном времени Linux и ее деятельности, используемой для обработки задач, не в режиме реального времени в специальном контейнере, который запускается поверх RTOS ядра и параллельно с ОС реального времени основанные на реальном времени задачи. Чтобы создать систему реального времени на базе Xenomai, ваше приложение должно полагаться только на API Xenomai, а также на другие библиотеки и API, которые известны и, как доказано, являются реальными. Все фоновые действия, которые могут быть полезны, но совершенно некритичны, могут быть записаны как обычные приложения Linux.

Такие системы и службы, как службы хранения и сетевых услуг, обычно не используются в задачах реального времени, поскольку обычно используемое оборудование очень неопределенно и, следовательно, не вписывается в концепцию реального времени. Трудно сказать, какое время потребуется, чтобы отправить пять пакетов по сети или записать файл на жесткий диск. В связи с этим интерфейсы для таких систем не являются обычным явлением. Но опять же, приложение диктует, какие службы реального времени ему нужны. Я могу представить себе задачи реального времени, которые включают в себя операции хранения и сети. В случае таких задач разработчик вынужден найти такие системные компоненты, которые будут предоставлять услуги хранения в реальном времени и сетевые службы. Как вы можете видеть, Ксеномай не является кандидатом.