Modul de încărcare NetWare - NetWare Loadable Module

Modul de încărcare NetWare
Extensie nume de fișier
.nlm
Număr magic Modul de încărcare NetWare
Dezvoltat de Novell
Tipul formatului Biblioteca executabilă , partajată

Un modul NetWare Loadable Module ( NLM ) este un modul kernel care poate fi încărcat (un modul de cod binar ) care poate fi încărcat în sistemul de operare NetWare al Novell . NLM-urile pot implementa drivere hardware, funcții de server (de exemplu, clustering), aplicații (de exemplu GroupWise ), biblioteci de sistem sau utilitare.

NLM-urile au fost acceptate începând cu versiunea 3.x a NetWare bazată pe Intel 80386. Versiunile anterioare ale NetWare aveau un nucleu monolitic , iar modificările semnificative ale hardware-ului sau ale funcționalității necesitau reconectarea nucleului de la modulele obiect.

Din cauza problemelor de stabilitate cu NLM-urile terțe, acestea nu au devenit niciodată populare pentru programarea aplicațiilor de server, cu puține excepții, cum ar fi programele antivirus , programele de backup și anumite produse de baze de date .

Funcționalitate

La încărcare, un NLM solicită resurse, cum ar fi memorie și fire de proces, de la kernel-ul NetWare. Kernel-ul NetWare urmărește astfel de solicitări și poate identifica memoria și alte resurse alocate unui anumit NLM. NLM-urile pot încărca automat alte NLM-uri de care depind ele însele.

NLM-urile pot înregistra comenzi cu kernel-ul NetWare, extinzând vocabularul de comandă disponibil la promptul consolei NetWare.

Când sunt codate corect, NLM-urile pot fi reintrate, permițând încărcarea și rularea mai multor instanțe ale aceluiași cod.

Probleme de programare

Inițial, Novell a publicat un set de instrumente de dezvoltare pentru programarea NLM, inclusiv documentația API-ului kernel și un compilator C ( Watcom ), dar suportul terților pentru funcția executabilă NLM a fost foarte limitat.

În primele versiuni NetWare (anterioare versiunii v4.x), toate procesele erau executate în spațiul de adresă al nucleului , fără protecție specifică a memoriei. Prin urmare, era posibil ca bug-urile din NLM- uri să suprascrie spațiul de adrese al nucleului sau al altor NLM și, în cele din urmă, să blocheze serverul - în terminologia Novell derivată din mainframe, aceasta era cunoscută sub numele de ABEND sau ABnormal END .

Mai mult, NetWare a folosit un model multitasking non-preventiv sau cooperativ , ceea ce înseamnă că un NLM era obligat să cedeze în mod regulat nucleului. De exemplu, un NLM care execută o buclă infinită nu poate fi oprit.

În NetWare v4.x, Novell a introdus o formă limitată de protecție a memoriei, care a fost extinsă la Spații de adrese protejate în NetWare v5.x. Prin aceste mecanisme, NLM-urile codificate corespunzător pot fi încărcate în propriul spațiu de adrese, iar NLM-urile care se comportă greșit pot fi împiedicate să compromită integritatea nucleului.

Compilatoare

Compilatorii oficiali care produc NLM sunt:

Dezvoltarea NLM este posibilă și cu GNU cc și binutils. Mai multe detalii sunt disponibile în NetWare Loadable Module Programming HOWTO de Martin Hinner.

NLM-uri din partea clientului cu NIOS

Anunțându-l în martie 1995, Novell a introdus un nou client DOS / Windows NetWare pe 32 de biți ( Client 32 bazat pe ODI32 / NIOS) în 1996, înlocuind fostul client pe 16 biți bazat pe ODI / VLM. Componenta sa NIOS ( subsistemul I / O NetWare ) a folosit tehnici similare DPMS pentru a muta și rula NLM-uri în modul protejat și memorie extinsă, pentru a reduce amprenta de memorie convențională a clientului până la 2 până la 5 KB.

Vezi si

Referințe

Lecturi suplimentare