Architektura Windows NT je vlastní rodině operačních systémů (OS) založených na jádře Windows NT . Tyto OS jsou: Windows NT 3.1 , Windows NT 3.5 , Windows NT 3.51 , Windows NT 4.0 , Windows 2000 , Windows XP , Windows Server 2003 , Windows Vista , Windows Server 2008 , Windows 7 , Windows 8 , Windows 10 a Windows 11 .
Všechny z nich jsou preemptivní multitaskingové operační systémy navržené pro práci s jednoprocesorovými i symetrickými víceprocesorovými počítači . Ke zpracování I/O požadavků se používá dávkově řízený I/O, který využívá I/O request pakety (IRP) a asynchronní I/O.
Architektura Windows NT je modulární a skládá se ze dvou hlavních vrstev – komponent v uživatelském režimu a komponent v režimu jádra. Programy a podsystémy spuštěné v uživatelském režimu mají omezení přístupu k systémovým prostředkům. Režim jádra má neomezený přístup k systémové paměti a externím zařízením. Jádro NT systému se nazývá hybridní jádro nebo makrokernel. Architektura zahrnuje samotné jádro, hardwarovou abstraktní vrstvu (HAL), ovladače a řadu služeb (Executives), které pracují v režimu jádra (ovladače v režimu jádra) nebo v uživatelském režimu (ovladače v uživatelském režimu) [1] [2 ] .
Uživatelský režim WINDOWSNT se skládá z podsystémů, které předávají I/O požadavky příslušnému ovladači režimu jádra prostřednictvím I/O správce. Na uživatelské úrovni existují dva subsystémy: subsystém prostředí (spouští aplikace napsané pro různé operační systémy) a integrovaný subsystém (spravuje speciální systémové funkce jménem subsystému prostředí). Režim jádra má plný přístup k hardwaru počítače a systémovým prostředkům.
Uživatelský režim se skládá ze subsystémů, které předávají I/O požadavky příslušnému ovladači režimu jádra prostřednictvím I/O manažera. Uživatelská úroveň se skládá ze dvou subsystémů – subsystému prostředí (Environment) a integrálního subsystému (Integral).
Subsystém prostředí je navržen tak, aby spouštěl aplikace napsané pro různé typy operačních systémů. Žádný ze subsystémů prostředí nemá přímý přístup k hardwaru počítače. K paměťovým prostředkům se přistupuje prostřednictvím Správce virtuální paměti, který běží v režimu jádra. Aplikace také běží s nižší prioritou než procesy v režimu jádra.
Subsystém prostředí se skládá z následujících podsystémů – podsystém Win32, podsystém OS/2 a podsystém POSIX . Podsystém prostředí Win32 spouští 32bitové aplikace Windows. Obsahuje podporu konzoly a textových oken, zpracování chyb pro všechny ostatní subsystémy prostředí. Podporuje VDM (Virtual DOS Machine), který umožňuje spouštět 16bitové aplikace pro DOS a Windows (Win16). VDM běží ve vlastním adresním prostoru a emuluje systém MS-DOS běžící na počítači s procesorem Intel 80486. Programy Win16 běží v režimu Win16 VDM. Každý program běží ve stejném procesu pomocí stejného adresního prostoru, ale každý program používá své vlastní vlákno. Windows NT však umožňuje programům Win16 spouštět v samostatných procesech Win16 VDM, což umožňuje preemptivní multitasking. Proces subsystému prostředí Win32, csrss.exe, také zahrnuje funkci správce oken, to znamená, že zpracovává příchozí události, jako jsou kliknutí klávesnice a myši, a předává je ke zpracování příslušným aplikacím. Každá aplikace provádí vlastní překreslování okna v reakci na tyto zprávy.
Subsystém prostředí OS/2 podporuje negrafické 16bitové aplikace operačního systému OS/2 a emuluje OS/2 2.1.x.
Subsystém prostředí POSIX podporuje aplikace napsané podle standardu POSIX.1.
Integrovaný subsystém monitoruje určité funkce operačního systému jménem subsystému prostředí. Skládá se z podsystému zabezpečení, služby pracovní stanice a služby serveru. Bezpečnostní služba zpracovává přístupové tokeny , povoluje nebo zakazuje přístup k uživatelskému účtu, zpracovává požadavky na autorizaci a spouští proces přihlášení uživatele. Služba Workstation poskytuje počítačový přístup do sítě - jedná se o API pro síťový přesměrovač (software, který emuluje přístup ke vzdálenému systému souborů jako lokální). Služba Server umožňuje počítači poskytovat síťové služby.
Režim jádra systému Windows NT má úplný přístup k hardwaru počítače a systémovým prostředkům. Běží v chráněné oblasti paměti. Spravuje paměť a interakci s hardwarem. Zabraňuje aplikacím a službám v uživatelském režimu v přístupu ke kritickým oblastem paměti. K provedení takových operací musí proces v uživatelském režimu požádat režim jádra, aby je provedl jeho jménem.
Architektura x86 podporuje 4 úrovně oprávnění, od 0 do 3, ale používají se pouze úrovně 0 a 3. Uživatelský režim používá úroveň 3 a režim jádra používá 0. To bylo provedeno za účelem umožnění přenositelnosti na platformu RISC , která používá pouze dvě úrovně oprávnění. Režim jádra se skládá z výkonných služeb, což jsou různé moduly, které provádějí určité úkoly, ovladače jádra, samotné jádro a vrstva HAL abstrakce hardwaru.
Pracuje s I/O, správcem objektů, řízením procesů a zabezpečením. Neformálně rozdělen do několika subsystémů - správce mezipaměti, správce konfigurace, správce vstupů / výstupů, místní volání procedur, správce paměti, bezpečnostní monitor. Systémové služby, tedy systémová volání, jsou implementovány na této úrovni, s výjimkou několika volání, která volají přímo do jádra pro vyšší výkon. V tomto kontextu se termín "služba" týká podprogramů, které jsou volány, nebo sady volaných podprogramů. Liší se od služeb v uživatelském režimu, které jsou poněkud analogické s démony na systémech podobných UNIXu.
Toto je výkonný subsystém, na který volají všechny ostatní moduly výkonného subsystému, zejména systémová volání, když potřebují získat přístup k prostředkům Windows NT. Správce objektů se používá ke snížení duplikace objektů, která může vést k chybám v systému. Pro správce objektů je každý systémový prostředek objektem - ať už se jedná o fyzický prostředek, jako je periferní zařízení, souborový systém, nebo logický prostředek - soubor atd. Každý objekt má svou vlastní strukturu nebo typ objektu.
Vytvoření objektu je rozděleno do dvou fází – vytvoření a vložení. Vytvořit – Vytvoří se prázdný objekt a rezervují se potřebné zdroje, jako je název v oboru názvů. Pokud bylo vytvoření prázdného objektu úspěšné, vyplní jej subsystém odpovědný za vytvoření objektu. Pokud je inicializace úspěšná, podsystém způsobí, že správce objektů vloží objekt – to znamená, že jej zpřístupní pod jeho názvem nebo popisovačem.