- •Лекція 4 Реалізація архітектури операційної системи
- •Багаторівневі системи
- •Архітектура типу клієнт-сервер на основі мікроядра
- •Концепція віртуальних машин
- •Переваги віртуальних машин
- •Недоліки віртуальних машин
- •Екзоядро
- •Екзоядро - це ядро операційної системи комп'ютерів, що надає лише функції для взаємодії між процесами і безпечного виділення і звільнення ресурсів.
- •Об'єктно-орієнтована технологія
Екзоядро - це ядро операційної системи комп'ютерів, що надає лише функції для взаємодії між процесами і безпечного виділення і звільнення ресурсів.
«Екзо» - приставка, що позначає щось зовнішнє, що знаходиться зовні.
У традиційних операційних системах ядро надає не тільки мінімальний набір сервісів, що забезпечують виконання програм, а й велику кількість високорівневих абстракцій для використання різнорідних ресурсів комп'ютера: оперативної пам'яті, жорстких дисків, підключення до мережі. На відміну від них, ОС на основі екзоядра надає лише набір сервісів для взаємодії між додатками, а також необхідний мінімум функцій, пов'язаних із захистом: виділення і вивільнення ресурсів, контроль прав доступу і т. д. Екзоядро не займається наданням абстракцій для фізичних ресурсів - ці функції виносяться в бібліотеку призначеного для користувача рівня (так звану libOS).
Основна ідея операційної системи на основі екзоядра полягає в тому, що ядро має виконувати лише функції координатора для невеликих процесів, пов'язаних тільки одним обмеженням - екзоядро повинно мати можливість гарантувати безпечне виділення і звільнення ресурсів обладнання. На відміну від ОС на основі мікроядра, ОС, що базуються на екзоядре, забезпечують набагато більшу ефективність за рахунок відсутності необхідності в перемиканні між процесами при кожному зверненні до обладнання.
Архітектури на основі екзоядер є подальшим розвитком і вдосконаленням мікроядерних архітектур і одночасно посилюють вимоги до мінімалістичний і простоти коду ядра.
LibOS може забезпечувати довільний набір абстракцій, сумісний з тієї чи іншої вже існуючої операційною системою, наприклад, Linux або Windows.
Приклади архітектури реальних операційних систем
Архітектура операційної системи UNIX
Операційна система UNIX використовує традиційну архітектуру, незважаючи на виділення кількох рівнів, що тяжіє радше до монолітної, ніж до багаторівневої.
Спрощена архітектура операційної системи UNIX показана на рисунку 4.6.
Рис.4.6. Спрощена архітектура операційної системи UNIX.
На верхньому рівні ієрархії операційної системи знаходяться процеси користувальницького режиму, які взаємодіють з ядром операційної системи через інтерфейс системних викликів. Інтерфейс системних викликів перенаправляє запити процесів підсистем ядра. Підсистеми ядра забезпечують виконання процесів користувацького режиму і через рівень управління апаратурою взаємодіють з апаратурою ЕОМ.
Ядро UNIX включає традиційні підсистеми, такі як
файлова підсистема,
підсистема вводу-виводу,
підсистема управління процесами і пам'яттю.
Архітектура операційної системи Windows
Операційна система Windows використовує багаторівневу архітектуру, з роботою більшої частини компонентів в режимі ядра, але, тим не менше, що до складу ядра не входять.
Спрощена архітектура Windows показана на рисунку 4.7.
Рис. 4.7. Спрощена архітектура Windows.
Ще при розробці операційної системи Windows NT, на головне місце було поставлено завдання переносимості і сумісності, що в основному і визначило її архітектуру.
Порівнюючи архітектуру UNIX і Windows, легко помітити, що архітектура Windows набагато більш структурована. Як і в системі UNIX, на верхньому рівні ієрархії знаходяться процеси користувальницького режиму. Це можуть бути як користувацькі процеси, так і сервери самої системи. Процеси призначеного для користувача режиму взаємодіють з операційною системою через документовані інтерфейси, що надаються динамічними бібліотеками підсистем оточення.
Windows підтримує три підсистеми оточення - POSIX, OS / 2 і Win32, причому підсистема Win32 є необхідним компонентом для роботи всієї операційної системи, тому що обслуговує клавіатуру, мишу і екран. Зауважимо, що підсистема Win32 має компоненти, що працюють як в режимі завдання, так і в режимі ядра. На відміну від підсистеми Win32, яка запускається на етапі завантаження операційної системи, підсистеми POSIX і OS / 2 не є обов'язковими, і запускаються на вимогу, при необхідності запуску відповідних додатків, а після запуску працюють аж до перезавантаження системи.
Хоча динамічні бібліотеки підсистем оточення здатні самостійно обслужити деякі запити процесів, в більшості випадків вони переадресовують запит виконавчої підсистемі Windows через недокументований інтерфейс системних викликів. Можна сказати, що саме недокументований інтерфейс, реалізований бібліотекою Ntdll.dll є істинним інтерфейсом системних викликів, власне і реалізує перехід з режиму завдання в режим ядра. Виняток становить інтерфейс GDI, повністю реалізований підсистемою Win32 самостійно.
Виконавча система операційної системи Windows забезпечує роботу підсистем оточення, реалізуючи більшість стратегій управління операційної системи, і включає в себе такі підсистеми, як:
• диспетчер конфігурації - забезпечує управління системним реєстром;
• диспетчер процесів і потоків - забезпечує управління процесами і потоками, запущеними в системі, наприклад, створює і знищує процеси і потоки;
• монітор безпеки - реалізує політику безпеки на локальному комп'ютері;
• диспетчер вводу-виводу - реалізує апаратно незалежний вхід-вихід і відповідає за пересилання інформації введення-виведення відповідним драйверам;
• диспетчер Plug and Play - визначає, які драйвери потрібні для підтримки кожного пристрою і завантажує ці драйвери;
• диспетчер електроживлення - координує роботу драйверів пристроїв, забезпечуючи, наприклад, перемикання периферійних пристроїв в економічний режим при їх тривалому простої;
• диспетчер кешу файлової системи - реалізує буферизацію вводу-виводу, відкладений запис і попередній виклик даних файлу;
• диспетчер віртуальної пам'яті - реалізує власний віртуальний адресний простір для кожного процесу і забезпечує підтримку роботи диспетчера кешу.
Нижче виконавчої системи Windows розташовується ядро системи, що реалізує різні для кожної процесорної архітектури фундаментальні механізми, такі як планування і диспетчеризація потоків, диспетчеризація переривань і виключень. Ядро ізолює драйвери і виконавчу систему від особливостей архітектури процесора, що забезпечує переносимість операційної системи.
Рівень абстрагування від устаткування є самим нижчім рівнем системи. Він приховує від операційної системи, включаючи її ядро, специфіку конкретної апаратури, тому що навіть при однаковій архітектурі системи, наприклад x86, можуть бути апаратні особливості реалізації, наприклад різні типи материнської плати.
