Архітектура ядра
Ядро - центральна Частинам операційної системи (ОС), що забезпечує додаткам координований доступ До ресурсів комп'ютера , таким як процесорний Час до , пам'ять , зовнішнє апаратне QA, , зовнішній пристрій введення і виведення інформації. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов . Також зазвичай ядро надає сервіси файлової СИСТЕМИ п мережевих протоколів .
Як основний елемент ОС, ядро являє собою найбільш низький рівень абстракції для доступу програм до ресурсів системи, необхідних для їх роботи. Як правило, ядро надає такий доступ виконуваним процесам відповідних програм ЗА рахунок використання механізмів взаємодії між процесами п звернення програм До системних викликів ОС.
Описана задача може відрізнятися в залежності від типу архітектури ядра і способу її реалізації.
Типи архітектур ядер операційних систем
Монолітне ядро
Основна стаття: Монолітне ядро
Монолітне ядро надає багатий набір абстракцій обладнання. Всі частини монолітного ядра працюють в одному адресному просторі . Це така схема операційної системи, при якій всі компоненти її ядра є складовими частинами однієї програми, використовують загальні структури даних і взаємодіють один з одним шляхом безпосереднього виклику процедур. Монолітне ядро - найстаріший спосіб організації операційних систем. Прикладом систем з монолітним ядром є більшість UNIX-систем.
Переваги: Швидкість роботи, спрощена розробка модулів. Недоліки: Оскільки все ядро працює в одному адресному просторі, збій в одному з компонентів може порушити працездатність всієї системи.
Приклади: Традиційні ядра UNIX (такі як BSD ), Linux , ядро MS-DOS , ядро KolibriOS .
Деякі старі монолітні ядра, особливо систем класу UNIX / Linux , вимагали перекомпіляції при будь-якій зміні складу обладнання. Більшість сучасних ядер дозволяють під час роботи довантажувати модулі, що виконують частину функцій ядра. У цьому випадку компоненти операційної системи є не самостійними модулями, а складовими частинами однієї великої програми, званої монолітним ядром (монолітне ядро), яке представляє собою набір процедур, кожна з яких може викликати кожну. Всі процедури працюють в привілейованому режимі.
Модульне ядро
Основна стаття: Модульне ядро
Модульне ядро - сучасна, вдосконалена модифікація архітектури монолітних ядер операційних Системам .
На відміну від «класичних» монолітних ядер, модульні ядра, як правило, не вимагають повної перекомпіляції ядра при зміні складу апаратного забезпечення комп'ютера. Замість цього модульні ядра надають той чи інший механізм підвантаження модулів ядра, що підтримують ту чи іншу апаратне забезпечення (наприклад, драйверів ). При цьому підвантаження модулів може бути як динамічної (виконуваної «на льоту», без перезавантаження ОС, в працюючій системі), так і статичної (виконуваної при перезавантаженні ОС після переконфігурації системи на завантаження тих чи інших модулів).
Мікроядро
Основна стаття: Мікроядро
Мікроядро надає тільки елементарні функції управління процесами і мінімальний набір абстракцій для роботи з обладнанням.Велику Частинам РОБОТИ З допомогою здійснюється спеціальних користувацьких процесів , званих сервісами. Вирішальним критерієм «микроядерности» є розміщення всіх або майже всіх драйверів та модулів в сервісних процесах, іноді з явною неможливістю завантаження будь-яких модулів розширення у власне мікроядро, а також розробки таких розширень.
Переваги: Стійкість до збоїв обладнання, помилкам в компонентах системи.Основна перевага мікроядерної архітектури - висока ступінь модульності ядра операційної системи. Це істотно спрощує додавання до нього нових компонентів. У мікроядерної операційній системі можна, не перериваючи її роботи, завантажувати і вивантажувати нові драйвери, файлові системи і т. д. д. Істотно спрощується процес налагодження компонентів ядра, так як нова версія драйвера може завантажуватися без перезапуску всієї операційної системи. Компоненти ядра операційної системи нічим принципово не відрізняються від призначених для користувача програм, тому для їх налагодження можна застосовувати звичайні засоби. Мікроядерна архітектура підвищує надійність системи, оскільки помилка на рівні непривілейованої програми менш небезпечна, ніж відмова на рівні режиму ядра. Недоліки: Передача даних між процесами вимагає накладних витрат. Класичні мікроядра надають лише дуже невеликий набір низькорівневих примітивів, або системних викликів , що реалізують базові сервіси операційної системи. Сервісні процеси (у прийнятій в сімействі UNIX- термінології - « демони ») активно використовуються в самих різних ОС для задач типу запуску програм за розкладом (UNIX і Windows NT), ведення журналів подій (UNIX і Windows NT), централізованої перевірки паролів і зберігання пароля поточного інтерактивного користувача в спеціально обмеженою області пам'яті (Windows NT). Тим не менш, не слід вважати ОС мікроядерний тільки через використань такої архітектури.
Приклади: Symbian OS , Windows CE , OpenVMS , Маха , який використовується в GNU / Hurd і Mac OS X , QNX , AIX ; Minix ; ChorusOS ; AmigaOS , MorphOS .
Екзоядро
Основна стаття: Екзоядро
Екзоядро - ядро операційної системи, що надає лише функції для взаємодії між процесами, безпечного виділення та звільнення ресурсів. Передбачається, що API для прикладних програм будуть надаватися зовнішніми по відношенню до ядра бібліотеками (звідки і назва архітектури).
Можливість доступу до пристроїв на рівні контролерів дозволить ефективніше вирішувати деякі завдання, які погано вписуються в рамки універсальної ОС, наприклад, реалізація СУБД буде мати доступ До диску На рівні секторів диска , а не файлів п кластерів , що позитивно позначиться на швидкодії.
Наноядро
Основна стаття: Наноядро
Наноядро - архітектура ядра операційної системи, в рамках якої вкрай спрощене та мінімалістичне ядро виконує лише одне завдання - обробку апаратних переривань, що генеруються пристроями комп'ютера. Після обробки переривань від апаратури наноядро, в свою чергу, посилає інформацію про результати обробки (наприклад, отримані з клавіатури символи) вищележачому програмного забезпечення за допомогою того ж механізму переривань. Прикладом є KeyKOS - найперша ОС на наноядре. Первая версия вышла ещё в 1983-м году. Перша версія вийшла ще в 1983-му році.
Гібридне ядро
Основна стаття: Гібридне ядро
Гібридні ядра - це модифіковані мікроядра, що дозволяють для прискорення роботи запускати «несуттєві» частини в просторі ядра. Приклад: ядра ОС Microsoft Windows сімейства NT: Windows NT , Windows 2000 , Windows XP , Windows Vista , Windows 7 .
Комбінація різних підходів Усі розглянуті підходи до побудови операційних систем мають свої переваги і недоліки. У більшості випадків сучасні операційні системи використовують різні комбінації цих підходів. Так, наприклад, зараз ядро «Linux» являє собою монолітну систему З окремими елементами модульного ядра . При компіляції ядра можна дозволити динамічне завантаження і вивантаження дуже багатьох компонентів ядра - так званих модулів. У момент завантаження модуля його код завантажується на рівні системи і зв'язується з іншою частиною ядра. Всередині модуля можуть використовуватися будь-які експортуються ядром функції.
Існують варіанти ОС GNU , в яких замість монолітного ядра застосовується ядро Mach (таке ж, як в Hurd), а поверх нього крутяться у просторі ті ж самі процеси, які при використанні Linux були б частиною ядра. Іншим прикладом змішаного підходу може служити можливість запуску операційної системи з монолітним ядром під керуванням мікроядра. Так влаштовані 4.4BSD і MkLinux, засновані на мікроядрі Mach . Мікроядро забезпечує управління віртуальною пам'яттю і роботу низькорівневих драйверів. Всі інші функції, в тому числі взаємодія з прикладними програмами, здійснюються монолітним ядром. Даний підхід сформувався в результаті спроб використовувати переваги мікроядерної архітектури, зберігаючи по можливості добре налагоджений код монолітного ядра.
Змішане ядро, в принципі, повинно об'єднувати переваги монолітного ядра і мікроядра: здавалося б, мікроядро і монолітне ядро - крайнощі, а змішане - золота середина. У них можливо додавати драйвери пристроїв двома способами: і всередину ядра, і в користувальницьке простір.Але на практиці концепція змішаного ядра часто підкреслює не тільки гідності, а й недоліки обох типів ядер.
Приклади: Windows NT , DragonFly BSD .