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 ?
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:
Sim, os conceitos são diferentes.
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.
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.
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 Commuter
objetos), 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.)
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".
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.
"technically"
, eles são totalmente diferentes. A diferença conceitual que você descreve é fundamental para essa diferença.
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.
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.