2. Máquina Virtual
Una máquina virtual (MV) es un duplicado
de una máquina real, eficiente y aislado.
Página – 2 –
3. Características
• Duplicado: La MV se debería comportar de forma
idéntica a la máquina real, excepto por:
– La existencia de menos recursos disponibles (incluso
diferentes entre ejecuciones).
– Diferencias de temporización al tratar con dispositivos.
• Aislado: Se pueden ejecutar varias MV sin
interferencias.
• Eficiente: La MV debería ejecutarse a una velocidad
cercana a la del HW real.
– Requiere que la mayoría de las instrucciones se ejecuten
directamente por el HW.
Página – 3 –
4. Tipos de máquinas virtuales
• Máquinas virtuales por proceso
– Ejemplos: Java, .NET Framework
– Máquina virtual instanciada para un proceso.
– Cuando termina el proceso, termina la instancia
de máquina virtual.
• Máquina virtual por sistema
– Virtualización ISA (Instruction Set Architecture).
– Ofrecen un entorno de ejecución completo.
Página – 4 –
5. Algo de historia
• Idea bastante utilizada hasta los 70-80 en
mainframes.
– Cae en desuso con el paso a computadores más
pequeños.
• Renace en esta década
– Seguridad.
– Vista uniforme de Hardware.
– Encapsulación.
• Replicación, checkpointing y reinicio, depuración, ...
• Esto se parece mucho a lo que hace el SO.
Página – 5 –
6. Monitor de Máquina Virtual (MMV)
• Programa que corre sobre el hardware real para
implementar la máquina virtual.
• Control de recursos y planificación de huespedes.
• Implicaciones:
– MMV necesita ejecutarse en modo supervisor.
– Software huésped en modo usuario.
– Instrucciones privilegiadas de huespedes implican traps.
– MMV intrerpreta/emula instrucciones priviletiadas
Página – 6 –
7. MMV: Aplicación
VM0 App0 VM1 App1 VMn Appn
...
Virtual Guest OS0 Guest OS1 Guest OSn
Machines
(VMs)
Virtual Machine Monitor (VMM)
Platform HW
Memory Processor/CS I/O Devices
• MMV Capa de software de sistema
– Permite que se ejecuten varias MV sobre plataforma HW única
– Permite ejecutar aplicaciones sin modificar
Página – 7 –
8. Tipos de MMV
• Clásico: El monitor se ejecuta directamente sobre
el hardware y los huéspedes sobre el monitor.
• Indirecto: El monitor se ejecuta sobre un sistema
operativo y los huéspedes sobre el monitor.
– VMware, Virtual PC, ...
– Ejecución de sistemas operativos en instancias de la
máquina virtual.
– Menos eficiente.
Página – 8 –
9. Requisitos
• Una arquitectura es virtualizable si todas las instrucciones sensibles son
privilegiadas.
• Instrucción sensible
– Cambia el estado privilegiado o lo expone.
• Esto permite que:
– Las instrucciones no sensibles del huesped se ejecuten directamente.
– Las instrucciones sensibles del huesped sean capturadas y
emuladas/simuladas por el MMV.
• Ejecución eficiente.
Página – 9 –
10. Sobrecargas
• VMM necesita mantener el estado privilegiado de
la máquina virtual.
– Puede ser distinto del estado privilegiado de hardware
real.
• VMM necesita simular instrucciones privilegiadas
– Sincronización de estados privilegiados de máquina
virtual y real.
– Tablas de páginas ocultas para virtualización de
Hardware.
Página – 10 –
11. Problemas
• x86: Muchísimos problemas
– PUSH y PSW sensibles y no privilegiadas.
– Tablas de descriptores de segmento y de interrupciones en
memoria virtual.
– Descriptores de segmento exponen el nivel privilegiado.
• Itanium: Casi virtualizable
– Tabla de interrupciones en memoria virtual.
– Instrucción THASH expone la dirección de tabla de páginas.
• MIPS: Casi virtualizable
– Registros de nucleo k0 y k1 accesibles en modo usuario.
– Problemas de rendimiento al virtualizar direcciones KSEG
Página – 11 –
12. Virtualización impura
• Solución para arquitecturas no virtualizables y
para reducir los problemas de rendimiento.
• Enfoques:
– Paravirtualización.
– Traducción binaria.
Página – 12 –
13. Paravirtualización
• Portar el código de SO huesped al ISA modificado.
• ISA
– Aumentado con llamadas explícitas al MMV.
– Eliminación de instrucciones no virtualizables.
• Inconvenientes
– Esfuerzo de desarrollo.
– Necesario repetir para cada combinación de huesped, ISA,
MMV.
– Hace falta código fuente.
Página – 13 –
14. Traducción binaria
• Localizar instrucciones no virtualizables en el
binario ejecutable y cambiarlas por código de
emularción o llamada a MMV.
– Puede detectar combinaciones de instrucciones
sensibles y sustituir por una única emulación.
– No requiere código fuente.
– Permite que algunas emulaciones puedan hacerse
en espacio de usuario.
Página – 14 –
15. Memoria
• Reclamación de memoria
– Carga de un pseudo-driver en el huesped.
– Petición de memoria al huesped.
– MMV puede reusar esa memoria.
• Compartición de páginas
– MMV detecta páginas con contenido indético.
– Página única con COW (Copy On Write).
– Mucho ahorro se se ejecutan varias instancias del mismo SO.
Página – 15 –
16. Ventajas de la virtualización
Aislamiento Consolidación
App1 App2 App1 App2 App1 App2 App1 App2
OS OS OS OS1 OS2 OS1 OS2
HW VMM HW1 HW2 VMM
HW HW
Migración
App App
OS OS
VMM VMM VMM VMM
HW1 HW2 HW1 HW2
Página – 16 –
17. Usos de la virtualización
• Legacy SW Support
CLIENTES • Training/QA
• Activity Partitioning
• Manageability
• …
• Server Consolidation
SERVIDORES
• Failover infrastructure
• Flexible Datacenter
• Manageability
• …
Página – 17 –
18. Intel Virtualization Technology
• Conjunto de mejoras hardware a las
plataformas Intel.
• Diseñado para simplificar el software de
virtualización.
• Dos tecnologías:
– VT-x IA-32 CPU.
– VT-i Itanium
Página – 18 –
19. Desafíos de MMV SO y Apps no saben que el
MMV existe o que
comparten CPU con otras
MV
VM0 VM1 MMV debe aislar las MV
App App ... App App App ... App entre si
...
Guest OS0 Guest OS1
MMV se ejecuta protegida
de las MV
VM Monitor MMV debe presentar una
interfaz a las MV
Platform Hardware
Página – 19 –
20. Modos de operación
• VMX root:
– Totalmente privilegiado.
– Pensado para MMV.
• VMX non-root:
– No privilegiado.
– Pensado para SW huésped.
Página – 20 –
21. Entrada y Salida de Máquinas virtuales
• VM Entry
– Transición de MMV a Huesped.
– Entra en modo non-root.
– Carga el estado del huesped.
– VMLAUNCH instrucción usada en entrada incial.
VMRESUME instrucción usada en llamadas siguientes.
• VM Exit
– VMEXIT instrucción usada para pasar a MMV
– Entra en modo root
– Salva el estado del huesped VM0 VM1
– Carga el estado de MMV App App ... App App App ... App
...
Guest OS0 Guest OS1
VM Exit VM Entry VM Monitor
Physical Host Hardware
Página – 21 –
22. Virtual Machine Control Structure
(VMCS)
• VMCSs son estructuras de control en
memoria
– Solo un VMCS activo por procesador virtual
• VMCS con formato no definido y variable
– VMPTRLD: Establece el puntero al VMCS
– VMREAD/VMWRITE: Instrucciones de acceso a
VMCS
Página – 23 –
23. Beneficios de tecnología VT
• Reduce dependencia del SO
– Elimina necesidad de traducción binaria.
– Facilita el soporte para SO antiguos
• Mejora de robustez
– Elimina la necesidad de técnicas complejas
– MMV más pequeño y simple
• Mejora de rendimiento
– Menos transiciones a MMV
Página – 24 –