
Me imagino que el proceso incluye buscar algún patrón específico en la memoria virtualizada y cambiarlo, pero me pregunto cómo funciona exactamente. ¿Quizás una nueva especie de llamada de BIOS? (Similar al sistema operativo que consulta la hora desde el RTC). Estoy interesado porque me pregunto si podría conectarme yo mismo para una comunicación de datos arbitraria entre el host y el cliente.
Respuesta1
Primero, comprenda que Virtualbox es un programa instalado en el sistema operativo host, por lo que incluye ejecutables, bibliotecas y otros recursos. Muchas de estas bibliotecas llamarán a funciones y servicios del sistema operativo host para realizar su trabajo.
Virtualbox también instala controladores en el kernel del sistema operativo. Estos controladores definen cómo el kernel puede proporcionar interfaces de hardware a la capa de hardware virtual de Virtualbox.
La capa de hardware virtual se encuentra entre el sistema operativo host y el invitado. Para el Anfitrión es simplemente otro programa, pero para el Invitado, parece ser hardware real.
Es importante comprender que Virtualbox como programa se ejecuta mientras el invitado lo está, pero los dos hacen cosas completamente diferentes. Virtualbox está trabajando con el anfitrión para presentar una computadora falsa al invitado, mientras que el invitado simplemente se ejecuta como un sistema operativo en el hardware falso.
Los controladores del sistema operativo no suelen ser adecuados para el huésped o presentan una funcionalidad extremadamente limitada. El invitado no sabe que es una máquina virtual y no puede hacer preguntas al anfitrión. Por eso necesitamos Guest Tools.
Guest Tools actualiza los controladores del sistema con los apropiados para el hardware virtualizado y se comunica con el hardware falso para hacer preguntas como "¿cuál es mi resolución máxima?". VBox, a su vez, pregunta al sistema operativo y le informa al invitado.
Guest Tools también habilita otras funciones como la asignación de carpetas compartidas, mediante la instalación de software en el invitado que puede comunicarse con VBox. Luego, VBox utiliza tecnologías de sistema operativo como canalizaciones con nombre u ole (en Windows) o IPC de red (Linux) para pasar datos de un lado a otro entre él y el sistema operativo host.
La conclusión importante aquí es que el invitado no sabe que es una VM y el host no sabe que se están ejecutando VM. Vbox se sitúa entre los dos y gestiona toda la comunicación. No existe una dependencia extraordinaria del BIOS físico.
Lo que puede hacerte pensar en el BIOS son las Extensiones de virtualización. Comprenda que VT es un conjunto de instrucciones de la CPU y no está relacionado con el BIOS. VBox ejecuta código que ha sido compilado en llamadas de instrucciones VT (cuando corresponda) para que pueda ejecutar instrucciones optimizadas relacionadas con operaciones virtuales. Una vez más, el sistema operativo anfitrión tiene poco que ver con eso.