Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Portfolio_Vasuli Kruvuy / dopomigni_materialy / Переваги та недоліки операційних систем Windows.doc
Скачиваний:
18
Добавлен:
23.02.2016
Размер:
111.1 Кб
Скачать

2. Архітектура Windows з точки зору обєктно-орієнтованого програмування

Коли в 1989 році Mіcrosoft приступила до розробки Wіndows NT, було висунуто кілька ключових вимог до нової операційної системи. Це повинна була бути повністю 32-розрядна ОС, здатна працювати на численних апаратних платформах з різною архітектурою.

NT замислювалася як розподілена, клієнт-серверна ОС, що підтримує симетричні багатопроцесорні апаратні платформи. Сьогодні розроблювачі наносять завершальні штрихи у своєму новому утворі - Wіndows NT 5.0, однак тепер, майже десять років через, коли компанія вносить завершальні штрихи у свій утвір, можна із упевненістю сказати, що фундаментальні основи архітектури NT у версії 5.0 не були змінені. Крім того, від NT була потрібна, сумісність зі стандартом POSІ 1003.1, підтримка Unіcode для адаптації до вимог світового ринку, виконання більшості існуючих 16-розрядних додатків для MS-DOS і Wіndows 3.х. Розроблювачі повинні були забезпечити надійність, сумісність "нагору", високу продуктивність і можливість розширення відповідно до мінливих вимог ринку. Сьогодні, майже десять років через, можна із упевненістю сказати, що фундаментальні основи архітектури NT у версії 5.0 не були змінені.

На рис. 1 наведена загальна архітектура Wіndows NT і її компонентів. Елементи над розділовою лінією являють собою процеси користувальницького режиму, а під нею розташовуються процеси операційної системи, виконувані ядром. Потоки користувальницького режиму виконуються в захищеному адресному просторі. Однак, під час їхнього виконання в режимі ядра, вони одержують доступ до системного простору. Таким чином, системні процеси, процеси сервера (служби), підсистема середовища або користувальницький додаток мають свій власний адресний простір.

Рис. 1 Загальна архітектура Windows NT

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

Компоненти режиму ядра Wіndows NT спроектовані на основі принципів побудови об'єктно-орієнтованих систем. Наприклад, вони не працюють прямо зі структурами даних, підтримуваних індивідуальними компонентами. Замість цього для передачі параметрів, доступу й/або модифікації структур даних вони використають формальний інтерфейс. Разом з тим, незважаючи на повсюдне використання об'єктів для подання поділюваних системних ресурсів, Wіndows NT не є об'єктно-орієнтованою системою в точному змісті цього поняття, оскільки основна частина коду системи написана на Сі++ з міркувань забезпечення високої швидкості виконання й пересуваємості.

У режимі ядра виконуються наступні компоненти ОС:

· частина, що виконує, NT яка включає керування пам'яттю, процесами, потоками, безпекою, уведенням/висновком, міжпроцесорними обмінами; ядро Wіndows NT виконує низкоурівневі функції операційної системи: диспетчеризація потоків, переривань і виключень, синхронізація процесів. Ядро також включає набір процедур і базових об'єктів, використовуваний виконує частью, що, для створення высокоуровневых конструкцій;

· шар абстракції від устаткування (HAL - Hardware Abstractіon Layer), ізолює ядро, драйвери пристроїв і виконує часть ПЗ NT від апаратних платформ, на яких повинна працювати операційна система;

· драйвери пристроїв включають як файлову систему, так і апаратні драйвери, які транслюють користувальницькі виклики функцій уведення/висновку в запити фізичних пристроїв уведення/висновку;

· функції графічного інтерфейсу користувача працюють із вікнами, елементами керування й малюнками.

Частина, що виконує, Wіndows NT - верхній шар програми - ядра NTOSKRNL.EXE. (Саме ядро - це нижній шар). Частина, що виконує, містить наступні компоненти:

1. Менеджер процесів і потоків управляє процесами й потоками. Фактично потоки й процеси підтримуються в NT нижчележачим шаром. Частина, що виконує, додає додаткову семантику й функції до цих об'єктів нижнього рівня.

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

3. Монітор безпеки проводить політикові забезпечення мер безпеки на локальному комп'ютері, охороняючи системні ресурси й виконуючи процедури аудита й захисту об'єктів.

4. Система уведення/висновку використає незалежний від пристроїв уведення/висновок і відповідає за пересилання даних відповідним драйверам для подальшої обробки.

5. Менеджер кеш-пам'яті поліпшує продуктивність системи уведення/висновку файлів, розміщаючи дані, що читають із диска, в основній пам'яті для прискорення доступу до них, а також відкладаючи на короткий час запис змінених даних на диск.

6. Крім того, що виконує частина включає чотири головних групи функцій, використовуваних тільки що перерахованими компонентами.

7. Менеджер об'єктів, що створює, видаляє об'єкти й абстрактні типи даних, а також управляє ними. Об'єкти використаються в Wіndows NT для подання таких ресурсів операційної системи, як процеси, потоки й об'єкти синхронізації.

8. LPC передає повідомлення між клієнтським процесом і процесом сервера на тім же самому комп'ютері. По суті, LPC - це оптимизированная версія відомої процедури вилученого виклику RPC (Remote Procedure Call), стандарту для організації взаємодії процесів в архітектурі клієнт/сервер.

9. Широкий набір бібліотечних функцій загального типу: обробка рядків, арифметичні операції, перетворення типів даних, обробка структур.

10. Процедури розподілу пам'яті, взаємообмін між процесами через пам'ять, два спеціальних типи об'єктів синхронізації - ресурси й об'єкти fast mutex.

Ядро NTOSKRNL.EXE виконує більшість основних операцій NT, що визначають порядок використання процесора: диспетчеризація потоків; диспетчеризація й обробка виключень; cинхронизация роботи процесорів; забезпечення базових об'єктів ядра, які використаються виконуємою часиною, що і в деяких випадках експортуються в режим користувача.

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

Одна з функцій ядра - забезпечення низкорівневої бази для добре певних примітивів операційної системи, які забезпечують роботу компонентів вищого рівня. Ядро ізолює саме себе від іншої частини ОС, що дозволяє винести прийняття політичних рішень із ядра, за винятком диспетчеризації потоків. Ядро використає набір найпростіших об'єктів, називаних об'єктами ядра, що дозволяють управляти роботою центрального процесора й порядком створення об'єктів, що обчислюють. Більшість об'єктів, що обчислюють, містить у собі один або більше об'єктів ядра, включаючи певні ядром атрибути. Один з наборів об'єктів називається об'єктами керування й включає об'єкт процесу ядра, об'єкт АРС, об'єкт процедури відкладеного виклику DPC (Deferred Procedure Call) і кілька об'єктів, використовуваних системою уведення/висновку (наприклад, об'єкт обробки переривання).

Інший набір об'єктів ядра - об'єкти диспетчеризації, включає об'єкти синхронізації потоків, потік ядра, mutex, об'єкти події, семафора, таймера, таймера очікування й ряд інших.

Іншим найголовнішим завданням ядра є абстрагування (або ізоляція) виконує частини ПЗ (программного забезпечення) драйверів пристроїв від розходжень мікропроцесорних платформ, на яких здатна працювати Wіndows NT: х86 і Alpha AXP. Специфічні для архітектури функції (такі, як контекстне перемикання потоку) реалізовані в ядрі. Функції, які можуть відрізнятися від машини до машини, реалізовані в складі HAL.

Драйвери пристроїв - модулі, що завантажують це, які працюють у режимі ядра, забезпечуючи інтерфейс між системою уведення/ висновку й відповідним устаткуванням. Назви цих модулів звичайно мають розширення .SYS. Всі вони, як правило, написані на Си (іноді S++) з використанням викликів процедур HAL і можуть бути стерпними на рівні двійкового коду між платформами, підтримуваними NT. Є кілька типів драйверів пристроїв:

· Драйвери, що маніпулюють пристроями (з використанням HAL) для запису вихідних даних або одержання вхідних даних від фізичних пристроїв або через мережу.

· Драйвери файлової системи, які приймають запити на файлове уведення/висновок і транслюють їх у запити уведення/висновку, пов'язані з конкретними пристроями.

· Драйвери фільтрів. Прикладом можуть бути драйвери підтримки дзеркальних дисків, шифрування даних, перехоплення уведення/висновку для додаткової обробки даних перед передачею їх на наступний рівень і т.д.

· Мережні драйвери, які передають і приймають вилучені запити на уведення/висновок.

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

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