Технологии аппаратной виртуализации
Что это?
Зачем?
Какие преимущества?
Немного истории
Эволюция уровней абстрагирования программных платформ
Многозадачность
HyperThreading
Виртуализация
Преимущества аппаратной виртуализации
Аппаратная виртуализация
Архитектура VM
Требования к гипервизору
Временное мультиплексирование
Разделение ресурсов
Посреднический доступ к физ. ресурсам
Все вместе
Виртуализация: стратегии реализации
IA-32
Управление памятью в IA-32
Дескриптор сегмента
Кольца защиты
Механизм защиты
Механизм защиты
Проблемы работы гипервизора
Классическое решение
Вот так вот
Решение для IA-32
Проблемы виртуализации
Проблемы виртуализации
Ring Aliasing
Address-Space Compression
Excessive Faulting
Виды инструкций
Non-trapping instructions
Interrupt Virtualization
Access to Hidden State
Ring Compression
Frequent Access to Privileged Resources
Решение проблем виртуализации при помощи VT-x
Что необходимо?
Инструкции
VMX-операции
Жизненный цикл
Virtual Machine Control Structure
Virtual Machine Control Structure
Virtual Machine Control Structure
Переходы WMX
Address-Space Compression
Ring Aliasing and Ring Compression
Non-faulting Access to Privileged State
Guest System Calls
Interrupt Virtualization
Access to Hidden State
1.62M
Категория: ИнформатикаИнформатика

Технологии аппаратной виртуализации

1. Технологии аппаратной виртуализации

Доклад подготовил:
студент группы
ЭВМб-14-1
Русецкий Никита

2. Что это?

• Виртуализация – технология, позволяющая запускать на
одном физическом компьютере, называемом «хостом»,
несколько виртуальных операционных систем, называемых
«гостевыми ОС»
Гостевая
ОС
Гостевая
ОС
Хост
2
Гипервизор
Гостевая
ОС

3. Зачем?

• Для обеспечения независимости гостевых ОС от
аппаратной платформы;
• Для сосредоточения нескольких виртуальных машин на
одной физической.
3

4. Какие преимущества?

Обеспечивается существенная экономия на аппаратном
обеспечении и обслуживании;
Упрощается процедура резервного копирования и
восстановления после сбоев.
4

5. Немного истории

• 1985 год – аппаратная виртуализации впервые была
воплощена в 386-процессорах (V86 mode)
• 1998 год – компания Vmware запатентовала программные
техники виртуализации
• Вслед за Intel AMD выпускает процессоры с поддержкой
аппаратной виртуализации
5

6. Эволюция уровней абстрагирования программных платформ

6
Виртуализация
HyperThreading

7. Многозадачность

• Многозадачность – первый
уровень абстракции
приложений. Каждое
приложение разделяет
ресурсы физического
процессора в режиме
разделения исполнения
кода по времени
7
Приложени
е
Приложени
е
Приложени
е
Операционная система
ЦПУ

8. HyperThreading

• Технология HyperThreading
в широком смысле
представляет собой
аппаратную технологию
виртуализации.
• В рамках одного
физического процессора
происходит симуляция двух
виртуальных процессоров с
помощью техники Symmetric
Multi Processing (SMP).
8
Приложени
е
Приложени
е
Приложени
е
Операционная система
ЦП
ЦП
ЦП (Symmetric Multi Processing)

9. Виртуализация

• Виртуализация
представляет собой
эмуляцию нескольких
виртуальных процессоров
для каждой из гостевых ОС.
• Технология SMP позволяет
представлять несколько
виртуальных процессоров в
гостевой ОС при наличии
технологии HyperThreading
или нескольких ядер в
физическом процессоре.
9
Application
Application
Application
Guest OS
Guest OS
Guest OS
Virtual
Hardware
Virtual
Hardware
Virtual
Hardware
Hypervisor (Hyper-V, Xen, ESX Server)
Hardware (CPU, Memory, NIC, Disk)

10. Преимущества аппаратной виртуализации

+Упрощение разработки платформ виртуализации
+Возможность увеличения быстродействия платформ
виртуализации
+Возможность независимого запуска нескольких
виртуальных платформ
+Отвязка гостевой системы и архитектуры хостовой
платформы и реализации платформы виртуализации
10

11. Аппаратная виртуализация

Принципы работы
11

12. Архитектура VM

• Монитор виртуальных машин (Virtual Machine Monitor) или
Гипервизор (Hypervisor) обеспечивает или позволяет
одновременное, параллельное выполнение нескольких
операционных систем на одном и том же хост-компьютере.
• Гипервизор также обеспечивает изоляцию операционных
систем друг от друга, защиту и безопасность, разделение
ресурсов между различными запущенными ОС и
управление ресурсами.
12

13. Требования к гипервизору

• Гипервизор должен быть способен к:
• Самозащите от ПО гостевой машины
• Изоляции одной гостевой ОС от другой
• Предоставлению интерфейса гостевому ПО
• Чтобы достичь этого, гипервизор должен иметь доступ к:
• ЦП, памяти и устройствам ввода/вывода
• Способы разделения ресурсов между виртуальными
машинами:
• Временное мультиплексирование
• Разделение ресурсов
• Посреднические аппаратные интерфейсы
13

14. Временное мультиплексирование

• Виртуальной машине разрешен доступ к ресурсам на
определенный период времени перед тем, как произойдет
переключение к другой виртуальной машине
Виртуальная машина
#2
Виртуальная машина
#1
Гипервизор
14
ЦП

15. Разделение ресурсов

• Гипервизор распределяет «объем владения» физическими
ресурсами между виртуальными машинами
Виртуальная машина
#2
Виртуальная машина
#1
Гипервизор
Механизм перераспределения /
защиты
ЦП
15
Хранилище Память
Дисплей

16. Посреднический доступ к физ. ресурсам

• Гипервизор сохраняет владение физическими ресурсами
Виртуальная машина
#2
Виртуальная машина
#1
Гипервизор
16
Сеть
Клавиатура Мышь

17. Все вместе

• Гипервизор применяет все три метода для создания
иллюзии, что гостевая ОС запускается в естественной
Виртуальная машина
Виртуальная машина
Виртуальная машина
Виртуальная машина
среде
#1
#2
#3
#4
Сеть
Клавиатура Мышь
Гипервизор
ЦП
17
ЦП
Хранилище Память
Дисплей

18. Виртуализация: стратегии реализации

18

19. IA-32

• IA-32 обеспечивает 4 уровня привилегий (кольца защиты)
• Защита, основанная на сегментах
• Разделенная между 4 кольцами
• Защита, основанная на страницах
• Разделяет только режимы пользователя и супервизора
• Режим пользователя: код исполняется в 3 кольце
• Режим супервизора: код исполняется в 0-2 кольцах
19

20. Управление памятью в IA-32

Кольца защиты
• Механизм колец строго
ограничивает пути, с
помощью которых
управление можно передать
от одного кольца к другому,
а также предписывает
ограничения на операции
доступа к памяти, которые
могут быть произведены
внутри кольца.
Кольцо 3Классическая Минимум
Кольцо 2 архитектура привилегий
Кольцо 1
Кольцо 0
Кольцо -1
Кольцо
Кольцо 0-2
Ядро
SMM
Гипервизор
Ядро
Драйвера устройств
Драйвера устройств
Приложения
22
Максимум
привилегий

21. Дескриптор сегмента

Механизм защиты
• Содержание селектора сегмента данных полностью
загружается в различные сегментные регистры, такие как
SS («Stack segment register») и DS («Data segment register»)
Запрашиваемы
й уровень
привилегий
16 bits
15
16 bits
23
15
Data segment selector
T RP
Index (3-15)
I L
2
0
Code segment selector
T СP
Index (3-15)
I L
2
0
Текущий
уровень
привилегий

22. Кольца защиты

Механизм защиты
• MAX() выбирает наименее привилегированные CPL и RPL и
сравнивает их с уровнем привилегий дескриптора (DPL).
• Идея RPL заключается в том, чтобы позволить коду
ядра
CPL всегда
загружать сегмент с использованием пониженных привилегий.
равен
уровню
привилегий
ЦП
Current code segment register
CP
L
Уровень
привилегий
дескриптора
Data segment selector being loaded
T RP
I L
Selects
24
Segment descriptor
DP
L
True: segment
load ok
MAX(CPL,
RPL) <=
DPL
False: Generalprotection
exception

23. Механизм защиты

Проблемы работы гипервизора
• ОС и приложения ВМ не должны знать,
что существует гипервизор или то, что
они разделяют ресурсы ЦП с другими
ВМ
• Гипервизор должен изолировать
системное ПО гостевых ОС друг от
друга
• Гипервизор должен исполняться
защищенно от гостевой ОС
• Гипервизор должен предоставлять
платформенный интерфейс для
25
системного ПО гостевой ОС

24. Механизм защиты

Классическое решение
• «Trap-and-emulate»
• Запускать гостевую ОС в депривилегированном режиме
• Все инструкции, требующие привилегий, исполнять в гипервизоре
• Гипервизор эмулирует инструкции, например, использует
виртуальные прерывания, а не физические
26

25. Проблемы работы гипервизора

Вот так вот
Без «Ring Deprivileging»
Приложени
я
Кольцо 3
Ядро ОС
Кольцо 0
Приложени
я гостевой
ОС
Кольцо 3
Гостевая
ОС
Кольцо 1
Гипервизор
Кольцо 0
С «Ring Deprivileging»
Приложени
я гостевой
ОС
Кольцо 3
Гостевая
ОС
Гипервизор
27
Кольцо 0
Модель «0/1/3»
Модель «0/3»

26. Классическое решение

Решение для IA-32
• Любое гостевое ПО должно исполняться на кольце
выше нулевого
• Привилегированные инструкции генерируют
исключеня => гипервизор запускается на кольце 0
для обработки ошибок
• Гостевая ОС не должна вмешиваться в работы
гипервизора
• Гипервизор переводит привилегированные
инструкции в форму, в которой они могут быть
исполнены ОС
• Любая непривилегированная инструкция, созданная
ОС или приложением, должна исполняться на
виртуальной машине
• Гостевая ОС может быть лишена привилегий двумя
путями:
28
• Она может исполняться на кольце 1 (модель 0/1/3)
• Или же на кольце 3 (модель 0/3/3)
Гостевая ОС
запускается либо
здесь (3 кольцо)
Кольцо
0
Ядро
Либо здесь (1 кольцо)

27. Вот так вот

Проблемы виртуализации
29

28. Решение для IA-32

Проблемы виртуализации
• Ring Aliasing
• Address-Space Compression
• Excessive Faulting
• Non-trapped instructions
• Interrupt Virtualization
• Ring Compression
30

29. Проблемы виртуализации

Ring Aliasing
Гостевое ПО
(3 кольцо)
• Возникает, если ПО исполняется на
уровне, отличном от том, для которого
оно было написано
• Последствия:
Кольцо
0
Ядро
• Система может определить, что
исполняется не на своём уровне
привилегий (возвращается General
Protection Exception)
Гостевая ОС
(1 кольцо)
31
Гипервизо
р (0
кольцо)

30. Проблемы виртуализации

Address-Space Compression
• Гипервизор может полностью работать в адресном
пространстве гостевой ОС, но он будет использовать
значительную его часть
• Гипервизор может работать в отдельном адресном
пространстве, но он должен использовать минимальное
пространство гостевой ОС для управления переходами
между гостевым ОС и гипервизором (IDT и GDT для IA-32)
32

31. Ring Aliasing

Excessive Faulting
• SYSENTER всегда выполняет переход к уровню привилегий 0, а
SYSTEXIT возвращает ошибку, если выполняется вне кольца 0
(General Protection Exception)
• Эмуляция SYSENTER* и SYSEXIT** вызывает серьезные
проблемы с производительностью
• *SYSENTER – механизм быстрого системного вызова, команда оптимизирована
для наиболее быстрого перехода на нулевой уровень привилегий
• **SYSEXIT – механизм быстрого системного вызова, команда оптимизирована
для наиболее быстрого перехода на уровень привилегий 3 с уровня привилегий
0.
33

32. Address-Space Compression

Виды инструкций
• Инструкции
• По уровню привилегий
• Привилегированные
• Непривилегированные
Изменяют часть
ресурсов машины
• Sensitivity
• Sensitive
• Non-sensitive
• При выполнении в пользовательском режиме, привилегированные
команды «отлавливаются».
• «Отлавливание» («Trapping») означает, что машина принудительно
переходит в системный режим, посредством чего выполняет
некоторый код операционной системы, чтобы справиться с ситуацией
• В некотором смысле, отлавливание предупреждает операционную
систему об исполнении команд
34

33. Excessive Faulting

Non-trapping instructions
• Проблема в том, что не все sensitive-инструкции X86
являются привилегированными инструкциями. Это означает,
что модификация ресурса может произойти без ведома
VMM, что может быть опасным
35

34. Виды инструкций

Interrupt Virtualization
• Механизм маскировки внешних прерываний для
предотвращения их вызова, когда ОС не готова – большая
проблема для гипервизора
• Гипервизор должен управлять маскированием прерываний,
чтобы предотвратить маскирование внешних прерываний
гостевой операционной системой
• IA-32 использует флаг прерываний (IF) в регистре EFLAGS
для управления прерыванием маскировки. IF = 0, если
прерывания маскируются
36

35. Non-trapping instructions

Access to Hidden State
• Некоторые компоненты процессора не представлены в виде
доступных системному ПО регистров
• IA-32 содержит скрытый кэш дескриптора для сегментного
регистра
37

36. Interrupt Virtualization

Frequent Access to Privileged Resources
• Существует риск падения производительности, когда
многократно осуществляется доступ к привилегированным
ресурсам с последующей генерацией ошибок и исключений,
которые должны быть обработаны гипервизором
39

37. Access to Hidden State

Решение проблем
виртуализации при помощи
VT-x
40

38. Ring Compression

Что необходимо?
• Virtual Machine eXtensions (VMX) определяют поддержку
виртуальных машин на x86 –платформе на уровне
процессора
• Расширенный набор инструкций:
• VMPTRLD, VMPTRST, VMCLEAR, WMREAD, WMWRITE,
WMCALL, WMLAUNCH, WMRESUME, WMXON и WMXOFF.
WMX
CPU
41

39. Frequent Access to Privileged Resources

Инструкции
42
Инструкция
Описание
VMXON, WMXOFF
Вход и выход из режима VMW-root
WMLAUNCH
Начальный переход от гипервизора к гостевой
ОС, вводит WMX в non-root режим
WMRESUME
- Используется для последующих входов
- Вступает в WMX non-root режим работы
- Загружает состояние гостевой ОС и
критерий выхода из VMCS
WMEXIT
- Используется при переходе из гостевой ОС
в гипервизор
- Вступает в WMX root режим работы
- Сохраняет состояние гостевой ОС в VMCS
- Загружает состояние VMM из VMCS
WMPTRST, VMPTRL
Считывает и записывает указатель VMCS
WMREAD, WMWRITE, WMCLEAR
Читает из VMCS, пишет в него и очищает

40. Решение проблем виртуализации при помощи VT-x

VMX-операции
• Два режима:
• Root – полностью привилегированный, предназначенный для VMM
• Non-root – не полностью привилегированный, предназначенный
для гостевого ПО
• Оба режима поддерживают все четыре уровня привилегий
от 0 до 3
43

41. Что необходимо?

Жизненный цикл
Guest OS 1
Guest OS 2
WMRESUME
Точка входа в
гостевую ОС
WMLAUNCH
VMXON
44
Передача
управления
гипервизору
WMRESUME
WMLAUNCH
Hypervisor
WMXOF
Выход из
режима
виртуализации

42. Инструкции

Virtual Machine Control Structure
• Virtual Machine Control Structure (VMCS) – структура,
главной целью которой является сохранение состояний
«гостя» и «хозяина».
VMLANUCH /
VMRESUME
Активно
е
состояни
е
CPU
VMEntry
VMExit
Заголовок
Параметры
входа и
выхода
Состояние
хозяина
Состояние
гостя
VMCS
45

43. VMX-операции

Virtual Machine Control Structure
• Управляет поведением процессора в non-root режиме и
работой с VMX
• Конфигурируется гипервизором
• Управляет закрытием гостевой ОС при помощи VMCS
указателя
46

44. Жизненный цикл

Virtual Machine Control Structure
• Состоит из шести логических групп:
• Guest-state area: состояние процессора сохраняется в область
состояния гостя при закрытии WM из подгружается во время ее
загрузки
• Host-state area: состояние процессора подгружается из области
состояния хоста при закрытии WM
• VM-execution-fields: поля, управляющие работой процессора в
режиме non-root
• VM-exit control fields: поля, управляющие выходом WM
• VM-entry control fields: поля, управляющие входом WM
• VM-exit information fields: read-only поля, получающие информацию
при закрытии WM, описывающие причину завершения работы WM
47

45. Virtual Machine Control Structure

Address-Space Compression
• Каждый переход между гостевым ПО и гипервизором может
изменять линейное адресное пространство, позволяя
гостевому ПО полностью использовать его
• Переходы WMX управляются VMCS, который находится в
физическом адресном пространстве, а не в линейном
49

46. Virtual Machine Control Structure

Ring Aliasing and Ring Compression
• VT-x позволяет гипервизору запускать гостевое ПО на
уровне предполагаемых привилегий:
• Устраняет проблемы со смещением кольца – такая инструкция, как
PUSH (CS регистра) не может обнаружить, что ОС запускается в
виртуальной среде
• Устраняет проблемы сжатия кольца, возникающие, когда гостевая
ОС выполняется на том же уровне привилегий, что и гостевые
Application
Application
приложенияRing 3
Ring 0
VMX Root
Guest OS
Guest OS
Virtual Machine Monitor
Intel Virtualization Technology
50
Shared Physical Hardware

47. Virtual Machine Control Structure

Non-faulting Access to Privileged State
• VT-x избегает этой проблемы двумя способами:
• Генерация VMExits во время каждого завершения
• Обеспечивает конфигурацию прерываний и исключений
51

48. Переходы WMX

Guest System Calls
• Проблемы возникают с инструкциями SYSENTER и
SYSEXIT, когда гостевая ОС исполняется вне 0 уровня
привилегий. Эта проблема решена, потому что гостевая ОС
может исполняться на 0 уровне.
52

49. Address-Space Compression

Interrupt Virtualization
• VT-x обеспечивает поддержку виртуализации прерываний
• Он включает в себя компонент управления работой
виртуальной машины, управляющий внешними
прерываниями
53

50. Ring Aliasing and Ring Compression

Access to Hidden State
• VT-x включает в гостевой области VMCS поля, отвечающие
за состояния ЦПУ, которые не представлены в доступных
программному обеспечению регистрах
• Процессор загружает значения из этих полей при каждом входе
виртуальной машины и сохраняет их при выходе
54

51. Non-faulting Access to Privileged State

Frequent Access to Privileged Resources
• VT-x позволяет гипервизору избежать лишних расходов на
частый доступ к TPR (Task Priority Register)
• Гипервизор может настроить VMCS так, чтобы он вызывался
только тогда, когда требуется
55

52. Guest System Calls

VT-x
Ring 3
Application
Application
Ring 3
Application
Application
Ring 1
Guest OS
Guest OS
Ring 0
Guest OS
Guest OS
Ring 0
Virtual Machine Monitor
Shared Physical Hardware
VMX Root
Virtual Machine Monitor
Intel Virtualization Technology
Shared Physical Hardware
Pre VT-x
Post VT-x
Ring 0 понижает привилегии гостевой ОС
Гипервизор исполняется в «root mode»
Гостевая ОС знает, что она исполняется не
на Ring 0
Гостевая ОС исполняется прямо на
«железе»
«Ring deprivileging» для гостевых ОС убран
56

53. Interrupt Virtualization

Заключение
• Поддержка технологий аппаратной виртуализации в
процессорах открывает широкие перспективы по
использованию виртуальных машин в качестве надежных,
защищенных и гибких инструментов для повышения
эффективности виртуальных инфраструктур
57

54. Access to Hidden State

Спасибо за внимание!
58
English     Русский Правила