Архітектура Windows: опис, види, структура

14 0 Новини високих технологій

Архітектура Windows NT - лінійки операційних систем, що виробляються і продаються Microsoft, - являє собою багаторівневу конструкцію, що складається з двох основних компонентів: користувальницького режиму і режиму ядра.

Архітектура Windows: опис, види, структура
Це попереджуючий реентерабельная операційна система, створена для роботи з однопроцесорними і симетричними багатопроцесорними (SMP) комп'ютерами. Для обробки запитів вводу-виводу (I/O) вони використовують пакетну передачу, яка використовує пакети IRP і асинхронний ввід/вивід. Починаючи з Windows XP, Microsoft почала надавати 64-розрядні версії ОС, до цього ці платформи існували тільки в 32-бітових версіях.

Які її принципи?

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


Режим ядра Windows NT має повний доступ до апаратних і системних ресурсів комп'ютера. Ядро цієї оболонки як відомо гібридне. Архітектура включає в себе просте ядро, рівень апаратної абстракції (HAL), драйвери і служби (спільно іменуються Executive), які існують в одному режимі. Користувальницький режим в архітектурі Windows складається з підсистем, здатних передавати запити вводу-виводу відповідним драйверів режиму ядра за допомогою відповідного диспетчера. Шар користувальницького режиму «Віндовс» складається з «Підсистем середовища», в яких виконуються додатки, написані для різних операційних систем, і «Інтегральної підсистеми», яка виконує системні функції від імені підсистем середовища.


Архітектура Windows: опис, види, структура
Інтерфейси Executive в архітектурі Windows з всіма підсистемами користувальницького режими мають справу з введенням/виведенням, управлінням об'єктами, безпекою та управлінням процесами. Ядро знаходиться між рівнем апаратної абстракції і виконавчим пристроєм, забезпечуючи багатопроцесорну синхронізацію, планування і диспетчеризацію потоків і переривань, а також обробку переривань і диспетчеризацію винятків. Ядро також відповідає за ініціалізацію драйверів пристроїв при завантаженні. Драйвери цього режиму існують на трьох рівнях:
  • вища;
  • проміжного;
  • низького.
  • Модель драйверів Windows (WDM) існує на проміжному рівні, і в основному була розроблена для забезпечення сумісності і вихідного двійкового коду між Windows 982000. Драйвери найнижчого рівня є застарілими установниками пристроїв Windows NT, які керують пристроєм безпосередньо, або можуть бути різновидами Play (PnP) - апаратної шини.

    Користувальницький режим

    Користувальницький режим складається з різних системних процесів і бібліотек DLL.
    Архітектура Windows: опис, види, структура
    Інтерфейс між програмами і функціями ядра операційної системи називається «підсистемою середовища». Архітектура Windows 7 і інших в лінійці NT) може мати більш одного з них, кожен з яких реалізує свій набір API. Цей механізм був розроблений для підтримки додатків, написаних для різних типів операційних систем. Ні одна з підсистем середовища не має прямого доступу до обладнання. Доступ до апаратних функцій здійснюється шляхом виклику підпрограм режиму ядра.

    Яку роль відіграють підсистеми?

    Існує чотири основні підсистеми середовища: Win32 OS/2 Windows, Linux і POSIX. Підсистема середовища Win32 може запускати 32-бітні програми «Віндовс». Вона містить консоль, а також підтримку текстового вікна, завершення роботи та обробку серйозних помилок для всіх інших підсистем середовища. Вона також підтримує Віртуальні машини DOS (VDM), які дозволяють MS-DOS і 16-розрядними додатками Win16 працювати в Windows NT. Існує спеціальний VDM MS-DOS, який працює у своєму власному адресному просторі і емулює Intel 80486 під управлінням MS-DOS 5.0. Програми Win16 однак, працюють в Win16 VDM. Кожна з них за замовчуванням виконується в одному і тому ж процесі, використовуючи один і той же адресний простір, і Win16 VDM надає кожній програмі свій власний потік для виконання. Однак архітектура системи Windows NT дозволяє користувачам запускати її в окремому вікні, що дає можливість превентивно виконувати багатозадачність, оскільки «Віндовс» буде випереджати весь процес VDM, який містить тільки одне працююче додаток.
    Архітектура Windows: опис, види, структура
    Процес підсистеми середовища Win32 (csrss.exe також включає в себе функції керування вікнами, іноді звану «віконним менеджером». Вона обробляє події вводу (наприклад, із клавіатури і миші), а потім передає повідомлення додатками, яким необхідно отримати цей enter. Кожне додаток відповідає за появу або оновлення своїх власних вікон і меню у відповідь на ці повідомлення.
    Підсистема середовища OS/2 підтримує 16-розрядні символьні додатки OS/2 і емулює OS/2 1.x, але не 32-розрядні або графічні додатки OS 2 використовувані в OS/2 2.x або пізнішої версії тільки для комп'ютерів x86. Для запуску графічних програм OS/2 1.x повинна бути встановлена підсистема надбудов Windows NT для Presentation Manager. Останньою версією NT, має підсистему OS/2 була «Віндовс-2000», потім вона була видалена, починаючи з архітектури Windows XP. Підсистема середовища POSIX підтримує програми, які суворо написані або для POSIX.1 або для відповідних стандартів ISO/IEC. Вона була замінена Interix, яка є частиною Windows Services for UNIX. Підсистема безпеки працює з токенами безпеки, надає або забороняє доступ до облікових записів користувачів на основі дозволів на ресурси, обробляє запити на вхід в систему і ініціює перевірку автентичності входу, а також визначає, які системні ресурси повинні перевірятися Windows NT.
    Архітектура Windows: опис, види, структура

    Режим ядра

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

    Хоча архітектура Windows x86 підтримує чотири різноманітних рівня привілеїв (від 0 до 3), використовуються тільки два крайніх з них. Програми користувальницького режиму запускаються з CPL 3 а ядро - з CPL 0. Ці два рівня часто називаються «ring 3» і «ring 0» відповідно. Таке проектне рішення було прийнято для забезпечення переносимості коду на платформи RISC, які підтримують тільки два рівня привілеїв, хоча це порушує сумісність з програмами OS/2 які містять сегменти привілеїв вводу-виводу, які намагаються безпосередньо отримати доступ до обладнання. Режим ядра складається з виконавчих сервісів, які складені з безлічі модулів, що виконують певні завдання: драйверів ядра, самого ядра і рівня апаратних абстракцій (HAL).

    Адміністрування

    Служби Windows Executive складають низькорівневу частина режиму ядра і містяться у файлі NTOSKRNL.EXE. Це стосується введення-виводу, керування об'єктами, безпеки та управління процесами. Вони розділені на декілька підсистем, серед яких особливу роль відіграють Cache Manager, Configuration Manager, I/O Manager, локальний виклик процедур (LPC), Memory Manager, Структура процесів і Контрольний монітор безпеки (SRM). Згруповані разом компоненти можуть називатися виконавчими службами (внутрішнє ім'я Ex). Системні сервіси (внутрішнє ім'я Nt), тобто системні виклики, також реалізовані на цьому рівні, за винятком дуже небагатьох, які звертаються безпосередньо до рівня ядра для підвищення продуктивності.
    Архітектура Windows: опис, види, структура
    Термін «сервіс» в цьому контексті зазвичай відноситься до викликається підпрограма або набору викликаються підпрограм. Це відрізняється від концепції «сервісного процесу», який являє собою компонент інтерфейсу режиму, кілька аналогічний демонстрації в Unix-подібних операційних системах. Ця особливість архітектури ядра Windows 10 і всіх попередніх дистрибутивів.

    Диспетчер об'єктів

    Диспетчер об'єктів (внутрішнє ім'я Ob) - це виконавча підсистема, через яку повинні пройти всі інші підсистеми, особливо системні виклики, щоб отримати доступ до ресурсів Windows NT, що, по суті, робить її службою інфраструктури управління ресурсами. Диспетчер об'єктів використовується для зменшення дублювання функціональних можливостей управління ресурсами у інших виконавчих підсистемах, що може призвести до помилок і ускладнити розробку Windows NT. Для даного менеджера кожен ресурс є об'єктом, незалежно від того, є він фізичною (таким як файлова система або периферійний пристрій) або логічним (наприклад, файл). Кожен об'єкт має структуру або тип, про який повинен знати Ob. Створення об'єкта в архітектурі ОС сімейства Windows являє собою процес, що протікає в два етапи - створення і вставка. Створення викликає виділення порожнього об'єкта і резервування будь-яких ресурсів, необхідних диспетчером, таких як (необов'язково) ім'я в просторі імен. Якщо воно було успішним, підсистема, відповідальна за створення, заповнює порожній об'єкт. Нарешті, якщо підсистема вважає ініціалізацію успішною, вона дає вказівку диспетчера об'єктів вставити об'єкт, що робить його доступним через його ім'я або файл cookie, що називається дескриптором. З цього моменту час існування об'єкта обробляється менеджером, і підсистема повинна підтримувати його в робочому стані, поки Ob не повідомить про його видалення. Дескриптори - це ідентифікатори, які представляють посилання на ресурс ядра через непрозоре значення. Точно так само відкриття об'єкта через його ім'я піддається перевіркам безпеки, але дію через існуючий відкритий дескриптор обмежено лише рівнем доступу, замовленим, коли об'єкт був відкритий або створений.
    Архітектура Windows: опис, види, структура
    Типи об'єктів визначають процедури та будь-які дані, специфічні для нього. Таким чином, Ob дозволяє Windows NT бути об'єктно-орієнтованої операційної системою, оскільки типи об'єктів можна розглядати як поліморфні класи, що визначають об'єкти. Більшість підсистем, однак, з помітним виключенням в диспетчері введення-виведення, покладаються на реалізацію за промовчанням для всіх процедур. Кожен примірник створюваного об'єкта зберігає своє ім'я, параметри, які передаються в функцію створення об'єкта, атрибути безпеки і покажчик на його тип.

    Контролер кеша

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

    Менеджер вводу/виводу

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

    Локальний виклик процедур (LPC)

    Ця структурна частина архітектури Windows 10 (і всіх попередніх дистрибутивів) надає порти межпроцессного взаємодії з семантикою з'єднання. Порти LPC використовуються підсистемами користувальницького режиму для зв'язку зі своїми клієнтами, підсистемами Executive для зв'язку з підсистемами користувальницького режиму і в якості основи для локального транспорту для Microsoft RPC.

    Диспетчер пам'яті

    Даний елемент архітектури Windows 8.1 і інших версій управляє віртуальною пам'яттю, її захистом і підкачкою з фізичної та у вторинну. Тим самим він реалізує універсальний розподільник фізичної пам'яті. Він також створює парсер PE-файлів, які дозволяють виконуваного файлу відображатися або не відображатися через один атомарний крок. Починаючи з Windows NT Server 4.0 Видання сервера терміналів, диспетчер пам'яті реалізує так званий простір сеансу, діапазон пам'яті в режимі ядра, який схильний перемикання контексту так само, як пам'ять користувацького режиму. Це дозволяє декільком екземплярів підсистеми Win32 режиму ядра і драйверів GDI працювати пліч-о-пліч, незважаючи на недоліки в їх первісному дизайні. Кожне простір сеансу спільно використовується декількома процесами, які разом називаються «сеансом». Щоб забезпечити певний ступінь ізоляції між сеансами без введення нового типу об'єкта, монітор посилань безпеки обробляє зв'язок між процесами і сеансами як атрибут суб'єкта безпеки (токен) і може бути змінений тільки за наявності спеціальних привілеїв. Відносно простий і спеціальний характер сесій пов'язаний з тим, що вони не були частиною початкового проекту, і повинні були бути розроблені з мінімальним порушенням основної лінії третьою стороною (Citrix Systems) в якості попередньої умови для їх термінального серверного продукту для Windows NT, званого WinFrame. Однак, починаючи з архітектури Windows Vista, сесії, нарешті, стали належним її аспектом. Більше не є конструкцією диспетчера пам'яті, яка переходить в режим користувача опосередковано через Win32 вони були розширені до всеосяжної абстракції, зачіпає більшість виконавчих підсистем. Фактично регулярне використання Windows Vista завжди призводить до многосессионной середовищі.

    Структура процесу

    Даний елемент архітектури ОС Windows 7 (і інших варіацій) керує створенням і завершенням процесів і потоків, а також реалізує концепцію Job, групи процесів, які можуть бути завершені як єдине ціле або поміщені під загальні обмеження (наприклад, загальний максимум виділеної пам'яті або час ЦП). Об'єкти завдань були введені в Windows 2000.

    PnP Manager

    Керує і підтримує виявлення та встановлення пристрою під час завантаження. Він також несе відповідальність за зупинку і запуск пристроїв на вимогу - це може статися, коли шина (наприклад, USB або IEEE 1394 FireWire) набуває новий пристрій і для його підтримки необхідно завантажити драйвер. Його основна частина фактично реалізована в користувальницькому режимі, в службі Plug and Play, яка часто виконує складні завдання з встановлення відповідних драйверів, повідомлення служб і додатків про появу нових пристроїв і відображення графічного інтерфейсу користувача.

    Менеджер живлення

    Працює з подіями харчування (вимкнення живлення, режим очікування, сплячий режим і т. д.) і повідомляє порушені драйвери з допомогою спеціальних IRP (Power IRP). Його роль є контрольною.

    Контрольний монітор безпеки (SRM)

    Основний орган по забезпеченню дотримання правил безпеки інтегральної підсистеми безпеки. Він визначає, чи можна отримати доступ до об'єкта або ресурсу, використовуючи списки управління доступом (ACL), які самі складаються з записів керування доступом (ACE). ACE містять ідентифікатор безпеки (SID) і список операцій, які ACE надає обраної групі - обліковий запис користувача, групи або сеанс входу в систему - дозвіл (дозволити, заборонити або виконати перевірку) для цього ресурсу.

    GDI

    Інтерфейс графічного пристрою відповідає за такі завдання, як малювання ліній і кривих, відображення шрифтів і обробка панелей. У випусках серії Windows NT 3.x компонент GDI містився в підсистему клієнт/сервер в режимі користувача, але він був переведений в режим ядра в архітектурі операційної системи Windows NT 4.0 для поліпшення графічної продуктивності.

    Ядро

    Ядро в архітектурі ОС Windows знаходиться між HAL і Executive і забезпечує багатопроцесорну синхронізацію, планування і диспетчеризацію потоків і переривань, а також обробку переривань і диспетчеризацію винятків. Воно також відповідає за ініціалізацію драйверів пристроїв при завантаженні, які необхідні для запуску операційної системи. Тобто ядро виконує практично всі завдання традиційного мікроядра. Суворе відмінність між Executive і Kernel є найбільш помітним залишком первісного проекту мікроядра, а історична проектна документація послідовно називає компонент ядра «микроядром». Ядро часто взаємодіє з менеджером процесів. Рівень абстракції такий, що воно ніколи не звертається до диспетчера процесів, а тільки навпаки (за винятком кількох нетипових випадків, які ніколи не доходять до функціональної залежності).