3.Преимущества qnx
Знающие POSIX и UNIX разработчики могут легко сориентироваться и осуществлять разработку под QNX – им будет знакома большая часть ОС.
Возможность повторного использования программного кода. Хорошо оттестированный и отлаженный в одной из POSIX систем код можно легко использовать в другой, например, QNX.
Таким образом, преимущества POSIX в QNX очевидны.
Истинное ядро. В основе ОСРВ QNX лежит микроядерная архитектура. В последнее время популярность данного термина стремительно растет. Микроядерными называют подавляющее большинство систем с ядрами небольшого размера. Для совсем маленьких ядер используется термин наноядро. Однако для QNX такой подход не совсем верен. В данном случае небольшой размер ядра не является самоцелью. В QNX многие функции ОС вынесены за пределы ядра в область пользовательских приложений. Это касается, например, поддержки файловой системы. При этом функционал микроядра ограничен, оно в основном занято обеспечением межзадачного взаимодействия:
Управлением таймерами;
Управлением сигналами;
Синхронизацией потоков;
Планированием потоков;
Управлением потоками;
Обменом сообщениями (основная функция микроядра).
Микроядро системы QNX выполняет все вышеперечисленные функции. В отдельные модули вынесена поддержка дисков, драйверы сети и т.д. Запуск и работа модулей напоминает обычные пользовательские процессы. Отсюда вытекают очевидные преимущества QNX перед системами на основе монолитного ядра.
Микроядро обеспечивает повышенную надежность системы. Например, ошибка в драйвере не вызовет крах системы и микроядра. Перезапуск системы также не потребуется – достаточно в любой момент перезапустить драйвер.
Микроядро обеспечивает увеличение модульности. Нужно всего лишь запустить требуемые менеджеры, чтобы конечная целевая система была сконфигурирована согласно требованиям.
Микроядро значительно легче протестировать и отладить, т.к. его исходный код существенно меньше, чем у монолитного ядра.
Микроядро QNX написано не на ассемблере. Некоторые девелоперы считают, что микроядро QNX Neutrino написано на ассемблере и этим объясняется его компактность и производительность. Однако это не соответствует действительности. Язык, на котором написано ядро QNX Neutrino – С. А компактность и производительность объясняется применением отлаженных структур и алгоритмов.
Потоки и процессы в QNX. ОСРВ QNX поддерживает потоки, о чем вы можете узнать, ознакомившись со спецификациями POSIX. Более того, как раз потоки в QNX считаются минимальной «единицей выполнения», только ими управляет микроядро системы. Любой процесс в QNX имеет один или несколько потоков, т.е. его можно рассматривать как своеобразный «контейнер потоков».
Простейший процесс содержит всего один поток, однако зачастую может потребоваться выполнение нескольких алгоритмов в одном процессе в параллельном режиме. Рассмотрим маленький пример из ОСРВ QNX. Менеджер файловой системы в параллельном режиме может принимать и обрабатывать запросы сразу от нескольких процессов (клиентов). Менеджер, работающий в один поток, был бы неудобен тем, что при обращении к нему даже второго клиента, он был бы вынужден ожидать, пока завершится запрошенная ранее операция. Менеджер файловой системы в QNX может параллельно и одновременно обслужить сразу несколько приложений благодаря тому, что он работает в несколько потоков.
Любые процессы в ОСРВ QNX выполняются в собственном виртуальном адресном пространстве и находятся в изоляции друг от друга. Memory Management Unit, MMU или «Блок управления памятью» как раз и отвечает за реализацию данной защиты. Чтобы произошел запуск QNX, обязательным условием является наличие в процессоре устройства блока управления памятью. При этом в одном адресном пространстве работают потоки одного процесса.
