Модуль – это любая программа, структура данных, компонент ОС или  любая строка байтов с идентифицирующим заголовком спереди и кодом CRC сзади.

CRC (циклический избыточный код) предназначен для защиты содержимого модуля от искажения.

Все функциональные компоненты OS -9 реализованы в виде независимых модулей. Такая система позволяет легко динамически реконфигурироваться добавлением или удалением отдельных модулей даже во время работы системы без какой-либо рекомпиляции или релинковании объектного кода.

Заголовок модуля несет системную информацию о самом модуле и его содержимом, необходимую  для предотвращения несанкционированного доступа , используется при поиске всех модулей ПЗУ, при запуске системы для инициализации пространства данных программы и защиты данных от разрушения путем контроля модуля кодом CRC.

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

Модули могут находиться постоянно в ПЗУ при запуске системы (например, модули ядра ОС) или загружаться с диска утилитой LOAD или по каналу связи в любой момент времени. На внешнем устройстве могут храниться в файлах информация о загруженных модулях, может добавляться. Когда модуль не найден в каталоге, ядро загружает файл, имеющий такое название и записывает его в каталог. Когда модуль уже не нужен его можно выгрузить и освободить занимаемую им память. Модули могут быть загружены неявно, т.е. опосредовано, при выполнении запросов, в которых явно не указано на загрузку этих модулей, так называемые липкие модули. Липкие модули после того, как он использовался, остается в памяти до тех пор, пока его память не понадобится системе. К липким  могут относиться утилиты OS -9.

OS -9 различает следующие типы модулей:

  1. программа;
  2. подпрограмма;
  3. модуль данных;
  4. trap- обработчики;
  5. компоненты ОС (кроме ввода/вывода);
  6. менеджер;
  7. драйвер устройства;
  8. дескриптор устройства.

ОС загружает модуль в любую свободную память. Это накладывает на программы требование быть позиционно независимыми. Их пространство данных может находиться в любом месте свободной памяти и отделяться от пространства самой программы. Это позволяет записывать модули программы непосредственно в ПЗУ и позволяет им быть реентерабельными (могут быть вызваны сразу несколькими программами).

 

Бесплатный хостинг uCoz