Таблица Intel EPT представляет собой 4-уровневую таблицу страниц?

Рисунок взят из здесь. введите здесь описание изображения

Q1. Кажется, что таблица EPT содержит полную копию таблицы гостевых страниц, что делает ее 4-уровневой таблицей страниц. Это правильно?

Q2. Разве это не пустая трата места?

Q3. Что именно нарушает EPT? Означает ли это следующее: гость пытается получить доступ к новому гостевому виртуальному адресу (gVA), в таблице EPT еще нет записи для него, поэтому он попадает в VMM и добавляет две записи gVA и gPA в таблицу EPT. Это правильно?


person Junji Zhi    schedule 15.04.2015    source источник


Ответы (3)


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

Мои 2 цента, пожалуйста, поправьте меня, если я ошибся в памяти.

Q1: Нет, EPT хранит сопоставление GPA и HPA. При использовании EPT таблица гостевых страниц поддерживается только в гостевой системе.

Q2: Без EPT вместо этого VMM должен поддерживать таблицу теневых страниц. Так что я не думаю, что EPT тратит место впустую.

Q3: EPT хранит сопоставление GPA с HPA. В этом случае сопоставление GPA и GVA поддерживается в гостевой системе.

person Wayne    schedule 05.05.2015

Мой маленький вклад, опоздавший на год...

Q1: Да, EPT похож на дерево трансляции mmu (4 уровня или меньше), но он переводит GPA в HPA (физические адреса гостей в физические адреса хоста).

Q2:Для виртуализации необходимо дерево трансляции (теневое или EPT), так что это не пустая трата места. Аппаратный перевод быстрее, чем теневой (программный) и предотвращает vmexit, который замедляет процесс.

Q3: да, нарушение EPT происходит как отказ страницы, но также происходит и при нарушении прав доступа. EPT позволяет точно контролировать доступ к странице (чтение, запись, выполнение).

person Gilles    schedule 23.05.2016