Windows, как и другие операционные системы, представляет собой слой абстракции между программным обеспечение и устройством, на котором обеспечение запускается
Изначально, проект Multics, прародитель Unix, ставил цель сделать ОС для многих пользователей, поэтому в Multics было 8 колец защиты (или привилегий). Кольцо 0 было наиболее привилегированным и использовалось для ядра или супервизора системы, а остальные 7 колец использовались для других подсистем, служб супервизора и пользовательских приложений. Чем больше номер кольца, тем менее возможностей взаимодействия с устройствами ПК имел процесс
Операционная система Windows же разрабатывалась для IBM-PC-совместимых компьютеров, то есть компьютеров с процессором архитектуры x86. Компания Intel, разработавшая архитектуру x86 и процессор Intel 80286, аппаратно реализовала 4 кольца привилегий в процессоре:
Процессор знает, в каком кольце исполняется текущий код благодаря машинному регистру, отвечающему за это, из-за чего понимал, что делать, если инструкция обращается к памяти чужого процесса или выполняемая инструкция неправильная
На практике ранние версии Windows (3.x, 95, 98 и Millennium Edition) использовали 2 кольца - 0 и 3. Затем при создании Windows NT учитывалось, что операционная система будет работать на процессорах не только архитектуры x86, но MIPS, Alpha и PowerPC, которые имеют только 2 кольца привилегий: привилегированный и пользовательский режимы. Также, Поэтому кольца 1 и 2 в системе Windows (как и в других системах, таких как Linux и macOS) не используются
Современное ядро Windows NT имеет гибридную архитектуру, хотя изначально OS/2 планировалась как система с микроядерной архитектурой. Из-за этого некоторые существенные компоненты работают в пользовательском режиме

В пользовательском режиме работают:
smss.exe, от Session Manager Subsystem), программа входа в систему Windows (winlogon.exe) и согласованный пользовательский интерфейс для административных приложений (consent.exe)Отличия пользовательских приложений и процесс служб от системных процессов и подсистем окружения являются в использовании разных интерфейсов:
В режим ядра работают:
Исполнительная система - низкоуровневые функции операционной системы, такие как диспетчеризация потоков, диспетчеризация прерываний и исключений и мультипроцессорная синхронизация
Исполнительная система состоит из этих компонентов:
Графический пользовательский интерфейс (GUI) - реализация функция графического интерфейса, работа с окнами, элементы пользовательского интерфейса и графический вывод
Ядро Windows (ntoskrnl.exe) - низкоуровневые функции ОС: планирование потоков, диспетчеризация прерываний и исключений и многопроцессорная синхронизация. Оно
также предоставляет набор функций и базовых объектов, которые используются исполнительной системой для
реализации высокоуровневых конструкций
Драйверы устройств (*.sys в папке Windows\System32\Drivers) - драйверы физических устройств, преобразующие вызовы пользовательских функций ввода/вывода в конкретные запросы к устройству, и драйверы устройств, не относящихся к физическому оборудованию, например драйверы файловой системы, сети
Слой абстрагирования оборудования (он же HAL, Hardware Abstraction Layer или машинно-зависимые модули, hal.dll), который изолирует ядро, драйверы устройств и прочий исполняемый код от платформенно-зависимых различий в работе оборудования
Отдельно уровнем ниже существует гипервизор, который состоит из нескольких внутренних уровней и служб: собственный диспетчер памяти, планировщик виртуальных процессов, управление прерываниями и таймером, функции синхронизации, разделы (экземпляры виртуальных машин), внутрипроцессные коммуникации (IPC, Inter-Process Communication) и другое
Сейчас Windows 11 работает на процессорах с архитектурой x86-64 и ARM64. Версии с Windows 95 по Windows 10 поддерживают 32-битные процессоры архитектуры x86. Отдельная версия Windows RT (основанная на Windows 8 и 8.1) поддерживает процессоры архитектуры ARM32 (в том числе отдельные системы на чипе из семейства Nvidia Tegra). Ранние версии Windows работала на процессорах с архитектурой Itanium, DEC Alpha, PowerPC, MIPS
Сама система Windows написана на языках C, C++ и на языке ассемблера. Независимость от архитектуры в Windows обеспечивается изменение машинно-зависимых модулей и ядра
Ядро Windows поддерживает симметричную мультипроцессорность, то есть потоки процесса исполняются на любых ядрах с общей памятью, а также многоядерные, гиперпотоковые (Hyper-Threading) процессоры и технологию доступа к неоднородной памяти NUMA (Non-Uniform Memory Architecture) для систем с несколькими процессорами (память в NUMA разделяется NUMA-группы, которые распределяются отдельным процессорам)
Также Windows имеет ограничения до 64 физических процессоров (при этом неограниченное число логических ядер) и до 20 сокетов NUMA
Операционная система Windows Server может управляться с помощью таких инструментов:
mmc.exe) - консоль управления MicrosoftWindows имеет стандартную структуру каталогов:
Windows (в пользовательских компьютерах чаще всего C:\Windows, полный путь хранится в переменной окружения SystemRoot). В качестве ссылки на каталог Windows используются %SystemRoot% или %WinDir%
Windows\System32 - основные 64-битные системные файлы (динамические библиотеки .dll и исполняемые файлы .exe)Windows\SysWOW64 (от Windows on Windows 64-bit) - 32-битные версии файлов для запуска старых программWindows\WinSxS (от Side-by-Side) и Windows\Servicing\Packages - компоненты WindowsWindows\SoftwareDistribution и Windows\servicing\LCU (от Last Cumulative Update) - каталоги пакетов обновленийProgramData для хранения данных приложений и установочных файловProgram Files и Program Files (x86) для приложений (соответственно 64-битные и 32-битные)PerfLogs для хранения журналов производительностиRecovery для хранения образа среды восстановления$Recycle.Bin, который представляет “Корзину”System Volume Information, который хранит файлы, позволяющие восстановить состояние системы в случае серьезных сбоевUsers (в русской версии отображается как Пользователи) для хранения данных пользователей
Users/All Users и Users/Default для хранения специальных профилейUsers\%имя-пользователя%\Documents (Документы) - документыUsers\%имя-пользователя%\Desktop (Рабочий стол) - каталог файлов, иконки которых отображаются на рабочем столе системыUsers\%имя-пользователя%\AppData - данные приложений этого пользователя
Users\%имя-пользователя%\AppData\Local - локальные для этого компьютера данные приложений (например, кэш браузера)Users\%имя-пользователя%\AppData\LocalLow - данные приложений, работающих в изолированной средеUsers\%имя-пользователя%\AppData\Roaming - данные приложений, которые должны следовать за пользователем при входе в одну учетную запись на разных компьютерах (полезно для офисов)pagefile.sys - виртуальный файл подкачкиswapfile.sys - аналог pagefile.sys для приложений, созданных на UWP (Universal Windows Platform)hiberfil.sys - файл для работы гибернации. При входе в режим гибернации оперативная память копируется в этот файл, из-за чего экономится больше энергии, чем в спящем режимеКаталоги Windows, Recovery и файл Hiberfil.sys обязаны находится на системного разделе диска, а Program Files, ProgramData и Users могут находится вне, но через костыли
Конфигурация Windows хранится в конфигурационных файлах разных форматов (.ini, .xml, .json, .conf) и в реестре
Реестр Windows - это набор бинарных файлов для хранения конфигурации в виде дерева
Преимущества:
Недостатки:
Реестр хранит значения этих типов:
Ссылка - символическая ссылка в формате Unicode
REG_SZ - обычная текстовая строка, используется для хранения путей, имен и других текстовых данных фиксированной длины.REG_DWORD - 32-разрядное число, применяется для хранения числовых параметров конфигурации, флагов и настроекREG_QWORD - 64-разрядное числоREG_BINARY- двоичные данные, информация отображается в шестнадцатеричном формате, чаще всего применяется для параметров оборудования и графических настроекREG_MULTI_SZ - множественная строковая последовательность (список строк, разделенных нулевым символом \0)REG_EXPAND_SZ - расширяемая строковая переменная. Текст, содержащий переменные окружения (например, %SystemRoot%), которые автоматически заменяются на реальные пути при чтенииREG_LINK - символическая Unicode-ссылка на другой раздел реестраРеестр также поддерживает ACL (Access Control List) - список управления доступом, который определяет, какие пользователи или группы имеют права на чтение, запись, изменение или удаление конкретных разделов и параметров в реестре
Значения в реестре разбиты на несколько основных веток:
HKEY_LOCAL_MACHINE (HKLM) - глобальные настройки компьютера, которые применяются ко всем пользователям и самой операционной системе
HKEY_LOCAL_MACHINE\HARDWARE - информация о текущем аппаратном обеспечении компьютера, создаваемая динамически (аналог /dev в Linux)HKEY_USERS (HKU) - профили всех пользователей, зарегистрированных в системеHKEY_CURRENT_USER (HKCU) - настройки текущего вошедшего пользователя (ссылка на подраздел внутри HKEY_USERS)HKEY_CLASSES_ROOT (HKCR) - сопоставления типов файлов и регистрация COM-компонентов. Эта ветка указывает системе, какое приложение должно открывать конкретный формат (например, .txt или .pdf), а также хранит настройки для контекстного меню проводника. Она является динамическим объединением данных из HKLM\Software\Classes (для всех пользователей) и HKCU\Software\Classes (личные ассоциации пользователя, которые имеют приоритет)HKEY_CURRENT_CONFIG (HKCC) - текущая конфигурация оборудования (ссылка на ветку HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current). Здесь хранятся временные параметры подключенных в данный момент устройств, профили мониторов, принтеров и других аппаратных средств, которые активны при текущем запуске системы.Сам реестр хранится во множестве файлов. Расположение основных веток:
HKEY_LOCAL_MACHINE\BCD00000000 хранится в %SystemRoot%\Boot\BCDHKEY_LOCAL_MACHINE\SYSTEM - хранится в %SystemRoot%\System32\config\SYSTEMHKEY_LOCAL_MACHINE\SOFTWARE - хранится в %SystemRoot%\System32\config\SOFTWAREHKEY_LOCAL_MACHINE\SECURITY - параметры безопасности, хранящиеся в %SystemRoot%\System32\config\SECURITYHKEY_LOCAL_MACHINE\SAM - формируется в %SystemRoot%\System32\config\SAMHKEY_USERS\DEFAULT - формируется из %SystemRoot%\System32\config\DEFAULTHKEY_USERS\S-1-5-18, HKEY_USERS\S-1-5-19 и HKEY_USERS\S-1-5-20 - формируются из документов NTUSER.DAT, которые лежат в директориях %SystemRoot%\System32\config\systemprofile\, %SystemRoot%\ServiceProfiles\LocalService\ и %SystemRoot%\ServiceProfiles\NetworkService\HKEY_USERS\%SID_пользователя% - формируется из %USERPROFILE%\NTUSER.DATHKEY_USERS\%SID_пользователя%_Classes - формируется из %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.datТакже каталог %SystemRoot%\System32\config\RegBak применяется для бекапа реестра
Для изменения реестра существуют:
regedit.exe (или regedt32.exe - устаревший редактор для Windows NT/2000, сейчас является ссылкой на regedit.exe)reg.exeGet-ChildItem, Get-ItemProperty, Set-ItemProperty, New-Item, New-ItemProperty, Remove-ItemРаньше было обслуживание на основе файлов (File-Based Servicing, FBS): были .inf файлы с описанием изменений, а обновляемые системные файлы
перезаписывались новыми версиями непосредственно в %SystemRoot%\System32, а копия новой версии помещалась еще и в кэш защищенных системных файлов %SystemRoot%\System32\DLLcache
Сейчас используется обслуживание на основе компонентов (Component-Based
Servicing, CBS) с помощью TrustedInstaller.exe
Компонент представляет набор файлов, сгруппированных по назначению, функциональности и возможности многократного использования. В компонент входят библиотеки, исполняемые файлы, манифесты и так далее
Также появились статусы компонентов/обновлений (такие как установлен, активирован) и возможность ставить определенный функционал в операционной системе по мере необходимости
Благодаря этому обеспечиваются:
Управление компонентами осуществляется через:
OptionalFeatures.exe)Dism.exeGet-WindowsFeature и Enable-WindowsOptionalFeaturewinget для установки пакетов:
winget install <пакет> - установка пакетаwinget uninstall <пакет> - удаление пакетаwinget list - список установленных пакетовwinget show <пакет> - показать информацию о пакетеwinget source <опции> - управление репозиториями пакетовСлужбы могут быть:
.exe-файл, которые перечислены в реестре HKLM\SYSTEM\CurrentControlSet\Services.dll-библиотека, запускаемые через svchost.exe, например “Брандмауер Защитника Windows”Для служб в реестре есть поля:
