A tecnologia VT-x
extende a arquitetura IA-32 com duas novas formas de
operação da CPU: operação VMX root e VMX
non-root. O VMM é executado no modo VMX root e seus sistemas
operacionais convidados são executados no modo VMX non-root.
Os dois modos de operação dão suporte aos quatro
níveis de privilégio, permitindo que o sistema
operacional visitante seja executado no nível de
privilégio que ele deve ser executado e fornecendo ao VMM a
flexibilidade de usar múltiplos níveis de
privilégio.
O modo de
operação VMX root é similar à arquitetura IA-32
sem VT-x. Os softwares que são executados no modo VMX non-root
é desprivilegiado em alguns aspectos, independente do
nível de privilégio. VT-x define duas novas
transições: a transição do modo VMX root para o
modo VMX non-root, ou seja, do VMM para o sistema visitante, que
é chamada de VM entry, e a transição do modo
VMX non-root para o VMX root, ou seja, do sistema visitante para o
VMM, chamada de VM exit.
A Intel VT-x intrduz
um conjunto de novas instruções no processador, chamado
de Virtual Machine Extensions (Extensões de
Máquina Virtual), VMX. Esse conjunto é formado por 10
instruções específicas de virtualização:
VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH,
VMRESUME, VMXOFF e VMXON. A Figura 5 mostra o processo de
chamada de instruções para executar uma máquina
virtual. Para entrar no modo de virtualização, o a
instrução VMXON deve ser chamada pelo software e, só
então, chamar o VMM. Após entrar no modo de
virtualização, o VMM pode entrar em cada máquina
virtual usando a instrução VMLAUNCH e sair delas usando a
instrução VMRESUME. Para parar todas as máquinas
virtuais e sair do modo de virtualização, o VMM deve
executar a instrução VMXOFF [10].
Figura 5:
Operação da Intel VT-x [10].
A estrutura de
controle de máquina virtual (VMCS – Virtual Machine
Control Structure) é uma estrutura de dados que gerencia
entradas na VM (VM entry) e saídas da VM (VM
exit) e o comportamento do processador no modo VMX non-root. A
VMCS é logicamente dividida em seções, duas delas
são a área de estado do visitante e a área de estado
do hospedeiro. Essas áreas contém campos correspondentes
aos diferentes componentes de estado do processador. Entrada na VM
(VM entry) carrega o estado do processador a partir da
área de estado do visitante. Saída da VM (VM exit)
salva o estado do processador na área de estado do visitante e
carrega o estado do processador a partir da área de estado do
hospedeiro.
O comportamento do
processador muda substancialmente quando este está no modo VMX
non-root. O mais importante de ressaltar é que muitas
instruções causam a saída da VM (VM exit).
Algumas instruções não podem ser executadas no modo
VMX non-root, pois causam a saída da VM incondicionalmente,
essas instruções incluem CPUID, MOV de CR3, RDMSR e
WRMSR. Outras instruções, interrupções e
exceções podem ser configuradas para causar uma
saída da VM condicionalmente, usando-se os campos de controle
de execução da VM, na VMCS.
- Campos de Controle de Execução da
VM
Os campos de
controle de execução da VM permitem ao VMM especificar
quais instruções e eventos podem causar a saída da
VM. Existem controles separados para cada uma das seguintes
instruções: HLT, INVLPG, MOV CR8, MOV DR, MWAIT, RDPMC e
RDTSC. Controles adicionais permitem a proteção seletiva
do CR0, CR3 e CR4 [13].
A tecnologia VT-x
inclui dois controles que dão suporte à
virtualização das interrupções. Quando o
controle de saída de interrupções externas está
configurado, todas as interrupções externas causam a
saída da VM, além de que os visitantes não conseguem
mascarar as interrupções. Quando o controle de saída
da janela de interrupção está configurado, a
saída da VM ocorre sempre que um software visitante indicar
que está pronto para receber a
interrupção.
Para apoiar a
flexibilidade do VMM, VT-x inclui o mapeamento de bits que permitem
uma seletividade ao VMM quanto à causa da saída da VM. Um
desses é o mapeamento de bits de exceção, que contem
32 entradas para cada exceção da arquitetura IA-32. Isso
permite que o VMM especifique quais exceções devem causar
a saída da VM e quais não o devem fazer. Outro mapeamento
de bits permite o controle por portas das instruções de
entrada/saída (I/O).
- Detalhes da VMCS
A área de
estado do visitante contém o estado da CPU virtual associada
à VMCS. A VMCS inclui campos correspondentes aos registradores
da arquitetura IA-32 que gerenciam a operação do
processador, tais como registradores de segmento, CR3 e IDTR. No
entanto, a área de estado do visitante inclui também
campos correspondentes a certos componentes que definem o estado do
processador, mas não são registradores, por exemplo, o
descritor de caches para o registrador de segmentos. A
inclusão desses componentes permite que o VMM grave os seus
valores quando uma VM não está sendo executada e os
restaure quando a VM for reiniciada.
O VMM referencia a
VMCS com um endereço físico, mas não linear. Isso
elimina a necessidade de localizar a VMCS no espaço de
endereçamento linear do visitante, que pode ser diferente do
espaço de endereçamento linear do
VMM.