Монолітна архітектура ядра операційної системи

Перші ОС розроблялися як монолітні системи без чітко вираженої структури (рис. 1.2). Для побудови монолітної системи необхідно скомпілювати всі окремі процедури, а потім зв'язати їх разом у єдиний об'єктний файл за допомогою компонувальника (прикладами можуть бути ранні версії ядра UNIX або Novell NetWare). Кожна процедура бачить будь-яку іншу процедуру (на відміну від структури, що містить модулі, де більшість інформації є локальною для модуля, і процедури модуля можна викликати тільки через спеціально визначені точки входу).

Однак навіть такі монолітні системи можуть бути дещо структурованими. При зверненні до системних викликів, підтримуваних ОС, параметри поміщаються в строго певні місця, такі як регістри або стек, а потім виконується спеціальна команда переривання, відома як виклик ядра або супервізора. Ця команда перемикає машину з режиму користувача режим ядра, званий також режимом супервізора, і передає управління ОС. Потім ОС перевіряє параметри виклику, щоб визначити, який системний виклик повинен бути виконаний. Після цього ОС індексує таблицю, що містить посилання процедури, і викликає відповідну процедуру.

системи
Мал. 1.2.Монолітна архітектура

Така організація ОС передбачає таку структуру:

головна програма, що викликає необхідні сервісні процедури;

набір сервісних процедур, що реалізують системні дзвінки;

набір утиліт, які обслуговують сервісні процедури.

У цій моделі для кожного системного виклику є одна процедура сервісу. Утиліти виконують функції, потрібні декільком сервісним процедурам. Цей поділ процедур на три шари показано наМал. 1.3.

операційної

Мал. 1.3.Структурована архітектура

Багатошарова архітектура ядра операційної системи.

Класичною вважається архітектура ОС, заснована на концепції ієрархічної багаторівневої машини, привілейованому ядрі та режимі роботи транзитних модулів. Модулі ядра виконують базові функції ОС: керування процесами, пам'яттю, пристроями введення-виведення тощо. Ядро складає серцевину ОС, без якої вона є повністю непрацездатною і не може виконати жодну зі своїх функцій. У ядрі вирішуються внутрішньосистемні завдання організації обчислювального процесу, недоступні додатку.

Особливий клас функцій ядра служить підтримки додатків, створюючи їм так звану прикладну програмне середовище. Програми можуть звертатися до ядра із запитами – системними викликами – для виконання тих чи інших дій, наприклад, відкриття та читання файлу, отримання системного часу, виведення інформації на дисплей тощо. Функції ядра, які можуть бути викликані програмами, утворюють інтерфейс прикладного програмування – API (Application Programming Interface).

Для забезпечення високої швидкості роботи ОС модулі ядра (принаймні велика частина) є резидентними і працюють у привілейованому режимі (Kernel mode). Цей режим, по-перше, повинен убезпечити роботу самої ОС від втручання додатків, і, по-друге, повинен забезпечити можливість роботи модулів ядра з повним набором машинних інструкцій, що дозволяють власне ядру виконувати управління ресурсами комп'ютера, зокрема, перемикання процесора з завдання на завдання, керуванням пристроями вводу-виводу, розподілом та захистом пам'яті та ін.

Інші модулі ОС виконують менш важливі функції, як ядро, іє транзитними. Наприклад, це можуть бути програми архівування даних,дефрагментації диска, стиснення дисків,очищення дисківі т.п.

Допоміжні модулі зазвичай поділяються на групи:

утиліти - програми, що виконують окремі завдання управління та супроводу обчислювальної системи;

програми надання користувачеві додаткових послуг (спеціальний варіант інтерфейсу користувача, калькулятор, ігри, засоби мультимедіа Windows 2000);

бібліотеки процедур різного призначення, спрощення розробки додатків, наприклад бібліотека функцій введення-виведення, бібліотека математичних функцій і т.п.

Ці модулі ОС оформляються як звичайні програми, звертаються до функцій ядра за допомогою системних викликів і виконуються в режимі користувача (user mode). У цьому режимі забороняється виконання деяких команд, пов'язаних із функціями ядра ОС (управління ресурсами, розподіл та захист пам'яті тощо).

У концепції багаторівневої (багатошарової) ієрархічної машини структура ОС також представляється рядом шарів. При такій організації кожен шар обслуговує шар, що виконується вище, виконуючи для нього деякий набір функцій, які утворюють міжшаровий інтерфейс. На основі цих функцій наступний верхній за ієрархією шар будує свої функції – складніші та потужніші тощо. Така організація системи значно полегшує її розробку, т.к. дозволяє спочатку "згори вниз" визначити функції шарів та міжшарові інтерфейси, а при детальній реалізації, рухаючись "знизу вгору", - нарощувати потужність функції шарів. Крім того, модулі кожного шару можна змінювати без необхідності змін в інших шарах (але не змінюючи міжшарових інтерфейсів!).

Багатошарова структура ядра ОС може бутипредставлена, наприклад, варіантом, показаним на рис. 1.4.

операційної

Мал. 1.4.Багатошарова структура ОС

У цій схемі виділені такі шари.

Кошти апаратної підтримки ОС. Значна частина функцій операційної системи може виконуватися апаратними засобами. Суто програмні ОС зараз не існують. Як правило, в сучасних системах завжди є засоби апаратної підтримки ОС, які безпосередньо беруть участь в організації обчислювальних процесів. До них відносяться: система переривань, засоби підтримки привілейованого режиму, засоби підтримки віртуальної пам'яті,системний таймер, засоби перемиканняконтекстів процесів(інформація про стан процесу в момент його припинення), засоби захисту пам'яті та ін.

Машинно-залежні модулі ОС. Цей шар утворює модулі, де відображається специфіка апаратної платформи комп'ютера. Призначення цього шару - "екранування" вищележачих шарів ОС від особливостей апаратури (наприклад, Windows 2000 - це шарHAL(HardwareAbstraction Layer), рівень апаратних абстракцій).

Базові механізми ядра. Цей шар модулів виконує найбільш примітивні операції ядра: програмне перемиканняконтекстів процесів, диспетчерські переривання, переміщення сторінок між основною пам'яттю і диском тощо. Модулі цього шару не приймають рішень про розподіл ресурсів, а лише обробляють рішення, прийняті модулями вищих рівнів. Тому часто називають виконавчими механізмами для модулів верхніх шарів ОС.

Менеджери ресурсів. Модулі цього шару виконують стратегічні завдання управління ресурсами обчислювальної системи. Це менеджери (диспетчери) процесів введення-виведення, оперативної пам'яті та файлової системи.Кожен менеджер веде облік вільних та використовуваних ресурсів та планує їх розподіл відповідно до запитів додатків.

Інтерфейс системних викликів. Це верхній шар ядра ОС, що взаємодіє з додатками і системними утилітами , він утворює прикладний програмний інтерфейс ОС. Функції API, що обслуговують системні виклики, надають доступ до ресурсів системи у зручній компактній формі, без зазначення деталей їхнього фізичного розташування.

Підвищення стійкості ОС забезпечується переходом ядра у привілейований режим. При цьому відбувається деяке уповільнення виконання системних викликів. Системний виклик привілейованого ядра ініціює перемикання процесора з режиму користувача в привілейований, а при поверненні до програми - зворотне перемикання. За рахунок цього виникає додаткова затримка щодо обробки системного виклику (рис. 1.5). Однак таке рішення стало класичним і використовується в багатьох ОС (UNIX, VAX, VMS, IBM OS/390, OS/2 та ін.).