NetWare Loadable Module
Encyclopedia
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.
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.
(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 bug
s 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.
/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.
Binary file
A binary file is a computer file which may contain any type of data, encoded in binary form for computer storage and processing purposes; for example, computer document files containing formatted text...
code module that can be loaded into Novell's NetWare
Novell NetWare
NetWare is a network operating system developed by Novell, Inc. It initially used cooperative multitasking to run various services on a personal computer, with network protocols based on the archetypal Xerox Network Systems stack....
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
Intel 80386
The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit of many workstations and high-end personal computers of the time...
-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
Backup
In information technology, a backup or the process of backing up is making copies of data which may be used to restore the original after a data loss event. The verb form is back up in two words, whereas the noun is backup....
programs and certain database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...
products.
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 compilerC (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
(Watcom
Watcom
Watcom International Corporation was founded in 1981 by three former employees of the Computer Systems Group at the University of Waterloo, in Waterloo, Ontario, Canada...
), 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 bug
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...
s 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
Abnormal end
An ABEND is an abnormal termination of software, or a program crash.This usage derives from an error message from the IBM OS/360, IBM zOS operating systems. Usually capitalized, but may appear as "abend"...
.
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
Infinite loop
An infinite loop is a sequence of instructions in a computer program which loops endlessly, either due to the loop having no terminating condition, having one that can never be met, or one that causes the loop to start over...
, 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 ODIOpen Data-Link Interface
The Open Data-Link Interface , developed by Apple and Novell, serves the same function as Microsoft and 3COM's Network Driver Interface Specification . Originally, ODI was written for NetWare and Macintosh environments. Like NDIS, ODI provides rules that establish a vendor-neutral interface between...
/VLM. Its NIOS (NetWare Input/Output System) used techniques similar to DPMS
DOS Protected Mode Services
DOS Protected Mode Services is a set of extended DOS memory management services to allow DPMS-enabled DOS drivers to load and execute in extended memory and protected mode....
to relocate and run NLM in protected mode
Protected mode
In computing, protected mode, also called protected virtual address mode, is an operational mode of x86-compatible central processing units...
and extended memory
Extended memory
In DOS memory management, extended memory refers to memory above the first megabyte of address space in an IBM PC or compatible with an 80286 or later processor. The term is mainly used under the DOS and Windows operating systems...
in order to reduce the conventional memory
Conventional memory
In DOS memory management, conventional memory, also called base memory, is the first 640 kilobytes of the memory on IBM PC or compatible systems. It is the read-write memory usable by the operating system and application programs...
footprint of the client.