1. MAQUINAS VIRTUALES
Angie Martínez
Bogotá DC, Colombia
mangieyubelly@hotmail.com
RESUMEN
Las máquinas virtuales son es un contenedor de
software aislado que puede ejecutar sus propios sistemas
operativos y aplicaciones como si fuera una computadora
física, las cuales tienen muchos componentes que sirven de
apoyo para su gran funcionamiento, a lo largo de este
artículo se mencionaran características, cualidades y
desventajas de las MV. También veremos la arquitectura
interfaces de las máquinas virtuales, los procesos que en
ella se manejan y se mencionaran algunas programas que
se utilizan para el funcionamiento de las máquinas
virtuales.
ABASTRACT
Virtual machines are a software container isolated
that can run its own operating systems and applications as
if it were a physical computer, which has many
components that support for great performance,
throughout this article features were mentioned, qualities
and disadvantages of MV. Interfaces will also see the
architecture of virtual machines, processes it handled and
some programs used for running virtual machines will be
mentioned.
I. INTRODUCCIÓN
Antes de hablar de que son máquinas virtuales
mencionaremos un término muy importantes que es
fundamental en las MV. La virtualización es la abstracción
de los recursos de una computadora, creación de un entorno
virtual donde puedes ejecutar otros programas de manera
independiente y esta cuenta con una parte importante como
lo es el hipervisor que a su vez se clasifican con dos tipos de
hipervisor. Ahora si mencionaremos que son las maquinas
virtuales que no es más que un contenedor de software
aislado que puede ejecutar sus propios sistemas operativos y
aplicaciones como si fuera una computadora física. También
se hablara de sus características como podemos mencionar
algunas: Los procesos que ejecutan están limitados por los
recursos y abstracciones proporcionadas por ellas. Estos
procesos no pueden escaparse de una computadora virtual,
entre otras. Además de algunas desventajas y otras
características importantes de las MV.
II. OBJETIVOS
1) Conocer, identificar y adquirir conocimientos sobre
todo lo relacionado con Máquinas Virtuales.
2) Adquirir destreza para manejo de MV.
3) Aplicar los conocimientos adquiridos en el
desarrollo de futuros requerimientos durante el semestre.
III. QUE ES VIRTUALIZACION
Es la abstracción de los recursos de una
computadora, creación de un entorno virtual donde puedes
ejecutar otros programas de manera independiente. Esos
programas serán los mismos que ejecutas normalmente en tu
ordenador, pero funcionarán, por así decirlo, en una réplica
de un sistema operativo. [1]
Cuando se habla de virtualización se debe mencionar
una plataforma de virtualización que no es otra cosa que un
conjunto de software y hardware que simula la ejecución de
equipos o sistemas operativos distintos a los reales. Esto se
consigue ocultando las características físicas de la
plataforma real proporcionando otras abstracta y simulada.
A. Hipervisor
También llamado monitor máquina virtual (Virtual
machine monitor, VMM), es una plataforma de
virtualización que permite utilizar, a la vez, múltiples
sistemas operativos en un equipo, los hipervisores se pueden
clasificar en dos tipos: [1]
2. 1) Tipo 1: (Nativo, baramental o unhosted) software
que se ejecuta directamente sobre el hardware real del
equipo para controlar el hardware y monitorizar los sistemas
operativos virtualizados. Los sistemas virtualizados se
ejecutan en otro nivel por encima del hipervisor
Fig. 1 Tipo uno hipervisor
Algunos d los hipervisores tipo 1 más conocidos son
los siguientes:
VMware: ESXi
Xen
Citrix: XenServer
Microsoft Hyper-V Server [1]
2) Tipo 2: (Hosted) aplicación que se ejecuta
sobre un sistema operativo convencional. Linux, Windows,
MacOS para virtualizar sistemas, de esta forma la
virtualización se produce en una capa más alejada del
hardware si lo comparamos con los hipervisores de tipo 1.
Lógicamente esto hace que el rendimiento sea menor en los
tipo 2.
Fig. 2 Tipo dos hipervisor
Algunos de los hipervisores tipo 2 más utilizados son
los siguientes:
Sun: Virtual Box, Virtual Box, OSE
VMware: Workstation, Server, Player
QEMU
Microsoft: Virtual PC, Virtual Server [1]
IV. QUE SON MAQUINAS VIRTUALES
Una máquina virtual es un contenedor de software
aislado que puede ejecutar sus propios sistemas operativos y
aplicaciones como si fuera una computadora física. Una
máquina virtual se comporta exactamente como una física y
contiene sus propios CPU, memoria RAM, disco duro y
tarjeta de interfaz de red (NIC) virtuales (es decir, basados
en software). [2]
Fig. 3 Máquinas Virtuales
A. Características
1) Los procesos que ejecutan están limitados por los
recursos y abstracciones proporcionadas por ellas
2) Estos procesos no pueden escaparse de una
computadora virtual
3) Suelen ofrecer a un sistema operativo la percepción
de una maquina física
4) una máquina virtual tiene como objetivo alcanzar la
calidad en portabilidad, las cuales simulan algunas
funcionalidad que no están en el software o en el hardware
donde se implementan.
5) En esta arquitectura se define un lenguaje especial,
con el que es posible escribir diversos programas, que son
interpretados y ejecutados en la máquina virtual.
6) La máquina virtual requiere la construcción de un
intérprete, que interpreta expresiones (programas completos,
partes de programa)
3. B. Utilidades
1) Tecnología tradicional y actual con muchas
utilidades
2) Ejecutar aplicaciones hechas para una plataforma
sobre una plataforma diferente: Microsoft Windows sobre
Mac OS, Java VirtualMachine
3) Ofrecer un entorno seguro donde experimentar
(sandbox)
4) Respaldo, seguridad, portabilidad, independencia
de hardware
C. Desventajas
1) Agregan gran complejidad al sistema en tiempo de
ejecución
2) Ralentacion del sistema
3) El programa no alcanzara la misma velocidad de
ejecución
4) La flexibilidad que ofrecen compensa está perdida
de eficiencia [2]
V. ARQUITECTURA MÁQUINA VIRTUAL
La arquitectura de máquinas virtuales se ha llamado
también intérpretes basados en tablas, todo intérprete
involucra una máquina virtual implementada en software. Se
puede decir que un intérprete incluye un seudo-programa a
interpretar y una máquina de interpretación. El seudo-
programa a su vez incluye el programa mismo y el análogo
que hace el intérprete de su estado de ejecución (o registro
de activación). [3]
Fig. 4 Arquitectura Máquinas Virtuales
VI. INTÉRPRETE
Es un programa informático capaz de analizar y
ejecutar otros programas, escritos en un lenguaje de alto
nivel. Los intérpretes se diferencian de los compiladores en
que mientras estos traducen un programa desde su
descripción en un lenguaje de programación al código de
máquina del sistema, los intérpretes sólo realizan la
traducción a medida que sea necesaria, típicamente,
instrucción por instrucción, y normalmente no guardan el
resultado de dicha traducción. [3]
VII. FUNCIONAMIENTO
El funcionamiento de la arquitectura de la máquina
virtual está conformado por cuatro componentes: [3]
1. 1) Un motor de simulación o interpretación (una
máquina de interpretación que lleva a cabo la tarea)
2. 2) Una memoria que contiene el código a
interpretar
3) Una representación del estado de la
interpretación (control de la máquina de interpretación)
5) Una representación del estado del programa que se
está simulando [3]
4. Fig. 5 Funcionamiento Máquinas Virtuales
VIII. ARQUITECTURA DE LAS INTERFACES
Una consideración principal en la construcción de
una VM es la fidelidad con la cual esta pone en práctica la
arquitectura de las interfaces. La arquitectura, aplicada a
sistemas de computadoras, se refiere a una especificación
formal de una interfaz en el sistema, incluso en el
comportamiento lógico de recursos manejados vía esa
interfaz. Los niveles de abstracción corresponden a capas de
implementación, tanto en hardware como en software, cada
uno asociado con su propia interfaz o arquitectura: [3]
Fig. 6 Arquitectura Interfaces
A. La arquitectura de set de instrucción
El ISA marca la división entre el hardware y el
software. Incluye aquellos aspectos visibles por un
programa de aplicación o puede incluir aquellos aspectos
visibles sólo por el sistema operativo.
B. Interfaz binaria de aplicación
El ABI da el acceso de los programas a los recursos
del hardware y a los servicios disponibles en un sistema. No
incluye instrucciones de sistema, todos los programas se
relacionan con los recursos de hardware indirectamente
invocando los servicios del sistema operativo vía la interfaz
de llamadas al sistema. Las llamadas al sistema
proporcionan un camino al sistema operativo para realizar
operaciones de parte de un programa de usuario después de
validar su autenticidad y seguridad.
C. Interfaz de programas de Aplicación
El API da el acceso de los programas a los recursos
de Hardware y servicios disponibles en un sistema. El
acceso se da a través de lenguajes de alto nivel (HLL).
Cualquier llamada de sistema es por lo general
realizada a través de bibliotecas. La utilización de un API
permite al software de aplicación ser transportada
fácilmente, a través de la recopilación, a otros sistemas que
soporten el mismo API. [3]
IX. LOS PROCESOS DE LAS MÁQUINAS VIRTUALES
Los procesos de VMs proporcionan una ABI virtual
o un entorno API para aplicaciones de usuario. En sus varias
implementaciones, los procesos de VMs ofrecen replicación,
emulación, y optimización. [3]
Fig. 7 Procesos Máquinas Virtuales
A. Sistemas multiprogramados
La mayoría de los sistemas operativos pueden
soportar simultáneamente múltiples procesos de usuario por
la multiprogramación, que da a cada proceso la ilusión de
tener una máquina completa. Cada proceso tiene su propio
espacio de direcciones, registros, y estructura de archivo. El
5. sistema operativo comparte los tiempos del hardware y
maneja los recursos para hacer esto posible. En efecto, el
sistema operativo proporciona una réplica del estado del
proceso de la VM para cada una de las aplicaciones que se
ejecutan simultáneamente.
B. Los emuladores y los traductores dinámicos
Un problema más complicado para el nivel del
proceso de las VMs es el de soportar programas compilados
con un set de instrucciones diferentes del que se ejecuta en
el host. El modo más real de realizar emulación es por la
interpretación. Un programa intérprete descifra, y emula la
ejecución de instrucciones de Guest individuales. Este puede
ser un proceso elativamente lento, requiriendo decenas de
instrucciones para cada instrucción del programa fuente.
C. Optimizador binario de Igual ISA
Para reducir pérdidas de interpretación, los
traductores dinámicos binarios a veces realizan
optimizaciones de código durante la traducción. Esta
capacidad conduce naturalmente a VMs en donde los set de
instrucciones que utilizan el Guest y el host son los mismos,
con el único objetivo de la optimización. El optimizador
dinámico binario de igual ISA utiliza la información del
perfil coleccionado durante la interpretación o fase de
traducción para optimizar el programa binario en ejecución.
D. Lenguaje de alto nivel de las VMs
Para el proceso de las VMs, la portabilidad de
plataforma es un objetivo clave. Sin embargo, la emulación
de una arquitectura convencional en otra, es aplicable sólo
en caso básico y requiere un esfuerzo de programación
considerable. La portabilidad de plataforma se consigue más
fácilmente diseñando un proceso VM como parte de un
completo entorno para el desarrollo de aplicaciones de alto
nivel. El HLL VM que resulta no corresponde directamente
a ninguna plataforma verdadera, es diseñado para facilitar la
portabilidad. En un sistema convencional, un compilador
primero genera el código intermedio que es similar al código
máquina, pero más compacto. [3]
X. LAS MÁQUINAS VIRTUALES DE SISTEMA
Un sistema VM proporciona un ambiente completo
en el cual un sistema operativo y muchos procesos,
posiblemente de usuarios diferentes, pueden coexistir.
Usando el sistema VM, una plataforma de hardware puede
soportar simultáneamente múltiples Guest. [3]
En un sistema VM, el VMM principalmente
proporciona la réplica de la plataforma. La cuestión central
es dividir los recursos del hardware entre entornos de
sistemas operativos múltiples (un ejemplo es la
virtualización del disco). El VMM tiene el acceso, y la
administración de todos los recursos del hardware. Un
sistema operativo Guest y sus procesos de aplicación son
manejados por el control del VMM. Cuando un sistema
operativo Guest realiza una instrucción privilegiada u
operación que directamente actúa con recursos compartidos
del hardware, el VMM intercepta la operación, la verifica y
la ejecuta. El Guest es inconsciente de esta forma de trabajo.
[3]
Fig. 8 Máquinas Virtuales Sistema
A. VMs Clásicas
De la perspectiva del usuario, la mayor parte de las
VMs proporcionan esencialmente la misma funcionalidad,
pero se diferencian en sus detalles de realización. El VMM
se ejecuta en el modo de mayor privilegio, mientras todos
los sistemas de Guest tienen privilegios reducidos de modo
que el VMM pueda interceptar y emular todas las acciones
de sistema operativo del Guest que tendrían acceso
normalmente o que manipularían recursos críticos del
hardware.
B. Hosted VMs
Una implementación alternativa de un sistema VM es
aplicar el software de virtualización encima del sistema
operativo del host, resultando un Hosted VM.
Una ventaja del Hosted VM consiste en que un
usuario lo instala junto como el programa de aplicación. El
software virtualizados puede confiar en el sistema operativo
del host para proporcionar controladores de dispositivos y
otros servicios de nivel inferior
6. C. Sistemas completos VMs
En el sistema convencional VMs, todo el software
del host y del Guest, así como también la aplicación usan la
misma ISA que el hardware. En algunas situaciones, sin
embargo, los sistemas de Guest y de host no tienen el mismo
ISA. Por ejemplo, los dos sistemas de escritorio más
populares de hoy, ordenadores personales de Windows y
Apple, usan ISAs diferente (y sistemas operativos
diferentes). El sistema completo VMs trabaja con la
virtualización de todo el software, incluso el sistema
operativo y las aplicaciones.
D. La virtualización del multiprocesador
Una forma interesante del sistema de virtualización
ocurre cuando la plataforma del host es un multiprocesador
con una gran memoria para compartir. Aquí, el objetivo
importante es dividir el sistema en múltiple sistemas más
pequeños, distribuyendo los recursos del hardware.
E. Las VMs de código
La funcionalidad y portabilidad son los objetivos de
la mayor parte de las VMs que son puestos en práctica en el
hardware ya desarrollado para algún estándar ISA. Las VMs
de código implementan un nuevo ISA, tratando de mejorar
la performance y eficacia. El ISA del host puede ser
completamente nuevo, o puede ser una extensión del ISA
existente. [3]
XI. CLASIFICACIÓN DE LA MÁQUINA VIRTUAL
Dada esta a amplia cantidad de VMs, con objetivos y
realizaciones diferentes, es provechoso organizarlas. Pueden
ser primero divididas en de procesos o en de sistemas.
Dentro de estas dos categorías principales de las VMs,
pueden ser divididas según si ellos usan la misma ISA o una
diferente. La base para esta diferenciación es que la
emulación de ISA es un rasgo dominante en aquellos VMs
que la soportan. Entre el proceso VMs que no realizan la
emulación de ISA son los sistemas multiprogramados, que
la mayor parte de ordenadores de hoy ya la soportan.
También incluidos están los optimizadores binarios
dinámicos de igual ISA, que emplean muchas de las técnicas
de la emulación del ISA. [3]
Los procesos VMs con diferentes Guest y host ISAs
incluyen traductores dinámicos, con la interfaz de la
máquina típicamente definida en el nivel ABI, y con el HLL
VMs en la interfaz del nivel API. Las VMs de sistema
consisten en el sistema clásico de VMs así como las Hosted
VMs que proporcionan replicación y entornos de sistemas
aislados. La diferencia principal entre el sistema clásico y el
Hosted VM es la implementación del VMM más que la
función que ellos proporcionan al usuario. [3]
XII. PROGRAMAS PARA CREAR MAQUINAS VIRTUALES
A. Virtual Box
Actualmente es desarrollado por Oracle y es
totalmente gratis. Es multi-plataforma, siendo compatible
con Windows, MAC OS X, Solaris y Linux. Además, viene
con un sinnúmero de características que facilitan la creación
y el mantenimiento de una máquina virtual. Las
descripciones y los parámetros de las máquinas virtuales se
almacenan en archivos XML que permite la potabilidad e
intercambio de archivos entre el “hosts” y el “Guest”. [4]
Fig. 9 Virtual Box
B. Parallels
Aunque es bien conocido por su versión de MAC OS
X, Parallels también corre virtualizaciones en Windows y
Linux. Este programa tiene un buen rendimiento o
“performance” gracias a un enlace directo, es decir esta
optimizado para correr en procesadores Intel y AMD. [4]
7. Fig. 10 Parallels
C. VMware
Viene en dos versiones: VM Player y VMware
Workstation. VMware Player es la versión gratuita para
usuarios casuales que no necesitan opciones avanzadas. En
el caso de VMware Workstation, esta incluye todas las
características de VMware Player como fácil creación de
máquinas virtuales, optimización de hardware e impresión si
necesidad de instalar controladores o “drivers”. Mas ánade
otras funciones como la habilidad de clonar máquinas
virtuales. [4]
Fig. 11 VMWare
D. QEMU
Es una poderosa herramienta de virtualización para
Linux desarrollada bajo el sistema KVW (Kernel-based
Virtual Machine). Es de código abierto o “open
source”. Lo que distingue a QEMU de los demás, es su
habilidad para correr en “hosts” sin privilegios
administrativos. Lo cual lo convierte en el candidato
perfecto para instalar sistemas operativos virtuales en
memorias tipo flash. [4]
Fig. 12 QEMU
XIII. CONCLUSIONES
1) Se adquirieron conocimientos acerca de
Máquinas Virtuales y su funcionamiento, de algunas
características y desventajas del mismo.
2) Se afianzaron diferente conceptos sobre
las MV, se validaron algunos de los programas que se
utilizan para que las MV funcionen o para crearlas.
3) Se identificaron cuáles sistemas operativos
se pueden instalar en una máquina virtual y nos encontramos
con sistemas como Linux, Windows Server entre otros.
BIBLIOGRAFIA
[1] Alejandro Marín,Que es la virtualización, [online], Consultado el 12
de Marzo de 2014, Disponible en
http://www.slideshare.net/Lucky3125/que-es-la-virtualizacin
[2] Ing. HéctorMorales Palma, Arquitecturade software: Maquinas
Virtuales, [Online], Consultado el 12de marzo de 2014, Disponible en
http://www.slideshare.net/rehoscript/maquinas-virtuales-15455343
[3] Diego Sierra, Informática III, Arquitecturade software
[4] Ing. Miguel López, Arquitecturade computadores, [Online],
Consultado el 12 de marzode 2014, Disponible en
http://arquitecturaubuntu.blogspot.com/2013/05/maquina-virtual.html