Смекни!
smekni.com

Переваги та недоліки операційних систем Windows (стр. 2 из 4)

· шар абстракції від устаткування (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побудована на виконанні процесів та потоків, все прикладне програмне забезпечення працює завдяки процесам та потокам. Отже, перейдемо до їх детального розгляду.

3. Процеси та потоки Windows

Дійсно неможливо професійно розробляти багатопотокові програми, не знаючи, що таке процеси, потоки, ниті й синхронізаціяі, не представляючи, як вони працюють. Візьмемо за основу взята операційну систему Wіndows 2000.

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

Запускаючи програму в Wіndows, ви створюєте процес. І в цьому немає нічого дивного, тому що в інших операційних системах відбувається майже те ж саме. Однак все-таки процес в Wіndows, наприклад, відрізняється від процесу в Unіx. А вся справа в тому, що в Wіndows процес володіє відкритими файлами, оперативною пам'яттю й іншими ресурсами. Для кожного процесу (програми) Wіndows виділяє віртуальний адресний простір обсягом 4 Гб. Для адресації цього простору використаються звичайні 32-бітні покажчики, які являють собою числа від 0 до 4. Але процес в Wіndows не виконується. Виконується програмний потік. Потік - це послідовність машинних команд, які Wіndows сприймає, як єдине ціле (набір регістрів процесора). Потік має покажчик на команду, що у цей момент виконується, і покажчиком на стек де зберігаються локальні змінні потоку. Так у чому ж різниця запитаєте ви, між процесом і потоком, якщо запущена програма має тільки один, програмний потік те різниці практично ніякий. Однак потік може створювати інші потоки. А ті потоки можуть створювати ще потоки. Два процеси не можуть мати загальні ресурси, якщо не використають спеціальні механізми міжпроцесорної взаємодії. На противагу цьому всі потоки, які належать одному процесу, маю доступ до всіх ресурсів цього процесу.

Навіщо процесу кілька потоків? Потоки можуть виконувати якісь дії паралельно основній програмі (у фоновому режимі). Потоки зручно застосовувати, якщо небажано блокування основної програми певною функцією. Наприклад, у той час, як потік здійснює складні математичні обчислення, у головній програмі відбувається підготовка наступного завдання й уведення параметрів.

Виділяють чотири базових типи користувальницьких процесів

· Спеціальні процеси підтримки системи, наприклад, процес реєстрації користувача й менеджер сесій, які не є службами NT.

· Процеси сервера, які є службами NT (аналог демонів в ОС Unіx). Прикладом може бути реєстратор подій (Event Logger). Багато хто додатково встановлювані додатки, такі як Mіcrosoft SQL Server і Exchange Server, також включають компоненти, що працюють як служби NT.

· Підсистеми середовища, які забезпечують користувальницьким додаткам середовище інших операційних систем. Wіndows NT поставляється із трьома підсистемами: Wіn32, Posіx і OS/2 2.1.

· Користувальницькі додатки одного з п'яти типів: Wіn32, Wіndows 3.1, MS-DOS, Posіx або OS/2 1.2.