EPT сопоставляет физический адрес гостя с физическим адресом хоста.
До того, как была введена поддержка EPT (аппаратная поддержка GPA‹-->HPA), гипервизору приходилось вручную поддерживать теневую копию записей сопоставлений таблицы гостевых страниц. Записи PTE
в фактической таблице гостевых страниц понизились бы до access permissions
, т. е. если бы это было фактическое разрешение на запись, оно было бы понижено до чтения. Это приведет к page fault
, который будет перехвачен гипервизором.
Гипервизор, в свою очередь, обновит соответствующие записи таблицы теневых страниц. Весь этот процесс был чертовски медленным. Вот почему EPT был введен, чтобы перевод GPA в HPA выполнялся самим аппаратным обеспечением, что намного быстрее.
Так что теперь отвечая на ваш первый вопрос-- Это не так. Если вы хотите виртуализировать ОС без поддержки EPT, вам все равно необходимо поддерживать дополнительные структуры таблиц теневых страниц помимо таблиц страниц гостевой ОС.
Q3-- Guest Virtual Address(GVA)
обычно транслируется аппаратным обеспечением путем обхода таблиц страниц в гостевой ОС, как это было бы сделано в ОС, работающей на собственном оборудовании. Как только мы получим Guest Physical Address(GPA)
после выполнения этого перевода, на сцену выйдет EPT. Теперь оборудование преобразует GPA
в HPA
, поскольку HPA
— это адрес, о котором знает настоящий CPU
.
Нарушение Ept VMExit происходит, когда EPT не имеет существующего сопоставления для guest physical address(GPA)
на host physical address(HPA)
. Это приводит к переходу vmExit в VMM, который создает новое сопоставление. (Нарушения Ept такие же, как ошибка страницы в обычной ОС, с той лишь разницей, что тип создаваемого сопоставления.)
person
abhi
schedule
21.08.2015