Существует много разных способов создания VMM, использующих VMX.Из вашего использования термина «хост-ОС» видно, что вы рассматриваете одну конкретную архитектуру VMM.
Поскольку управление выходом из внешнего прерывания находится в VMCS, VMM может устанавливать его по-разному для каждой виртуальной машины.Если есть хост-операционная система и гостевая ОС, то VMM наверняка установит для контроля внешнего прерывания значение 1 в VMCS для гостя, но может установить для него значение 0 в VMCS для хост-ОС.(В некоторых конструкциях VMM хост-ОС работает в корневом режиме VMX или с выключенным VMX, поэтому это не будет применяться; но в некоторых VMM хост-ОС (также называемая служебной ОС, корневым разделом или Dom0) работает вVM.)
Относительно того, почему VMM может сделать это вместо настройки управления размещенными прерываниями процесса, существует несколько возможных причин:
- VMM был написан до того, как опубликованные прерывания стали доступны.
- VMM предназначен для работы на платформах, которые не поддерживают отправленные прерывания.
- (возможно) Прямая доставка прерываний требует меньше времени и ресурсов процессора и меньше задержка, чем при использовании опубликованных прерываний.
- Отправленная обработка прерываний предназначена для обработки прерываний, назначенных гостевому vcpu.Гостевой vcpu может в данный момент не работать, и когда он работает, физический процессор, на котором он работает, может отличаться.Кроме того, обработка опубликованных прерываний поддерживает случай, когда доставка прерываний может быть отложена до возобновления работы vcpu.
Если VMM хочет, чтобы прерывания хоста всегда доставлялись немедленно на физический ЦП, указанный в месте назначения прерывания, при использовании может не быть никакого значенияразмещенные прерывания для этих прерываний.