Справочник Novell Netware 4

       

Загружаемые модули NetWare - NLM



Загружаемые модули NetWare, NLM (NetWare Loadable Module), представляют
собой фундаментальную часть многих версий операционной системы
NetWare. Многие из предусмотренных в NetWare базовых средств имеют
вид NLM-модулей.

Один из способов улучшения эффективности в NetWare состоит организации
работы без вытеснения. Это означает, что приложения и сама операционная
система работают в большинстве случаев без возможности прерывания
их другими приложениями. Предполагается, что приложения правильно
используют системные ресурсы.

NetWare не заботит проблема организации очередей готовых к выполнению
процессов и обеспечения механизмов плавного перехода от одного
процесса к следующему. Эта операционную систему беспокоят следующие
вопросы:

  • Планирование.
  • Стеки протоколов передачи данных.
  • Управление памятью.
  • Доступ к файловой системе.
  • Блокировка файлов и записей.
  • Обработка протокола NCP (NetWare Core Protocol).
  • Функции маршрутизации.
  • Управление системным кешем.
  • Интерфейс с драйверами устройств.
  • Отслеживание транзакций.


Используя преимущества адресации процессоров 386 и 486 и многозадачные
возможности, NetWare работает также в защищенном режиме ЦП. В
защищенном режиме память адресуется как один непрерывный диапазон
адресов. Такая простая модель памяти делает управление памятью
и ее распределение более гибким и эффективным. Так как вся память
представляет собой один сегмент, отпадает необходимость переключаться
между сегментами памяти. Выделение частей памяти ограничивается
только объемом доступной памяти. При работе в реальной режиме
(в отличие от защищенного) единичное выделение памяти ограничивается
64К, так как сегмент имеет ограничение размера в 64К.

Другим преимуществом защищенного режима является возможность одновременного
запуска нескольких программ. Это часто называется многозадачностью.
В операционной среде NetWare каждая задача или процесс называется
"нитью", и NetWare использует все преимущества многозадачности,
допуская и даже поощряя мультинитевое программирование.
Однонитевый
модуль NLM найти очень трудно.

В своей выполняемой форме модуль NLM представляет собой файл,
загружаемый и выполняемый на NetWare-cервере операционной системой
NetWare. Он может называться также, как любой другой выполняемый
файл DOS, но имеет расширение .NLM, .DSK, .NAM или .LAN. NLM с
расширением .NLM обычно обеспечивает какое-то служебное средство
или представляет собой утилиту. Именно такой вид NLM чаще используется
при программировании. NLM с расширением .DSK это драйверы диска,
файлы .NAM - это NLM пространства имен, а файлы .LAN - это драйверы
сетевых интерфейсных плат. Исходный код NLM аналогичен любому
другому исходному коду на языке Си. Требуемые для NLM файлы включают
в себя:

  • PRELUDE.OBJ;
  • файл определений (.DEF);
  • Исходные файлы на языке Си.


Файл PRELUDE.OBJ компонуется с NLM и обеспечивает код инициализации
и стандартную функциональность ANSI Си. Здесь обрабатываются такие
вещи, как аргументы этапа выполнения и идентификация процедуры
main().

Файл определений для NLM представляет собой текстовый файл, используемый
для указания директив компиляции и компоновки и задания для NLM
некоторой описательной информации.

Так как операционная система NetWare не использует вытеснения
или выгрузки, то она не особенно беспокоится об отслеживании поведения
работающего в данный момент NLM. NetWare избавлена от непроизводительных
издержек на отслеживания того, какой модуль NLM в данный момент
работает, с каким приоритетом и как долго. Она отслеживает такие
моменты, но не за исключение экстренных случаев не налагает ограничений.
В большинстве случаев операционная система NetWare полагается
на то, что все NLM ведут себя правильно, и что они использую ЦП,
периодически освобождая его. Это позволяет самой NetWare работать
более эффективно.

Один из самых общих моментов, которые вы должны знать об NLM,
это то, что они работают вместе с операционной системой NetWare.
Это означает, что они в большинстве случает имеют доступ к той
же памяти и используют тот же ЦП. Вы можете выделить свой собственный
стек, распределить переменные и память. Можно также использовать
набор библиотек, предлагающих многие функции, которые вы можете
выполнять. С их помощью вы можете запрашивать информацию ли услуги
операционной системы NetWare.

Содержание раздела