Generalidades sobre las máquinas virtuales

  Una máquina virtual es un programa informático que simula a un ordenador y puede ejecutar programas como si fuese uno real, es decir, virtualizarlo; en este sentido, también se le llama aplicación de virtualización. La acepción del término actualmente incluye a máquinas virtuales que no tienen ninguna equivalencia directa con ningún hardware real.
  Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma, es posible ejecutar un sistema operativo que se desee probar (una distribución Linux, por ejemplo) desde el sistema operativo habitual (Mac OS X, por ejemplo) sin necesidad de instalarlo directamente en el ordenador y sin miedo a que se desconfigure el sistema operativo primario.
   Los dos conceptos más importantes para entender qué es la virtualización que llevan a cabo las máquinas virtuales son los de anfitrión e invitado. Ambos conceptos se refieren a nuestros sistemas operativos y, por lo tanto, se debería hablar de sistema operativo anfitrión y sistema operativo invitado.
  El anfitrión ("host", en inglés) es el sistema operativo del ordenador en el cual se instala un programa de virtualización y que asignará o prestará determinados recursos de hardware a la máquina virtual que se cree, que pueden ser varias (limitadas por los recursos de la máquina real), es decir, es el que alberga al invitado.
  El invitado ("guest", en inglés) es el sistema operativo que se instala en la máquina virtual creada, a la cual se le ha asignado determinados recursos de la máquina física para funcionar.

   Para construir la máquina virtual se deben asignar determinados recursos de hardware, como son espacio en disco duro, memoria RAM (lo ideal son 2 GB como mínimo, aunque con 1 GB también pueden ir bien si el sistema operativo del invitado y la máquina real lo permiten), número de procesadores, etc. que el anfitrión cederá o compartirá con el invitado. No obstante, lo más importante es que el equipo físico posea un microprocesador lo suficientemente potente para que pueda dividir su tiempo de proceso entre los dos SO.

LA CUESTIÓN DE LOS MICROPROCESADORES

  Realizar una virtualización completa mediante máquina virtual es un proceso engorroso y lento. Por eso, los fabricantes de microprocesadores han incorporado en algunos de sus productos soluciones hardware especializadas en virtualización que han conseguido que la velocidad de las soluciones virtuales aumente considerablemente, siendo esta una de las principales causas del gran empuje que ha recibido la virtualización últimamente.
  En la arquitectura x86 tradicional, si se considera la visión interna de los sistemas operativos, concretamente la estructuración por capas, los núcleos de los sistemas operativos se ejecutan en el anillo o capa 0, que es el que tiene los máximos privilegios. Sin embargo, al virtualizar un sistema operativo virtualizado, el núcleo de dicho sistema no puede ejecutarse en el anillo 0.
  En la arquitectura x86 cuando un proceso padre crea un proceso hijo, este proceso hijo debe ejecutarse en un anillo de superior nivel que el padre. Así, aun cuando se consiguiera que el software de virtualización corriera en el anillo 0, cuando este software ponga en marcha una máquina virtual (que sería hija del software de virtualización) esta máquina debe correr en el anillo 1.
  El problema viene porque muchas instrucciones del núcleo de los sistemas operativos únicamente se ejecutan si están en el anillo 0, de modo que el programa de virtualización tiene que recompilar continuamente el sistema operativo virtualizado para obligar a todas las instrucciones a ejecutarse fuera del anillo 0, este proceso se conoce como paravirtualización y es muy poco práctico, ya que hace que las máquinas virtuales se ejecuten muy lentamente.
  Otra solución consiste en emular un anillo 0 completo, pero este proceso es aún más lento que el anterior.

  Para solucionar esto, Intel y AMD han introducido en sus microprocesadores una serie de extensiones especialmente dedicadas a la virtualización. La principal de dichas extensiones es una que permite que los programas corran en un “anillo -1”, de modo que el software encargado de crear máquinas virtuales corre en este anillo -1, y por tanto las máquinas creadas por dicho software se ejecutarán en el anillo 0. No hay necesidad de recompilar nada, ni de emular ningún anillo. Los núcleos de los SO virtualizados corren directamente en el anillo 0 y la velocidad es prácticamente idéntica a la de los sistemas operativos reales. La extensión de Intel para virtualización de la arquitectura de 32 y 64 bits se llama IVT (Intel Virtualization Technology), y se encuentra disponible para todos los procesadores de última generación de Intel (Quad Core, I3, I5, I7) y en algunos modelos de los procesadores anteriores; si se quiere ver si un procesador cuenta con estas extensiones VT que  permiten trabajar sin problemas con la virtualización, se puede o bien instalar un software en Windows que informe de ello (como CPU-Z), o bien mirar en la página de Intel donde viene la lista de procesadores con VT incorporado. Por su parte, la extensión de virtualización AMD para la arquitectura de 64 bits x86 se llama AMD Virtualization (abreviada AMD-V); los procesadores AMD que usan Socket AM3, Socket AM2, Socket S1 y Socket F incluyen AMD-V (prácticamente todos los micros AMD tienen estas extensiones); naturalmente, el mismo software que daba información sobre micros Intel también funciona para micros AMD.
  Espero que esta entrada del blog haya sido útil al lector, en próximas entradas se volverán a tratar temas relacionados con las máquinas virtuales.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.