¿Qué es un hipervisor?

Un hipervisor es un tipo de software único que permite que una computadora ejecute más de un sistema operativo (SO). A través de un proceso conocido como virtualización, el software engaña a cada sistema operativo para que piense que tiene acceso exclusivo a un conjunto particular de hardware. Se encuentra entre el hardware físico y el sistema operativo y presenta un conjunto virtual de hardware para todos los demás software que se ejecutan en la máquina. También gestiona el flujo de información entre el software, el hardware virtualizado y el hardware físico. Este tipo de software se utiliza tanto en entornos empresariales como de consumidores.

En la mayoría de los casos, el sistema operativo de una computadora se ejecuta en un estado altamente privilegiado donde tiene acceso ilimitado al hardware de la máquina, mientras que las aplicaciones se ejecutan en un estado menos privilegiado y deben depender del sistema operativo. Estos diferentes niveles de privilegios de acceso al hardware se conocen como anillos, y el sistema operativo tradicionalmente se ejecuta en el anillo 0; las aplicaciones de usuario se ejecutan en los anillos 1–3, que tienen menos privilegios. Este modelo funciona bien la mayor parte del tiempo, pero se desmorona por completo cuando se intenta ejecutar más de un sistema operativo en una sola computadora simultáneamente. Un hipervisor resuelve este problema mediante una técnica llamada virtualización.

La virtualización no es una idea nueva, pero se ha convertido en una palabra de moda desde mediados de la década de 2000, cuando las empresas y la industria de la tecnología de la información (TI) se han dado cuenta de su potencial para reducir los costos y aumentar la eficiencia. Hay muchos enfoques diferentes para la virtualización, pero la idea básica es crear conjuntos de hardware simulados que a menudo se conocen como máquinas virtuales. En el caso de un hipervisor, que también puede denominarse monitor de máquina virtual, cada máquina virtual contiene un sistema operativo «invitado». El hipervisor en sí puede ejecutarse directamente en el hardware físico, en cuyo caso se lo conoce como un tipo «bare metal» o dentro de un sistema operativo host como un hipervisor de «software».

Los hipervisores deben utilizar algunas técnicas muy sofisticadas para administrar sus sistemas operativos invitados y asegurarse de que no entren en conflicto entre sí. Dado que un sistema operativo dentro de una máquina virtual no sabe que ha sido privado de los privilegios del anillo 0, puede intentar realizar funciones restringidas sin permiso. En estos casos, el hipervisor puede interceptar una función antes de que llegue al hardware, ejecutar las instrucciones de una manera que no cause ningún daño a otros sistemas operativos que se ejecutan en el hardware y devolver el resultado al sistema operativo original. Conocida como técnica de «atrapar y emular», este es solo uno de los muchos conceptos avanzados exclusivos del mundo de la virtualización.

A medida que este tipo de software se ha vuelto más importante y lucrativo, más empresas han buscado formas de aliviar la carga en un hipervisor y proporcionar un mayor rendimiento. Los proveedores de software han modificado sus sistemas operativos para conocer las máquinas virtuales en las que se ejecutan, lo que significa menos tipos de escenarios de captura y emulación. Los proveedores de hardware han agregado soporte para un nuevo nivel de privilegios conocido a veces como anillo -1. Los programas de software más nuevos pueden aprovechar una o ambas de estas técnicas para aumentar el rendimiento.

Los hipervisores ahora se pueden encontrar en una variedad de productos tanto a nivel de consumidor como de empresa. Los productos de consumo que permiten que un sistema operativo se ejecute dentro de otro a menudo utilizan un hipervisor de tipo software. En el espacio empresarial, el software permite consolidar servidores infrautilizados que ejecutan diferentes sistemas operativos. Los desarrolladores de software pueden usar este enfoque para ejecutar múltiples instancias de sistemas operativos similares o incluso idénticos a fin de probar problemas de compatibilidad.