Загальна схема архітектури
Windows являє собою операційну систему з гібридним ядром (див. Лекцію 1 "Введення в операційні системи"). У ній основні системні функції по управлінню процесами, пам'яттю, пристроями, файлової системою і безпекою реалізовані в компонентах, які працюють в режимі ядра; але існує ряд важливих системних компонентів для користувача режиму, наприклад системні процеси входу в систему, локальної аутентифікації, диспетчера сеансів, а також підсистеми оточення.
Мал. 4.1. архітектура Windows
Компоненти для користувача режиму
У призначеному для користувача режимі працюють такі види процесів:
- системні процеси (system processes) - компоненти Windows, що відповідають за рішення критично важливих системних завдань (т. е. аварійне завершення одного з цих процесів викликає крах або нестабільну роботу всієї системи), але виконуються в режимі користувача. Основні системні процеси:
- Winlogon.exe - процес входу в систему і виходу з неї;
- Smss.exe (Session Manager - диспетчер сеансів) - процес виконує важливі операції при ініціалізації системи (завантаження необхідних DLL, запуск процесів Winlogon і Csrss і ін.), А потім контролює роботу Winlogon і Csrss;
- Lsass.exe (Local Security Authentication Subsystem Server - сервер підсистеми локальної аутентифікації) - процес перевіряє правильність введених імені користувача і пароля;
- Wininit.exe - процес ініціалізації системи (наприклад, запускає процеси Lsass і Services);
- Userinit.exe - процес ініціалізації користувача середовища (наприклад, запускає системну оболонку - за замовчуванням, Explorer.exe);
- Services.exe (SCM, Service Control Manager - диспетчер управління службами) - процес, який відповідає за виконання служб - див. Нижче;
Всі перераховані процеси користувальницького режиму (крім підсистеми POSIX 1 Підсистема POSIX використовує бібліотеку Psxdll.dll.) Для взаємодії з модулями режиму ядра використовують бібліотеки Windows DLL (Dynamic Link Library - динамічно підключається). Кожна DLL експортує набір Windows API функцій, які може викликати процес.
Windows API (Windows Application Programming Interface. WinAPI) - це спосіб взаємодії процесів користувацького режиму з модулями режиму ядра. WinAPI включає тисячі функцій і добре документований [10].
Основні Windows DLL наступні:
- Kernel32.dll - базові функції, в тому числі робота з процесами і потоками, управління пам'яттю і введенням висновком;
- Advapi32.dll - функції, в основному пов'язані з управлінням безпекою і доступом до реєстру;
- User32.dll - функції, що відповідають за управління вікнами і їх елементами в GUI додатках (Graphical User Interface - графічний інтерфейс користувача);
- Gdi32.dll - функції графічного інтерфейсу користувача (Graphics Device Interface, GDI), що забезпечують малювання на дисплеї і принтері графічних примітивів і висновок тексту.
Бібліотека Ntdll. dll експортує в більшості своїй недокументовані системні функції, реалізовані, в основному, в Ntoskrnl.exe. Набір таких функцій називається Native API ( "рідний" API).
Бібліотеки Windows DLL перетворять виклики документованих WinAPI функцій в виклики функцій Native API і перемикають процесор на режим ядра.
Компоненти режиму ядра
Диспетчер системних сервісів (System Service Dispatcher) працює в режимі ядра, перехоплює виклики функцій від Ntdll. dll. перевіряє їх параметри і викликає відповідні функції з Ntoskrnl.exe.
Виконавча система і ядро містяться в Ntoskrnl.exe (NT Operating System Kernel - ядро операційної системи NT) (з приводу використання терміна "ядро" в Windows див. Лекцію 1 "Введення в операційні системи").
Виконавча система (Executive) являє собою сукупність компонентів (званих диспетчерами - manager), які реалізують основні завдання операційної системи:
- диспетчер процесів (process manager) - управління процесами і потоками (див. лекцію 6 "Процеси і потоки");
- диспетчер пам'яті (memory manager) - управління віртуальною пам'яттю і відображення її на фізичну (див. лекцію 8 "Управління пам'яттю");
- монітор контролю безпеки (security reference monitor) - управління безпекою (див. лекцію 9 "Безпека");
- диспетчер введення виведення (I / O manager), диспетчер кеша (cache Manager), диспетчер Plug and Play (PnP Manager) - управління зовнішніми пристроями і файловими системами (див. лекцію 10 "Управління пристроями" і лекцію 11 "Файлова система NTFS") ;
- диспетчер електроживлення (power manager) - управління електроживленням і енергоспоживанням;
- диспетчер об'єктів (object manager), диспетчер конфігурації (configuration manager), механізм виклику локальних процедур (local procedure call) - управління службовими процедурами і структурами даних, які необхідні інших компонентів.
Ядро (Kernel) містить функції, що забезпечують підтримку компонентів виконавчої системи та здійснюють планування потоків (див. Лекцію 7 "Планування потоків"), механізми синхронізації, обробку переривань.
Компонент Windows USER і GDI відповідає за користувальницький графічний інтерфейс (вікна, елементи управління в вікнах - меню. Кнопки і т. П. Малювання), є частиною підсистеми Windows і реалізований в драйвері Win32k.sys.
Взаємодія диспетчера введення виведення з пристроями забезпечують драйвери (drivers) - програмні модулі, що працюють в режимі ядра, що володіють максимально повну інформацію про конкретний пристрої (драйвери докладніше розглядаються в лекції 10 "Управління пристроями").
Однак, і драйвери, і ядро не взаємодіють з фізичними пристроями безпосередньо - посередником між програмними компонентами режиму ядра і апаратурою є HAL (Hardware Abstraction Layer) - рівень абстрагування від устаткування, реалізований в Hal. dll. HAL дозволяє приховати від всіх програмних компонентів особливості апаратної платформи (наприклад, відмінності між материнськими платами), на якій встановлена операційна система.
У лекції представлена архітектура операційної системи Windows і описані основні компоненти користувальницького режиму і режиму ядра.
У наступній лекції розглядається дослідне ядро Windows (Windows Research Kernel) - варіант Ntoskrnl.exe з вихідним кодом, доступним академічним організаціям.
Контрольні питання
- До якого типу ядер в більшій мірі відноситься Windows NT, до монолітним або мікроядром? Відповідь обґрунтуйте.
- Перерахуйте основні компоненти користувальницького режиму.
- Перерахуйте основні компоненти режиму ядра.
- Що таке Windows API? Де можна знайти інформацію з цього питання?
- Які основні функції виконавчої системи, що входить до складу Ntoskrnl.exe?
- Які основні функції ядра, що входить до складу Ntoskrnl.exe?
- Що таке HAL?
Схожі статті