O Intel VT-x (ou AMD Pacifica / AMD V) suporta virtualização real?

2

Ainda estou confuso em relação aos mecanismos de virtualização.

Eu entendo por que a arquitetura x86 é / não é virtualmente virtualizável e por que outras arquiteturas são (e por que a arquitetura 68k foi exceto pelo próprio MC68000 etc.).

Depois, li sobre o Intel VT-x e o AMD V, que adicionam recursos de virtualização ao x86.

No entanto, a CPU virtualizada parece ser uma CPU diferente da CPU física; ou seja, a CPU física tem VT-x enquanto a CPU virtual não tem.

Embora este não seja um problema prático (nenhum sistema operacional normalmente deseja rodar em uma VM requer o VT-x), isso me faz pensar se isso constitui virtualização real.

O 80386 já tinha a capacidade de virtualizar uma CPU com menos recursos que o próprio 80386, o modo virtual x86. VT-x é apenas outra camada como essa (anel -1, suponho) ou é virtualização real?

(O que acontecerá se alguém quiser virtualizar sistemas que usam VT-x? A virtualização verdadeira não deveria permitir níveis ilimitados de virtualização?)

Desculpe por uma pergunta idiota. Ou melhor, desculpe por uma questão teórica em vez de prática.

Atualização: fiz este gráfico para tentar entender tudo isso melhor:

link

    
por Andrew J. Brehm 23.06.2009 / 16:19

3 respostas

5

I understand why the x86 architecture is/was not by itself virtualisable.

Isso não é verdade. É virtualizável via tradução binária ou mais comumente referido como virtualização completa. Você emula todos os componentes de um computador tradicional com um software instalado em cima de um SO.

And then I read about Intel VT-x and AMD V which add virtualisation capabilities to x86.

Para ser mais correto, ele adiciona recursos extras de virtualização. Para ser preciso, ele adiciona extensões de processador que permitem o processamento de consultas de virtualização mais rapidamente. Ele também adiciona um toque -1 para o processador de 64 bits, já que o número de toques caiu para 2 com o AMD64.

Você pode virtualizar em x86 usando "Virtualização completa" (Virtual PC, VirtualBox) ou Paravirtualisation (Xen, Hyper-V). O Intel VT / AMD-V permite acelerar a virtualização e fazer "Virtualização Assistida por Hardware".

Eu não sei o que você quer dizer com virtualização real ... qualquer tipo de virtualização é real, eles permitem que você tenha mais de um SO em um único computador. Isso é o que virtualização é sobre.

Espero que isso tenha sido claro. Não hesite em comentar se quiser mais informações.

Editar: se você realmente quiser saber muito mais sobre isso, obtenha este livro . Isso me ensinou tudo.

    
por 23.06.2009 / 16:51
4

Can you explain how exactly Intel VT/AMD-V speeds up virtualisation?

Eles facilitam o trabalho do hipervisor, implementando em técnicas de CPU VMWare et. al. tinha que fazer em seu software de tradução binária. Para mais detalhes sobre isso, a Intel tem algumas boas páginas:

link

Existem algumas áreas onde fica mais fácil. Pelo acima:

  • Conversão de endereços A tabela de espaço de memória apresentada ao sistema operacional tinha que ser artificialmente segmentada em CPUs não-VT. o que foi feito em software. As extensões permitem que a CPU virtualize diretamente o espaço de memória de um VM-guest, permitindo vários espaços de endereço linear. Antes dessas extensões, isso era tratado na camada de tradução binária.
  • Níveis de privilégio de CPU As extensões permitem que os convidados realmente executem seu código na camada de toque correta. Antes das extensões, o código com intenção de ser executado no Ring 0 era na verdade executado no Ring 1 ou 3 com o fakery fornecido pela camada de tradução binária do software. As extensões permitem que os convidados executem seu código, na verdade, em seu nível de toque correto, ao mesmo tempo em que fornecem proteções seguras sobre a invasão de sua VM.
  • Interrompa a virtualização Ao permitir que os convidados da VM lidem com suas próprias interrupções, ela permite que o Hypervisor não se envolva com todas as interrupções. Isso faz com que os hóspedes corram mais rápido.

Estas três coisas simplificam bastante a escrita de um hipervisor, e por que os gostos do KVM e do Xen apenas suportam a virtualização 'completa' em processadores VT em primeiro lugar.

    
por 23.06.2009 / 18:18
0

O VT-x e o Pacifica aceleram a virtualização. A aceleração emulada é um exercício de futilidade.

O VT-x também oferece mais funcionalidades. O VMware ESX não pode virtualizar convidados de 64 bits sem o VT-x, pois o EM64T / Intel64 não oferece suporte à memória segmentada que era necessária para a tradução binária do VMware. AMD64 Suporta segmentação exceto em processadores Opteron Rev C. AMD percebeu um erro e consertou enquanto a Intel optou por não fazê-lo.

    
por 23.06.2009 / 17:24