Что такое функционирование в «Реальном масштабе времени»


Download 1.86 Mb.
Pdf ko'rish
bet33/72
Sana19.04.2023
Hajmi1.86 Mb.
#1362511
TuriУчебное пособие
1   ...   29   30   31   32   33   34   35   36   ...   72
Bog'liq
Луканов А.С. Системы реального времени 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:
1   ...   29   30   31   32   33   34   35   36   ...   72




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling