Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БІКС 2015_1 / 8лек Засоби захисту в операційній системі UNIXповн.doc
Скачиваний:
78
Добавлен:
12.02.2016
Размер:
5.46 Mб
Скачать

12-2. Архітектура системи

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

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

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

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

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

  • файлової;

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

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

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

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

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

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

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

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

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

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

і

З-поміж таких систем слід назвати мікроядро Mach, розроблене в університеті Карнегі — Меллон [101], мікроядерну систему Chorus [102], а також мікроядерну систему реального часу QNX [103].