Un módulo cargable NetWare [1] [2] [3] ( NLM ) es un módulo de núcleo cargable (un módulo de código binario ) que se puede cargar en el sistema operativo NetWare de Novell . Los NLM pueden implementar controladores de hardware, funciones de servidor (por ejemplo, agrupamiento), aplicaciones (por ejemplo, GroupWise ), bibliotecas del sistema o utilidades.
Los NLM comenzaron a ser compatibles con la versión 3.x de NetWare basada en Intel 80386. Las versiones anteriores de NetWare tenían un núcleo monolítico y los cambios significativos de hardware o funcionalidad requerían volver a vincular el núcleo desde los módulos de objetos.
Debido a problemas de estabilidad con los primeros NLM de terceros, nunca se volvieron populares para la programación de aplicaciones de servidor, con pocas excepciones como programas antivirus , programas de respaldo y ciertos productos de bases de datos .
Al cargarse, un NLM solicita recursos, como memoria y subprocesos de proceso, del núcleo NetWare. El núcleo NetWare realiza un seguimiento de dichas solicitudes y puede identificar la memoria y otros recursos asignados a un NLM específico. Los NLM pueden cargar automáticamente otros NLM de los que dependen.
Los NLM pueden registrar comandos con el kernel de NetWare, ampliando el vocabulario de comandos disponible en el indicador de la consola de NetWare.
Cuando se codifican correctamente, los NLM pueden ser reentrantes, lo que permite cargar y ejecutar múltiples instancias del mismo código.
Inicialmente, Novell publicó un kit de herramientas de desarrollo para la programación NLM que incluía documentación de API del núcleo y un compilador de C ( Watcom ), pero el soporte de terceros para la función ejecutable NLM era muy limitado.
En las primeras versiones de NetWare (anteriores a v4.x), todos los procesos se ejecutaban en el espacio de direcciones del núcleo , sin protección de memoria específica. Por lo tanto, era posible que los errores en los NLM sobrescribieran el espacio de direcciones del núcleo o de otros NLM y, en última instancia, provocaran un bloqueo del servidor (en la terminología de Novell derivada de mainframe, esto se conocía como ABEND o ABnormal END) .
Además, NetWare utilizó un modelo multitarea no preventivo o cooperativo , lo que significa que se requería que un NLM cediera el paso al núcleo regularmente. [4] Por lo tanto , un NLM que ejecutaba un bucle infinito , por ejemplo, no podía detenerse.
En NetWare v4.x, Novell introdujo una forma limitada de protección de memoria, que se extendió a los espacios de direcciones protegidos en NetWare v5.x. A través de estos mecanismos, los NLM codificados correctamente se pueden cargar en su propio espacio de direcciones y se puede evitar que los NLM con mal funcionamiento comprometan la integridad del núcleo.
Los compiladores oficiales que producen NLM son:
El desarrollo de NLM también es posible con GNU cc y binutils. [6] Hay más detalles disponibles en NetWare Loadable Module Programming HOWTO de Martin Hinner. [7]
En marzo de 1995, [8] [9] Novell presentó un nuevo cliente NetWare DOS/Windows de 32 bits (Client 32 basado en ODI32/NIOS) [10] en 1996, reemplazando al anterior cliente de 16 bits basado en ODI /VLM. Su componente NIOS ( NetWare I/O Subsystem [8] [11] [12] ) utilizaba técnicas similares a DPMS para reubicar y ejecutar NLM en modo protegido y memoria extendida para reducir la huella de memoria convencional del cliente a entre 2 y 5 KB. [13] [11]
{{cite book}}
: |work=
ignorado ( ayuda ) (NB. NWDOSTIP.TXT es un trabajo exhaustivo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y componentes internos no documentados. Es parte de la colección MPDOSTIP.ZIP aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace provisto apunta a una versión anterior convertida a HTML del archivo NWDOSTIP.TXT).