stremer
(usa Arch Linux)
Enviado em 09/04/2008 - 10:47h
acho que esta tendo um pouco de confusão.
Vou tentar esclarecer melhor:
Existem 3 coisas diferentes: Emulador, Virtualizador e Interpretador (não sei qual seria o nome mais correto mas vamos colocar wine, cedega, etc neste caso).
Qual a diferença entre eles:
Emulador:
Todo o hardware é emulado através de um software. O emulador pega as instruções do programa e executa em um hardware virtual. O mesmo programa efetua a leitura dos dados do hardware virtual e interaje com o usuário através de um aplicativo normal. Em um programa emulador são emulados os ciclos da cpu, os registradores, os bancos de memória e é usada uma rotina de programa que interaje com o usuário para montar as telas e obter as entradas de dados. Por este motivo é extremamente lento. Geralmente serve para emular hardware diferente do utilizado. O qemu é um emulador (porém com algumas otimizações por emular o mesmo hardware) e por este motivo é lento. A maior parte dos emuladores são de video games, se conhecer programação baixe o fonte de alguns e veja como funcionam. É interessante para aprendizado mas veras que terá de conhecer o hardware que se quer emular muito bem.
Virtualizador:
VMware, virtualbox, etc entram neste caso. O virtualizador pega as instruções do programa e roda na própria maquina. A diferença que possui uma camada para implementar a parte de interrupções. Devido a esta camada não podendo utilizar drivers que "conversam" diretamente com o hardware, determinadas operações se tornam lentas (como é o caso de programas com graficos 3d, animações, etc). Por não ter que "emular" o hardware e poder executar as instruções no mesmo hardware (alguns inclusive permitem deixar um processador e uma area de memória exclusiva para eles) são bem mais rapidos, só perdendo mesmo na interação com o usuário devido a esta "camada das interrupções".
Interpretador (não sei o nome correto a dar a este):
São casos com o o Wine, Cedega, etc. Eles executam as instruções de um programa win32 nativamente no linux. Geralmente os programas win32 estão atrelados as APIs Win32 (APIs do windows). O wine tem de implementar estas APIs (que são modificadas e criadas novas em novas versões do windows). Por não ser um binário entendido nativamente pelo kernel, é um pouco mais lento, porém como as APIs são implementadas em código nativo do sistema e grande parte dos programas win32 são APIs a performance acaba ficando muito boa. O problema é que como o código do windows é fechado não sabemos a melhor forma de se implementar determinadas apis oque acaba tornando alguns programas lentos e incompativeis. É pratico quando o programa é compativel com ele. Se torna ineficiente na medida que o programa passa a apresentar erros.
Não sou escritor e nem expert em português, mas espero que tenha ficado um pouco mais claro sobre a diferença destes 3 modos.
Abs