¿Cuál es la diferencia entre simulación y emulación?

97

Frecuentemente veo simulación y emulación en informática. Estos dos términos parecen sinónimos. ¿Hay alguna diferencia entre simulación y emulación ?

usuario
fuente

Respuestas:

108

Sí, los conceptos son diferentes.


Simulación

A simulationes un sistema que se comporta de manera similar a otra cosa, pero se implementa de una manera completamente diferente. Proporciona el comportamiento básico de un sistema, pero no necesariamente se adhiere a todas las reglas del sistema que se simula. Está ahí para darle una idea sobre cómo funciona algo.

Ejemplo

Piense en un simulador de vuelo como un ejemplo. Parece y se siente como si estuvieras volando un avión, pero estás completamente desconectado de la realidad de volar el avión, y puedes doblar o romper esas reglas como mejor te parezca. Por ejemplo, vuela un Airbus A380 boca abajo entre Londres y Sydney sin romperlo.


Emulación

Un emulationes un sistema que se comporta exactamente como otra cosa y se adhiere a todas las reglas del sistema que se emula. Es efectivamente una réplica completa de otro sistema, hasta ser binariamente compatible con las entradas y salidas del sistema emulado, pero opera en un entorno diferente al entorno del sistema emulado original. Las reglas son fijas y no se pueden cambiar, o el sistema falla.

Ejemplo

El sistema MAME se basa en esta premisa. Todos esos viejos sistemas arcade que han sido olvidados durante mucho tiempo, que se implementaron casi por completo en hardware, o en el firmware de sus sistemas de hardware, pueden emularse hasta los errores y fallas originales que ocurrirían cuando alcanzara el puntaje más alto posible.

S.Robins
fuente
18
"comportarse exactamente como ..." puede no ser necesario. Lo importante es que "reproduce el mismo comportamiento externo exacto" con respecto a lo que lo usa.
Emilio Garavaglia
Tenga en cuenta que depende de lo que se simule / emule. Por ejemplo, algo que emula una computadora compatible con PC puede ser mucho menos preciso y mucho menos realista que algo que simula los circuitos digitales de una computadora compatible con PC. En este caso, el simulador puede comportarse "exactamente como" una PC real mientras que el emulador no (porque el simulador está simulando algo en un nivel mucho más bajo).
Brendan
16

Una simulación es un modelo construido a partir de otra cosa que reproduce algunas de las características de esa cosa y deja de lado otras; obviamente, desea conservar las características relevantes para su consulta y dejar de lado las irrelevantes.

Por ejemplo, una simulación del tráfico de pasajeros temprano en la mañana deja de lado los nombres de los pasajeros, y tal vez incluso sus identidades (usando una variable de contador en lugar de un conjunto real de Commuterobjetos), pero no puede ignorar su velocidad de llegada.


La emulación es la ejecución de un software X creado para la plataforma A en la plataforma B, sin cambiar el software en sí. Esto requiere construir un modelo de A que se ejecute en B, y obviamente tiene que modelar todo sobre A que implique la ejecución de código. (En teoría, podría omitir la compatibilidad con códigos de operación que sabe que este software en particular nunca usará, pero eso es raro: hacer un emulador es un trabajo duro, y vale mucho más la pena hacer un trabajo completo y tener algo reutilizable que un kludge eso solo funciona para S.)

Kilian Foth
fuente
7

Ambos significan algo haciendo el trabajo de otra cosa.

La diferencia es que la "Simulación" ocurre a un nivel consciente (con respecto al usuario) y se finaliza típicamente para anticipar el resultado de una realidad sin tocar la realidad misma.

La "emulación" ocurre en un nivel inconsciente y tiene el propósito de reemplazar un componente subyacente con otro diferente que, con respecto al usuario, funcione como el antiguo.

En otras palabras, la simulación ocurre en un "mundo paralelo", mientras que la emulación ocurre en un "mundo reemplazado".

Emilio Garavaglia
fuente
3
¿Cómo responde esto a la pregunta del OP en términos de informática? No hay nada consciente o inconsciente sobre ellos. Una simulación es real, como lo es una emulación. Sin embargo, sus propósitos respectivos son conceptualmente muy diferentes.
S.Robins
@ S.Robins: consciente / inconsciente! = Real / irreal. consciente = algo que decidiste explícitamente, inconsciente, algo que no decidiste explícitamente. Una aplicación que se ejecuta en un sistema "emulado" no conoce esa emulación. Una aplicación que se ejecuta en un sistema "simulado" debe saberlo, ya que no necesariamente tendrá el mismo comportamiento.
Emilio Garavaglia
1
No tiene nada que ver con qué aplicaciones se ejecutan y dónde, ni nada que ver con tomar decisiones conscientes o inconscientes. La diferencia fundamental es si un sistema se está modelando en general o si se está replicando por completo.
S.Robins
@ S.Robins: estoy de acuerdo con el concepto que quiere decir, pero hay algo sutil que no capta: un "emulador" generalmente se concibe para ejecutar algo en la parte superior, reemplazando algo bajo el alcance de la aplicación. Un "simulador" generalmente se concibe para ejecutarse por sí mismo en lugar de la aplicación real. No están en el mismo nivel de abstracción.
Emilio Garavaglia
6

Técnicamente, ambos hacen lo mismo: hacer algo en un entorno que actúa como si fuera real.

Conceptualmente, sin embargo, hay una diferencia importante.

Se supone que una simulación está separada del mundo real hasta cierto punto; La salida de una simulación no está directamente conectada a lo que simula. Por ejemplo, un simulador de avión no vuela y el piloto no se está comunicando con un controlador de tráfico aéreo real.

Una simulación generalmente tiene el objetivo de probar o predecir algún proceso de la vida real en un entorno seguro; Debido a que la simulación está desconectada del mundo real, nada realmente malo puede suceder (un simulador de avión estrellado nunca mata a personas reales).


Una emulación , por el contrario, tiene el objetivo de tomar el lugar de lo real: por ejemplo, si emula un microcontrolador simple usando una CPU programable más sofisticada, esa CPU se puede usar en lugar del microcontrolador original; estará físicamente conectado a alguna máquina, y en realidad controlará esa máquina tal como lo haría el microcontrolador.

El objetivo de una emulación es reemplazar los componentes de hardware o software con equivalentes funcionales cuando los módulos originales no están disponibles (o se han vuelto demasiado caros, aunque solo sea para mantenerlos). La emulación también puede cumplir el objetivo de usar el hardware de manera más flexible: el mismo microcontrolador programable puede duplicarse para varios controladores más simples, cambiando el modo de emulación según sea necesario.

tdammers
fuente
3
"technically", son completamente diferentes. La diferencia conceptual que describe es fundamental para esta diferencia.
S.Robins
@ S.Robins: por "técnicamente", quiero decir que las implementaciones técnicas son a menudo similares o equivalentes; la diferencia está principalmente en para qué los usas.
tdammers
No tiene nada que ver con los casos de uso. Es la diferencia fundamental de propósitos que define dos conceptos muy separados. La emulación busca reemplazar un sistema complejo de funcionalidad exactamente para que no se pueda distinguir del original, mientras que la simulación es una gran simplificación de un sistema y representa la funcionalidad en un sentido muy general a través de un modelo. Por lo tanto, las implementaciones técnicas son necesariamente muy diferentes.
S.Robins
@ S.Robins - No estoy de acuerdo. Si simula o emula un microprocesador dado no hace mucha diferencia para la implementación, pero lo que haga con él sí lo hace.
tdammers
1
@tdammers: en general, el objetivo principal del diseño de un emulador es servir como un reemplazo "en tiempo real" para la cosa que se emula, mientras que el objetivo principal del diseño de un simulador es permitir el análisis no necesariamente en tiempo real de, y posiblemente interacción con el proceso subyacente. Algunos simuladores pueden ser rápidos, y algunos emuladores pueden proporcionar capacidades sustanciales para analizar y / o interactuar con el proceso subyacente, pero las prioridades de ingeniería son diferentes.
supercat
1

Si bien la etimología no es estrictamente precisa, piense en la diferencia entre simpatía, "Me imagino cómo se debe sentir eso" y empatía, "Sé lo que se siente". Una simulación puede incluir una representación visual de un problema, pero puede que no. Por ejemplo, podría imprimir columnas de números que representen cuántas personas están alineadas para algo o ingresos totales o velocidad promedio. Tiene algunas características que coinciden con la realidad, y algunas que no.

La emulación, que a menudo se usa en el contexto de una plataforma que finge ser otra plataforma, es mucho más completa. Por lo tanto, los desarrolladores de Windows Phone pueden ejecutar o depurar sus aplicaciones telefónicas en una máquina Windows en un emulador, que se parece a un teléfono y también se comporta como tal. También puedes ejecutar tus viejos juegos de Commodore 64 en un emulador.

Las palabras no son precisas. La mayoría de los simuladores de vuelo se parecen más a los emuladores en mi opinión, pero el nombre se ha quedado en un momento en que no eran tan inmersivos. Algunas personas reservan el emulador de palabras para el caso multiplataforma y lo rechazan por cualquier otra cosa. Probablemente nunca se lo piense mal si hace lo mismo al hablar, pero comprenda que algunas personas pueden colocar el límite entre las dos palabras de manera un poco diferente, y hacer concesiones cuando alguien dice "esto es una emulación" para un simulación completa

Kate Gregory
fuente
1
Parece un error común pensar que la emulación y la simulación son efectivamente las mismas. Esto puede deberse a que la palabra emular puede significar reflejar el comportamiento de los demás (por ejemplo: un niño emula a su padre). Esto es técnicamente inexacto cuando se habla en términos de informática. Un simulador de vuelo no es una emulación, porque toda la entrada / salida se gestiona a través de un programa especialmente diseñado, el simulador, que no replica exactamente el comportamiento del avión en el que está modelado, ya que no implementa exactamente la misma computadora programas que hace el avión. Si lo hiciera, entonces sería un emulador.
S.Robins
0

Ambos términos son muy similares en concepto, imitando.

Simulación o Simuladores hacen uso del software para producir un sistema replicado que es muy similar al modelo objetivo con respecto a su funcionalidad central subyacente (especialmente su metodología básica).

Los emuladores, por otro lado, se centran más en la similitud exterior en comparación con el sistema de destino. Tiene una preocupación mínima por "cómo" se imitan las funciones. En general, los emuladores se utilizan cuando se trabaja en un entorno completamente diferente (por ejemplo, un sistema operativo diferente) en comparación con el sistema original.

Señor White
fuente
1
Yo diría que tienes los dos conceptos mezclados. Es una simulación que no se preocupa por la implementación exacta; la emulación se preocupa mucho por lo interno. Ver: MAME
Andres F.