Почему не каждая ОС в режиме реального времени?

Я ничего не слышал, кроме хороших вещей о RTOS - они дают программисту больший контроль над планировщиком, чтобы, например, избежать инверсии приоритетов, их синхронизация является более последовательной, лучшей многозадачностью. Но все стандартные настольные установки используют ОС, которые не в режиме реального времени. Таким образом, должны быть некоторые компромиссы с использованием RTOS, что они?

4 ответа

Решение

ОСРВ обычно обмениваются производительностью и возможностями для предсказуемости и управляемости. Обычное определение "в реальном времени" применяется людьми как "детерминистический"; Вы не можете иметь детерминизм, не заплатив за это.

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

Да, можно создавать гибриды, такие как потоки Windows или даже Linux в реальном времени. Но где-то вы обычно платите штраф, потому что в конечном итоге существует только ограниченный набор доступных ресурсов (ЦП, пропускная способность ввода-вывода и т. Д.), А потребительские ОС и ОС RTOS оптимизируются по различным критериям. Некоторые из подходов RT Linux имеют дело с этим явно, имея разделы. Различные допущения и различные критерии оптимальности оптимизированы для каждого раздела.

Какие функции торгуются? Я не могу предложить точный список - более того, ОС общего назначения, как правило, имеют миллионы драйверов и способны не отставать от оттока новых устройств; ОСРВ, как правило, фокусируются на гораздо меньшем наборе, для которого своевременность может быть либо хорошо понята, либо явно не мешать другим действиям. Вероятно, у вас не будет такого же выбора драйверов в обычной ОСРВ, потому что обычно их нецелесообразно реализовывать.

Пропускная способность Помните "в реальном времени"!= "Очень быстро". Когда система работает в режиме реального времени, это означает, что время завершения действий является частью их правильности. В некоторых случаях это означает очень быструю обработку многих действий (высокая пропускная способность); в других это может быть обработка в относительно медленном, но чрезвычайно предсказуемом периоде. Структуры в ОСРВ могут иметь высокую пропускную способность, но, как правило, не могут достичь пропускной способности эквивалентной ОСРВ, потому что методы, используемые для достижения этой пропускной способности справедливо (кэширование, причудливые подходы планирования, основанные на интерактивности, "справедливая" организация очередей и конфликты блокировок), препятствуют против предсказуемости своевременности любой отдельной задачи.

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

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

С переходом Blackberry Playbook на QNX мы можем впервые увидеть дружественную среду разработки (библиотеки и инструменты) для ОСРВ.

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

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

По сути, это та же причина, что и "почему не все пишут веб-приложения на C?". Это намного быстрее, но гораздо сложнее. ОСРВ в большой системе становится громоздкой, потому что большая часть контроля предоставляется прикладному программисту.

Другие вопросы по тегам