Moduł ładowalny NetWare — NetWare Loadable Module

Moduł ładowalny NetWare
Rozszerzenie nazwy pliku
.nlm
magiczny numer Moduł ładowalny NetWare
Opracowany przez Powieść
Rodzaj formatu Wykonywalny , Udostępniona biblioteka

NetWare ładowalny moduł ( NLM ) jest obciążana moduł jądra (a binarny moduł kodu), które mogą być ładowane do Novell NetWare systemu operacyjnego. Moduły NLM mogą implementować sterowniki sprzętowe, funkcje serwera (np. klastrowanie), aplikacje (np. GroupWise ), biblioteki systemowe lub narzędzia.

Moduły NLM były obsługiwane począwszy od opartego na Intel 80386 NetWare w wersji 3.x. Wcześniejsze wersje NetWare miały jądro monolityczne , a znaczące zmiany w sprzęcie lub funkcjonalności wymagały ponownego połączenia jądra z modułami obiektowymi.

Ze względu na problemy ze stabilnością wczesnych modułów NLM innych firm, nigdy nie stały się one popularne w przypadku programowania aplikacji serwerowych, z kilkoma wyjątkami, takimi jak programy antywirusowe, programy do tworzenia kopii zapasowych i niektóre produkty bazodanowe .

Funkcjonalność

Podczas ładowania NLM żąda zasobów, takich jak pamięć i wątki procesów, z jądra NetWare. Jądro NetWare śledzi takie żądania i może identyfikować pamięć i inne zasoby przypisane do określonego NLM. Moduły NLM mogą automatycznie ładować inne moduły NLM, od których same zależą.

Moduły NLM mogą rejestrować polecenia w jądrze NetWare, rozszerzając słownik poleceń dostępny w wierszu poleceń konsoli NetWare.

Poprawnie zakodowane moduły NLM mogą być ponownie wprowadzane, co pozwala na załadowanie i uruchomienie wielu wystąpień tego samego kodu.

Problemy z programowaniem

Początkowo Novell opublikował zestaw narzędzi programistycznych do programowania NLM, w tym dokumentację API jądra i kompilator C ( Watcom ), ale wsparcie innych firm dla funkcji wykonywalnych NLM było bardzo ograniczone.

We wczesnych wersjach NetWare (przed v4.x) wszystkie procesy były wykonywane w przestrzeni adresowej jądra , bez specjalnej ochrony pamięci. Dlatego możliwe było, że błędy w NLM nadpisują przestrzeń adresową jądra lub innego NLM i ostatecznie powodują awarię serwera — w terminologii Novella wywodzącej się z komputerów mainframe było to znane jako ABEND lub ABnormal END .

Co więcej, NetWare używał modelu wielozadaniowości bez wywłaszczania, czyli kooperacyjnego , co oznacza, że ​​NLM był wymagany do regularnego ustępowania jądru. NLM wykonujący na przykład pętlę nieskończoną nie mógł zatem zostać zatrzymany.

W systemie NetWare v4.x firma Novell wprowadziła ograniczoną formę ochrony pamięci, która została rozszerzona na chronione przestrzenie adresowe w systemie NetWare v5.x. Dzięki tym mechanizmom prawidłowo zakodowane moduły NLM mogą być ładowane do ich własnej przestrzeni adresowej, a niewłaściwie zachowujące się moduły NLM mogą nie naruszać integralności jądra.

Kompilatory

Oficjalne kompilatory, które tworzą NLM to:

Rozwój NLM jest również możliwy za pomocą GNU cc i binutils. Więcej szczegółów można znaleźć w podręczniku NetWare Loadable Module Programming HOWTO autorstwa Martina Hinnera.

Moduły NLM po stronie klienta z NIOS

Zapowiadając to w marcu 1995 r., Novell wprowadził nowego 32-bitowego klienta DOS/Windows NetWare ( klient 32 oparty na ODI32/NIOS) w 1996 r., zastępując dotychczasowego 16-bitowego klienta opartego na ODI /VLM. Jego składnik NIOS ( NetWare I/O Subsystem ) wykorzystywał techniki podobne do DPMS do przenoszenia i uruchamiania modułów NLM w trybie chronionym i pamięci rozszerzonej w celu zmniejszenia zużycia pamięci konwencjonalnej klienta do 2 do 5 KB.

Zobacz też

Bibliografia

Dalsza lektura