Un módulo cargable de NetWare ( NLM ) es un módulo de kernel 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, agrupación en clústeres), aplicaciones (por ejemplo, GroupWise ), bibliotecas del sistema o utilidades.
Extensión de nombre de archivo | .nlm |
---|---|
número mágico | Módulo cargable NetWare |
Desarrollado por | Novell |
Tipo de formato | Ejecutable , Biblioteca compartida |
Los NLM fueron compatibles a partir de la versión 3.x de NetWare basada en Intel 80386. Las versiones anteriores de NetWare tenían un kernel monolítico y los cambios significativos de hardware o funcionalidad requerían volver a vincular el kernel desde los módulos de objeto.
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 .
Funcionalidad
Al cargar, un NLM solicita recursos, como memoria y subprocesos de proceso, del kernel de NetWare. El kernel de NetWare rastrea tales 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 ellos mismos 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 volver a entrar, lo que permite que se carguen y ejecuten varias instancias del mismo código.
Problemas de programación
Inicialmente, Novell publicó un conjunto de herramientas de desarrollo para la programación NLM que incluía documentación de la API del kernel y un compilador de C ( Watcom ), pero el soporte de terceros para la función ejecutable de NLM era muy limitado.
En las primeras versiones de NetWare (anteriores a la v4.x), todos los procesos se ejecutaban en el espacio de direcciones del kernel , sin protección de memoria específica. Por lo tanto, era posible que los errores en los NLM sobrescribieran el espacio de direcciones del kernel u otro NLM y, finalmente, colapsaran el servidor; en la terminología de Novell derivada del 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 un NLM para ceder al kernel con regularidad. Por lo tanto, un NLM que ejecuta un bucle infinito , por ejemplo, no se puede detener.
En NetWare v4.x, Novell introdujo una forma limitada de protección de la memoria, que se amplió 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 que se comportan incorrectamente comprometan la integridad del kernel.
Compiladores
Los compiladores oficiales que producen NLM son:
- Compilador Watcom C / C ++ / OpenWatcom
- Metrowerks Codewarrior para NetWare [1]
- EPC C / C ++
- Novell NLMLINK.EXE
El desarrollo de NLM también es posible con GNU cc y binutils. [2] Más detalles están disponibles en el CÓMO de programación del módulo cargable de NetWare de Martin Hinner. [3]
NLM del lado del cliente con NIOS
Al anunciarlo en marzo de 1995, [4] [5] Novell introdujo un nuevo cliente NetWare DOS / Windows de 32 bits ( Cliente 32 basado en ODI32 / NIOS) en 1996, reemplazando al antiguo cliente de 16 bits basado en ODI / VLM. Su componente NIOS ( NetWare I / O Subsystem [4] [6] [7] ) utilizó técnicas similares a DPMS para reubicar y ejecutar NLM en modo protegido y memoria extendida con el fin de reducir la huella de memoria convencional del cliente de 2 a 5 KB. [8] [6]
Ver también
- Módulo cargable virtual (VLM)
Referencias
- ^ "Sitio web de Metrowerks" . Archivado desde el original el 6 de enero de 2009.
- ^ "Desarrollo NLM bajo Linux" .
- ^ "CÓMO de programación del módulo cargable NetWare" .
- ^ a b "Novell para vestir Tuxedo y entregar cliente de 32 bits" . Network World : 141. 1995-03-27 . Consultado el 18 de agosto de 2018 .
- ^ "Network Edition - Historia de portada" . Revista de PC : NE27. 1995-10-24 . Consultado el 18 de agosto de 2018 .
- ^ a b Liebing, Edward A. (1 de mayo de 1996). "NetWare Client 32 para DOS / Windows: descripción general de la arquitectura y las características" . Novell AppNotes . Novell . Archivado desde el original el 18 de agosto de 2018 . Consultado el 18 de agosto de 2018 .
- ^ Hendrick, Ben (1 de noviembre de 1996). "Descripción general de NetWare Client 32 para Windows 95" . Novell AppNotes . Novell . Archivado desde el original el 18 de agosto de 2018 . Consultado el 18 de agosto de 2018 .
- ^ Paul, Matthias R. (30 de julio de 1997). NWDOS-TIPs - Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds . MPDOSTIP . Release 157 (en alemán) (3 ed.). Archivado desde el original el 22 de mayo de 2016 . Consultado el 11 de enero de 2012 .(NB. NWDOSTIP.TXT es un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y funciones internas no documentadas. Es parte de la colección MPDOSTIP.ZIP aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en el tiempo. El enlace proporcionado apunta a una versión anterior convertida en HTML del archivo NWDOSTIP.TXT).
Otras lecturas
- Davis, Ralph (1991). Guía del programador de NetWare 386 . Addison-Wesley . ISBN 978-0-201-57709-9.
- "Documentación para desarrolladores de Novell: módulo cargable de Netware" . Archivado desde el original el 24 de noviembre de 2009 . Consultado el 25 de septiembre de 2010 .