O que são emuladores? Definição, Funcionamento, Tipos e Exemplos

Os emuladores permitem que um ambiente de computação se comporte como outro para operar aplicativos incompatíveis.

Os emuladores são definidos como plataformas de hardware ou software que permitem que um sistema de computador (ou um sistema móvel) se comporte como outro para que o primeiro, o host, possa executar aplicativos e serviços projetados para o segundo, o convidado. Este artigo explica como os emuladores funcionam com exemplos.

O que são emuladores?

Os emuladores são plataformas de hardware ou software que permitem que um sistema de computador (ou um sistema móvel) se comporte como outro de forma que o primeiro, o host, possa executar aplicativos e serviços projetados para o segundo, o convidado.

Um emulador é um programa de software (ou, em casos raros, hardware de computador sob medida) que simula outro dispositivo. Por exemplo, o WINE é uma ferramenta que permite que aplicativos do Windows sejam executados em sistemas Linux e Mac. Dolphin é um aplicativo que permite jogar jogos de Nintendo GameCube e Wii em um computador. Antes de discutirmos como os emuladores funcionam e vermos mais exemplos de emuladores, aqui está uma breve visão geral de como essa tecnologia foi desenvolvida.

Como os emuladores foram desenvolvidos?

Os emuladores têm raízes nas técnicas de simulação de software usadas nos primórdios da computação. A Autonetics criou o primeiro simulador funcional por volta de 1960 para avaliar programas em linguagem assembly para posterior execução no sistema de serviços armados, D-17B. Isso permitiu que programas de voo fossem criados, executados e testados antes da construção do hardware do computador D-17B. No entanto, o termo simulação foi usado em vez de emulação naquela época.

A IBM cunhou o termo “emulador” em 1963 durante a criação da série de produtos NPL (IBM System/360). Ele usou uma combinação revolucionária de software, microcódigo (um conjunto de instruções entre a CPU e a arquitetura visível de um computador) e hardware. A IBM observou que as simulações que empregam instruções adicionais escritas em microcódigo e hardware aumentaram significativamente a velocidade da simulação em comparação com o processo de simulação de software convencional. O nome “emulador” foi inventado pelos engenheiros da IBM para descrever essa ideia. No século XXI, é comum empregar o termo “emular” tanto para emulação de software quanto para emulação assistida por microcódigo.

A emulação de sistemas de jogos começou em 1991, começando com o Sega Genesis. Em 1995, o desenvolvimento da emulação floresceu em uma “cena” na qual as ROMs eram amplamente copiadas e circuladas.

Em 1997, técnicas robustas de recompilação foram desenvolvidas, permitindo aumentos significativos na velocidade de emulação. Aproximadamente simultaneamente, as empresas começaram a produzir e comercializar emuladores de computador clássicos e modernos. Hoje, os emuladores de Android mais conhecidos incluem Bluestacks, Nox, MEmu e muitos outros.

Os emuladores são iguais à virtualização?

A virtualização de hardware é a personalização e virtualização de computadores como plataformas de hardware compostas ou apenas as funcionalidades essenciais para executar vários sistemas operacionais. A virtualização esconde dos consumidores as propriedades físicas de uma plataforma de computador, enquanto a emulação não.

Embora ambos os serviços pareçam idênticos, a diferença está em como o programa é usado. A virtualização permite que o código convidado seja executado nativamente na CPU se você quiser que o software, seja discreto. Por outro lado, os emuladores executarão o código do convidado diretamente, liberando a CPU para várias outras tarefas.

Aplicações de emuladores

Pode-se compreender a necessidade de emuladores de duas formas: a aplicação da tecnologia em computadores e suas vantagens para diversos setores. Normalmente, os profissionais de TI, utilizam emuladores para:

Migrar entre sistemas: Como primeira etapa na migração, os emuladores permitem a execução de software de uma categoria de sistemas para outra.

Melhore os sistemas atuais: os emuladores podem oferecer muito mais possibilidades de depuração do que o hardware, especialmente na área embarcada. Eles foram usados ​​nos primeiros minicomputadores como o MIMIC.

Preservar sistemas do passado: os emuladores permitem que softwares de sistemas obsoletos sejam executados em hardware contemporâneo.

Inove em sistemas futuros: os emuladores permitem a construção de máquinas fictícias e a depuração de software antes da disponibilidade do hardware real.

Entre as várias indústrias, os emuladores são vistos com mais frequência nos jogos. Emuladores para consoles de videogame são aplicativos que permitem que um computador ou console simule outro sistema. Eles costumam ser usados ​​para jogar jogos dos anos 1980 aos anos 2000 em computadores de mesa e consoles atuais.

Os emuladores desempenham um papel essencial tanto na mídia quanto nas artes. Como técnica de preservação, a arte das novas mídias depende da emulação porque se baseia em formatos digitais. Usando emuladores, os artistas podem ressuscitar a extinta tecnologia de mídia em seus trabalhos e combinar a mídia histórica com a arte digital contemporânea.

Como funcionam os emuladores?

Antes de nos aprofundarmos em seu funcionamento interno, examinaremos a proposição de valor fundamental da emulação. A emulação opera controlando o comportamento da CPU e suas unidades componentes. O emulador constrói cada componente do sistema e, a seguir, os conecta, semelhantemente à forma como os fios ligam os componentes de hardware. A operação precisa varia se você estiver utilizando tecnologia de emulação de baixo ou alto nível.

Trabalho de baixo nível

A emulação de baixo nível (LLE) simula o comportamento do hardware emulado. Tanto quanto possível, o computador host simulará um ambiente para o programa executar no qual ele será processado. Tanto o hardware quanto o software podem alcançar o LLE.

Como réplica o comportamento do hardware, a emulação de baixo nível está entre as medidas mais precisas para simular o sistema em questão. No entanto, a emulação baseada em hardware só é possível algumas vezes, pois aumenta os custos do sistema.

No entanto, a emulação baseada em software exige um conhecimento aprofundado dos sistemas ou de seus componentes, que só pode estar disponível se a documentação for suficiente. Para executar programas no mesmo ritmo, é necessário um sistema significativamente mais forte que o original. É aí que a tecnologia de emulação de alto nível entra em jogo.

Trabalho de alto nível

A emulação de alto nível (HLE) oferece uma abordagem única para a simulação do sistema. Ao invés de simular o próprio hardware, ele replica as funcionalidades do dispositivo. Ele fornece um conjunto de operações frequentemente usadas por desenvolvedores e gerência todos os detalhes com eficiência.

Os emuladores de alto nível operam usando três técnicas:

  • Interpretação: o emulador executa o código do aplicativo simulando o que cada instrução deve realizar, linha por linha. A preocupação central com esse método é que ele é extremamente lento; cada vez que uma instrução é manipulada, o emulador deve decodificá-la e executar a ação necessária.
  • Recompilação dinâmica: o emulador examina seções das instruções da máquina do aplicativo para ver se elas podem ser otimizadas para operar com mais eficiência no processador da máquina host. Isso contrasta com a execução de cada instrução separadamente, o que geralmente resulta em sobrecargas mais significativas. Consequentemente, quando o emulador encontra um conjunto de instruções específico novamente, ele simplesmente precisa executar o código armazenado em cache.
  • Interceptação de listas: coprocessadores com abstração de hardware suficiente, como a unidade de processamento gráfico (GPU) e o chip de áudio, exigem que o processador primário forneça listas de instruções. Este é um conjunto de comandos que informa o coprocessador sobre o que executar. O emulador pode capturar a lista de comandos e convertê-la em um formato que o coprocessador do computador host possa interpretar.

O tempo do processador e o tratamento de interrupção são princípios que determinam como o emulador interage com a CPU para executar adequadamente.

Sistemas específicos, principalmente os mais antigos, exigem que o emulador tenha temporização precisa para ser compatível com uma CPU atual. Por exemplo, o Nintendo Entertainment System (NES) mede o tempo do processador em unidades de processamento de pixel (PPU), que precisa que a CPU carregue pixels em sua memória em momentos distintos.

Concluindo, as interrupções são o principal meio pelo qual a CPU interage com o hardware. Normalmente, seus componentes de hardware transmitirão à CPU quais interrupções são essenciais para eles. Portanto, o emulador também pode interromper o manuseio para habilitar a mesma função.

9 tipos de emuladores

Os emuladores podem ser de tipos diferentes, dependendo do caso de uso e do ambiente do host. Aqui estão os tipos essenciais de emuladores a serem observados:

1. Emuladores de terminal

Um emulador de terminal é um software que simula as capacidades dos terminais de computador tradicionais. Esses terminais consistiam em uma tela e um teclado, eram usados ​​principalmente para conectar-se a outros computadores, como um minicomputador ou mainframe. O programa de emulação de terminal realiza o mesmo trabalho.

Um emulador de terminal permite que um computador host entre em contato com outro, incluindo sistemas remotos, por meio de uma linha de comando ou interface gráfica. Utilizando protocolos como Telnet e SSH, a comunicação é possível. Essa emulação permite que o computador host use ou execute aplicativos na máquina remota e troque arquivos entre ambos. A vantagem aqui é que os sistemas operacionais dos dois dispositivos não precisam ser idênticos.

2. Emuladores de impressora

As emulações de impressora são aplicativos na impressora que oferecem uma variedade de linguagens de comando da impressora. Enquanto isso, eles fornecem capacidade de gerenciamento e segurança. Várias emulações podem ser transferidas para uma impressora, permitindo que os usuários escolham a linguagem de comando apropriada. Considerando a quantidade de software criado para impressoras HP, muitos, por exemplo, destinam-se a replicar impressoras HP LaserJet. Ao simular uma impressora HP, ela consegue trabalhar com qualquer software projetado para uma impressora HP genuína.

3. Emuladores de console de jogos

Um emulador de console de videogame permite que uma máquina simule o hardware de um console de videogame e execute seus títulos na plataforma de emulação. Na maioria das vezes, os emuladores têm recursos adicionais que transcendem os limites do hardware real, como compatibilidade de controlador mais ampla, melhor desempenho, clareza mais nítida, códigos de trapaça acessíveis com um único clique, etc.

Os emuladores também são úteis para produzir demonstrações caseiras e novos jogos para sistemas obsoletos, extintos ou incomuns. O emulador geralmente recebe o código e os dados do jogo por meio de um arquivo ROM (uma duplicata do conteúdo do cartucho do jogo) ou uma imagem ISO (uma réplica da mídia óptica).

4. Emuladores de sistema completos

A emulação completa emula tudo, incluindo CPU, chipset, sistema básico de entrada/saída (BIOS), dispositivos e interrupções. COREMU é uma plataforma de emulação simultânea de código aberto que separa as complexidades da integração de ambientes de sistema completo. Emuladores como esses são difíceis de construir, pois exigem a eliminação precisa das dependências do sistema em seu host.

5. Emuladores de CPU

Um emulador de CPU é um aplicativo de software que emula uma CPU física. Um interpretador é um programa de computador que rastreia o caminho de execução do código do programa emulado, é a variante mais simples de um emulador de CPU. Para cada instrução de código de máquina detectada, ações semanticamente comparáveis ​​às instruções de origem são executadas na CPU do host. Os cientistas da computação utilizam esses emuladores para várias tarefas, incluindo depuração, criação de perfil e análise de malware.

6. Emuladores funcionais

A emulação funcional é a prática de usar um software para imitar a execução de outro software escrito em linguagem de montagem simbólica ou código de compilador, não em código de máquina binário. Sem criar código binário, os programadores podem executar e rastrear bits específicos de código-fonte para procurar erros de programação (bugs) usando um simulador funcional.

7. Emulador de servidor

Frequentemente, os videogames multijogador requerem um servidor de jogo na Internet que pode ou não estar acessível para instalação no local. Um emulador de servidor é um servidor local não autorizado que imita o comportamento do servidor de Internet autorizado, mesmo que seus processos principais possam variar. Isso nem sempre é um uso legítimo da tecnologia de emulação.

8. Emuladores de rede

Testar o comportamento de uma rede (wireless, 5G, MANETs, ​​etc.) em laboratório é emulação de rede. O software executado em um PC ou máquina virtual executa a emulação de rede; um dispositivo de emulação separado é ocasionalmente utilizado para emulação de link. As redes induzem latência, falhas e perda de pacotes para testar como funcionam no emulador.

9. Emuladores móveis

Como o próprio nome sugere, um emulador móvel simula o hardware e o software do dispositivo em um computador desktop ou como um componente de uma plataforma de teste baseada em nuvem. É uma reimplementação abrangente dos aplicativos móveis baseados em linguagem assembly ao nível de máquina. O emulador do Android (kits de desenvolvimento de software ou SDKs) ilustra isso. Ele permite que os desenvolvedores avaliem a aparência de seus aplicativos em vários tipos de hardware e tamanhos de tela.

Exemplos de emuladores para Linux, Android, Mac e outros

Agora que sabemos tudo sobre emuladores e como eles funcionam, vejamos alguns exemplos populares de emuladores usados ​​por profissionais de tecnologia:

1. Appetize.io

Appetize.io é um emulador de iOS e Android baseado na web que permite iniciar iPhone, iPad, Mobile Safari e aplicativos móveis APK em seu navegador da web. O servidor transmitirá uma série de instantâneos (como dados blob) capturados pela instância do emulador. Em seguida, ele o executa por meio do websocket aberto produzido por Socket.IO no navegador da web. Em seguida, um trecho de código JavaScript é usado para atualizar a tela que representa a tela do dispositivo. Por outro lado, ele monitora as interações do mouse com a tela e as envia ao servidor via JavaScript. No lado do servidor, essas coordenadas são convertidas em comandos de toque e enviadas de volta ao emulador.

2. Roseta 2

Usando a tecnologia de emulação, o Rosetta 2 permite que um Mac contendo silício da Apple execute aplicativos projetados para um Mac com uma CPU Intel. Em seu centro está o Rosetta, um mecanismo de tradução que permite aos usuários executar aplicativos instruídos por x86 64 no hardware da Apple. Infelizmente, o processo de tradução é demorado, portanto, às vezes, os usuários podem acreditar que os aplicativos traduzidos iniciam ou funcionam mais lentamente.

É importante ressaltar que é um emulador embutido em novos dispositivos Mac para que eles possam executar programas escritos para Intel, apesar de terem um chip de silício da Apple.

3. BlueStacks

O BlueStacks App Player é um emulador Android robusto e freeware que executa aplicativos Android em um computador Windows. Os usuários podem experimentar seus jogos em uma tela maior e desfrutar de opções de personalização adicionais para controles de mapeamento, etc. Independentemente do motivo pelo qual você precisa de um emulador, o BlueStacks é um pacote completo, apesar de executar uma versão mais antiga do Android.

4. Genymotion

Este aplicativo ajuda no teste móvel simulando mais de 3.000 variantes virtuais de dispositivos Android (versões do Android, tamanho da tela, capacidade do hardware, etc.). Genymotion é um emulador de Android eficiente que não requer RAM excessiva. Isso agiliza a criação e execução de aplicativos. O benefício desta plataforma é que ela é um emulador Android completo. Ele permite que profissionais técnicos (desenvolvedores e engenheiros de controle de qualidade) e profissionais não técnicos (designers, vendas, marketing e outras partes interessadas) melhorem a qualidade do desempenho e a experiência do usuário de seus aplicativos Android.

5. PearPC

PearPC é um emulador de sistema PowerPC independente de arquitetura que pode executar vários sistemas operacionais PowerPC (uma arquitetura modificada), incluindo edições pré-Intel do Mac OS X, Darwin e Linux. Sua distribuição é gerenciada pela GNU General Public License (GPL). É executável no Microsoft Windows, Linux e várias outras plataformas.

O emulador possui um núcleo de emulação de microprocessador just-in-time (JIT) que converte dinamicamente o código PPC em código x86 e armazena os resultados em cache. O núcleo de emulação JIT opera dez vezes mais rápido do que o núcleo de emulador de processador genérico independente de arquitetura enquanto opera exclusivamente em arquiteturas de host x86.

6. Aemulor

Aemulor é uma emulação dos antigos microprocessadores ARM de método de endereçamento de 26 bits. O programa permite que o Raspberry Pi e outros dispositivos que executam o sistema operacional RISC (computador com conjunto reduzido de instruções) usem aplicativos específicos de hardware mais antigos. Aemulor Pro foi lançado em 2004. Isso introduziu atualizações, como compatibilidade para configurações de cores baixas e necessidade de vários jogos. Além disso, a versão Pro adiciona assistência para modos de exibição de baixo bpp, som, um mapa de memória modificado e sistemas de arquivos de 26 bits.

7. QEMU

QEMU é um emulador de código aberto e freeware. Ele emula a CPU da máquina por meio de tradução binária flexível e inclui uma variedade de modelos de dispositivos e hardware específicos da máquina. Isso permite que ele execute vários sistemas operacionais convidados. É compatível com a máquina virtual baseada em kernel (KVM) para gerenciar máquinas virtuais com desempenho quase nativo. O QEMU também pode emular processos no nível do usuário, possibilitando que programas desenvolvidos para uma arquitetura diferente sejam executados em outra.

Conclusão

Os emuladores sempre foram cruciais para os desenvolvedores, pois permitem executar e testar aplicativos em diferentes ambientes sem incorrer no custo de configurar um novo sistema operacional. Os engenheiros de DevOps que exigem acesso a aplicativos, Windows em um PC Linux frequentemente recorrem a emuladores. Além disso, um dos casos de uso mais cruciais para a emulação são os jogos, pois novas versões de software de jogos são lançadas em intervalos rápidos e a compatibilidade com versões anteriores ainda é rara. Os emuladores permitem que os usuários revivam e preservem a tecnologia mais antiga enquanto usam sistemas modernos.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

5 × um =

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.