Está en la página 1de 16

MÁQUINAS INTEGRANTES

JULIA CHAVEZ LOARTE

VIRTUALES DEYSI LÓPEZ chuky


SAUNILLA

Curso:
Internet y Windows
TABLA DE CONTENIDO
Introducción a las máquinas virtuales ........................................................................................... 2
HISTORIA ...................................................................................................................................... 2
¿Qué es una máquina virtual? ................................................................................................... 3
Herramientas de virtualización más conocidas ....................................................................... 4
Utilidades y usos más frecuentes de las máquinas virtuales ................................................ 6
Comparativa de herramientas de virtualización....................................................................... 7
Herramienta de virtualización "Virtual PC 2007"de Microsoft................................................ 8
Requisitos del sistema ................................................................................................................. 9
Instalación de Virtual PC 2007 ................................................................................................... 9
MAQUINA VIRTUAL QEMU ..................................................................................................... 10
Módulo de aceleración para Qemu.......................................................................................... 12
Qemu monitor: ............................................................................................................................ 13
Optimización de estado de CPU .............................................................................................. 14
Introducción a las máquinas virtuales

HISTORIA
La historia de las computadoras data de varias décadas atrás. Para ser preciso, su
historia se divide en etapas que dan comienzo desde 1955 hasta la actualidad. La
evolución de todos los elementos relacionados con las computadoras actuales no
es lo que nos ocupa, sino que nos referiremos a la forma en que evolucionaron los
sistemas capaces de correr máquinas virtuales (VM).
La necesidad de la existencia de VM da comienzo por la necesidad de obtener un
sistema operativo que fuese capaz de soportar múltiples usuarios corriendo sobre
él (timesharing1), es decir que fuese capaz de ejecutar los procesos que éstos
necesitaban correr. Durante este período surgieron varios Sistemas operativos (SO)
que trataron de solucionar esta necesidad. IBM desarrolló un SO llamado OS/360.
En un comienzo no estaba capacitado para soportar time-sharing, pero tras surgir
esta necesidad se le incorporó esta función. A pesar de los intentos de IBM por dotar
al 360 con ésta funcionalidad, lograron obtener un sistema que era muy pesado, e
inconsistente.
Para solucionarlo se propuso un nuevo sistema (en 1972 que aun esta presente en
la actualidad) llamado VM/370 (1). Éste marcó un punto muy importante en la
historia, ya que para poder proporcionar un sistema de tiempo compartido, se basó
en una serie de conceptos que no se habían tenido en cuenta hasta la fecha. Éstos
fueron:

• Multiprogramación: varios procesos corriendo en simultáneo.

• Una máquina extendida con interfaz más conveniente que el mero hardware.

VM/370 es la esencia de éstas dos funciones. Éste simulaba varias máquinas


compartidas y cada una de ellas brindaba a cada usuario una copia exacta del
hardware de la máquina (cuando en realidad se contaba con un solo hardware y
este se repartía entre todas las VM). Tenía un corazón, llamado monitor del sistema,
que era el encargado de simular las múltiples máquinas. Uno de los inconvenientes
de este SO es que solo corre en arquitecturas IBM/370, hecho que no significaba
una gran limitación durante su surgimiento.
Con el tiempo las VM han evolucionado mucho, siempre teniendo el mismo
concepto, es decir un sistema que brinda una abstracción a otros entes (SO,
procesos de usuarios, etc). En la actualidad nos encontramos con VM que son
capaces de correr aplicaciones independientes hasta un conjunto de sistemas
operativos, siendo esto un hecho que proporciona independencia en los distintos
sistemas.

¿Qué es una máquina virtual?


En muchas ocasiones surge la necesidad de probar un programa o realizar pruebas
en otro sistema operativo distinto al instalado. Cuál es la solución ¿formatear el
equipo e instalar este sistema operativo? ¿Crear una partición e instalarlo? ¿Buscar
otro equipo en el que sí esté instalado? La solución es mucho más sencilla que todo
esto: lo único que hay que hacer es instalar una herramienta que emule el sistema
operativo que se quiere probar, así no hay necesidad de formatear ni de cambiar de
equipo. El sistema operativo emulado debería ser totalmente independiente del
sistema operativo real, conviviendo ambos en total armonía y pudiendo pasar de
uno a otro con facilidad.
Lo anterior se consigue mediante el uso de las máquinas virtuales. Una máquina
virtual es un programa informático que crea un entorno virtual entre el sistema
operativo y el hardware para que el usuario final pueda ejecutar aplicaciones en una
máquina abstracta. Por decirlo de manera más sencilla, una máquina virtual es una
aplicación que simula el funcionamiento de una máquina real sobre la que se
pueden instalar sistemas operativos, aplicaciones, navegar de forma segura,
imprimir desde alguna aplicación, usar los dispositivos USB, etc.

Se pueden encontrar varios tipos de máquinas virtuales:

 Máquinas virtuales software: este tipo de máquinas virtuales se sitúan por


encima del sistema operativo y tratan de aislar a las aplicaciones del
entorno sobre el que se ejecutan. ¿Proporcionan una capa entre días
aplicaciones y el sistema operativo que captura todas las llamadas al
sistema y las traduce al sistema concreto de ejecución? La máquina virtual
de Java o la máquina virtual del entorno .NET son dos claros ejemplos de
máquinas virtuales software.
 Entornos virtuales: este tipo de máquinas se crean para ejecutar
directamente aplicaciones que necesitan un entorno determinado de
ejecución sobre otro entorno totalmente diferente.

 Máquinas virtuales hardware: este tipo de aplicaciones tratan de emular


directamente el hardware. Las llamadas al hardware del sistema operativo
instalado serán capturadas y convertidas en llamadas al sistema del
hardware emulado. En general, la emulación del hardware recibe el nombre
de virtualización. Al emularse directamente el hardware, el usuario tiene la
impresión de que la máquina sobre la que está trabajando es totalmente
independiente. Este tipo de máquinas virtuales serán el objeto del presente
monográfico y a partir de ahora nos centraremos en ellas.

El uso de software de virtualización permite ejecutar varias máquinas virtuales con


distintos sistemas operativos sobre el mismo hardware de manera simultánea.
Además, estas máquinas virtuales se pueden copiar y mover a otra máquina física
de manera muy sencilla, lo que proporciona una manera rápida y cómoda de hacer
Backus o de reutilizar máquinas existentes. Las máquinas virtuales tienen discos
duros virtuales que para la máquina anfitriona (es decir, para la máquina real) son
simplemente ficheros de datos que se pueden copiar y manejar. La propia máquina
virtual no es más que un fichero de configuración.

Además, existen en Internet muchas máquinas virtuales listas para ser ejecutadas
y que permiten tener un entorno de desarrollo web en muy pocos minutos: Linux
con Apache, PHP y mySQL instalado y configurado de manera directa, o bien una
solución wiki lista para ser usada simplemente descargando una máquina virtual.

Herramientas de virtualización más conocidas


Existen diversas soluciones de virtualización disponibles actualmente, tanto
gratuitas como de pago. Las más conocidas son las siguientes:
Bochs: un emulador de procesadores x86 y AMD64 con licencia de software
abierto. Bochs puede ejecutarse en distintos sistemas operativos, incluyendo Linux,
Windows o incluso la XBox. Puede además simular varios sistemas operativos como
DOS, Windows o Linux.

Microsoft Virtual PC: suite de virtualización de Microsoft para Windows y para


MacOS. VirtualPC emula un PC estándar y todo el hardware asociado.

Parallels Workstation: software de virtualización de la empresa Paralelas


Incorporation para procesadores Intel x86.

QEMU: aplicación de software libre que implementa un emulador de procesador y


que incluye un acelerador que permite incrementar la velocidad de las máquinas
virtuales.

Virtual Iron: otra aplicación de virtualización que ha sido de las primeras en


aprovechar las capacidades específicas de virtualización de los nuevos
procesadores Intel y AMD.

VMWare: un completo conjunto de aplicaciones de virtualización, con herramientas


de pago orientadas a la empresa y otras gratuitas más orientadas al uso personal.
Hasta hace poco tiempo solo se ofrecía de manera gratuita la aplicación VMWare
Player, que permitía ejecutar distintas máquinas virtuales ya creadas y que se
podían descargar desde Internet. Desde fechas recientes se ofrece también de
manera gratuita VMWare Server, que permite no sólo ejecutar máquinas ya creadas
sino crear las máquinas desde el comienzo./li>

Xen: Una herramienta muy usada en la comunidad Linux puesto que hasta hace
poco tiempo sólo podía usar Linux/Unix como sistema anfitrión. Con la versión Xen
3.0 ya se puede instalar en Windows.

VirtualBox: una herramienta para Windows y para Linux (la versión para MAC
actualmente está en desarrollo en fase pre-alfa) liberada bajo licencia GPL y con un
rendimiento similar al de otras aplicaciones como VirtualPC o VMWare.
QEMU, VMWare y Microsoft Virtual PC son las tres herramientas más utilizadas.
Por ello y por ser distribuidas de forma gratuita el monográfico se centrará en ellas.
Además, se ha incluido VirtualBox porque es de código abierto y permite estudiar
su código en caso de estar interesado.

Utilidades y usos más frecuentes de las máquinas virtuales

¿Para qué se pueden usar las máquinas virtuales? La capacidad de aprovechar al


máximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel
empresarial y a nivel doméstico. A continuación, se detallan algunos de los usos
más frecuentes que se le puede dar al software de virtualización:

 Consolidación de servidores: convertir muchos servidores físicos en


virtuales. De este modo se aprovecha el hardware disponible de la mejor
manera posible.
 Recuperación ante desastres: las máquinas virtuales se pueden salvar muy
fácilmente, y además su estado se puede almacenar, por lo que en caso de
desastre se puede recuperar la información con rapidez.
 Pruebas de aplicaciones: en muchas ocasiones se necesita un entorno limpio
para probar una aplicación. Usar una máquina virtual permite instalar un
sistema operativo desde cero, probar la aplicación y luego eliminar la
máquina.
 Ejecución de entornos completos sin instalación ni configuración: la
posibilidad de descargar máquinas virtuales desde Internet permite ahorrar
tiempo en instalaciones y configuraciones. Existen muchas máquinas
virtuales con servidores LAMP (Linux, Apache, mySQL y PHP) completos
listos para ser usados, máquinas con gestores de contenidos, wikis, etc.,
gratuitos y funcionales desde el primer momento.
 Aplicaciones portátiles: con el uso de las máquinas virtuales se pueden tener
PCs completos listos para usar en dispositivos USB, lo que puede ser de
mucha utilidad para tener un entorno privado y usarlo en cualquier PC.
Comparativa de herramientas de virtualización

A continuación, se presenta una comparativa de tres de los productos de


virtualización comentados: VirtualBox, VMWare Server y Virtual PC 2007.

Características Explicación Producto destacado

Los tres productos se instalan de manera


muy sencilla mediante un asistente.
VirtualBox y VirtualPC se instalan
Facilidad de
rápidamente. Sin embargo, VMWare server VirtualBox, VirtualPC 2007
instalación.
tarda bastante tiempo en instalarse y
dependiendo de la máquina puede llegar a
tardar más de media hora

Sistemas
 VirtualBox: Windows, Linux
operativos  VMWare server: Windows, Linux
VMWare server
anfitriones  Virtual PC 2007: Windows, MacOS

soportados

 VirtualBox: DOS, Windows, Linux,


OS/2, OpenBSD, FreeBSD, Netware,
Solaris.
Sistemas
 VMWare server: DOS, Windows,
operativos invitados Linux, FreeBSD, Netware, Solaris, VMWare server
soportados. Virtual Appliances.
 Virtual PC 2007: DOS, Windows,
OS/2

 VirtualBox: Sí. VirtualBox,

Soporte para USB  VMWare server: Sí.


VMWare server
 Virtual PC 2007: No.
 VirtualBox: Fácil.
Facilidad de
VirtualPC 2007, VirtualBox,
creación de  VMWare server: Fácil.
VMWare Server
máquinas virtuales.
 Virtual PC 2007: Fácil.
 VMWare server dispone de las
Existencia de llamadas Virtual Appliances, que son VMWare server
máquinas virtuales máquinas virtuales preconfiguradas y
listas para ser usadas. En Internet se
disponibles en pueden encontrar muchas y de
Internet. muchos tipos.

Los tres sistemas disponen de herramientas


Integración con el
que permiten mejorar la integración del
sistema operativo sistema invitado con el anfitrión una vez
anfitrión: display, instalado. En el caso de VMWare, se llaman VMWare Server, VirtualPC
VMWare Tools, y en el caso de Virtual PC,
carpetas 2007
Virtual Machine additions. Tanto VMWare
compartidas, como VirtualPC permiten usar drag&drop y
drag&drop. carpetas compartidas con el sistema
anfitrión.
Capacidad de
importar máquinas VMWare server es capaz de importar VMWare Server
creadas con otras máquinas creadas con VirtualPC.
herramientas.
VirtualBox: Muy bueno.
VirtualBox, VMWare Server,
VMWare server: Muy bueno.
Rendimiento.
VirtualPC 2007
Virtual PC 2007: Muy bueno si se le instalan
las Virtual Machine Additions..

En resumen, se podría afirmar que las tres aplicaciones son buenas soluciones de
virtualización. Probablemente la balanza se inclina por VMWare server por la
existencia de máquinas virtuales disponibles en Internet que agilizan el uso de las
máquinas virtuales y por la cantidad de información que existe sobre ella en la red.
Además, Virtual PC 2007 es una herramienta que no podrá ser usada por los
usuarios de Linux, mientras que las otras dos están disponibles en versiones para
Windows y para Linux.

Herramienta de virtualización "Virtual PC 2007"de Microsoft

Una herramienta de virtualización es una aplicación que permite crear PCs virtuales
que tienen el mismo comportamiento que un PC real pudiendo acceder a los
dispositivos físicos del equipo que los alberga, instalar SO, programas, navegar por
internet, etc., con la diferencia con el PC real de que los PCs virtuales no son más
que archivos. En el caso de los PCs virtuales o máquinas virtuales creados Virtual
PC se trata de archivos con extensión. vmc.

Virtual PC 2007 ofrece un alto grado de integración entre el SO anfitrión y el SO


emulado, por ejemplo, se podrán pasar datos desde el SO emulado al anfitrión
simplemente arrastrando el ratón.

Requisitos del sistema

Los sistemas operativos anfitriones o en los que se puede instalar Virtual PC 2007
son:

 Windows Server 2003.


 Windows Vista Business, Enterprise y Ultimate.
 Windows XP Professional Y Tablet PC.

Se aconseja un procesador x86 o x64 con un procesador a 400Mhz o más rápido y


con caché de segundo nivel. Cualquiera de los siguientes procesadores puede
valer: AMD Athlon/Duron, Intel Celeron, Intel Pentium II, Intel Pentium III, Intel
Pentium 4, Intel Core Duo, and Intel Core2 Duo.

Instalación de Virtual PC 2007

Antes de comenzar la instalación lo primero que hay que hacer es comprobar si el


sistema operativo que va a albergar esta aplicación es compatible o no. Para ello
debe consultarse en la sección anterior la lista de sistemas operativos host posibles
puesto que, como ya hemos visto, este programa solo se puede instalar en SO
Windows y no en todas sus versiones. Por ejemplo, Virtual PC 2007 no se puede
instalar en Windows XP Home Edición. De todas formas, si se intenta instalar en un
SO no compatible se obtendrá un mensaje de este tipo y no se podrá continuar con
la instalación:

Mensaje de incompatibilidad de Virtual PC 2007 con el sistema operativo anfitrión


El instalador de Virtual PC 2007 puede descargarse desde la página oficial de
Microsoft eligiendo la versión para 32-bits o 64-bits dependiendo de la arquitectura
del equipo anfitrión. En uno u otro caso, el archivo de nombre setup.exe tiene un
tamaño de unos 30 MB.

La instalación de Virtual PC 2007 es sencilla y solo se comentarán las ventanas del


asistente más significativas.

MAQUINA VIRTUAL QEMU

Qemu es un programa libre que proporciona una veloz emulación de procesador,


permitiendo al usuario simular una computadora completa dentro de otra, fue escrito
por Fabrice Bellard, un programador frances que además de ser el creador de
Qemu, es el fundador de FFmpeg, un pequeño compilador de C "Tiny C" entre otros,
y además, el descubridor de la fórmula más rápida que se conoce para calcular
cifras del número PI.

Qemu es una máquina virtual capaz de emular múltiples arquitecturas, y la alta


velocidad de emulación la logra gracias a una técnica llamada "Traducción
dinámica", la cual es una combinación de otras dos, la "compilacion a bytecode" y
la "compilación dinámica", donde básicamente el programa se compila a bytecode
primero, que es un lenguaje intermedio antes del lenguaje de máquina, pudiendo de
esta manera ser portado a cualquier arquitectura. Es aquí cuando una máquina
virtual lo interpreta y lo ejecuta.

Qemu puede ser instalado bajo Linux, Windows, FreeBSD y MacOSX, pero la
versión para Windows todavía se encuentra en estado "Alfa" de desarrollo.

Posee dos modos de operación:

1) Emulación completa de una computadora

2) Emulación de "modo de usuario"

Emulación completa de una computadora:


En este modo, Qemu emula una computadora completa incluyendo Procesador y
periféricos.

Las arquitecturas que Qemu es capaz de emular en su totalidad son:

 X86
 X86_64
 ARM
 SPARC
 PowerPC
 MIPS

Las Arquitecturas que se encuentran en desarrollo de poder ser emuladas son:

 SPARC64
 PowerPC64
 m68k
 SH-4

Así mismo, los periféricos que Qemu emula son:

 i440FX host PCI bridge and PIIX3 PCI to ISA bridge


 Tarjeta de video Cirrus CLGD 5446 PCI VGA o tarjeta standard VGA con
extensiones VESA Bochs

(nivel de hardware, incluyendo todos los modos no standard)

 Teclado y Mouse PS/2


 2 interfaces PCI IDE con soporte de disco rígido y CD-ROM
 Disquetera
 Adaptador de red NE2000 PCI
 Puerto Serial
 Tarjeta de sonido Creative SoundBlaster 16
 Tarjeta de sonido ENSONIQ AudioPCI ES1370
 Chip compatible con Yamaha YM3812 - Adlib(OPL2)
 Controladora PCI para USB UHCI y HUB USB virtual

Qemu posee también la capacidad de simular un sistema que posea hasta 255
procesadores Emulación de "modo de usuario":

En este modo, Qemu permite ejecutar procesos de Linux compilados para una
determinada arquitectura, en otra. Esto se realiza por motivos de diferencias entre
arquitecturas de 32 bits o de 64 y por el "endianness"

Las arquitecturas que Qemu es capaz de emular en este modo son:

 X86
 ARM
 SPARC
 PowerPC
 MIPS

Las arquitecturas que están en desarrollo para ser emuladas son:

 SPARC64
 m68k
 SH-4
Módulo de aceleración para Qemu

Existe un módulo para el kernel de Linux que eleva la velocidad de emulación de


i386 en máquinas con i386, en donde la velocidad de ejecución es prácticamente
nativa.

El módulo es llamado Kqemu, escrito por el mismo autor de Qemu, solo que el otro
es libre pero no posee el código abierto.

La alta velocidad de emulación la logra gracias a que ejecuta el código en "modo


usuario" y en "modo virtual 8086" directamente en el procesador donde está
corriendo Qemu, y usando la emulación de procesador y periféricos solo para el
código en "modo kernel" y en "modo real".
Además, Kqemu posee un modo de "Virtualización completa", en la cual no solo se
ejecuta el código de "modo usuario" en la CPU host, sino que se ejecuta también el
código de "modo kernel", aumentando aún más la velocidad.

Existe otro modulo de aceleración llamado QVM86, pero al parecer está


abandonado. Ejemplos de funcionamiento de Qemu:

• qemu-img create -f qcow imagen.img 3G

Qemu monitor:

La máquina virtual Qemu posee un monitor que funciona en tiempo real.

Este monitor es accedido con la combinación de teclas "Ctrl+Alt+2" y se puede


hacer todo tipo de consultas, desde la versión actual de Qemu, hasta saber los
valores de los registros del micro emulado

Traducción Dinámica:

Qemu es un traductor dinámico. Cuando encuentra un pedazo de código, lo


convierte al set de instrucciones de la máquina host. Por lo general, los traductores
dinámicos son muy complicados, y grandes consumidores de CPU. Qemu utiliza
algunos trucos que lo hacen portátil relativamente fácil y simple, al mismo tiempo
que logra buena performance

La idea es dividir todas las instrucciones x86 en instrucciones más simples. Cada
instrucción está implementada por un trozo de código en C. Luego una utilidad de
compilación toma el correspondiente archivo objeto para realizar un generador
dinámico de código, quien concatena las instrucciones simples, para armar una
función.

Una idea clave para obtener una performance óptima es que se puedan pasar
parámetros constantes a las operaciones simples. Para ese propósito, rea
locaciones de archivos ELF son generados con gcc para cada parámetro constante.
Luego la utilidad de compilación puede ubicar las realocaciones y generar el código
C apropiado cuando se esté construyendo el código dinámico. De ésta manera,
Qemu no es más complicado de portar que un linkeador dinámico.

Para aún mayor velocidad, las variables de registros estáticos de gcc son usadas
para mantener el estado de la CPU virtual.

Alocación de registro

Desde que Qemu usa simples instrucciones fijas, no puede hacerse una alocación
de registros eficiente. De todas formas, dado que los CPU's RISC poseen muchos
registros, la mayor parte del estado de la CPU virtual puede ser puesto en registros
sin hacer una complicada Alocación.

Optimización de estado de CPU

La CPU x86 posee muchos estados internos, los cuales cambian la forma en la que
se evalúan las instrucciones. Para obtener una buena velocidad, la fase de
traducción considera que alguna información de los estados del CPU x86 virtual no
pueden cambiar en él.

Por ejemplo, si los segmentos SS, DS y ES poseen una base cero, entonces el
traductor ni siquiera genera una suma para la base del segmento.

Cache de traducción

Una caché de 16 MB almacena las traducciones usadas más recientemente. Una


unidad de traducción contiene solo un único bloque básico (un bloque de
instrucciones x86 terminadas por un salto o por un cambio de estado en la CPU
virtual, que el traductor no puede deducir estáticamente)

Emulación de la MMU
Para la emulación de la MMU, Qemu utiliza la llamada al sistema mmap(). Funciona
mientras el Sistema Operativo emulado no use una zona reservada por el sistema
operativo host (como la zona sobre 0xc0000000 en un Linux x86).

Para poder tener la capacidad de ejecutar cualquier sistema operativo, Qemu


también soporta MMU por software. En ese modo, las traducciones de la MMU de
direcciones virtuales a físicas son hechas en cada acceso a memoria. Qemu usa un
cache de traducciones de memoria para acelerar la traducción.

Interrupciones del Hardware

De manera de ser más rápido, Qemu no controla cada bloque básico por si alguna
interrupción de hardware se encuentra pendiente, sino que el usuario debe llamar,
asíncronamente, una función específica, para anunciar que hay una interrupción
pendiente. Ésta función resetea el encadenamiento del bloque básico que está
actualmente en ejecución. Se asegura que la ejecución va a retornar pronto en el
bucle principal del emulador de la CPU. Luego el bucle principal puede comprobar
si la interrupción está pendiente y manejarla.

También podría gustarte