Что такое функционирование в «Реальном масштабе времени»
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
Микроядро и дополнительные модули. Главное отличие
микроядра Neutrino от микроядра QNX – это его соотношение с внешними модулями. В QNX микроядро физически существовало в коде менеджера процессов, что означало необходимость использования последнего даже там, где не нужны его функции. Поскольку Neutrino должна быть применима для систем самого низкого уровня, типа "интеллектуального тостера", это ограничение необходимо было ликвидировать с целью снижения требований к памяти. Микроядро Neutrino может существовать вне менеджера процессов, что позволяет связать его с пользовательским кодом, получив таким образом сущность, называемую "системный процесс" (system process). Такой процесс не требует для работы ни ОС, ни даже BIOS, поскольку в комплект системы входит набор модулей IPL (начальной загрузки), способных заменить BIOS в этом качестве. Системный процесс способен к самостоятельному исполнению. Тостеру не нужна ОС в полном смысле этого слова, ему нужна управляющая система реального времени. Neutrino дает возможность разрабатывать такие системы, пользуясь стандартным API , определенным в POSIX, обеспечивая при этом большинство необходимых для подобной системы функций. Если же для системы требуется полноценная ОС, то нужно связать микроядро с менеджером процессов Neutrino (ProcNto), затем сформировать шаблон ядра и получить из него загружаемый двоичный образ – так, как это делается в QNX. А что, если для реализации системы ProcNto не подходит? Neutrino предоставляет разработчикам целый спектр решений на этот случай. Альтернативная реализация дополнительного сервиса. Менеджер процессов ProcNto представляет собой набор нитей, исполняющихся в адресном пространстве микроядра, и отвечает за управление памятью, поддержку пространства имен и создание новых процессов. Не всегда эти функции бывают нужны одновременно. Например, встроенной системе, использующей 76 фиксированный набор процессов, "зашитых" в ядро, вряд ли понадобятся функции создания новых процессов, с поддержкой различных форматов. Поэтому, несмотря на свой малый размер, ProcNto может оказаться нецелесообразно велик. В таких случаях разработчик системы может реализовать самостоятельно альтернативный вариант, в котором вместо ProcNto используется его собственный код, связанный с определенной библиотекой, содержащей упрощенные заменители для минимально необходимого набора функций. Так, например, можно переопределить реализацию функций open(), read() и write() – если это все, что необходимо для системы. Расширения ядра и добавление новых системных вызовов. Еще одно новшество микроядра Neutrino заключается в поддержке расширений (еxtensions). Код Neutrino содержит различные таблицы переходов, которые могут быть переопределены в момент исполнения любой нитью, работающей в адресном пространстве микроядра. Эти таблицы могут указывать на адреса функций в любой другой нити. Например, ProcNto использует этот механизм для замены примитивных функций управления памятью, содержащихся в Neutrino, на более сложные, позволяющие выполнять операции с множественными виртуальными адресными пространствами, соответствующими различным процессам. Само микроядро не содержит кода, способного работать с виртуальной памятью, чтобы не обременять системы, которые этот механизм не поддерживают или не используют. Download 1.86 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling