Этот вопрос может быть забавным (также я очень плохо знаком с гипервизором). У меня большая путаница по поводу SLAT (, почему он требуется? ). Если я не ошибаюсь, SLAT (преобразование адресов второго уровня)используется для преобразования адреса гостевого виртуального адреса в реальный физический адрес (гостевой виртуальный для физического хоста (исправьте меня, если я не прав, например: guest virt addr -> host virt addr -> host физическогоадрес ). Если HW не поддерживает SLAT, то мы должны использовать теневую таблицу страниц, чтобы сделать то же самое (что является дополнительной нагрузкой на процессор для выполнения дополнительного перевода на SW).
Но мой вопрос не можем ли мы пропустить обработку таблицы страниц , передав фактическую физическую память гостевой ОС и позволяя гостевой ОС обрабатывать то же самое (вместо использования SLAT или теневого пейджинга)?UNMAP несколько банков памяти (диапазон адресов физической ОЗУ) от гипервизора и выделение его для гостевой системы и запуск этого конкретного ЦП с отключенной MMU и точно перед тем, как начать выполнение гостевого кода.не будет ли загрузочный код ядра) работать в гостевой системе, позволить ему создавать свои собственные таблицы страниц и включать MMU вместо SLAT?Когда нам требуется остановить виртуальную машину (в конце гостевой команды opt должен снова остановить MMU), тогда мы можем восстановить пейджинг HV обратно на это конкретное ядро процессора и включить MMU, верно?
Это какая-то дыра /проблема в этом подходе (это имеет смысл?)?Разве мы не можем пропустить SLAT при виртуализации?
( Пожалуйста, прости меня, если мой вопрос не имеет никакого смысла, так как я очень плохо знаком с виртуализацией: (* 1018 *)