Emulação vs Virtualização

Na virtualização temos que tomar cuidado com o uso de 5 palavras:

  • Virtualização.

  • Emulação.

  • Simulação.

  • Tradução.

  • Interpretação.

"Emular" não é virtualizar. Mas a virtualização pode andar junto com a emulação.

Principalmente quando o hypervisor precisa disponibilizar recursos de hardware que não estão disponíveis no host físico. Como por exemplo a disponibilização de barramentos, chipsets e periféricos não existentes no host físico. Ou até a disponibilização de uma arquitetura de processador diferente da real.

Na maioria das vezes, as VMs possuem acesso direto ao processador mas todo o restante dos dispositivos são emulados (técnica chamada de device emulation).

A diferença entre um emulador e um virtualizador está em seu objetivo: o emulador emula todo o ambiente necessário para rodar uma aplicação específica, enquanto o virtualizador pode emular parcialmente alguns recursos para rodar aplicações de propósito geral.

Emular um ambiente não precisa necessariamente ser apenas hardware, o ambiente emulado pode ser uma API/ABI, bibliotecas, e etc.

Exemplo de emulações:

  • Emulador nativo de 32-bit no Win64.

  • Cygwin.

  • Emulador de SNES e PlayStation.

  • QEMU User Mode Emulation.

O ZSNES emula todo o ambiente de hardware de um videogame SNES (processador 65816, IRQs, placa de som SPC700, e etc) traduzindo as instruções originais lidas de uma ROM (imagem de cartucho de um jogo) para instruções de processador Intel. Observe que ao contrário de um hypervisor, todo o esforço de emulação feito pelo ZSNES visa executar uma única aplicação: um jogo.

Last updated