Короткий огляд архітектури
Після короткого огляду вихідних задумів проектування і компонування Windows розглянемо основні компоненти системи, що становлять її архітектуру. Спрощена версія архітектури показана на рис. 2.1. Потрібно мати на увазі, що ця схема носить загальний характер і не відображає всі компоненти. (Наприклад, на ній не показані мережеві компоненти і ієрархія різних типів драйверів пристроїв.)
В першу чергу на малюнку потрібно звернути увагу на пряму лінію, що розділяє частини операційної системи Windows, що працюють в режимі користувача і в режимі ядра. Прямокутники, що знаходяться вище лінії, представляють процеси, що йдуть в призначеному для користувача режимі, а компоненти, показані нижче лінії, представляють системні служби, що працюють в режимі ядра.
Як вже говорилося, потоки користувальницького режиму виконуються в захищеному адресному просторі процесу (коли вони виконуються в режимі ядра, у них є доступ до системного простору). Таким чином, у допоміжних системних процесів, у процесів служб, у призначених для користувача додатків і у підсистем середовища оточення, - у всіх є своя власна закрите адресний простір.
Чотирьом основних процесів режиму користувача можна дати наступні опису:
- Фіксовані (або реалізовані на апаратному рівні) допоміжні системні процеси, такі як процес входу в систему і адміністратор сеансів - Session Manager, які не входять до служби Windows (вони не запускаються диспетчером управління службами).
- Службові процеси, що реалізують такі служби Windows, як Диспетчер завдань (TaskScheduler) і спулер (PrintSpooler). Як правило, від служб потрібно, щоб вони працювали незалежно від входів користувачів в систему. Багато серверні додатки Windows, такі як Microsoft SQL Server і Microsoft Exchange Server, також включають компоненти, що працюють як служби.
- Призначені для користувача програми, які можуть належати до одного з наступних типів: для 32- або 64-розрядної версії Windows, для 16-розрядної версії Windows 3.1, для 16-розрядної версії MS-DOS або для 32- або 64-розрядної версії POSIX. Слід врахувати, що 16-розрядні додатки можуть запускатися тільки на 32-розрядної версії Windows.
- Серверні процеси підсистеми оточення, які реалізують частину підтримки середовища операційної системи або спеціалізовану частину, подану користувачеві і програмісту. Спочатку Windows NT поставляється трьома підсистемами середовища: Windows, POSIX і OS / 2. Але підсистеми POSIX і OS / 2 востаннє поставлялися з Windows 2000. Випуски клієнтської версії Windows Ultimate і Enterprise, а також всі серверні версії включають підтримку для вдосконаленої підсистеми POSIX, яка називається підсистемою для додатків на основі Unix (Unix-based Applications, SUA) .
Зверніть увагу на прямокутник «Підсистеми DLL-бібліотек», який на рис. 2.1 знаходиться під прямокутниками «Службові процеси» і «Користувальницькі додатки». При виконанні під керуванням Windows призначені для користувача програми не викликають наявні в операційній системі Windows служби безпосередньо, а проходять через одну або кілька підсистем динамічно підключаються бібліотек (dynamic-link libraries, DLL).
Підсистеми DLL-бібліотек призначені для перекладу документованої функції в відповідний внутрішній (і часто недокументований) виклик системної служби. Цей переклад може включати в себе (або не включати) відправку повідомлення процесу підсистеми середовища, обслуговуючому користувальницький додаток.
У Windows входять такі компоненти, що працюють в режимі ядра:
Відео: Презентація курсу архітектури та дизайну в 3DsMAX
- Виконуюча система Windows містить основні служби операційної системи, такі як управління пам`яттю, управління процесами і потоками, безпеку, введення-виведення, мережа і зв`язок між процесами.
- Ядро Windows складається з низькорівневих функцій операційної системи, таких як диспетчеризація потоків, диспетчеризація переривань і виключень і мультипроцессорная синхронізація. Воно також надає набір підпрограм і базових об`єктів, використовуваних решті виконуючою системою для реалізації високорівневих конструктивних елементів.
- До драйверампристроїв відносяться як апаратні драйвери пристроїв, які переводять виклики функцій вводу-виводу в запити вводу-виводу конкретного апаратного пристрою, так і неаппаратние драйвери пристроїв, такі як драйвери файлової системи і мережі.
- Рівень апаратних абстракцій (hardware abstraction layer, HAL), який є рівнем коду, який ізолює ядро, драйвери пристроїв і решту виконуючу систему Windows від апаратних відмінностей конкретних платформ (таких як відмінності між материнськими платами).
- Система організації многооконного інтерфейсу і графіки, що реалізує функції графічного інтерфейсу користувача (graphical user interface, GUI), більш відомі як наявні в Windows USER- і GDI-функції, призначені для роботи з вікнами, елементами керування для користувача інтерфейсу і графікою.
У таблиці перераховані імена файлів основних компонентів операційної системи Windows. (Вам потрібно знати ці імена файлів, тому що на деякі системні файли ми будемо посилатися по іменах.) Кожен з цих компонентів буде більш детально розглянуто пізніше.
Відео: Архітектура Токіо 21 століття
Основні системні файли Windows
ім`я файлу | компоненти |
---|---|
Ntoskrnl.exe | Виконуюча система і ядро |
Ntkrnlpa.exe (тільки в 32-розрядних системах) | Виконуюча система і ядро з підтримкою розширення фізичної адреси - Physical Address Extension (PAE), що дозволяє 32-розрядних систем здійснювати адресацію аж до 64 Гб фізичної пам`яті і позначати пам`ять як що не містить виконуваний код |
Hal.dll | Рівень апаратних абстракцій |
Win32k.sys | Частина підсистеми Windows, що працює в режимі ядра |
Ntdll.dll | Внутрішні допоміжні функції і заглушки диспетчера системних служб до виконуючим функціям |
Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll | Основні Windows-підсистеми DLL-бібліотек |
Перш ніж приступити до докладного вивчення цих компонентів системи, давайте розглянемо деякі основи конструкції ядра Windows. Почнемо з того, як в Windows здійснюється переносимість, що дозволяє цій операційній системі працювати на декількох апаратних архітектурах.