Depende do seu software de virtualização. Basicamente você tem três opções:
- Emular um PC inteiro, incluindo CPU.
- Execute o software como está, usando o hardware do host, mas intercepte algumas chamadas e instruções do sistema.
- Modifique o software para que ele seja executado no hardware dos hosts, mas as instruções que seriam interceptadas por 2) agora serão substituídas por outras rotinas.
Todos os três trabalhos. Todos os três estão em uso. Todos os três têm diferentes características de desempenho.
1) Emular
Essa sempre será a opção mais lenta. Tem duas vantagens:
- Você pode emular um host completamente diferente (por exemplo, emular um computador baseado em ARM em um AMD64).
- Você não precisa de nenhum suporte de hardware.
2) Interceptar as chamadas do sistema
Esta resposta é principalmente baseada em AMD64. Uma moderna CPU x86 possui vários níveis com diferentes permissões. Estes são chamados de anéis . O software da VM assume o anel 0 (o anel com mais permissões) e ganha o direito de fazer praticamente qualquer coisa no computador. O software no computador (host e VMs) não percebe isso. Usando esses direitos, ele garante que vários sistemas operacionais não interfiram entre si.
Como resultado, o código regular é executado em velocidade máxima (o teste dnetc resultou em cerca de 99% da velocidade em um vm). Código que faz chamadas de sistema é interceptado e modificado, e é, portanto, muito mais lento. Geralmente, o resultado líquido disso é uma perda de velocidade de alguns por cento.
3) Código modificado
Em vez de interceptar as chamadas do sistema em tempo real, você pode modificar o software antecipadamente. Desta forma, o seu código pode ser um pouco mais rápido, mas você precisa modificar o software com antecedência.
Especially I am talking about QEMU and virtualbox, how are they?
Eu tenho um amigo que é programador. Ela olhou para o código do QEMU. O conselho recomendado é não tocá-lo. Sempre. Nem mesmo com um poste de 10 pés. O QEMU funciona com a configuração pronta para uso, mas falha com bastante frequência se você não usar as configurações padrão. Ele aloca recursos e nunca verifica se isso foi bem sucedido ... Eu poderia continuar, mas quanto menos for mencionado, melhor.
Virtualbox: usei o virtualbox uma vez. Funcionou. A versão do Windows tinha uma interface agradável e compreensível. Eu não testei nenhum desempenho, nem joguei nenhum jogo.
Will it run games without problems?
Os únicos jogos que tenho corrido estão sob VMware (player). Isso funcionou bem o suficiente para jogos 2D. Jogos 3D geralmente travam meu computador (tanto Vm quanto host).