Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Novell үйлесімді компьютерлік оқуға арналған бағдарламалық қамтамасыз ету
Novell compatible computer readable software
NetWare жүктелетін модулі (NLM) – Novell NetWare операциялық жүйесіне жүктелетін ядро модулі (бинарлық код модулі) болып табылады. NLM-дер аппараттық драйверлерді, серверлік функцияларды (мысалы, кластерлеу), қосымшаларды (мысалы, GroupWise), жүйелік кітапханаларды немесе қосымша құралдарды жүзеге асыра алады. NLM-дер Intel 80386 негізіндегі NetWare 3.x нұсқасынан бастап қолдау көрсетілді. NetWare-тің бұрынғы нұсқаларында монолиттік ядро болған, ал маңызды аппараттық немесе функционалдық өзгерістер ядроны объектілік модульдерден қайта байланыстыруды талап еткен. Ерте үшінші тарап NLM-дерінің тұрақсыздығына байланысты, олар серверлік қосымшаларды бағдарламалау үшін кеңінен таралмады, антивирустық бағдарламалар, резервтік көшірме бағдарламалары және белгілі бір дерекқор өнімдері сияқты кейбір ерекше жағдайларды қоспағанда.
A NetWare Loadable Module (NLM) is a loadable kernel module (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.
Функционалдылығы
Жүктелген кезде NLM жад және процессор жіптері сияқты ресурстарды NetWare ядросынан сұрайды. NetWare ядросы мұндай сұрауларды қадағалайды және нақты бір NLM-ге тағайындалған жадты және басқа ресурстарды анықтай алады. NLM-дер өздеріне қажетті басқа NLM-дерді автоматты түрде жүктеуге мүмкіндік алады. NLM-дер NetWare ядросында командаларды тіркеу арқылы NetWare консолінде қолжетімді командалар тізімін кеңейтеді. Дұрыс бағдарламаланған жағдайда, NLM-дерді қайтадан іске қосуға болады, соның нәтижесінде бірдей кодтың бірнеше данасын жүктеу және іске асыру мүмкін болады.
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.
Бағдарламалау мәселелері
Бастапқыда 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-дер ядроның тұтастығына нұқсан келтіруіне жол берілмейді.
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.