Монолітне ядро
По суті справи, операційна система - це звичайна програма, тому було б логічно і організувати її так само, як влаштовано більшість програм, тобто скласти з процедур і функцій. В цьому випадку компоненти операційної системи є не самостійними модулями, а складовими частинами однієї великої програми. Така структура операційної системи називається монолітним ядром (monolithic kernel). Монолітне ядро являє собою набір процедур, кожна з яких може викликати кожну. Всі процедури працюють в привілейованому режимі. Таким чином, монолітне ядро - це така схема операційної системи. при якій всі її компоненти є складовими частинами однієї програми, використовують загальні структури даних і взаємодіють один з одним шляхом безпосереднього виклику процедур. Для монолітної операційної системи ядро збігається з усією системою.
У багатьох операційних системах з монолітним ядром збірка ядра, тобто його компіляція, здійснюється окремо для кожного комп'ютера, на який встановлюється операційна система. При цьому можна вибрати список обладнання і програмних протоколів, підтримка яких буде включена в ядро. Так як ядро є єдиною програмою, перекомпіляція - це єдиний спосіб додати в нього нові компоненти або виключити невикористовувані. Слід зазначити, що присутність в ядрі зайвих компонентів вкрай небажано, так як ядро завжди повністю розташовується в оперативній пам'яті. Крім того, виключення непотрібних компонентів підвищує надійність операційної системи в цілому.
Монолітне ядро - найстаріший спосіб організації операційних систем. Прикладом систем з монолітним ядром є більшість Unix-систем.
Навіть в монолітних системах можна виділити деяку структуру. Як в бетонній брилі можна розрізнити вкраплення щебінки, так і в монолітному ядрі виділяються вкраплення сервісних процедур, відповідних системних викликів. Сервісні процедури виконуються в привілейованому режимі, тоді як призначені для користувача програми - в непривілейованому. Для переходу з одного рівня привілеїв на інший іноді може використовуватися головна сервісна програма, яка визначає, який саме системний виклик був зроблений, коректність вхідних даних для цього виклику і передає управління відповідної сервісної процедурі з переходом в привілейований режим роботи. Іноді виділяють також набір програмних утиліт, які допомагають виконувати сервісні процедури.
Багаторівневі системи (Layered systems)
Продовжуючи структуризацію, можна розбити всю обчислювальну систему на ряд більш дрібних рівнів з добре визначеними зв'язками між ними, так щоб об'єкти рівня N могли викликати тільки об'єкти рівня N-1. Нижнім рівнем в таких системах зазвичай є hardware, верхнім рівнем - інтерфейс користувача. Чим нижче рівень, тим більше привілейовані команди і дії може виконувати модуль, що знаходиться на цьому рівні. Вперше такий підхід був застосований при створенні системи THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) і його студентами в 1968 р Ця система мала такі рівні:
Листкові системи добре реалізуються. При використанні операцій нижнього шару не потрібно знати, як вони реалізовані, потрібно лише розуміти, що вони роблять. Листкові системи добре тестуються. Налагодження починається з нижнього шару і проводиться пошарово. При виникненні помилки ми можемо бути впевнені, що вона знаходиться в тестованому шарі. Листкові системи добре модифікуються. При необхідності можна замінити лише один шар, не чіпаючи інші. Але листкові системи складні для розробки: важко правильно визначити порядок шарів і що до якогось прошарку належить. Листкові системи менш ефективні, ніж монолітні. Так, наприклад, для виконання операцій введення-виведення програмі користувача доведеться послідовно проходити всі шари від верхнього до нижнього.