Глубины виртуализации Windows (часть 1) — где на самом деле работает ваш Windows: гипервизор и разделы

· Обновлено: · · Windows, Виртуализация, Hyper-V, Гипервизор, SLAT, VMBus

История изменений (первая версия, опубликована 22 Aug 2026)
Первая публикация
Цитирование статьи(DOI (зарегистрированный архив): 10.5281/zenodo.22176851)

Приведённые ниже DOI относятся к ранее зарегистрированным архивным версиям, которые могут отличаться от текущего текста. Для ссылки на текущий текст используйте URL этой страницы.

Го Комура (2026). Глубины виртуализации Windows (часть 1) — где на самом деле работает ваш Windows: гипервизор и разделы. KomuraSoft LLC. https://comcomponent.com/ru/blog/windows-virtualization-internals-hypervisor/

DOI (зарегистрированный архив)
10.5281/zenodo.22176851
DOI (последняя зарегистрированная версия)
10.5281/zenodo.22176852

Вы ни разу не создавали виртуальную машину, а в сведениях о системе (msinfo32) в Windows 11 стоит «Безопасность на основе виртуализации: выполняется». Что это значит?

На этом ПК хостовый Windows уже работает поверх гипервизора. В Windows 11 VBS по умолчанию включают на конфигурациях, которые удовлетворяют условиям — например, чистая установка на совместимое оборудование, и эта основа используется, даже если вы никогда не создаёте ВМ.1 WSL2 и Windows Sandbox пользуются тем же гипервизором Windows.

Часть 1 объясняет где оказывается хостовый Windows, когда включают Hyper-V, через разделение ролей по ЦП, памяти и вводу-выводу устройств. Это выпуск, который сначала выправляет взгляд «ПО виртуальных машин сидит поверх Windows».

«Глубины виртуализации Windows» — все 3 части

Один и тот же гипервизор Windows смотрим в порядке основа → изоляция безопасности → применение к лёгким ВМ.

Часть Центральный вопрос
Часть 1: гипервизор и разделы (эта статья) Где работает хостовый Windows?
Часть 2: VBS, HVCI и Credential Guard Куда положить секрет, который не прочитать даже ядру?
Часть 3: WSL2, Windows Sandbox и контейнеры Почему можно сделать лёгким, сохранив изоляцию?

Предпосылки этой статьи

Пункт Содержание
Кому Разработчики и эксплуатация, которые хотят понять механизмы под Hyper-V, WSL2 и Windows Sandbox
Среда x64 Windows 10/11 или актуальный Windows Server. Разбор колец, VT-x/AMD-V и EPT/RVI рассчитан на x64; у Arm64 другой механизм, например уровни исключений
Фоновые знания Различие режима ядра и пользовательского режима. Опыт эксплуатации ВМ и знания по разработке гипервизоров не требуются
Сложность и охват Средний. Понятие аппаратной поддержки виртуализации ЦП разбираем, в набор инструкций не углубляемся

Как читать эту статью

Что хотите узнать Какие разделы читать
Положение Windows и ВМ, выполнение на ЦП, разделение ролей Глава 1, общая картина → Глава 2, ЦП → Глава 3, разделы
Кто посредничает память и ввод-вывод устройств Глава 4, SLAT → Глава 5, VMBus
Влияние на ПК без ВМ и как проверить свой ПК Глава 6, повседневные функции и сосуществование → Глава 7, как проверить

Карта знаний ниже — список отношений. Если читаете впервые, идите по тексту с главы 1, общая картина.

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 22, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

1. Сначала вывод

Когда слышат Hyper-V, могут представить «ПО виртуальных машин, которое сидит поверх Windows». Фактическая структура обратная.

С момента, когда вы включаете Hyper-V и перезагружаетесь, физическими ЦП и памятью управляет гипервизор, а хостовый Windows работает поверх него как первый привилегированный раздел — «корневой раздел».

Гипервизор — тонкий программный слой между оборудованием и ОС. Он создаёт изолированные среды выполнения, называемые «разделами», и посредничает доступ к оборудованию.2 Хостовый Windows идёт в корневой раздел; ВМ — в дочерние.

Корневой раздел обрабатывают особо (у него прямой доступ к физическим устройствам и стек управления), но в том смысле, что он не управляет физическими ЦП напрямую, он стоит в той же позиции, что и дочерний раздел.

Общая структура после включения Hyper-VГипервизор сидит непосредственно на физическом оборудовании, а над ним — корневой раздел, в котором хостовый Windows, и дочерние разделы, в которых ВМФизическое оборудованиеГипервизорКорневой раздел (хостовый Windows)Дочерние разделы (ВМ)Держит стек управления виртуализацией и драйверы устройств

Рис. 1: Hyper-V — не «ПО виртуальных машин поверх Windows», а слой, который уходит под Windows, и хостовая ОС сама работает внутри корневого раздела.

Можно подумать: «До и после включения ничего не чувствуется иначе, неужели такая большая инверсия действительно произошла?» Произошла. Именно поэтому эта структура обычно остаётся незамеченной. В этой статье разбираем одну эту схему с трёх сторон: ЦП, память и ввод-вывод устройств.

2. Со стороны ЦП — ещё одна привилегия ниже колец

В разборе ЦП различаем кольца, которые отделяют ядро от приложений, и режимы выполнения, которые отделяют гипервизор от гостей. Вопрос этого раздела: гостевое ядро тоже работает в кольце 0, так почему нет столкновения?

2.1. Кратко о защите колец

У процессоров x64 есть уровни привилегий (кольца), и Windows работает в режиме ядра в кольце 0, а в пользовательском режиме — в кольце 3. Приложения не могут трогать оборудование напрямую, потому что привилегированные инструкции из кольца 3 выполнять нельзя.

Как тогда безопасно разместить на одном физическом ЦП несколько ядер ОС, каждое из которых работает в кольце 0? Каждое ядро написано из допущения «я управляю ЦП». Дать кольцо 0 всем — они столкнутся; отказать — они не заработают.

Проблема нескольких ядер ОС, которые требуют кольцо 0И хостовое, и гостевое ядро написаны из допущения полной власти в кольце 0, поэтому одной классической лестницы колец недостаточно, чтобы безопасно разместить их на одном физическом ЦПХостовое ядро (считает, что кольцо 0)Требует управление физическим ЦПГостевое ядро (считает, что кольцо 0)Одни классические кольца это не примиряютНужен посредник выше кольца 0

Рис. 2: Лестница колец строилась из допущения одной ОС, поэтому нескольким ядрам нужна ещё одна привилегия выше неё.

2.2. Расширения виртуализации — режим, зарезервированный для гипервизора

Эту задачу решают расширения виртуализации ЦП (Intel VT-x/AMD-V). Hyper-V требует процессор с этой функцией.2 Расширения виртуализации добавляют на оси, отдельной от классических колец, «режим выполнения для гипервизора» и «режим выполнения для гостей». Это привилегия даже сильнее кольца 0, её иногда называют «кольцо −1».

  • Гостевое ядро продолжает работать в кольце 0, как раньше. Переписывать его не нужно.
  • Однако это кольцо 0 — «кольцо 0 внутри гостевого режима», и оно не управляет физическим ЦП целиком.
  • Когда гость попадает на операцию, которая требует вмешательства гипервизора (инструкция, настроенная как перехват, либо исключение или нарушение), ЦП автоматически передаёт управление гипервизору (VM Exit). Когда гипервизор закончил обработку, он возвращается к гостю (VM Entry). Обычные обращения к памяти проходят напрямую без VM Exit, пока трансляция SLAT успешна.

Прерывания устроены так же. Разделы не трогают физические процессоры напрямую; гипервизор принимает прерывания и направляет их каждому разделу.2

Поток гостевого выполнения и VM ExitГостевое ядро и приложения работают в кольце 0 и кольце 3 в гостевом режиме; обычные обращения к памяти проходят через трансляцию SLAT, а операции, настроенные как перехваты, и исключения вызывают VM Exit, который передаёт управление гипервизору, и тот после обработки возвращается к гостю через VM EntryНетДаВыполнение в гостевом режиме (включая ядро кольца 0)Операция, которой нужно вмешательство? (настроенные перехваты/исключения)Продолжать выполнение как естьVM Exit (ЦП передаёт управление)Гипервизор обрабатываетВернуться к гостю через VM Entry

Рис. 3: Гостевая ОС продолжает работать в кольце 0 без переписывания, и ЦП вызывает гипервизор только когда нужно.

Этот круговой путь очень похож на поток, который мы разбирали в серии про память: «войти в ядро по ошибке страницы, затем вернуться к той же инструкции». ЦП берёт управление через механизм исключения или перехода, даёт решить менеджеру более высокого уровня и затем возвращается. В глубинах Windows эта форма появляется снова и снова.

2.3. Тип 1 и тип 2 — разница в том, где он сидит

Гипервизоры в целом делят на тип 1 (bare-metal), который работает непосредственно на оборудовании, и тип 2 (hosted), который работает поверх хостовой ОС. Hyper-V — тип 1.3 VirtualBox и VMware Workstation (когда работают самостоятельно) относят к типу 2.

Услышав «тип 1», склонны представить «конфигурацию только для сервера без хостовой ОС», но Hyper-V другой. Хостовый Windows не исчезает; он «переезжает» в корневой раздел. Когда вы включаете Hyper-V и перезагружаетесь, при загрузке сначала стартует гипервизор, а хостовый Windows затем поднимается как корневой раздел поверх него.

Разница между гипервизорами типа 1 и типа 2В типе 2 хостовая ОС сидит на оборудовании, а гипервизор и ВМ — на хостовой ОС; в типе 1 Hyper-V гипервизор сидит непосредственно на оборудовании, а хостовая ОС сама уходит в корневой раздел над нимТип 1 (Hyper-V)Тип 2 (hosted)ГипервизорОборудованиеКорневой раздел (хостовая ОС)ВМХостовая ОСОборудованиеГипервизорВМ

Рис. 4: В типе 2 гипервизор сидит на хостовой ОС, а в типе 1 Hyper-V порядок обратный, и хостовая ОС сама сидит на слое на одну ступень ниже.

На шкале времени загрузки изменение, которое происходит при включении, выглядит так.

Порядок загрузки после включения Hyper-VПосле включения питания сначала при загрузке стартует гипервизор, затем хостовый Windows поднимается как корневой раздел поверх него, а ВМ, VBS и прочее стартуют после этогоВключение питания и старт загрузкиСначала стартует гипервизорХостовый Windows стартует как корневой разделВМ, VBS, WSL2 и так далее стартуют поверх этогоДля пользователя ощущения не меняются

Рис. 5: Инверсия порядка уже закончена до появления экрана входа, и хостовая ОС с самого начала поднимается на гипервизоре.

3. Разделы — единица изоляции

Приглядимся к разделам, «ящикам» общей картины. Здесь нужно отделить посредничество ЦП и памяти, которым гипервизор занимается напрямую, от ввода-вывода устройств, которым обычно посредничает корневой раздел.

3.1. Роли, которые есть только у корневого раздела

Раздел — логическая единица изоляции, которую даёт гипервизор.2 Не все разделы равны. Есть вещи, которые есть только у корневого.

Прямой доступ к физическим устройствам

Драйверы устройств для дисков, NIC, GPU и подобных живут в Windows внутри корневого раздела, а не в гипервизоре. У Hyper-V на Windows Server есть конфигурация, которая назначает конкретное устройство PCIe напрямую дочернему разделу (Discrete Device Assignment); в этом случае корневой отпускает это устройство (на клиентском Windows этого нет).4

Стек управления виртуализацией

VMMS (Virtual Machine Management Service), которая управляет созданием, запуском и остановкой ВМ, и рабочий процесс, который стартует на каждую ВМ (vmwp.exe), работают в пользовательском режиме в корневом разделе.5 Это часть функций управления ВМ Hyper-V, поэтому их может не быть на хосте, где гипервизор работает только ради VBS или WSL2.

Право создавать дочерние разделы

Корневой раздел создаёт дочерние через API гипервызовов (интерфейс вызова в гипервизор).2

У этой схемы есть причина. Если положить каждый драйвер устройства в сам гипервизор, гипервизор станет огромным, и число ошибок и точек входа атаки вырастет. Гипервизор ограничивает себя минимальной работой посредничества ЦП и памяти и оставляет заботу об устройствах Windows в корневом разделе. Это разделение ролей и держит Hyper-V тонким.

Разделение ролей между корневым разделом и дочернимиКорневой раздел держит стек управления виртуализацией и драйверы физических устройств и создаёт дочерние разделы через гипервызовы; дочерний раздел в обычной конфигурации видит только виртуальные устройства, а при Discrete Device Assignment на Windows Server обращается к назначенному устройству напрямуюКорневой разделСоздавать и управлять через гипервызовыДочерний разделГостевая ОСВ обычной конфигурации видны только виртуальные устройстваVMMS и рабочие процессыДрайверы физических устройствГипервизор (ограничивает себя посредничеством ЦП и памяти)

Рис. 6: То, что драйверы устройств и стек управления лежат на стороне корневого раздела, и держит сам гипервизор тонким.

3.2. Мир глазами дочернего раздела

Гостевая ОС в дочернем разделе в обычной конфигурации виртуальных устройств не видит физическое оборудование напрямую (единственное исключение — устройство, назначенное через Discrete Device Assignment на Windows Server, как в предыдущем разделе). Что она видит — виртуальные процессоры, пространство памяти, которое кажется своим, и виртуальные устройства. Запросы к виртуальным устройствам пересылаются в корневой раздел через VMBus или гипервизор.2

Распределение процессорного времени и трансляцию памяти через SLAT, напротив, гипервизор ведёт напрямую, не через корневой. Чем посредничает корневой — ввод-вывод устройств, а не каждый физический ресурс.

Мир глазами дочернего разделаЧто видит гостевая ОС — виртуальные процессоры, пространство памяти, частное для раздела, и виртуальные устройства; запросы к виртуальным устройствам пересылаются в корневой раздел через VMBus и подобное, процессорное время и трансляцию памяти ведёт гипервизор напрямую, а в конфигурации Discrete Device Assignment на Windows Server только назначенные устройства доступны напрямуюЧерез VMBus и подобноеНе видно напрямуюГостевая ОС в дочернем разделеВиртуальные процессорыЧастное пространство памятиВиртуальные устройстваПересылается в корневой разделФизические ЦП, ОЗУ и настоящие устройстваВ конфигурации DDA (Windows Server) только назначенные устройства доступны напрямую

Рис. 7: В обычной конфигурации виртуальных устройств всё, что видит гость, — виртуальное окно, и путь к физическому идёт через посредника; только устройство, назначенное через DDA на Windows Server, — исключение.

Здесь важно, что для приложения, работающего на хостовом Windows, эта структура почти прозрачна. Вызовы Win32 API и обработка ошибок страницы по-прежнему обрабатываются ядром Windows внутри корневого раздела, как раньше. Гипервизор вмешивается только когда попадается настроенный перехват или исключение.

4. Со стороны памяти — трансляция адресов получает ещё один уровень

В памяти отделяем адрес, который гость считает «физическим», от фактического места в ОЗУ. Держите в уме порядок GVA → GPA → SPA и кто управляет каждой трансляцией.

4.1. Три вида адреса

В части 1 серии про память мы разбирали поток, которым виртуальный адрес транслируется через таблицу страниц в физический («Момент, когда виртуальный адрес становится физической ОЗУ»). В виртуализованной среде под этой трансляцией добавляется ещё один уровень, и видов адреса три.

Адрес Сокращение Кто управляет
Гостевой виртуальный адрес GVA Таблица страниц гостевой ОС
Гостевой физический адрес GPA Адрес, который гостевая ОС считает «физическим»
Системный физический адрес SPA Гипервизор (фактическое место в ОЗУ)

Гостевая ОС транслирует GVA в GPA своей таблицей страниц. GPA, который видит гость, однако, не настоящий физический адрес; это частное пространство памяти, выделенное каждому разделу.2 Отображение GPA на фактическое место в ОЗУ (SPA) — работа гипервизора.

4.2. SLAT — двухуровневая трансляция в оборудовании

Если эту трансляцию второго уровня делать только программно, гипервизору пришлось бы отслеживать каждое обновление гостевой таблицы страниц по одному, что нереалистично по производительности. Поэтому ЦП даёт механизм, который обходит таблицы трансляции второго уровня аппаратно. Это SLAT (Second Level Address Translation); реализации — Intel EPT (Extended Page Tables) и AMD RVI.

Актуальный Hyper-V требует 64-разрядный процессор с SLAT.4

Двухуровневая трансляция адресов через SLATГостевой виртуальный адрес транслируется в гостевой физический таблицей страниц гостевой ОС, затем дальше транслируется в системный физический адрес SLAT, которым управляет гипервизор, и доходит до фактической ОЗУТаблица страниц гостевой ОСSLAT (таблицы трансляции EPT/RVI)Гостевой виртуальный адрес (GVA)Гостевой физический адрес (GPA)Системный физический адрес (SPA)Физическая ОЗУСлой, который гость лишь считает физическим

Рис. 8: Под таблицей страниц гостя сидит ещё одна таблица трансляции, которой управляет гипервизор, и ЦП обходит обе аппаратно.

SLAT — не функция, которая существует только ради эффективности выполнения ВМ. VBS, который мы увидим в части 2, использует свойство «можно иметь разную таблицу трансляции SLAT на каждый уровень привилегий» как материал для границы безопасности. Причина, по которой можно создать память, которую не видит даже ядро, в том, что гипервизор держит эту трансляцию второго уровня. Это сквозная линия всей серии, поэтому запомните одну точку: «менеджер таблиц трансляции — гипервизор».

5. Со стороны ввода-вывода устройств — VMBus и два вида устройств

Ввод-вывод устройств идёт другим путём, чем процессорное время и трансляция памяти. Сравниваем метод, который имитирует настоящее оборудование, с методом, который использует путь, рассчитанный на виртуализацию.

5.1. Пределы эмулируемых устройств

Классический способ показать устройство дочернему разделу — полностью имитировать настоящее оборудование (например, старый контроллер IDE) программно. Совместимость высокая, потому что штатные драйверы гостевой ОС работают как есть, но VM Exit происходит каждый раз, когда гость попадает на порт ввода-вывода, и производительность не масштабируется.

Почему ввод-вывод к эмулируемому устройству медленныйКаждый раз, когда гость оперирует портом ввода-вывода, управление переходит на сторону гипервизора через VM Exit, устройство имитируется программно, и управление возвращается к гостю, поэтому круговой путь повторяется и медленныйПовторяется на следующей операции с портомГость оперирует портом ввода-выводаПроисходит VM ExitУстройство имитируется программноВернуться к гостю через VM Entry

Рис. 9: Этот круговой путь выполняется много раз за одним обращением к диску, и цена совместимости платится производительностью.

5.2. VMBus и VSP/VSC — быстрый путь, рассчитанный на виртуализацию

Поэтому у Hyper-V есть механизм «синтетического устройства», спроектированный из допущения виртуализации. Игроков трое.2

  • VMBus: логический канал связи между разделами. Даёт высокоскоростной межраздельный обмен, который использует разделяемую память.3
  • VSP (Virtualization Service Provider): служба, которая живёт на стороне корневого раздела, принимает запросы устройств от дочернего и мостит их к стеку устройства/бэкенда на стороне корневого. Запрос может дойти до физического устройства или обрабатываться хостовым бэкендом вроде виртуального диска или виртуального коммутатора.
  • VSC (Virtualization Service Consumer): драйвер синтетического устройства, который входит в гостевую ОС на стороне дочернего раздела. Он отправляет запросы VSP по VMBus.

Пример: как WriteFile гостя доходит до хоста

Запрос хранения от гостевой ОС идёт в таком порядке.

  1. WriteFile гостевого приложения спускается по стеку ввода-вывода гостевого ядра.
  2. Внизу он доходит до VSC вместо настоящего оборудования.
  3. VSC кладёт запрос на VMBus и отдаёт его VSP в корневом разделе.
  4. VSP проводит запрос в стек ввода-вывода на стороне корневого. В конфигурации виртуального диска (VHDX) он обрабатывается как запись в файл VHDX на хосте и в итоге доходит до физического диска.

Этот подход называют Enlightened I/O (ввод-вывод, который знает о виртуализации), и он повышает эффективность, обходя слой эмуляции устройств.2

Путь ввода-вывода синтетического устройстваЗапрос ввода-вывода от приложения в дочернем разделе доходит до VSC через гостевое ядро, пересекает VMBus к VSP в корневом разделе и в стеке ввода-вывода на стороне корневого, в который VSP мостит, может дойти до настоящего устройства через драйвер физического устройства или обрабатываться хостовым бэкендом вроде виртуального диска или виртуального коммутатораVMBusПриложение в дочернем разделеСтек ввода-вывода гостевого ядраVSC (драйвер синтетического устройства)VSP (сторона корневого раздела)Стек ввода-вывода на стороне корневогоДрайвер физического устройстваХостовый бэкенд (виртуальный диск, виртуальный коммутатор и так далее)Физическое устройство

Рис. 10: С синтетическим устройством гостевой ввод-вывод пересекает к корневому разделу по VMBus и через стек на стороне корневого доходит до настоящего устройства или хостового бэкенда.

Иными словами, быстр ли дисковый ввод-вывод или сеть ВМ, зависит не только от стороны гостя, но и от состояния стека ввода-вывода и драйверов устройств на стороне корневого раздела. Причина, по которой наблюдение со стороны хоста необходимо, когда расследуете проблему производительности ВМ, в том, что путь действительно идёт через хост.

Эмулируемые устройства против синтетическихЭмулируемое устройство имитирует настоящее оборудование, поэтому штатные драйверы гостя работают, но оно медленное; синтетическое устройство — драйвер, рассчитанный на VMBus, и оно быстроеУстройство, показанное дочернему разделуЭмулируемое устройствоСинтетическое устройствоИмитирует настоящее оборудование; сначала совместимостьНужно вмешательство на каждый ввод-вывод; медленноСпроектировано вокруг VMBus; быстроТребует соответствующего драйвера в госте

Рис. 11: Из двух видов виртуальных устройств эмулируемые несут совместимость сразу после установки ОС, а синтетические — производительность в повседневном использовании.

6. Почему это не чужая проблема, даже если вы никогда не пользуетесь ВМ

6.1. VBS, WSL2 и Sandbox пользуются той же основой

Структура до сих пор может выглядеть как «история для тех, кто поднимает ВМ». Как сказано в начале, однако, на актуальном Windows гипервизор — часть повседневности.

  • Безопасность на основе виртуализации (VBS). Пользуется гипервизором Windows, чтобы создать изолированную среду, и размещает там функции безопасности. В Windows 11 она включена по умолчанию, когда выполнены условия вроде чистой установки на совместимое оборудование.1 Подробности — в части 2.
  • WSL2. Запускает настоящее ядро Linux внутри лёгкой служебной ВМ.6
  • Windows Sandbox. Одноразовая среда Windows, изолированная гипервизором.7 Оба — в части 3.
Повседневные функции, которые сидят на том же гипервизореНе только ВМ Hyper-V, но и VBS, который по умолчанию включён на устройствах, удовлетворяющих условиям вроде чистой установки, плюс WSL2 и Windows Sandbox — все построены на одном гипервизоре WindowsГипервизор WindowsВМ Hyper-VVBS (по умолчанию на чистых установках и подобных)WSL2Windows SandboxПочему он работает даже на ПК, которые никогда не пользуются ВМ

Рис. 12: Основа одна, и на этой схеме разваливается допущение «виртуализация — история для тех, кто пользуется ВМ».

6.2. Сосуществование со сторонним ПО виртуализации

Ещё одна вещь, с которой часто сталкиваются на практике, — сосуществование со сторонним ПО виртуализации. Потому что гипервизор использует расширения виртуализации ЦП эксклюзивно, в среде, где работает гипервизор Windows, VirtualBox и подобные не могут работать прежним способом (способом, который сам использует расширения виртуализации ЦП).

Для этого дан открытый API Windows Hypervisor Platform, и сторонний стек виртуализации может работать, сидя поверх гипервизора Windows.8 Актуальные VirtualBox/VMware могут сосуществовать с WSL2 благодаря этому механизму, но различия производительности и функций, которые приходят со сменой режима, иногда наблюдают как «после того как я включил Hyper-V (или VBS), ПО виртуализации стало вести себя иначе».

Кто владеет расширениями виртуализации ЦП и путь для стороннего ПО виртуализацииПока работает гипервизор Windows, он эксклюзивно владеет расширениями виртуализации ЦП; стороннее ПО виртуализации, которое поддерживает WHP, работает поверх него через Windows Hypervisor Platform, а реализации, которые WHP не поддерживают, не могут работать или ограничены по функциямНетДаРасширения виртуализации ЦП (VT-x/AMD-V)Работает ли гипервизор Windows?Стороннее ПО может использовать их напрямуюГипервизор пользуется эксклюзивноWindows Hypervisor PlatformСтороннее ПО с WHP работает поверх негоРеализации без поддержки не работают или ограничены

Рис. 13: Владелец расширений виртуализации один, и единственное стороннее ПО, которое может сосуществовать, пока работает гипервизор, — ПО, которое поддерживает открытый API (WHP).

7. Посмотрите сами

На своём ПК можно проверить, работает ли гипервизор.

7.1. Проверка гипервизора и VBS через PowerShell

Сначала проверка, которую можно запустить без прав администратора.

# Работаем ли поверх гипервизора
(Get-CimInstance Win32_ComputerSystem).HypervisorPresent

# Состояние VBS (тот же источник, что и «Безопасность на основе виртуализации» в msinfo32)
Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard `
    -ClassName Win32_DeviceGuard |
    Select-Object VirtualizationBasedSecurityStatus

VirtualizationBasedSecurityStatus возвращает состояние работы VBS числом (2 — «выполняется»).9

Одна оговорка. Всё, что говорит HypervisorPresent, — «работаем ли мы поверх гипервизора»; корневой от дочернего он не отличает. Если запустить его на Windows внутри ВМ, он всё равно вернёт True — как дочерний раздел. Если True на Windows на физическом ПК, этот Windows внутри корневого раздела; читайте вместе со средой выполнения.

7.2. Отличить «работает» от «предпосылки» в systeminfo

Далее классика из командной строки.

systeminfo

Смотрите «Требования Hyper-V» в конце вывода. На машине, где гипервизор ещё не работает, отдельные требования вроде поддержки SLAT и того, включены ли расширения виртуализации, перечислены по одному. На машине, где гипервизор уже работает, вместо требований одна строка: «Обнаружен гипервизор. Возможности, необходимые для Hyper-V, отображаться не будут.»4

Эта одна строка поэтому утверждение, что ваш Windows работает поверх какого-то гипервизора. Как и с HypervisorPresent, нужно читать как «внутри корневого раздела» на физическом ПК или «как дочерний раздел» внутри ВМ.

Даже если каждое требование systeminfo — «Да», это значит только, что сторона оборудования готова. Сама функция Hyper-V доступна в редакциях Pro, Enterprise и Education и отсутствует в Home.10

7.3. Когда проверяете на экране, различайте, какой пункт проверяете

В графическом интерфейсе смотрите строку «Безопасность на основе виртуализации» в «Сводке системы» в msinfo32. Заметьте, что «Виртуализация: включено» на панели ЦП Диспетчера задач показывает только включены ли расширения виртуализации в прошивке, что отдельно от того, работает ли гипервизор.

Как проверить, работает ли гипервизорЕсли systeminfo говорит, что обнаружен гипервизор, вы работаете на гипервизоре (внутри корневого раздела на физическом ПК); если появляется список требований Hyper-V, он ещё не работает, поэтому проверяйте каждое требование вроде SLAT, расширений режима монитора ВМ и DEP, но все Да значит только, что сторона оборудования готова, а у функции Hyper-V ещё есть требование редакцииОбнаружен гипервизорТребования перечисленыВсе ДаЧасть НетЗапустить systeminfoЧто показывает поле требований Hyper-V?Гипервизор работает (внутри корневого на физическом ПК)Гипервизор ещё не работаетВсе требования Да?Сторона оборудования готоваHyper-V ещё нужна Pro/Enterprise/EducationПроверьте соответствующие пункты в UEFI/BIOS и подобном

Рис. 14: Поле «Требования Hyper-V» в systeminfo служит и проверкой состояния работы, и проверкой предпосылок.

8. Три ложных прочтения, которых избегать на практике

8.1. «Мы не включали Hyper-V, значит виртуализация к нашим ПК не относится»

Даже если вы не включали функцию Hyper-V (средства управления и среду выполнения ВМ), гипервизор Windows работает, если включён VBS. Когда расследуете проблему совместимости драйвера, тест производительности или неприятности со сторонним ПО виртуализации, проверяйте HypervisorPresent и состояние работы VBS, а не то, включена ли функция.

8.2. «Диспетчер задач говорит «Виртуализация: включено», значит Hyper-V работает»

Это отображение — о настройке прошивки (доступны ли VT-x/AMD-V). Состояние работы гипервизора судите по «Обнаружен гипервизор» в systeminfo. Наоборот, если Диспетчер задач говорит «Отключено», вы не сможете включить и Hyper-V, и WSL2, поэтому сначала проверьте настройки UEFI/BIOS.

Три проверки, которые легко перепутатьПоле виртуализации Диспетчера задач показывает настройку прошивки, список компонентов Windows — состояние установки, а systeminfo или HypervisorPresent — состояние работы; каждое отвечает на другой вопросЧто хотите узнать?Включены ли расширения виртуализации в прошивке?Установлена ли функция Hyper-V?Работает ли гипервизор прямо сейчас?Панель ЦП Диспетчера задачДиалог компонентов Windowssysteminfo и HypervisorPresent

Рис. 15: Это три независимых вопроса, и выводить два остальных из любого одного отображения — ложное прочтение.

8.3. «Если ВМ медленная, это проблема гостевой ОС»

Ввод-вывод синтетического устройства пересекает VMBus к VSP в корневом разделе и идёт через стек устройства/бэкенда на стороне корневого (физические драйверы плюс обработка виртуального коммутатора и виртуального диска). Если смотреть только счётчики внутри гостя, узкое место, которое сидит в хостовом хранилище или NIC, вы не найдёте. Принцип для проблем производительности ВМ — наблюдать с обеих сторон: гость и хост (корневой раздел).

9. Итог

  • Когда вы включаете Hyper-V, гипервизор работает непосредственно на оборудовании, а хостовый Windows — как корневой раздел.2
  • Ядро гостевой ОС продолжает работать в кольце 0, и только операции, настроенные как перехваты, плюс исключения, передаются гипервизору через VM Exit. Обычные обращения к памяти проходят через трансляцию SLAT.
  • Только корневой раздел держит драйверы физических устройств и стек управления виртуализацией и создаёт дочерние разделы через гипервызовы.2
  • Память становится двухуровневой трансляцией GVA→GPA→SPA, и второй уровень ведётся аппаратно SLAT (EPT/RVI). Актуальный Hyper-V требует SLAT.4
  • Во вводе-выводе устройств доминирует путь синтетического устройства VSC→VMBus→VSP, и производительность зависит также от стека ввода-вывода на стороне хоста.2
  • В Windows 11, потому что VBS по умолчанию включён на устройствах, которые удовлетворяют условиям вроде чистой установки, не редкость, что гипервизор работает даже на ПК, который никогда не пользуется ВМ.1 Состояние работы можно проверить через HypervisorPresent и systeminfo.

Общая картина части 1 сжимается в эту одну схему.

Общая картина части 1Гипервизор сидит под корневым разделом и дочерними разделами; ЦП распределяются планированием виртуальных процессоров (VM Exit только на настроенных перехватах и исключениях), память посредничает двухуровневая трансляция SLAT, ввод-вывод синтетических устройств пересылается по VMBus и обрабатывается VSP корневого раздела, а эмулируемые устройства и Discrete Device Assignment имеют другие путиКорневой раздел и дочерние разделыГипервизорЦП: распределяет виртуальные процессорыПамять: двухуровневая трансляция через SLATУстройства: синтетический ввод-вывод пересылается по VMBusVM Exit только при вмешательствеОбрабатывается VSP на стороне корневогоЭмулируемые устройства и DDA идут другими путями

Рис. 16: Планирование ЦП и трансляцию памяти ведёт гипервизор напрямую (VM Exit только при вмешательстве), а ввод-вывод синтетических устройств посредничает корневой раздел (VSP) по ту сторону VMBus.

Продолжение — часть 2, «Память, которую не видит даже ядро — VBS, HVCI и Credential Guard».

Берём сквозную линию этой статьи — что гипервизор держит таблицы трансляции SLAT — и следим, как Windows создаёт «память, которую не прочитать ни администратору, ни ядру».

Похожие статьи

Смежные области консультирования

KomuraSoft LLC занимается проектированием сред проверки Windows-приложений, расследованием производительности в виртуализованных средах и анализом проблем совместимости драйверов и периферии.

Справочные ссылки

  1. Microsoft Learn, Silicon assisted security. О том, что VBS использует аппаратную виртуализацию, чтобы изолировать Secure Kernel от обычной ОС, и о том, что VBS и HVCI по умолчанию включают на устройствах, которые удовлетворяют предпосылкам при новой установке Windows 11. ↩ ↩2 ↩3

  2. Microsoft Learn, Hyper-V Architecture. О том, что гипервизор даёт разделы как единицу изоляции; корневой раздел создаёт дочерние через API гипервызовов; разделы работают в частном виртуальном пространстве памяти без прямого доступа к физическим процессорам; о ролях VMBus, VSP, VSC и Enlightened I/O; и о том, что требуются аппаратные расширения виртуализации (Intel VT/AMD-V). ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12

  3. Microsoft Learn, Hyper-V architecture (Performance Tuning). О том, что Hyper-V — гипервизор типа 1, корневой раздел владеет физическими устройствами ввода-вывода, а VMBus даёт высокопроизводительный межраздельный обмен, который использует разделяемую память. ↩ ↩2

  4. Microsoft Learn, System requirements for Hyper-V on Windows and Windows Server. О том, что требуются 64-разрядный процессор с SLAT и расширения режима монитора ВМ; о возможности подтвердить, что требования выполнены, в поле «Требования Hyper-V» в systeminfo; о том, что пока гипервизор работает, отображается «Обнаружен гипервизор»; и о том, что Discrete Device Assignment может назначить конкретное устройство напрямую дочернему разделу. ↩ ↩2 ↩3 ↩4

  5. Microsoft Learn, Appendix B: Hyper-V Architecture and Feature Overview. О том, что VMMS (Virtual Machine Management Service) управляет состоянием ВМ в дочерних разделах, и что рабочий процесс (VMWP) стартует в пользовательском режиме в корневом разделе на каждую ВМ. ↩

  6. Microsoft Learn, Comparing WSL Versions. О том, что WSL2 запускает настоящее ядро Linux внутри лёгкой служебной ВМ, и об оговорках при совместном использовании с актуальными VMware и VirtualBox. ↩

  7. Microsoft Learn, Windows Sandbox architecture. О том, что Windows Sandbox — лёгкая среда Windows, которая сочетает технологию контейнеров с изоляцией гипервизором. ↩

  8. Microsoft Learn, Windows Hypervisor Platform. О том, что дан пользовательский API, чтобы сторонний стек виртуализации мог создавать и управлять разделами поверх гипервизора Windows. ↩

  9. Microsoft Learn, Enable Hotpatch for Azure Arc-enabled servers. О том, что состояние работы VBS (виртуальный безопасный режим) можно проверить через VirtualizationBasedSecurityStatus класса Win32_DeviceGuard. ↩

  10. Microsoft Learn, Install Hyper-V. О том, что Hyper-V можно включить на Windows 10/11 Pro или Enterprise и подобных и нельзя установить на редакцию Home. ↩

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

Частые вопросы

Вопросы, которые часто возникают при консультациях по теме статьи.

Если включить Hyper-V, где тогда работает хостовый Windows?
Гипервизор сам распределяет физические ЦП и память, а хостовый Windows работает внутри особого раздела — корневого. Физическими устройствами обычно управляют драйверы на стороне корневого раздела. В корневом разделе лежат драйверы устройств и стек управления виртуализацией, но физическими ЦП распоряжается гипервизор.
Строка «Виртуализация: включено» в Диспетчере задач значит, что Hyper-V уже работает?
Нет. Она показывает лишь, включена ли в прошивке аппаратная поддержка виртуализации ЦП (Intel VT-x/AMD-V). Работает ли гипервизор на самом деле, смотрите по строке «Обнаружен гипервизор» в systeminfo или по свойству Win32_ComputerSystem.HypervisorPresent.
Почему гипервизор работает, хотя я ни разу не создавал ВМ?
В Windows 11 безопасность на основе виртуализации (VBS) по умолчанию включена на устройствах, которые удовлетворяют условиям — например, чистая установка на совместимое оборудование. VBS опирается на гипервизор Windows. То же самое, если вы пользуетесь WSL2 или Windows Sandbox. Гипервизор без какой-либо связи с ВМ — обычная картина, а не редкость.
Что такое SLAT и почему без него Hyper-V не работает?
SLAT (Second Level Address Translation) — механизм, которым ЦП переводит гостевые физические адреса в настоящие физические. На Intel это EPT, на AMD — RVI. Без SLAT гипервизору пришлось бы вести таблицы трансляции программно; по производительности это нереалистично, поэтому актуальный Hyper-V требует SLAT жёстко.
Если включить Hyper-V, VirtualBox и VMware перестанут работать?
Гипервизор использует расширения виртуализации ЦП эксклюзивно, поэтому сторонний гипервизор не может работать прежним способом. У актуальных VirtualBox и VMware есть режим, который работает поверх гипервизора Windows через Windows Hypervisor Platform. Свежие версии этих продуктов могут сосуществовать.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.

Публичные ссылки

Вернуться в блог