Qual é a diferença entre simulação e emulação


97

Frequentemente vejo Simulação e Emulação na ciência da computação. Esses dois termos parecem sinônimos. Existe alguma diferença entre Simulação e Emulação ?

Respostas:


108

Sim, os conceitos são diferentes.


Simulação

A simulationé um sistema que se comporta de maneira semelhante a outra coisa, mas é implementado de uma maneira totalmente diferente. Ele fornece o comportamento básico de um sistema, mas pode não necessariamente aderir a todas as regras do sistema que estão sendo simuladas. Está aqui para lhe dar uma idéia de como algo funciona.

Exemplo

Pense em um simulador de vôo como um exemplo. Parece que você está pilotando um avião, mas está completamente desconectado da realidade de pilotar o avião e pode dobrar ou quebrar essas regras como achar melhor. Por exemplo, pilote um Airbus A380 de cabeça para baixo entre Londres e Sydney sem quebrá-lo.


Emulação

An emulationé um sistema que se comporta exatamente como outra coisa e adere a todas as regras do sistema que está sendo emulado. É efetivamente uma replicação completa de outro sistema, até ser binário compatível com as entradas e saídas do sistema emulado, mas operando em um ambiente diferente do ambiente do sistema emulado original. As regras são fixas e não podem ser alteradas ou o sistema falha.

Exemplo

O sistema MAME é construído em torno dessa mesma premissa. Todos os antigos sistemas de arcade que foram esquecidos por muito tempo, que foram implementados quase inteiramente no hardware ou no firmware de seus sistemas de hardware podem ser emulados até os bugs e falhas originais que ocorreriam quando você atingisse a pontuação mais alta possível.


18
"se comportar exatamente como ..." pode não ser necessário. O importante é que "reproduza o mesmo comportamento externo exato" em relação ao que o utiliza.
Emilio Garavaglia

Observe que isso depende do que está sendo simulado / emulado. Por exemplo, algo que emula um computador compatível com PC pode ser muito menos preciso e muito menos realista do que algo que simula o circuito digital de um computador compatível com PC. Nesse caso, o simulador pode se comportar "exatamente como" um PC real enquanto o emulador não (porque o simulador está simulando algo em um nível muito mais baixo).
Brendan

16

Uma simulação é um modelo construído de outra coisa que reproduz algumas das características dessa coisa e deixa outras de fora - obviamente, você deseja preservar as características relevantes para sua consulta e deixar de fora as irrelevantes.

Por exemplo, uma simulação do tráfego de passageiros no início da manhã deixa de fora os nomes dos passageiros e talvez até suas identidades (usando uma variável de contador em vez de um conjunto real de Commuterobjetos), mas não pode desconsiderar sua taxa de chegada.


Emulação é a execução de um software X criado para a plataforma A na plataforma B, sem alterar o próprio software. Isso requer a construção de um modelo de A que seja executado em B e, obviamente, ele deve modelar tudo em A que envolva execução de código. (Em teoria, você pode omitir o suporte a códigos de operação que você sabe que este software em particular nunca usará, mas isso é raro - fazer um emulador é um trabalho árduo e vale muito a pena fazer um trabalho completo e ter algo reutilizável que um kludge que funciona apenas para S.)


7

Ambos significam algo fazendo o trabalho de outra coisa.

A diferença é que a "Simulação" acontece em um nível consciente (em relação ao usuário) e é finalizada normalmente para antecipar o resultado de uma realidade sem tocar na própria realidade.

A "emulação" acontece em um nível inconsciente e tem o objetivo de substituir um componente subjacente por outro diferente que, no que diz respeito ao usuário, funciona como o antigo.

Em outras palavras, a simulação acontece em um "mundo paralelo", enquanto a emulação ocorre em um "mundo substituído".


3
Como isso responde à pergunta do OP em termos de ciência da computação? Não há nada consciente ou inconsciente neles. Uma simulação é real, assim como uma emulação. Seus respectivos objetivos, no entanto, são conceitualmente muito diferentes.
S.Robins 13/02/12

@ S. Robins: consciente / inconsciente! = Real / irreal. consciente = algo que você decidiu explicitamente, algo inconsciente que você não decidiu explicitamente. Um aplicativo em execução em um sistema "emulado" não sabe sobre essa emulação. Um aplicativo em execução em um sistema "simulado" deve saber sobre ele, pois não terá necessariamente o mesmo comportamento.
Emilio Garavaglia

1
Não tem nada a ver com quais aplicativos estão sendo executados, e nada a ver com a tomada de decisões conscientes ou inconscientes. A diferença fundamental é sobre se um sistema está sendo modelado geralmente ou replicado inteiramente.
31512 S.Robins

@ S.Robins: Eu concordo com o conceito que você quer dizer, mas há algo sutil que não entende: um "emulador" é normalmente concebido para executar algo no topo, substituindo algo no escopo do aplicativo. Um "simulador" é normalmente concebido para ser executado por si próprio, em vez da aplicação real. Eles não estão no mesmo nível de abstração.
Emilio Garavaglia

6

Tecnicamente, os dois fazem o mesmo: fazem algo em um ambiente que age como se fosse a coisa real.

Conceitualmente, no entanto, há uma diferença importante.

Supõe-se que uma simulação seja separada do mundo real até certo ponto; a saída de uma simulação não está diretamente conectada à coisa que simula. Por exemplo, um simulador de aeronave não voa e o piloto não está se comunicando com um controlador de tráfego aéreo real.

Uma simulação geralmente tem o objetivo de testar ou prever algum processo da vida real em um ambiente seguro; Como a simulação está desconectada do mundo real, nada de ruim pode acontecer (um simulador de aeronave acidentado nunca mata pessoas reais).


Uma emulação , por outro lado, tem o objetivo de substituir o que é real: por exemplo, se você emular um microcontrolador simples usando uma CPU programável mais sofisticada, essa CPU pode ser usada no lugar do microcontrolador original; estará fisicamente conectado a alguma máquina e controlará essa máquina exatamente como faria o microcontrolador.

O objetivo de uma emulação é substituir os componentes de hardware ou software por equivalentes funcionais quando os módulos originais não estão disponíveis (ou se tornaram muito caros, apenas para manutenção). A emulação também pode servir ao objetivo de usar o hardware de maneira mais flexível - o mesmo microcontrolador programável pode duplicar para vários controladores mais simples, alternando o modo de emulação conforme necessário.


3
"technically", eles são totalmente diferentes. A diferença conceitual que você descreve é ​​fundamental para essa diferença.
13Robins S.

@ S.Robins: por 'tecnicamente', quero dizer que implementações técnicas geralmente são semelhantes ou equivalentes; a diferença está principalmente no que você usa.
tdammers

Não tem nada a ver com casos de uso. É a diferença fundamental de propósitos que define dois conceitos muito separados. A emulação procura substituir um sistema complexo de funcionalidade exatamente para que ele seja indistinguível do original, enquanto a simulação é uma grande simplificação de um sistema e representa a funcionalidade em um sentido muito geral através de um modelo. Assim, as implementações técnicas são necessariamente muito diferentes.
S.Robins 13/02/2012

@ S.Robins - eu discordo. Se você simula ou emula um determinado microprocessador, não faz muita diferença para a implementação, mas o que você faz com ele faz.
tdammers

1
@ tdammers: geralmente, o principal objetivo do projeto de um emulador é servir como um substituto "em tempo real" para a coisa que está sendo emulada, enquanto o principal objetivo do projeto de um simulador é permitir a análise não necessariamente em tempo real de, e possivelmente interação com o processo subjacente. Alguns simuladores podem ser rápidos e alguns emuladores podem fornecer habilidades substanciais para analisar e / ou interagir com o processo subjacente, mas as prioridades de engenharia são diferentes.
Supercat

1

Embora a etimologia não seja estritamente precisa, pense na diferença entre simpatia: "Posso imaginar como isso deve ser" e empatia, "sei como é isso". Uma simulação pode incluir representação visual de um problema, mas não pode. Por exemplo, ele pode apenas imprimir colunas de números representando quantas pessoas estão alinhadas para obter algo, receita total ou velocidade média. Tem algumas características que combinam com a realidade e outras que não.

A emulação, que é frequentemente usada no contexto de uma plataforma que finge ser outra plataforma, é muito mais completa. Assim, os desenvolvedores do Windows Phone podem executar ou depurar seus aplicativos de telefone em uma máquina Windows em um emulador, que se parece com um telefone e se comporta como um também. Você também pode executar seus jogos antigos do Commodore 64 em um emulador.

As palavras não são precisas. A maioria dos simuladores de vôo é mais parecida com emuladores, na minha opinião, mas o nome ficou em um momento em que não eram tão imersivos. Algumas pessoas reservam o emulador de palavras para o caso de plataforma cruzada e o rejeitam para qualquer outra coisa. Você provavelmente nunca será considerado errado se fizer o mesmo ao falar, mas entenda que algumas pessoas podem colocar a fronteira entre as duas palavras de maneira um pouco diferente e conceder subsídios quando alguém disser "isso é uma emulação" para obter informações realmente precisas e simulação completa.


1
Parece um equívoco comum que emulação e simulação sejam efetivamente iguais. Isso pode ocorrer porque a palavra emular pode significar espelhar o comportamento de outras pessoas (por exemplo: uma criança emula o pai). Isso é tecnicamente impreciso quando falado em termos de ciência da computação. Um simulador de vôo não é uma emulação, porque toda entrada / saída é gerenciada por meio de um programa criado especificamente - o simulador - que não replica exatamente o comportamento da aeronave na qual está modelado, pois não implementa exatamente o mesmo computador programas que a aeronave faz. Se assim fosse, então seria um emulador.
31512 S.Robins

0

Ambos os termos são muito semelhantes em conceito - imitando.

Simulação ou simuladores usam software para produzir um sistema replicado que é muito semelhante ao modelo de destino em relação à sua funcionalidade principal subjacente (especialmente sua metodologia básica).

Os emuladores, por outro lado, concentram-se mais na semelhança externa quando comparados ao sistema de destino. Ele tem uma preocupação mínima com "como" as funções são imitadas. Emuladores são, em geral, usados ​​ao trabalhar em um ambiente completamente diferente (por exemplo, um sistema operacional diferente) em comparação com o sistema original.


1
Eu diria que você misturou os dois conceitos. É uma simulação que não se importa com a implementação exata; emulação se preocupa muito com os internos. Veja: MAME
Andres F.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.