studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones emulation virtual-machine

emulation - programacion - ¿Cuáles son las diferencias específicas entre un "emulador" y una "máquina virtual"?



manual de programacion android pdf (3)

Dell explicó exactamente cuál es la diferencia entre emuladores y máquinas virtuales.

Fuente: http://techpageone.dell.com/technology/emulation-virtualization-whats-difference/

Emulación o virtualización: ¿Cuál es la diferencia?

La emulación y la virtualización tienen muchas similitudes, pero tienen diferencias operativas distintas. Si está buscando acceder a un sistema operativo más antiguo dentro de una arquitectura más nueva, la emulación sería su ruta preferida. A la inversa, los sistemas virtualizados actúan independientemente del hardware subyacente. Buscaremos separar estos términos a menudo confusos y describiremos lo que cada uno de ellos significa para las operaciones de TI comerciales.

¿Cual es la diferencia?

La emulación, en definitiva, implica hacer que un sistema imite a otro. Por ejemplo, si una pieza de software se ejecuta en el sistema A y no en el sistema B, hacemos que el sistema B "emule" el funcionamiento del sistema A. El software luego se ejecuta en una emulación del sistema A.

En este mismo ejemplo, la virtualización implicaría tomar el sistema A y dividirlo en dos servidores, B y C. Ambos servidores "virtuales" son contenedores de software independientes, que tienen su propio acceso a recursos basados ​​en software: CPU, RAM, almacenamiento y redes. - y se puede reiniciar de forma independiente. Se comportan exactamente igual que el hardware real, y una aplicación u otra computadora no podrían notar la diferencia.

Cada una de estas tecnologías tiene sus propios usos, beneficios y deficiencias.

Emulación

En nuestro ejemplo de emulación, el software se llena de hardware, creando un entorno que se comporta de manera similar al hardware. Esto tiene un costo en el procesador al asignar ciclos al proceso de emulación, ciclos que en su lugar se utilizarían para ejecutar los cálculos. Por lo tanto, una gran parte del músculo de la CPU se gasta en la creación de este entorno.

Curiosamente, puede ejecutar un servidor virtual en un entorno emulado. Entonces, si la emulación es un desperdicio de recursos, ¿por qué considerarlo?

La emulación puede ser utilizada efectivamente en los siguientes escenarios:

• Ejecutar un sistema operativo destinado a otro hardware (por ejemplo, software Mac en una PC; juegos basados ​​en consola en una computadora)

• Software en ejecución para otro sistema operativo (que ejecuta software específico para Mac en una PC y viceversa)

• Ejecutar software heredado después de que un hardware comparable se vuelva obsoleto

La emulación también es útil cuando se diseña software para múltiples sistemas. La codificación se puede hacer en una sola máquina, y la aplicación se puede ejecutar en emulaciones de múltiples sistemas operativos, todos ejecutándose simultáneamente en sus propias ventanas.

Virtualización

En nuestro ejemplo de virtualización, podemos decir con seguridad que utiliza los recursos informáticos de una manera eficiente y funcional, independientemente de su ubicación física o diseño. Una máquina rápida con amplia memoria RAM y suficiente almacenamiento se puede dividir en varios servidores, cada uno con un conjunto de recursos. Esa única máquina, normalmente implementada como un único servidor, podría alojar el servidor web y de correo electrónico de una empresa. Los recursos de cómputo que antes estaban infrautilizados ahora se pueden utilizar a su máximo potencial. Esto puede ayudar a reducir drásticamente los costos.

Si bien los entornos emulados requieren un puente de software para interactuar con el hardware, la virtualización accede directamente al hardware. Sin embargo, a pesar de ser la opción más rápida en general, la virtualización se limita a ejecutar software que ya era capaz de ejecutarse en el hardware subyacente. Los beneficios más claros de la virtualización incluyen:

• Amplia compatibilidad con la arquitectura de CPU x86 existente

• Posibilidad de aparecer como dispositivos físicos para todo el hardware y software.

• Autocontenido en cada instancia.

Entre la emulación y la virtualización, su empresa puede realizar la mayoría de las funciones de los sistemas virtuales. Si bien ambos servicios suenan igual, todo gira en torno a cómo utiliza el software. Si desea que el software se salga del camino, la virtualización permite que el código de invitado se ejecute directamente en la CPU. A la inversa, los emuladores ejecutarán el código de invitado, guardando la CPU para otras tareas.

Esta pregunta ya tiene una respuesta aquí:

Veo que son cosas diferentes pero realmente no puedo decir por qué. Algunas personas dicen: "los emuladores son para juegos; las máquinas virtuales son para sistemas operativos" No estoy de acuerdo con estas respuestas porque existen emuladores para plataformas distintas de las consolas de videojuegos (AMIGA (?))

¿Puedes ayudarme por favor?


El propósito de una máquina virtual es crear un entorno aislado.

El propósito de un emulador es reproducir con precisión el comportamiento de algún hardware.

Ambos apuntan a un cierto nivel de independencia del hardware de la máquina host, pero una máquina virtual tiende a simular solo el hardware suficiente para hacer que el invitado funcione, y lo hace con un énfasis en la eficiencia de la emulación / virtualización. En última instancia, la máquina virtual puede no actuar como cualquier hardware que realmente exista, y puede necesitar controladores específicos para máquinas virtuales, pero el conjunto de controladores invitados será consistente en una gran cantidad de entornos virtuales.

Por otro lado, un emulador intenta reproducir exactamente todo el comportamiento, incluidas las peculiaridades y los errores, de algún hardware real que se esté simulando. Los controladores invitados requeridos coincidirán exactamente con el entorno que se está simulando.

La virtualización, la paravirtualización y la tecnología de emulación, o alguna combinación, pueden usarse para la implementación de máquinas virtuales. Los emuladores generalmente no pueden usar la virtualización, porque eso haría que la abstracción sea un tanto filtrada.


Las máquinas virtuales hacen uso de la auto-virtualización de la CPU, en la medida que exista, para proporcionar una interfaz virtualizada al hardware real. Los emuladores emulan hardware sin depender de que la CPU pueda ejecutar código directamente y redirigir algunas operaciones a un hipervisor que controla el contenedor virtual.

Un ejemplo específico de x86 podría ayudar: Bochs es un emulador, emulando un procesador completo en software incluso cuando se ejecuta en un procesador físico compatible; qemu también es un emulador, aunque con el uso de un paquete kqemu lado del kqemu adquirió cierta capacidad de virtualización limitada cuando la máquina emulada coincidía con el hardware físico, pero en realidad no podía aprovechar la auto-virtualización completa de x86, por lo que era un hipervisor limitado; kvm es un hipervisor de máquina virtual.

Se podría decir que un hipervisor "emula" el acceso protegido; Sin embargo, no emula al procesador y sería más correcto decir que media el acceso protegido.

El acceso protegido significa cosas como configurar tablas de páginas o leer / escribir puertos de E / S. Para el primero, un hipervisor valida (y generalmente modifica, para coincidir con la propia memoria del hipervisor) la operación de la tabla de páginas y realiza la instrucción protegida en sí misma; Las operaciones de E / S se asignan al hardware del dispositivo emulado en lugar de a la CPU emulada.

Y solo para complicar las cosas, Wine también es más un hipervisor / máquina virtual (aunque a un nivel de ABI más alto) que un emulador (por lo tanto, "Wine Is Not a Emulator").