NetWare Loadable Module

NetWare Loadable Module
NetWare Loadable Module
Filename extension .nlm
Magic number NetWare Loadable Module
Developed by Novell
Type of format Executable, Shared library

A NetWare Loadable Module (NLM) is a binary code module that can be loaded into Novell's NetWare operating system. NLMs can implement hardware drivers, server functions (e.g. clustering), applications (e.g. GroupWise), system libraries or utilities.

NLMs were supported beginning with the Intel 80386-based NetWare version 3.x. Prior versions of NetWare had a monolithic kernel, and significant hardware or functionality changes required re-linking the kernel from object modules.

Due to stability issues with early third-party NLMs, they never became popular for server application programming, with few exceptions like antivirus programs, backup programs and certain database products.

Contents

Functionality

Upon loading, a NLM requests resources, such as memory and process threads, from the NetWare kernel. The NetWare kernel tracks such requests, and can identify memory and other resources assigned to a specific NLM. NLMs may auto-load other NLMs upon which they themselves depend.

NLMs may register commands with the NetWare kernel, extending the command vocabulary available at the NetWare console prompt.

When properly coded, NLMs can be re-entrant, allowing multiple instances of the same code to be loaded and run.

Programming issues

Initially, Novell published a development toolkit for NLM programming including kernel API documentation and a C compiler (Watcom), but third-party support for the NLM executable function was very limited.

In early NetWare versions (prior to v4.x), all processes were executed in the kernel address space, without specific memory protection. It was therefore possible for bugs in NLMs to overwrite the kernel's or other NLM's address space and ultimately crash the server — in the mainframe-derived Novell terminology, this was known as an ABEND or ABnormal END.

Moreover, NetWare used a non-preemptive, or cooperative, multitasking model, meaning that an NLM was required to yield to the kernel regularly. An NLM executing an infinite loop, for example, could therefore not be stopped.

In NetWare v4.x, Novell introduced a limited form of memory protection, which was extended to Protected Address Spaces in NetWare v5.x. Through these mechanisms, properly-coded NLMs can be loaded into their own address space, and mis-behaving NLMs can be prevented from compromising the kernel integrity.

Client-side NLMs with NIOS

In 1996, Novell introduced a new 32-bit DOS/Windows NetWare client (Client32 based on ODI32/NIOS), replacing the former 16-bit client based on ODI/VLM. Its NIOS (NetWare Input/Output System) used techniques similar to DPMS to relocate and run NLM in protected mode and extended memory in order to reduce the conventional memory footprint of the client.

References

Davis, Ralph (1991). NetWare 386 Programmer's Guide. Addison-Wesley. ISBN 9780201577099. 

"Novell Developer Documentation: Netware Loadable Module". http://developer.novell.com/tech/nlm.html. Retrieved 25 Sep 2010. 


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • NetWare Loadable Module —    Abbreviated NLM. Server management programs and LAN drivers that run on a server under Novell NetWare s network operating system. NLMs can be loaded and unloaded dynamically, without interrupting the server, and provide better service than… …   Dictionary of networking

  • netware loadable module —    (NLM)    An application residing on a NetWare server that coexists with the core NetWare operating system files and provides improved performance and tighter integration than applications not running at NLMs …   IT glossary of terms, acronyms and abbreviations

  • loadable module —    In Novell NetWare, a program that can be loaded and unloaded from the server or workstation while the operating system is running.    Two common types of loadable modules are NetWare Loadable Modules (NLMs), which are run on the server, and… …   Dictionary of networking

  • Virtual Loadable Module —    Abbreviated VLM. A Novell NetWare modular program that runs on each MS DOS client and allows that workstation to communicate with the server.    The NetWare DOS Requester consists of several VLMs that replace and provide backward compatibility …   Dictionary of networking

  • Network Loadable Module —    (NLM)    An application or driver that resides on a NetWare server to provide additional resource management capabilities …   IT glossary of terms, acronyms and abbreviations

  • NetWare Peripheral Architecture —    Abbreviated NPA or NWPA. A feature of NetWare that allows developers to add and support new storage devices and their associated controllers. NPA consists of the following components:    • Host Adapter Module (HAM)    The be one HAM for each… …   Dictionary of networking

  • Loadable kernel module — In computing, a loadable kernel module (or LKM) is an object file that contains code to extend the running kernel, or so called base kernel, of an operating system. Most current Unix like systems, and Microsoft Windows, support loadable kernel… …   Wikipedia

  • module —    Inprogramming,aself contained portion of a larger program written, tested, and compiled separately. Normally, a module performs only one specific operation.    See also NetWare Loadable Module; Virtual Loadable Module …   Dictionary of networking

  • NetWare NFS Gateway —    A Novell NetWare Loadable Module (NLM) that lets a NetWare server mount a Unix file system as a NetWare volume. Complete NetWare security is maintained, and access to the Unix system is based on the NetWare client s privileges …   Dictionary of networking

  • NetWare NFS —    A Novell NetWare Loadable Module (NLM) that adds NFS (Network File System) server capability to an existing NetWare file server. Once loaded, Unix NFS clients see the NetWare server as another NFS server.    See also Network File System …   Dictionary of networking

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”