Кіріспе

Novell үйлесімді компьютерлік оқуға арналған бағдарламалық қамтамасыз ету

NetWare жүктелетін модулі (NLM) – Novell NetWare операциялық жүйесіне жүктелетін ядро модулі (бинарлық код модулі) болып табылады. NLM-дер аппараттық драйверлерді, серверлік функцияларды (мысалы, кластерлеу), қосымшаларды (мысалы, GroupWise), жүйелік кітапханаларды немесе қосымша құралдарды жүзеге асыра алады. NLM-дер Intel 80386 негізіндегі NetWare 3.x нұсқасынан бастап қолдау көрсетілді. NetWare-тің бұрынғы нұсқаларында монолиттік ядро болған, ал маңызды аппараттық немесе функционалдық өзгерістер ядроны объектілік модульдерден қайта байланыстыруды талап еткен. Ерте үшінші тарап NLM-дерінің тұрақсыздығына байланысты, олар серверлік қосымшаларды бағдарламалау үшін кеңінен таралмады, антивирустық бағдарламалар, резервтік көшірме бағдарламалары және белгілі бір дерекқор өнімдері сияқты кейбір ерекше жағдайларды қоспағанда.

Функционалдылығы

Жүктелген кезде NLM жад және процессор жіптері сияқты ресурстарды NetWare ядросынан сұрайды. NetWare ядросы мұндай сұрауларды қадағалайды және нақты бір NLM-ге тағайындалған жадты және басқа ресурстарды анықтай алады. NLM-дер өздеріне қажетті басқа NLM-дерді автоматты түрде жүктеуге мүмкіндік алады. NLM-дер NetWare ядросында командаларды тіркеу арқылы NetWare консолінде қолжетімді командалар тізімін кеңейтеді. Дұрыс бағдарламаланған жағдайда, NLM-дерді қайтадан іске қосуға болады, соның нәтижесінде бірдей кодтың бірнеше данасын жүктеу және іске асыру мүмкін болады.

Бағдарламалау мәселелері

Бастапқыда Novell NLM бағдарламалауға арналған, ядролық API құжаттамасы және C компиляторы (Watcom) бар әзірлеу құралдары жинағын жариялады, бірақ NLM орындалатын функциясына үшінші тараптан қолдау өте шектеулі болды. NetWare-дің ерте нұсқаларында (v4.x нұсқасына дейін) барлық процестер ешқандай жадты қорғаусыз, ядроның адрестік кеңістігінде орындалды. Сондықтан NLM-дегі қателер ядроның немесе басқа NLM-нің адрестік кеңістігін жауып тастап, нәтижесінде сервердің жұмысын тоқтатуы мүмкін болды. Novell терминологиясында бұл ABEND немесе ABnormal END деп аталды. Сонымен қатар, NetWare преемптивті емес, немесе кооперативтік көп тапсырмалы модельді қолданды, яғни NLM ядроға үнемі бас беруі керек еді. Мысалы, шексіз циклде іске қосылған NLM тоқтатылмайтын еді. NetWare v4.x нұсқасында Novell жадты қорғаудың шектеулі түрін енгізді, ол NetWare v5.x нұсқасында қорғалған адрестік кеңістікке дейін кеңейтілді. Осы механизмдер арқылы дұрыс кодталған NLM-дер өздерінің жеке адрестік кеңістігіне жүктелуі мүмкін, ал қате жұмыс істейтін NLM-дер ядроның тұтастығына нұқсан келтіруіне жол берілмейді.