Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безпека.docx
Скачиваний:
164
Добавлен:
31.08.2019
Размер:
6.2 Mб
Скачать

12.2. Архітектура системи

Архітектуру UNIX можна подати у вигляді дворівневої моделі (рис. 12.1) [100] Основною її складовою є ядро, яке повністю ізолює прикладні програми від

апаратної реалізації конкретного комп'ютера. Ядро надає прикладним програмам набір послуг, найважливішими з яких є введення-виведення, керування процеса­ми, їх синхронізація та міжпроцесна взаємодія.

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

Рис. 12.2. Структура ядра UNIX

Рис. 12.1. Дворівнева модель системи UNIX

На рис. 12.2 наведено структуру ядра UNIX [93].

Ядро складається з трьох основних підсистем:

  • файлової;

  • введення-виведення;

  • керування процесами та пам'яттю.

Файлова підсистема

Це одна з найхарактерніших і найважливіших для UNIX підсистем. Вона надає

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

Підсистема введення-виведення

Підсистема виконує запити файлової системи і взаємодіє з драйверами пристроїв. Як і в інших операційних системах, в UNIX розрізняють байт-орієнтовані (сим вольні) та блок-орієнтовані пристрої. Перші видають або приймають потік байті и даних (до них належать клавіатура і мережний адаптер). Другі, на кшталт диска, дають змогу здійснювати пошук даних («позиціонувати курсор»). Драйвери при строїв мають свої особливості. Під час взаємодії файлової підсистеми з підсистемою введення-виведення на блок-орієнтовані пристрої використовується бу­ферний кеш.

У системі UNIX драйвери, які включено до складу її ядра, зазвичай компілюються і компонуються разом із ним. Сучасні UNIX- системи, зокрема Linux, мають модульне ядро і дають можливість легко завантажувати та вивантажувати модулі. Це дає змогу компонувати в ядро лише необхідні драйвери, настроюючи його безпосередньо під час виконання. У системах із відкритим кодом, таких як Linux, можна включати до складу системи модулі, які не мають відкритого коду, насамперед — драйвери від розробників апаратних компонентів.

Підсистема керування процесами та пам'яттю

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

За будовою ядро класичної системи UNIX є монолітним; цю властивість успад­кувало і ядро Linux. З точки зору будови захищених систем це вважають недоліком [96]. Є UNIX- подібні системи, що підтримують типові для UNIX інтер­фейси користувача і системних викликів, хоча за будовою вони мікроядерні.