jueves, 15 de enero de 2009

Introducción a las extensiones de la máquina virtual

Las extensiones de la máquina virtual definen un soporte de niveles del procesador para las máquinas virtuales en procesadores IA-32. Están soportadas dos clases principales de software: Monitores de máquinas virtuales (VMM), que actúan cono un host y tiene pleno control sobre el procesador/procesadores y otras plataformas hardware; y software guest (cliente, invitado), cada máquina virtual (VM) es un entorno de software guest que soporta una pila que consta de sistema operativo y aplicaciones software. Opera independientemente de otras máquinas virtuales y usa en el mismo interfaz al procesador/procesadores, memoria, almacenamiento, gráficos, y E/S proporcionada por la plataforma física. La pila software actúa como si funcionara en una plataforma real. El software ejecutado en una máquina virtual debe operar con privilegios reducidos para que el VMM pueda retener el control de las fuentes.
El procesador que soporta virtualización proporciona una forma de operación llamada operación VMX. Hay 2 tipos de operación VMX: operaciones raíz VMX y operaciones no raíz VMX. En general, una VMM funcionará en operación raíz VMX y el software guest funcionará en operación no raíz VMX. Las transiciones entre VMX raíz y no raíz se llaman transiciones VMX. Hay 2 tipos de transiciones; hacia raíz (salidas VMX), o hacia no raíz (entradas VMX). El comportamiento del procesador en operaciones raíz VMX es casi total; en operaciones no raíz VMX es restringido y modificado para facilitar la virtualización.
Las operaciones no raíz VMX y las transiciones VMX son controladas por una estructura de datos llamada estructura de control de máquina virtual (VMCS). El acceso a esto está administrado a través de un componente de estado del procesador llamado puntero VMCS (uno por procesador lógico). El valor del puntero es la dirección de 64 bits del VMCS; en este puntero se lee y se escribe con las instrucciones VMREAD, VMWRITE y VMCLEAR.
Antes de que el software del sistema entre en operaciones VMX debe descubrir su presencia y si el procesador lo soporta. Esto se puede determinar usando la instrucción CPUID, y si está soportado se debe activar en el registro CR4.
Hay algunas restricciones en las operaciones VMX:
- El procesador puede fijar ciertos bits en CR0 y CR4 a valores específicos y no soportar otros valores.
- VMXON cae si un procesador lógico está en modo A20M. Una vez el procesador está en operación VMX, las interrupciones A20M se bloquean; por eso es imposible estar en modo A20M en operación VMX.
- La señal INIT se bloquea cada vez que un procesador lógico está en operación raíz VMX (si está en operación no raíz VMX no pasa nada); por lo tanto, los INITs causan salidas de la VM.

No hay comentarios: