Ноу Інти, лекція, архітектура windows

Загальна схема архітектури

Windows являє собою операційну систему з гібридним ядром (див. Лекцію 1 "Введення в операційні системи"). У ній основні системні функції по управлінню процесами, пам'яттю, пристроями, файлової системою і безпекою реалізовані в компонентах, які працюють в режимі ядра; але існує ряд важливих системних компонентів для користувача режиму, наприклад системні процеси входу в систему, локальної аутентифікації, диспетчера сеансів, а також підсистеми оточення.

Ноу Інти, лекція, архітектура windows


Мал. 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 з вихідним кодом, доступним академічним організаціям.

    Контрольні питання

    1. До якого типу ядер в більшій мірі відноситься Windows NT, до монолітним або мікроядром? Відповідь обґрунтуйте.
    2. Перерахуйте основні компоненти користувальницького режиму.
    3. Перерахуйте основні компоненти режиму ядра.
    4. Що таке Windows API? Де можна знайти інформацію з цього питання?
    5. Які основні функції виконавчої системи, що входить до складу Ntoskrnl.exe?
    6. Які основні функції ядра, що входить до складу Ntoskrnl.exe?
    7. Що таке HAL?

    Схожі статті