Монолітне ядро (англ. Monolithic kernel) — класична і поширена сьогодні архітектура ядер операційних систем. Монолітні ядра надають багатий набір абстракцій устаткування. Всі частини монолітного ядра працюють в одному адресному просторі.
Монолітні ядра мають довгу історію розвитку і вдосконалення і, в цей час, є найбільш архітектурно зрілими і придатними до експлуатації. Разом з тим, монолітність ядер ускладнює їхню відладку, розуміння коду ядра, додавання нових функцій і можливостей, видалення «мертвого», непотрібного, успадкованого від попередніх версій, коду. «Розбухання» коду монолітних ядер також підвищує вимоги до обсягу оперативної пам'яті, потрібного для функціювання ядра ОС. Це робить монолітну ядерну архітектуру мало придатними до експлуатації в системах, сильно обмежених за обсягом пам'яті, наприклад, вбудовуваних системах, виробничих мікроконтролерах тощо.
Альтернативою монолітним ядрам вважається архітектура, заснована на мікроядрах.
Модульні ядра
Старі монолітні ядра вимагали перекомпіляції при будь-якій зміні складу устаткування. Більшість сучасних ядер, такі, як OpenVMS, Linux, FreeBSD, NetBSD і Solaris дозволяють під час роботи динамічно (за потреби) підвантажувати і вивантажувати модулі, що виконують частини функцій ядра. Практично, динамічне завантаження модулів, це просто гнучкіший спосіб зміни образу ядра під час виконання — на відміну від перезавантаження з іншим ядром. Модулі дозволяють легко розширити можливості ядра в міру необхідності. Динамічне підвантаження модулів допомагає зберегти розмір коду ядра, що працює в просторі, до мінімуму, наприклад, звести до мінімуму відбиток ядра для вбудовуваних пристроїв з обмеженими апаратними ресурсами.
Модульне ядро — сучасна, вдосконалена модифікація архітектури монолітних ядер операційних систем, на відміну від «класичних» монолітних ядер, що вважаються нині застарілими.
Всі модулі ядра працюють в адресному просторі ядра і можуть користуватися всіма функціями, що надаються ядром. Тому модульні ядра продовжують залишатися монолітними. Модульні ядра здійснюється на рівні бінарного образу, а не на архітектурному рівні ядра, оскільки динамічно підвантажувані модулі завантажуються в адресний простір ядра і надалі працюють як інтегральна частина ядра. Модульні монолітні ядра не слід плутати з архітектурним рівнем модульної, властивий мікроядрам і гібридним ядрам.
Модульні ядра зручніші для розробки, чим традиційні монолітні ядра, що не підтримують динамічне завантаження модулів, оскільки від розробника не потрібна багатократна повна перекомпіляція ядра при роботі над якоюсь його підсистемою або драйвером. Виявлення, локалізація, зневадження і усунення помилок при тестуванні також полегшуються.
Модульні ядра надають особливий програмний інтерфейс (API) для пов'язування модулів з ядром, для забезпечення динамічного підвантаження і вивантаження модулів. У свою чергу, не будь-яка програма може бути зроблена модулем ядра: на модулі ядра накладаються певні обмеження в частині використовуваних функцій (наприклад, вони не можуть користуватися функціями стандартної бібліотеки С/С++ і повинні використовувати спеціальні аналоги, що є функціями API ядра). Крім того, модулі ядра зобов'язані експортувати певні функції, потрібні ядру для правильного підключення і розпізнавання модуля, для його коректної ініціалізації при завантаженні і коректного завершення при вивантаженні, для реєстрації модуля в таблиці модулів ядра і для звернення з ядра до сервісів, що надається модулем.
Не всі частини ядра можуть бути зроблені модулями. Деякі частини ядра завжди мають бути присутніми в оперативній пам'яті і мають бути жорстко «вшиті» в ядро. Також не всі модулі допускають динамічне підвантаження (без перезавантаження ОС). Загальною тенденцією розвитку сучасних модульних ядер є все більша модулярізация коду, поліпшення механізмів динамічного підвантаження і вивантаження, зменшення або усунення необхідності в ручному підвантаженні модулів або в переконфігуруванні ядра при змінах апаратури шляхом введення тих або інших механізмів автоматичного визначення устаткування і автоматичного підвантаження потрібних модулів, універсалізація коду ядра і введення в ядро абстрактних механізмів, призначених для сумісного використання багатьма модулями. Прикладом може служити — «віртуальна файлова система», спільно використовувана багатьма модулями файлових систем в ядрі Linux.
Література
- Роберт Лав. Разработка ядра Linux.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Monolitne yadro angl Monolithic kernel klasichna i poshirena sogodni arhitektura yader operacijnih sistem Monolitni yadra nadayut bagatij nabir abstrakcij ustatkuvannya Vsi chastini monolitnogo yadra pracyuyut v odnomu adresnomu prostori Struktura operacijnih sistem na monolitnomu yadri mikroyadri i gibridnomu yadri Monolitni yadra mayut dovgu istoriyu rozvitku i vdoskonalennya i v cej chas ye najbilsh arhitekturno zrilimi i pridatnimi do ekspluataciyi Razom z tim monolitnist yader uskladnyuye yihnyu vidladku rozuminnya kodu yadra dodavannya novih funkcij i mozhlivostej vidalennya mertvogo nepotribnogo uspadkovanogo vid poperednih versij kodu Rozbuhannya kodu monolitnih yader takozh pidvishuye vimogi do obsyagu operativnoyi pam yati potribnogo dlya funkciyuvannya yadra OS Ce robit monolitnu yadernu arhitekturu malo pridatnimi do ekspluataciyi v sistemah silno obmezhenih za obsyagom pam yati napriklad vbudovuvanih sistemah virobnichih mikrokontrolerah tosho Alternativoyu monolitnim yadram vvazhayetsya arhitektura zasnovana na mikroyadrah Modulni yadraStari monolitni yadra vimagali perekompilyaciyi pri bud yakij zmini skladu ustatkuvannya Bilshist suchasnih yader taki yak OpenVMS Linux FreeBSD NetBSD i Solaris dozvolyayut pid chas roboti dinamichno za potrebi pidvantazhuvati i vivantazhuvati moduli sho vikonuyut chastini funkcij yadra Praktichno dinamichne zavantazhennya moduliv ce prosto gnuchkishij sposib zmini obrazu yadra pid chas vikonannya na vidminu vid perezavantazhennya z inshim yadrom Moduli dozvolyayut legko rozshiriti mozhlivosti yadra v miru neobhidnosti Dinamichne pidvantazhennya moduliv dopomagaye zberegti rozmir kodu yadra sho pracyuye v prostori do minimumu napriklad zvesti do minimumu vidbitok yadra dlya vbudovuvanih pristroyiv z obmezhenimi aparatnimi resursami Modulne yadro suchasna vdoskonalena modifikaciya arhitekturi monolitnih yader operacijnih sistem na vidminu vid klasichnih monolitnih yader sho vvazhayutsya nini zastarilimi Vsi moduli yadra pracyuyut v adresnomu prostori yadra i mozhut koristuvatisya vsima funkciyami sho nadayutsya yadrom Tomu modulni yadra prodovzhuyut zalishatisya monolitnimi Modulni yadra zdijsnyuyetsya na rivni binarnogo obrazu a ne na arhitekturnomu rivni yadra oskilki dinamichno pidvantazhuvani moduli zavantazhuyutsya v adresnij prostir yadra i nadali pracyuyut yak integralna chastina yadra Modulni monolitni yadra ne slid plutati z arhitekturnim rivnem modulnoyi vlastivij mikroyadram i gibridnim yadram Modulni yadra zruchnishi dlya rozrobki chim tradicijni monolitni yadra sho ne pidtrimuyut dinamichne zavantazhennya moduliv oskilki vid rozrobnika ne potribna bagatokratna povna perekompilyaciya yadra pri roboti nad yakoyus jogo pidsistemoyu abo drajverom Viyavlennya lokalizaciya znevadzhennya i usunennya pomilok pri testuvanni takozh polegshuyutsya Modulni yadra nadayut osoblivij programnij interfejs API dlya pov yazuvannya moduliv z yadrom dlya zabezpechennya dinamichnogo pidvantazhennya i vivantazhennya moduliv U svoyu chergu ne bud yaka programa mozhe buti zroblena modulem yadra na moduli yadra nakladayutsya pevni obmezhennya v chastini vikoristovuvanih funkcij napriklad voni ne mozhut koristuvatisya funkciyami standartnoyi biblioteki S S i povinni vikoristovuvati specialni analogi sho ye funkciyami API yadra Krim togo moduli yadra zobov yazani eksportuvati pevni funkciyi potribni yadru dlya pravilnogo pidklyuchennya i rozpiznavannya modulya dlya jogo korektnoyi inicializaciyi pri zavantazhenni i korektnogo zavershennya pri vivantazhenni dlya reyestraciyi modulya v tablici moduliv yadra i dlya zvernennya z yadra do servisiv sho nadayetsya modulem Ne vsi chastini yadra mozhut buti zrobleni modulyami Deyaki chastini yadra zavzhdi mayut buti prisutnimi v operativnij pam yati i mayut buti zhorstko vshiti v yadro Takozh ne vsi moduli dopuskayut dinamichne pidvantazhennya bez perezavantazhennya OS Zagalnoyu tendenciyeyu rozvitku suchasnih modulnih yader ye vse bilsha modulyarizaciya kodu polipshennya mehanizmiv dinamichnogo pidvantazhennya i vivantazhennya zmenshennya abo usunennya neobhidnosti v ruchnomu pidvantazhenni moduliv abo v perekonfiguruvanni yadra pri zminah aparaturi shlyahom vvedennya tih abo inshih mehanizmiv avtomatichnogo viznachennya ustatkuvannya i avtomatichnogo pidvantazhennya potribnih moduliv universalizaciya kodu yadra i vvedennya v yadro abstraktnih mehanizmiv priznachenih dlya sumisnogo vikoristannya bagatma modulyami Prikladom mozhe sluzhiti virtualna fajlova sistema spilno vikoristovuvana bagatma modulyami fajlovih sistem v yadri Linux LiteraturaRobert Lav Razrabotka yadra Linux ISBN 978 5 8459 1085 1