Что делает VxWorks таким детерминированным и быстрым? - PullRequest
9 голосов
/ 10 января 2012

Я давно работал над VxWorks 5.5, и это был лучший опыт работы с лучшими в мире ОС реального времени.С тех пор у меня никогда не было возможности поработать над этим снова.Но мне постоянно задается вопрос, что делает его настолько быстрым и детерминированным?

Я не смог найти много ссылок на этот вопрос через Google.

Итак, я просто попытался подуматьчто делает обычную ОС недетерминированной:

  1. Распределение / перераспределение памяти: - Wiki говорит, что RTOS использует блоки фиксированного размера, так что эти блоки могут быть непосредственно проиндексированы, но это приведет квнутренняя фрагментация, и я уверен, что это не совсем желательно в критически важных системах, где память уже ограничена.

  2. Пейджинг / сегментация: - Это своего рода связано с точкой 1

  3. Обработка прерываний: - Не уверен, как VxWorks реализует это, поскольку VxWorks очень хорошо справляется с этим

  4. Переключение контекста: - Я верю в VxWorks 5.5все процессы, используемые для выполнения в адресном пространстве ядра, поэтому переключение контекста включало в себя просто сохранение значений регистра и ничего о PCB (блок управления процессом), но всеБуду ли я не уверен на 100%

  5. Алгоритмы планирования процесса: - Если в Windows реализовано упреждающее планирование (приоритет / циклический перебор), будет ли планирование процесса таким же быстрым, как в VxWorks?Я так не думаю.Итак, как VxWorks обрабатывает планирование?

Пожалуйста, исправьте мое понимание там, где это необходимо.

1 Ответ

12 голосов
/ 13 января 2012

Я полагаю, что следующая разница могла бы объяснить большую разницу:

Без подкачки / обмена

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

Нет процессов

В vxWorks 5.5 есть задачи, но нет таких процессов, как Windows или Linux. Задачи больше похожи на потоки, а переключение контекста - относительно недорогая операция. В Linux / Windows процесс переключения довольно дорогой.

Обратите внимание, что в vxWorks 6.x была представлена ​​модель процесса, которая увеличивает накладные расходы, но в основном связана с переходом из режима пользователя в режим супервизора. Время переключения задач не обязательно напрямую зависит от новой модели.

Фиксированный приоритет

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

Вообще говоря, в Linux / Windows, хотя у вас есть некоторый контроль над приоритетом процессов, планировщик в конечном итоге позволит запускать процессы с более низким приоритетом, даже если процессы с более высоким приоритетом все еще активны.

...