Virtualizacion
- Se utiliza la virtualización para que una sola máquina física tenga más de una "máquinas virtuales" (VMs) corriendo softwares aislados entre sí
- El único software corriendo en modo kernel es el hipervisor que es más pequeño que un SO entero
- También se pueden usar para ejecutar software descontinuado
Ventajas
- Un fallo en una máquina virtual (VM) no hace que las demás fallen automáticamente
- Se usa menos espacio físico y menos energía eléctrica
- Es mas fácil usar puntos de comprobación y migrar datos entre VMs
Dispositivo virtual
Una vez que en una VM se instaló un SO, librerías y paquetes de software a elección de uno, puede ser empaquetado todo para compartir y correr en distintas piezas de hardware.
Un dispositivo virtual es una VM preparada y empaquetada.
Requerimientos
- SO Anfitrión: El SO que se ejecuta "por debajo" del hipervisor, en el hardware real
- SO invitado: El que se ejecuta en la VM
- Instrucciones sensibles: Un conjunto de instrucciones que sólo se pueden ejecutar en modo de kernel
- Instrucciones privilegiadas: Conjunto de instrucciones que producen una interrupción (trap) si se ejecutan en modo de usuario
- Hipervisor
Hipervisores
Tipo 1 (de hardware)
- Es un módulo del CPU (está integrado en le hardware)
- Se ejecuta en modo kernel
- El SO invitado cree que se está ejecutando en modo kernel, pero está corriendo en modo usuario sobre el hipervisor (el cual sí corre en modo kernel)
- El modo en que se encuentra el SO invitado se llama modo de kernel virtual
- Cuando el SO invitado corra una instrucción sensible, (si el CPU tiene VT), se produce una interrupción en el kernel
- Y entonces el hipervisor evalúa quién la emitió
- Si fue el SO invitado, hace las preparaciones para ejecutar la instrucción
- Si fue una app de usuario, emula lo que haría el hardware real frente a una instrucción sensible ejecutada en modo usuario
- De no tener VT, las instrucciones se ignoran y el SO invitado falla
Tipo 2 (de software)
- Es un programa ejecutándose en modo usuario
- Este software lee las instrucciones del SO invitado y va reemplazando el código binario de procesador por llamadas al hipervisor, como si fuera un intérprete
- Todas las instrucciones sensibles se sustituyen mediante llamadas a procedimientos que emulan estas instrucciones
- Es decir, las llamadas a instrucciones sensibles se convierten en llamadas al hipervisor, el hardware nunca las ejecuta
- $ Ventaja: A pesar de ser emulación por software, puede ser más rápido que los hipervisores tipo 1 ya que evitan una gran cantidad de interrupciones
Paravirtualización
- Es la modificación de un sistema operativo (desde el código fuente) para que pueda contemplar el caso en el que sepa que está siendo virtualizado
- Se modifica el SO para que en lugar de usar instrucciones sensibles, se usen llamadas a las API del hipervisor de la máquina
- El hipervisor se convierte en un "microkernel" con sus propias instrucciones que el SO invitado usa
Ventaja
Esto reduce el impacto en rendimiento que implica atrapar y convertir un tipo de instrucciones a otro
¿Qué pasa si hay varios microkernels? ¿Como se adaptan todos los SOs del mercado a todos los hipervisores?
El conjunto de procedimientos que el kernel llama para reemplazar instrucciones sensibles se llama Virtual Machine Interface. Estos están diseñados para ser genéricos y no enlazados a un hardware o hipervisor especial.
Virtualización de la memoria
- En la técnica de paginación, la asignación de memoria se hace mediante una tabla de páginas
- Para cada Máquina Virtual (VM), el hipervisor crea una tabla de páginas oculta (shadow) que hace que sus páginas virtuales imiten a las páginas que el hipervisor le otorgó al invitado
- Cuando el SO invitado cambia sus tablas de página, el hipervisor también cambia sus páginas ocultas
- Esto se hace para supervisar y rastrear el uso de memoria del SO invitado
Virtualización de la E/S
- El Hipervisor primero creará una región del disco para alojar los datos persistentes que quiera guardar el Invitado
- El SO Invitado intenta controlar el hardware (Disco duro) del anfitrión
- El hipervisor atrapa esta petición, y convierte el número de bloque que el Invitado intenta acceder a un desplazamiento en un archivo real
- O sea, redirige un acceso de disco virtual a un bloque de un archivo físico