4.2 Funcionamento
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].
graphic
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.