4.3 Resolvendo os Desafios da Virtualização na Arquitetura IA-32
O ponto chave da resolução dos desafios da virtualização na arquitetura IA-32 pela tecnologia VT-x é permitir que o sistema visitante seja executado no nível de privilégio para o qual ele foi projetado. A limitação imposta ao software visitante, agora, não é mais o nível de privilégio, mas o fato desse ser executado no modo VMX non-root, que introduz algumas limitações.
- Compressão do espaço de memória
Com a VT-x, cada transação entre o software visitante e o VMM pode trocar o espaço de endereçamento linear, permitindo ao software visitante o uso de todo o seu espaço de endereçamento. As transições VMX são gerenciadas pela VMCS, que reside no endereço físico e não no espaço de endereçamento linear.
- Ring Aliasing e Ring Compression
VT-x elimina o problema do ring aliasing, pois permite que o VMM execute o software visitante no nível de privilégio a que ele se destina. Instruções como PUSH (do CS) não podem revelar ao software que está sendo executado em uma máquina virtual. VT-x também elimina o problema da compressão de níveis de privilégio (ring compression), que surgia quando o sistema operacional visitante e as aplicações, que eram executadas sobre ele, tinham o mesmo nível de privilégio.
- Acesso ao estado privilegiado sem gerar falta
Um VMM baseado na VT-x não requer o controle do nível de privilégio do visitante e a VMCS controla a veracidade das interrupções e exceções. Sendo assim, ele pode permitir que o seu visitante acesse o GDT, IDT, LDT e TSS. A VT- x que um software visitante que esteja executando no nível 0 de privilégio use as instruções LGDT, LIDT, LLDT, LTR, SGDT, SIDT, SLDT e STR.
- Impactos adversos nas chamadas de sistema dos SO visitantes
Alguns problemas ocorriam com as instruções SYSENTER e SYSEXIT da arquitetura IA-32, quando o SO não estava sendo executado no nível 0 de privilégio. Com VT-x, o sistema operacional visitante pode ser executado no nível 0 de privilégio, eliminando o problemas associados com as transições de visitantes.
- Virtualização das Interrupções
VT-x inclui um controle de execução de máquina virtual de saída de interrupções externas. Quando este controle está configurado para 1, o VMM previne o controle do visitante sobre o mascaramento de interrupções sem que tenha ganhado o controle de todas tentativas dos visitantes de modificar o EFLAGS.IF. A VT-x também inclui um controle de saída da janela de interrupção. Quando este controle está configurado para 1, a saída da VM ocorre sempre que um software visitante estiver pronto para receber a interrupção. O VMM pode configurar esse controle, quando tiver uma interrupção virtual a ser entregue para o sistema visitante.
- Acesso ao Estado Oculto
A tecnologia VT-x inclui, na área de estado do visitante na VMCS, campos de estado da CPU, que não são representados por qualquer registrador que seja acessível por software. O processador carrega os valores dos campos da VMCS a cada entrada na VM (VM entry) e os salva na VMCS, a cada vez que sai da VM (VM exit). Esse mecanismo preserva o estado da CPU para cada máquina virtual, quando ocorre uma troca de máquinas virtuais ou quando o VMM está sendo executado.