Sistemas Operativos


Máquinas virtuales
Máquina Virtual

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




  Página – 2 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
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 –
Modos de operación
• VMX root:
  – Totalmente privilegiado.
  – Pensado para MMV.


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



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

Maquinas virtuales

  • 1.
  • 2.
    Máquina Virtual Una máquinavirtual (MV) es un duplicado de una máquina real, eficiente y aislado. Página – 2 –
  • 3.
    Características • Duplicado: LaMV 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áquinasvirtuales • 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áquinaVirtual (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 arquitecturaes 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 necesitamantener 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ísimosproblemas – 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ónpara arquitecturas no virtualizables y para reducir los problemas de rendimiento. • Enfoques: – Paravirtualización. – Traducción binaria. Página – 12 –
  • 13.
    Paravirtualización • Portar elcó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 • Localizarinstrucciones 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 dememoria – 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 lavirtualizació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 lavirtualizació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 Salidade 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 ControlStructure (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íaVT • 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 –