таких комплексних дій системні виклики звичайно звертаються по допомогу до функцій шару менеджерів ресурсів, причому для виконання одного системного виклику може знадобитися кілька таких звертань.
Рис. 45. Багатошарова структура ядра ОС
Приведена розбивка ядра ОС на шари є досить умовним. У реальній системі кількість шарів і розподіл функцій між ними може бути й іншим. У системах, призначених для апаратних платформ одного типу, наприклад ОС NetWare, шар машинно-залежних модулів звичайно не виділяється, зливаючи із шаром базових механізмів і, частково, із шаром менеджерів ресурсів. Не завжди оформляються в окремий шар базові механізми — у цьому випадку менеджери ресурсів не тільки планують використання ресурсів, але і самостійно реалізують свої плани.
Спосіб взаємодії шарів у реальної ОС також може відхилятися від описаної вище схеми. Для прискорення роботи ядра в деяких випадках відбувається безпосереднє звертання з верхнього шару до функцій нижніх шарів, минаючи проміжні. Типовим прикладом такої «неправильної» взаємодії є початкова стадія обробки системного виклику. На багатьох апаратних платформах для реалізації системного виклику використовується інструкція програмного переривання. Цим додаток фактично викликає модуль первинної обробки переривань, що знаходиться в шарі базових механізмів, а вже цей модуль викликає потрібну функцію із шару системних викликів. Самі функції системних викликів також іноді порушують субординацію ієрархічних шарів, звертаючи прямо до базових механізмів ядра.
Вибір кількості шарів ядра є відповідальною і складною справою: збільшення числа шарів веде до деякого уповільнення роботи ядра за рахунок додаткових накладних витрат на міжшарову взаємодію, а зменшення числа шарів погіршує розширюваність і логічність системи. Звичайно ОС, що пройшли довгий шлях еволюційного розвитку, наприклад багато версій UNIX, мають неупорядковане ядро з невеликим числом чітко виділених шарів, а в порівняно «молодих» ОС, таких як Windows NT, ядро розділене на більше число шарів і їхня взаємодія формалізована в набагато більшому ступені.
5. Монолітні операційні системи
Монолітні ОС є прямою протилежністю мікроядерним ОС. При цьому можна погодитися з тим, як трактується архітектура монолітних ОС. У монолітної ОС, незважаючи на її можливу сильну структуризацію, дуже важко видалити один з рівнів багаторівневої модульної структури. Додавання нових функцій і зміна існуючих для монолітних ОС вимагає дуже гарного знання всієї архітектури ОС і надзвичайно більших зусиль. Тому більше сучасний підхід до проектування ОС, що може бути умовно названий як «клієнт-серверна» технологія, дозволяє в більшій мері й з меншими трудозатратами: реалізувати перераховані вище принципи проектування ОС.
Модель клієнт-сервер припускає наявність програмного компонента, що є споживачем якого-небудь сервісу — клієнта, і програмного компонента, що служить постачальником цього сервісу — сервера. Взаємодія між клієнтом і сервером стандартизується, так що сервер може обслуговувати клієнтів, реалізованих різними способами й, може бути, різними розроблювачами. При цьому головною вимогою є використання однакового інтерфейсу. Ініціатором обміну звичайно є клієнт, що надсилає запит на обслуговування серверу, що перебуває в стані очікування запиту. Той самий програмний компонент може бути клієнтом стосовно одного виду послуг і сервером для іншого виду послуг. Модель клієнт-сервер є скоріше зручним концептуальним засобом ясного подання функцій того або іншого програмного елемента в якої-небудь ситуації, ніж технологією. Ця модель успішно застосовується не тільки при побудові ОС, але й на всіх рівнях ПЗ й має в деяких випадках більше вузький, специфічний зміст, зберігаючи, природно, при цьому всі свої загальні риси.
За підтримкою монолітних ОС виникає ряд проблем, пов'язаних з тим, що всі функції макроядра працюють у єдиному адресному просторі. По-перше, це небезпека виникнення конфлікту між різними частинами ядра; по-друге - складність підключення до ядра нових драйверів. Перевага мікроядерної архітектури перед монолітною полягає в тім, що кожний компонент системи являє собою самостійний процес, запуск або зупинка якого не відбивається на працездатності інших процесів.