ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

QEMU, una alternativa libre para la emulación de arquitecturas de hardware

Reinier Millo SánchezTrabajo18 de Noviembre de 2020

2.335 Palabras (10 Páginas)208 Visitas

Página 1 de 10

QEMU, una alternativa libre para la emulación de arquitecturas de hardware

Reinier Millo Sánchez1, Alexis Fajardo Moya2, Waldo Paz Rodríguez1

1Universidad Central “Marta Abreu” de Las Villas,

Cuba

2Empresa de Tecnologías de la Información para la Defensa,

Cuba

rmillo@uclv.cu

Resumen

El empleo de máquinas virtuales se ha hecho muy común en los procesos de desarrollo de software, para la prueba y depuración, durante todo el proceso de desarrollo. Entre las ventajas que nos brindan las máquinas virtuales está poder ejecutar varios sistemas operativos sin necesidad de tener que instalarlos de forma física. Con el empleo de las máquinas virtuales vienen asociados los conceptos de emulación y virtualización. Dos procesos que aunque tienen sus semejanzas son diferentes y en muchas ocasiones se hace una mala interpretación de cada uno. En este trabajo se definen los conceptos de emulación y virtualización de hardware; y se presenta QEMU como una alternativa libre que permite la emulación y virtualización de hardware para varias arquitecturas, lo cual hace que sea muy usada en el proceso de desarrollo de software.

Introducción

Hoy en día los emuladores de hardware son muy empleados tanto en el proceso de desarrollo como en el proceso de prueba de software. Una de las principales ventajas que nos ofrecen estas herramientas es la posibilidad de realizar pruebas sobre una máquina virtual que no existe de forma real, lo cual permite realizar las pruebas sobre diferentes ambientes para hacer un estudio del comportamiento del software. Muy cercano a la emulación se encuentra el concepto de virtualización, y en muchas ocasiones estos conceptos son manejados de forma errónea.

La diversidad de plataformas de hardware existentes hoy en día ha llevado a que en ocasiones el desarrollo de software para una arquitectura de hardware se realice sobre otra arquitectura de hardware, siendo necesario realizar las pruebas del software sobre un dispositivo de hardware físico. En muchas ocasiones no se dispone de ese dispositivo de hardware o para evitar el desgaste del mismo, entonces se recurre a emplear un emulador del dispositivo para el dispositivo que se está desarrollando el software.

Muchas han sido las herramientas que se han desarrollado con el propósito de emular plataformas de hardware. La mayoría de estas herramientas se han desarrollado para plataformas específicas, siendo en ocasiones muy compleja la incorporación de nuevas plataformas.

En este trabajo se exponen los conceptos de emulación y virtualización, así como las aplicaciones relacionadas a cada concepto. Se propone el empleo de QEMU como una herramienta libre para la emulación y la virtualización de hardware.

Máquinas virtuales, emulación o virtualización

A simple vista pudiésemos pensar que los conceptos de emulación y virtualización tienen el mismo significado, pero no. Ambos conceptos tienen una gran semejanza pero se diferencian funcionalmente (Silberschatz, Galvin, and Gagne 2013). La emulación de hardware como su nombre lo indica, emula el comportamiento de una arquitectura de hardware en específico, permitiendo la ejecución de aplicaciones compiladas para una arquitectura en otra arquitectura diferente, como por ejemplo: si queremos ejecutar una aplicación compilada para la arquitectura ARM en una arquitectura i386 de Intel, se debe emplear un emulador de la arquitectura ARM sobre la arquitectura i386. Un emulador en teoría tiene un funcionamiento semejante a un intérprete, lo cual hace que su ejecución sea computacionalmente más costosa.

La emulación es muy empleada en los procesos de desarrollo de software, permitiendo la prueba y depuración del software de forma rápida en diferentes plataformas de hardware, como ocurre en (Sampath and Rao). También permite el guardado del estado actual de la ejecución o snapshot, con lo cual permite regresar a determinado momento de la ejecución del software. Otras de las aplicaciones en las que ha ganado auge es en el desarrollo de software base o kernels de sistema operativo, brindando facilidades para la depuración del kernel del sistema, como en (Winter et al.; Yeh, Zin-Yuan, and Chiang 2011).

A diferencia de la emulación, la virtualización es una técnica que permite el uso de los recursos computacionales y dispositivos de hardware de forma independiente entre diferentes ambientes de ejecución o contenedores de software. Estos contenedores de software ejecutan de forma independiente sin interferir en la ejecución de otros contenedores (Silberschatz, Galvin, and Gagne 2013). Asociado directamente a la virtualización están los monitores de máquinas virtuales (VMM, Virtual Machine Monitor), conocidos también como hipervisores, los cuales no son más que la capa de software encargada de controlar la ejecución de varios contenedores de software de forma

simultánea (Heiser 2007; Kusnetzky 2011).

Una de la principales aplicaciones de la virtualización es el aislamiento de varios servidores virtuales en un mismo servidor físico, haciendo un uso más eficiente del hardware subyacente y disminuyendo los costos económicos producto de la compra de equipos de computo (Vaughan-Nichols 2006; Silberschatz, Galvin, and Gagne 2013) . Este proceso de virtualización de los servidores también trae consigo una mejora en la seguridad y estabilidad de los servidores. La virtualización también es muy empleada por los proveedores de hosting en Internet, para dar acceso completo de forma independiente a cada hosting, sin que un usuario pueda afectar o interferir en el hosting de otro usuario.

Por ejemplo, si disponemos de un servidor de correo electrónico que maneja información sensible de la empresa, no es recomendable tenerlo ejecutando en conjunto con un servidor web , pues estos son más vulnerables a los ataques externos, y pudiese comprometer la seguridad del servidor de correo electrónico. En este caso, ambos servidores pueden ser aislados en un mismo servidor físico mediante la virtualización, como se puede ver en la figura 1, de forma tal que el servidor web no compromete la integridad del servidor de correo, ni del propio servidor físico. Toda la comunicación entre los servidores virtuales y el hardware físico se produce a través del VMM.

[pic 1]

Figura 1 - Virtualización de un servidor de

correo electrónico y un servidor web

Herramientas para el trabajo con máquinas virtuales

Muchas han sido las herramientas desarrolladas para el trabajo con las máquinas virtuales. Algunas herramientas de propósito específico y otras más generales. Existen herramientas como BOCHS que sólo permiten la emulación y otras como VirtualBox y QEMU que también permiten la virtualización.

BOCHS (Lawton 2011) es un emulador que emula un ordenador Intel x86 de forma completa, sin tener en cuenta la arquitectura de hardware sobre la cual ejecuta. Implementa modelos de dispositivos para todos los dispositivos de hardware estándar, como son teclado, ratón, monitores, dispositivos de almacenamiento, temporizadores y tarjeta de red. Al no considerar la arquitectura de hardware sobre la cual ejecuta, tiene que emular cada una de las instrucciones de la arquitectura x86, lo cual computacionalmente se vuelve muy costoso y hace la emulación en BOCHS significativamente lenta respecto a la ejecución en el hardware físico.

A diferencia de BOCHS existen otras herramientas libres que a pesar de permitir la emulación también pueden ser empleadas para la virtualización, como es el caso del VirtualBox (Oracle 2014) y QEMU (Bellard 2005). Existen otras herramientas para la emulación y virtualización de máquinas virtuales como son el VMware (Waldspurger 2002), Virtual PC (Microsoft 2011), entre otras, que logran alcanzar un alto rendimiento pero son distribuidas bajo licencias privativas. También existen otros emuladores para arquitecturas específicas como es el caso de Basilisk II (Bauer 2006) y SheepShaver

(Bauer and Beauchesne 2006), emuladores de código abierto diseñados para la emulación de Apple Macintosh.

VirtualBox es un emulador multiplataforma y herramienta de virtualización para la arquitectura x86 y amd64, distribuido bajo una licencia de código abierto. El emulador tiene en cuenta la arquitectura de hardware sobre la cual ejecuta, a diferencia de BOCHS, con lo cual logra obtener un rendimiento bastante cercano el rendimiento del hardware real (Adams and Agesen 2006; Oracle 2014). VirtualBox permite compartir o transferir el control completo de dispositivos de hardware físico directamente con la máquina virtual. Tiene un amplio soporte para controladores que permiten la aceleración gráfica en 3D, integración automática con algunos dispositivos de hardware como es el mouse y el teclado, así como otras funcionalidades para el trabajo con dispositivos de almacenamiento.

...

Descargar como (para miembros actualizados) txt (16 Kb) pdf (223 Kb) docx (54 Kb)
Leer 9 páginas más »
Disponible sólo en Clubensayos.com