virtual-machine - son - tabla de paginas
¿Qué hacen exactamente las tablas de página de sombra(para VMM)? (2)
Cuando el invitado escribe un mapeo en una de sus tablas de páginas, el hipervisor no lo sabrá de inmediato, por lo que las tablas de la página de la sombra no se "sincronizarán" instantáneamente con lo que el invitado pretende.
No precisamente Las tablas de la página de invitados son de solo lectura. Cada vez que hay una actualización (por ejemplo, una nueva asignación agregada) en la tabla de la página del invitado, atrapa al hipervisor y el hipervisor actualiza la tabla de la página de la sombra en consecuencia para estar "en sincronización" con el invitado.
Referencias:
Según tengo entendido, las tablas de páginas ocultas eliminan la necesidad de emular la memoria física dentro de la máquina virtual.
es decir.
En lugar de:
sistema operativo huésped -> VMM + memoria física virtual -> sistema operativo host -> hardware host
Es solo
SO huésped -> VMM -> SO host -> hardware host
Las tablas de la página de la sombra solo permiten que el proceso acceda a la memoria del hardware del host correctamente. Tampoco entiendo cómo funcionarían los fallos de página (o como toda la memoria física es manejada por el host, el host se encarga de los fallos de página, intercambio, etc.).
El hipervisor utiliza las tablas de páginas de la sombra para realizar un seguimiento del estado en el que el huésped "piensa" que deberían estar las tablas de páginas. Al invitado no se le puede permitir el acceso a las tablas de la página de hardware porque entonces esencialmente tendría el control de la máquina. Por lo tanto, el hipervisor mantiene las asignaciones "reales" (virtual del huésped -> host físico) en el hardware cuando el invitado relevante se está ejecutando, y mantiene una representación de las tablas de páginas que el huésped cree que está usando "en las sombras" o en Al menos así es como me gusta pensarlo.
Tenga en cuenta que esto evita el paso de traducción GVA-> GPA.
En cuanto a los errores de página, nada cambia desde el punto de vista del hardware (recuerde, el hipervisor hace que las tablas de páginas utilizadas por el hardware contengan mapeos GVA-> HPA), un error de página simplemente generará una excepción y la redirigirá a apropiado controlador de excepción. Sin embargo, cuando se produce un error de página mientras se está ejecutando una máquina virtual, esta excepción se puede "reenviar" al hipervisor, que luego puede manejarlo de manera apropiada.
El hipervisor debe construir estas tablas de página de sombra, ya que ve fallas de página generadas por el invitado. Cuando el invitado escribe un mapeo en una de sus tablas de páginas, el hipervisor no lo sabrá de inmediato, por lo que las tablas de la página de la sombra no se "sincronizarán" instantáneamente con lo que el invitado pretende. Por lo tanto, el hipervisor construirá las tablas de la página de la sombra, por ejemplo, de la siguiente manera:
- El invitado escribe una asignación para VA
0xdeadbeef
en sus tablas de páginas (una ubicación en la memoria), pero recuerde que el hardware no está utilizando esta asignación. - El invitado accede a
0xdeadbeef
, lo que provoca un error de página porque las tablas de páginas reales no se han actualizado para agregar la asignación - El fallo de la página se reenvía al hipervisor
- El hipervisor mira las tablas de la página de invitados y observa que son diferentes de las tablas de la página de sombra, dice "hey, todavía no he creado una asignación real para
0xdeadbeef
" - Por lo tanto, actualiza sus tablas de página de la sombra y crea una asignación de HPA
0xdeadbeef
-> HPA correspondiente para que el hardware la use.
El caso anterior se denomina error de página oculta porque se debe únicamente a la introducción de la virtualización de la memoria. Por lo tanto, el manejo del error de la página se detendrá en el hipervisor y el sistema operativo invitado no tendrá idea de que haya ocurrido. Tenga en cuenta que el invitado también puede generar fallas de página genuinas debido a las asignaciones que aún no ha intentado crear, y el hipervisor enviará estas copias de seguridad al invitado. Además, tenga en cuenta que todo este proceso implica que cada error de página que ocurra mientras el invitado se está ejecutando debe provocar una salida al VMM para que las tablas de la página de la sombra puedan mantenerse actualizadas. Esto es costoso, y una de las razones por las que se introdujo el soporte de hardware para la virtualización de la memoria. ( here hay una introducción rápida a las tablas de páginas anidadas o extendidas)
Una buena referencia para esto es este libro.