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

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

архітектура windows 7

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

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

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

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

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

архітектура ос windows

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

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

  • Вищого;
  • Проміжного;
  • Низького.

Модель драйверів Windows (WDM) існує на проміжному рівні, і в основному була розроблена для забезпечення сумісності довічного і вихідного коду між Windows 98 і 2000. Драйвери найнижчого рівня є або застарілими установниками пристроїв 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 10

Процес підсистеми середовища 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

Режим ядра

Режим ядра в архітектурі 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 8 1

Типи об’єктів визначають процедури та будь-які дані, специфічні для нього. Таким чином, 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 є найбільш помітним залишком первісного проекту мікроядра, а історична проектна документація послідовно називає компонент ядра “мікроядром”.

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



ЩЕ ПОЧИТАТИ