Поддержка виртуальных машин. Общий обзор

advertisement
Программная архитектура процессора.
Поддержка виртуальных машин
09.12.2015
Вопрос № 27
Поддержка виртуальных машин
Общий обзор
Что такое виртуальная машина?
Виртуальная машина – это программная среда исполнения,
которая «выглядит» для операционной системы как отдельный
независимый компьютер (возможно, многопроцессорный)
o Т.е. операционные системы и драйверы взаимодействуют с
компьютером «прозрачно», как если бы они исполнялись на
оборудовании непосредственно
Процессор Intel 64 предоставляет механизм создания и
исполнения виртуальных машин VMX (Virtual Machine eXtension)
o CPUID.1:ECX.VMX[bit 5] = 1
Виртуальная среда
•
•
Физическая среда
Прикладные задачи
Операционная
система (ОС)
Монитор виртуальной среды
Компьютер
Компьютер
ОС 1
ОС 2
ОС 3
Состояния процессора
•
•
Процессор может находиться в двух состояниях
o non-VMX – обычное (изученное в курсе)
o VMX – состояние поддержки виртуальной среды
У состояния VMX есть два режима работы
o VMX root operation – предназначен для исполнения
монитора виртуальной среды (VMM – virtual-machine
monitor). В этом режиме процессор имеет полный доступ к
оборудованию.
o VMX non-root operation – предназначен для исполнения
«гостевого» программного обеспечения (VM - виртуальных
машин). В этом режиме процессор имеет ряд ограничений,
но их наличие невозможно установить программным путем
даже в нулевом кольце.
Digital Design
1
Программная архитектура процессора.
Поддержка виртуальных машин
09.12.2015
Диаграмма переходов
VMX operation
Команда
VMXON
•
•
VM-entry
VMM
VM-exit
Guest n
VM-exit
VM-entry
Guest 0
Команда
VMXOFF
Вход и выход в состояние VMX (только в режим root operation)
осуществляется командами VMXON и VMXOFF
Переход от монитора (VMM) к гостевому программному обеспечению
и обратно осуществляется процедурами VM-entry и VM-exit
VMCS
В состоянии VMX каждый виртуальный процессор определяется
структурой данных VMCS (virtual machine control data structure)
VMCS имеет размер до 4K и содержит следующие области
o Область состояния гостевого ПО (Guest State Area). Загружается
при VM-entry и сохраняется при VM-exit
o Область состояния VMM (Host State Area). Загружается при VM-exit.
o Область управления VM (VM-execution control fields). Определяет
поведение процессора в режиме non-root. В частности, условия
запуска VM-exit
o Область управления VM-exit (VM-exit control fields). Управляет
ходом VM-exit
o Область управления VM-entry (VM-entry control fields). Управляет
ходом VM-entry
o Область информации VM-exit (VM-exit information fields). Содержит
информацию о причине VM-exit. Только для чтения.
•
•
Область состояния гостевого ПО
(Guest State Area)
•
•
Предназначена для хранения состояния виртуального процессора
o Состояние процессора загружается из этой области при
исполнении VM-entry
o Состояние процессора сохраняется в эту область при
исполнении VM-exit
Содержит следующую информацию
o Состояние регистров (CR0, CR3, CR4, RSP, RIP, сегментные,
GDTR, IDTR, TR, некоторые MSR’s, …)
o Состояние процессора (активен, исполняет HLT, ждет startup
IPI, отключен по критической ошибке)
o Значение таймера виртуализации, которое будет загружено
при следующем VM-entry.
o Другое…
Digital Design
2
Программная архитектура процессора.
Поддержка виртуальных машин
09.12.2015
Область состояния VMM
(Host State Area)
Предназначена для хранения состояния монитора
виртуальной среды
o Состояние процессора загружается из этой области при
исполнении VM-exit
Содержит следующую информацию
o Состояние регистров (CR0, CR3, CR4, RSP, RIP, RFLAGS,
сегментные, GDTR, LDTR, IDTR, TR, некоторые MSR’s, …)
o Некоторая дополнительная информация, зависящая от
конкретной модели процессора
•
•
VM-entries
•
•
Для запуска процедуры VM-entry предназначены команды
VMLAUNCH and VMRESUME
Действия, выполняемые процедурой VM-entry определяются
состоянием области VM-entry control fields, которая содержит:
• Список MSR’s, которые нужно загрузить и адрес области, где
они хранятся
• Флаги определяющие необходимость загрузки регистров
отладчика (DR)
• Флаг, определяющий работу гостевого ПО в 64- или 32разрядном режиме
• Данные, позволяющие войти в гостевое ПО, с
использованием механизма Event Injection
• Этот механизм позволяет произвести возврат в гостевое
ПО как возврат из прерывания (исключения)
VM-exits
•
•
В отличие от VM-entries, которые запускаются монитором с
помощью специальных команд, VM-exits выполняются в случае
наступления специальных событий при исполнении гостевого
ПО
o Исполнение некоторых команд
o Исключения
o Прерывания
o Переключение задач
o Обнуление таймера VMX (специальный счетчик, значение
которого постоянно уменьшается)
o Поступление внешних сигналов
VM-exits происходят «незаметно» для гостевого ПО
o Этим они похожи на прерывания, только прерванным может
оказаться и ядро ОС, даже в процессе обработки
прерываний
Digital Design
3
Программная архитектура процессора.
Поддержка виртуальных машин
09.12.2015
Команды, вызывающие VM-exit
Попытка исполнения некоторых команд гостевым ПО всегда
вызывает VM-exit
o CPUID, INVD, все команды VMX, некоторые другие команды
Некоторые команды вызывают VM-exit в соответствии с
условиями, заданными в области VM-execution control fields
o LGDT, LIDT, LLDT, LTR, SGDT, SIDT, SLDT, STR
o MOV в управляющие регистры CR
o PAUSE, MWAIT, HLT, RDRAND, WBINVD, CLFLUSH
o RDTSC, RDTSCP
 Если VM-exit не вызывается, то к TSC может быть
добавлена знаковая константа, хранящаяся в VM-execution
control fields
Команды записи и чтения в порты IN, INS/INSB/INSW/INSD, OUT,
OUTS/OUTSB/OUTSW/OUTSD вызывают VM-exit в соответствии с
битовой маской, определяющей условия для каждого порта
•
•
•
Преобразование адреса
•
Современная архитектура VMX имеет два механизма,
позволяющих оптимизировать управление памятью при
переключении виртуальных машин
o Virtual Processor Identifiers (VPIDS) – позволяет
сохранять TLB и внутренний кэш, хранящий
информацию о структуре страниц. Это достигается
путем использования уникального идентификатора для
каждого виртуального процессора и сопоставления с
каждым из них своей области кэш
o The Extended Page-Table mechanism (EPT) – позволяет
рассматривать физические адреса режима non-root,
как «гостевые физические адреса» и преобразовывать
их в реальные адреса физической памяти
•
Прерывания могут исполняться внутри гостевого программного
обеспечения (т.е. без запуска VM-exit)
Для обеспечения независимости виртуальных машин требуется
виртуализация не только процессора но и контроллера прерываний
(APIC)
Для каждого виртуального APIC создается 4KB структура (Virtual APIC
Page)
o Адрес этой структуры находится в VMCS
o Virtual APIC Page используется для хранения состояния APIC и
виртуализации его регистров и виртуализации MSR’s, связанных с
управлением прерываниями
Виртуализация прерываний
•
•
Архитектура виртуализации не
столько сложна, сколько объемна
А наш курс закончен
Digital Design
4
Download