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

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

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

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


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

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

Режим ядра у Windows NT має повний доступ до апаратних і системних ресурсів комп 'ютера. Ядро цієї оболонки відоме як гібридне. Архітектура включає в себе просте ядро, рівень апаратної абстракції (HAL), драйвери і ряд служб (спільно іменованих Executive), які всі існують в одному режимі.

Користувацький режим в архітектурі Windows складається з підсистем, здатних передавати запити введення-виведення відповідним драйверам режиму ядра за допомогою відповідного диспетчера. Шар користувацького режиму "Віндовс" складається з "Підсистем середовища", в яких виконуються програми, написані для різних операційних систем, і "Інтегральної підсистеми", яка виконує системні функції від імені підсистем середовища.

Інтерфейси Executive в архітектурі Windows з усіма підсистемами користувацького режиму мають справу з введенням/висновком, управлінням об 'єктами, безпекою та управлінням процесами. Ядро знаходиться між рівнем апаратної абстракції і виконавчим пристроєм, забезпечуючи багатопроцесорну синхронізацію, планування і диспетчеризацію потоків і переривань, а також обробку переривань і диспетчеризацію винятків. Ядро також відповідає за ініціалізацію драйверів пристроїв при завантаженні.

Драйвери цього режиму існують на трьох рівнях:

  • вищого;
  • проміжного;
  • низького.

Модель драйверів Windows (WDM) існує на проміжному рівні, і в основному була розроблена для забезпечення сумісності двоїчного і вихідного коду між Windows 98 і 2000. Драйвери найнижчого рівня є або застарілими установщиками пристроїв Windows NT, які керують пристроєм безпосередньо, або можуть бути різновидами Play (PnP) - апаратної шини.


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

Користувацький режим складається з різних системних процесів і бібліотек DLL.

Інтерфейс між програмами і функціями ядра операційної системи називається "підсистемою середовища". Архітектура 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, який містить тільки одну програму, що працює.

Процес підсистеми середовища Win32 (csrss.exe) також включає в себе функціональність управління вікнами, іноді звану "віконним менеджером". Вона обробляє події вводу (наприклад, клавіатури і миші), а потім передає повідомлення програмам, яким необхідно отримати цей ввід. Кожна програма відповідає за появу або оновлення своїх власних вікон і меню у відповідь на ці повідомлення.

Підсистема середовища 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 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), тобто системні виклики, також реалізовані на цьому рівні, за винятком дуже небагатьох, які звертаються безпосередньо до рівня ядра для підвищення продуктивності.

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

Менеджер об "єктів

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

Для цього менеджера кожен ресурс є об 'єктом, незалежно від того, чи є він фізичним (таким як файлова система або периферійний пристрій) або логічним (таким як файл). Кожен об 'єкт має структуру або тип, про який повинен знати Ob.


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

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

Типи об 'єктів визначають процедури та будь-які дані, специфічні для нього. Таким чином, 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, Terminal Server Edition, диспетчер пам 'яті реалізує так званий простір сеансу, діапазон пам' яті в режимі ядра, який схильний до перемикання контексту так само, як пам 'ять користувацького режиму. Це дозволяє кільком екземплярам підсистеми 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 є найбільш помітним залишком початкового проекту мікроядра, а історична проектна документація послідовно називає компонент ядра "мікроядром".

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