Общие комментарии
Вам, вероятно, нужно более подробно рассказать о своих требованиях, прежде чем люди смогут ответить.Многие из нас создали системы реального времени, но помните: а) в режиме реального времени это не то же самое, что в режиме реального времени, и б) термин «в реальном времени» является общим термином для множества различных критериев своевременности.
Какие мероприятия вам необходимы для обеспечения своевременности?Решения, которые вы предлагаете в своем вопросе, являются слегка экзотическими, и их следует рассматривать только после того, как вы сформулируете свои требования и будете уверены, что более традиционные подходы неадекватны.
Создание приложения / системы в реальном времени не отличается отразрабатывать что-нибудь еще.Однако вам необходимо фиксировать требования к своевременности каждого действия с той же точностью, с которой вы обычно фиксируете «функциональные» требования (например, предварительные, последующие и инвариантные условия функции / метода).Трудная часть наступает, когда вы начинаете понимать сумму всех этих требований по мере того, как части собираются вместе - и это меньше похоже на другие аспекты проектирования системы.
Даже если вы не можете применить ее во всех ееСтрого говоря, я предлагаю попытаться сформулировать действия вашего приложения с помощью анализа RMA .Многие динамические приложения не будут полностью уступать анализу, потому что у вас недостаточно данных (они по своей природе неопределенны / динамичны / недетерминированы), но попытка применить дисциплину поможет.
В любом случае, начните с анализа, а не с горстки сексуальных (и сложных) решений ...
Некоторые вещи, которые вы должны захватить:
Каковы естественные задачи / действиявы ожидаете, что система будет работать (в проблемном пространстве)?Это хорошее место, чтобы начать с вашего дизайна, но ваша реализация может потребовать изменения.
Какими ресурсами вам нужно управлять?(ЦП? Сеть? Память?)
Можете ли вы гарантировать, что ресурсы останутся недогруженными?Если нет, вам нужно будет провести анализ осуществимости и политику контроля доступа или «сброс нагрузки».Обратите внимание, что это охватывает одно измерение "важности" или "приоритета" и лучше всего отделено от другого измерения ...
Каковы временные ограничения?Это измерение "срочности".Это может быть задержка или что угодно.Эти ограничения жесткие или мягкие?Совокупность или за задачу?(Интересный и углубленный взгляд на подходы к планированию, которые различают срочность и важность, см. В тезисе RKC (или краткая сводка ) от CMU, но перед тем как продолжить, сделайте глубокий вдох...)
Как вы собираетесь представлять контекст ограничения времени каждого действия в вашей реализации?Обратите внимание, что в большинстве распространенных ОС нет «планировщика крайних сроков» для ЦП, и обычный подход заключается в сопоставлении срочности с приоритетами (см. RMA), но это работает только в том случае, если ресурс недогружен.
Как вы хотите справиться с проблемами с несколькими ресурсами?Здесь мало что можно сделать с помощью строгих аналитических инструментов, обычно цель состоит в том, чтобы как можно больше перепроверить и применить контроль допуска на границах системы.Если это система, в которой вы требуете своевременности действий, которые включают передачу и обработку сети, вы можете применить контроль доступа в форме управления трафиком QoS, уменьшая (не устраняя) необходимость беспокоиться о загрузке ЦП.
Каковы ваши требования к пропускной способности?
Каковы схемы прибытия вашей деятельности?Например, можете ли вы обеспечить минимальное время прибытия?
Какой уровень доверия требуется для правильной работы вашей системы / приложения?
Редактирование на основе дополнительных комментариев
Прежде чем перейти к гибридному подходу hw / sw, убедитесь, что вы сначала исчерпали программные решения. Если ваши задачи вытесняются ядром, вам следует поработать, чтобы все под контролем.
Что такое ОС? Если у вас Linux, последняя версия Windows или Mac OS X, вы сможете планировать потоки обработки с приоритетом в реальном времени и минимизировать вытеснение, вызванное ядром. Если вы действительно загружаете процессор, возможно, вам стоит взглянуть на подход с двумя процессорами, когда вы блокируете один процессор для обработки вашего приложения (опять же, зависит от ОС).
Ага, время отклика 0,5 мс начинает немного прояснять ситуацию. Если вы используете ОС общего назначения, согласованные задержки в мс могут быть немного сложными.
Какой процессор (и тактовая частота?)
Похоже, у вас есть какой-то рабочий (или близкий к нему) код. Вы сделали некоторый анализ, потому что вы думаете, что вытеснение убивает вас. Какие шаги вы предприняли, чтобы устранить вытеснение? Является ли «решение», на которое вы ссылаетесь, очень маленькой / простой оценкой? Это детерминированный? Является ли привязка 0,5 мс физической границей или взимается из-за бюджета задержки, который включает другие части системы?