Открыть список
Как стать автором
Обновить

Комментарии 8

Хорошая вводная шпаргалка получилась, но "маловато будет" :) Раскрывайте тему, как эмулируются аппаратные устройства, как работает паравиртуализация на KVM, устройства virtio-net, -blk, -balloon. Проброс реальных устройств с помощью IO-MMU. Получится замечательная серия.

Ещё забыли упомянуть, что фактически любая ОС после запуска гипервизора становится гостем, в «правляющем дмене». Интересен так же порядок загрузки кипервизора, используемые инструкции процессора для перехода в ring-1, маскировка ввода-вывода, таблицы трансляции, обработка прерываний уровня гипервизора. Больше хардкора в ядре KVM (игра слов).
KVM это божественно.
Не могу себе представить нормальное существование без него.
Напишите в комментариях, в каких местах я не правильно понимаю тему или если есть, что дополнить.

Уважаемый автор. Ваше понимание принципов работы гипервизора неправильное почти полностью. Трудно написать, где вы ошибаетесь, поскольку для этого придётся написать новую статью.
Напишите пожалуйста обоснованно и внятно, с чем конкретно Вы не согласны по тексту статьи и что хотели бы добавить.
1. В 64-разрядном режиме современных процессоров нет 4 колец защиты. Есть только System и User. 32-разрядный режим стремительно уходит в прошлое, поэтому кольца защиты это прошлый век.
2. Внутри виртуальной машины полностью воссоздаются те же самые режимы System и User. (либо Ring0 + Ring3 в 32-разрядном режиме). То есть на рисунке это должно выглядеть не в виде колец, а как два рисунка в виде двух вселенных, соединённых чёрными дырами VMEXIT-ов и VMRESUME-ов.
3. Ring -1 это такое больше «поэтическое» сравнение для гипервизора, чтобы как-то объяснить на пальцах его преимущественное право обработки аппаратных прерываний с непосредственным VMEXIT.
4. При выключенном EPT гипервизор строит таблицу трансляции виртуальных адресов ВМ в физические адреса хоста и ловит обращения к памяти виртуальных устройств по #PF. При включенном EPT гипервизор строит таблицу трансляции физических адресов ВМ в физические адреса хоста и ловит обращения к памяти виртуальных устройств по EPT Violation. Далее идёт эмуляция в текущем режиме работы гипервизора, коим является режим System (Ring0 для 32-разрядных систем). Если тут же рядышком крутится ядро хостовой интерактивной ОС, то такой гипервизор называется II-типа. Если же всё работает через SR-IOV, которым управляет гипервизор, то драйверы таких устройств можно погрузить в начальную ВМ, как это делает Hyper-V и KVM и это называется гипервизором I-типа, что резко увеличивает требования к аппаратуре.

5,6,7,8 итд рассказывать просто лень, сорри.
1. В 64-разрядном режиме современных процессоров нет 4 колец защиты. Есть только System и User. 32-разрядный режим стремительно уходит в прошлое, поэтому кольца защиты это прошлый век.

Вынужден пошатнуть вашу уверенность
In IA-32e mode, the CS descriptor’s DPL is used for execution privilege checks (as in legacy 32-bit mode)
© Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3 (3A, 3B, 3C & 3D):System Programming Guide

Да, только вот базового адреса и предела нет. А без них ценность DPL уходит полностью. При отсутствующей сегментации невозможно в одном адресном пространстве создать градации привилегий, кроме как через таблицы страниц.

Но вообще пример прикольный! Я про этот DPL забыл напрочь.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.