Maquinas virtuales

23
Sistemas Operativos Máquinas virtuales

Transcript of Maquinas virtuales

Page 1: Maquinas virtuales

Sistemas Operativos

Máquinas virtuales

Page 2: Maquinas virtuales

Página – 2 –

Máquina Virtual

Una máquina virtual (MV) es un duplicado de una máquina real, eficiente y aislado.

Page 3: Maquinas virtuales

Página – 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.

Page 4: Maquinas virtuales

Página – 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.

Page 5: Maquinas virtuales

Página – 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.

Page 6: Maquinas virtuales

Página – 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

Page 7: Maquinas virtuales

Página – 7 –

MMV: Aplicación

• MMV Capa de software de sistema– Permite que se ejecuten varias MV sobre plataforma HW única– Permite ejecutar aplicaciones sin modificar

...

Virtual Machine Monitor (VMM)

VMnVM0 VM1

Platform HW

I/O DevicesProcessor/CSMemory

VirtualMachines

(VMs)

AppnApp0

Guest OS0

App1

Guest OS1 Guest OSn

Page 8: Maquinas virtuales

Página – 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.

Page 9: Maquinas virtuales

Página – 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.

Page 10: Maquinas virtuales

Página – 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.

Page 11: Maquinas virtuales

Página – 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

Page 12: Maquinas virtuales

Página – 12 –

Virtualización impura

• Solución para arquitecturas no virtualizables y para reducir los problemas de rendimiento.

• Enfoques:– Paravirtualización.– Traducción binaria.

Page 13: Maquinas virtuales

Página – 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.

Page 14: Maquinas virtuales

Página – 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.

Page 15: Maquinas virtuales

Página – 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.

Page 16: Maquinas virtuales

Página – 16 –

Aislamiento

Ventajas de la virtualizaciónConsolidación

Migración

HW

App2App1

OS

HW1 HW2

App2App1

OS1 OS2

VMMHW

App2App1

OS1 OS2

VMM

HW1

App

HW2

VMM

OS

VMM

HW1

App

HW2

VMM

OS

VMMHW

App1 App2

OS OS

Page 17: Maquinas virtuales

Página – 17 –

Usos de la virtualización • Legacy SW Support• Training/QA• Activity Partitioning• Manageability• …

• Server Consolidation• Failover infrastructure• Flexible Datacenter • Manageability• …

CLIE

NTE

SSE

RVID

ORE

S

Page 18: Maquinas virtuales

Página – 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

Page 19: Maquinas virtuales

Página – 19 –

Platform Hardware

VM1

VM Monitor

VM0

Guest OS0

App AppApp ...

... Guest OS1

App AppApp ...

SO y Apps no saben que el MMV existe o que

comparten CPU con otras MV

MMV se ejecuta protegida de las MV

Desafíos de MMV

MMV debe aislar las MV entre si

MMV debe presentar una interfaz a las MV

Page 20: Maquinas virtuales

Página – 20 –

Modos de operación• VMX root:– Totalmente privilegiado.– Pensado para MMV.

• VMX non-root:– No privilegiado.– Pensado para SW huésped.

Page 21: Maquinas virtuales

Página – 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– Carga el estado de MMV

Physical Host Hardware

VM1

VM Monitor

VM0

Guest OS0

App AppApp ...

...Guest OS1

App AppApp ...

VM Exit VM Entry

Page 22: Maquinas virtuales

Página – 23 –

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

Page 23: Maquinas virtuales

Página – 24 –

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