A seguir são
mostrados os principais desafios tecnológicos para dar suporte
eficiente à virtualização na plataforma IA-32
[4].
- Ring Aliasing
Refere-se a
problemas aparecem quando um software é executado em um
nível de privilégio diferente do que ele foi escrito para
ser executado. Na arquitetura IA-32, uma possível maneira, de
o sistema operacional visitante tomar conhecimento de que ele
não está sendo executado no nível de privilégio
0, é executar a instrução PUSH com o
registrador de segmento de código, CS, o que coloca o
conteúdo desse registrador, que inclui o nível de
privilégio atual, na pilha.
- Compressão do espaço de
endereçamento
O VMM deve reservar
para si uma parte do espaço de endereçamento do sistema
operacional visitante. O VMM pode ser totalmente executado dentro
do espaço de endereçamento do sistema operacional
visitante, o que propicia acesso fácil aos dados do SO
visitante. No entanto, tomaria muito espaço do
endereçamento virtual do SO visitante.
O VMM deve prevenir
o acesso do SO visitante a essas áreas de memória usadas
por ele no espaço de endereçamento do SO visitante. Caso
o SO visitante conseguisse acesso a essas áreas, a integridade
do VMM estaria comprometida, se o SO visitante conseguisse escrever
nessas porções da memória, ou o SO visitante poderia
perceber que está sendo executado em uma máquina virtual,
se ele pudesse ler a área de memória restrita ao VMM. As
tentativas de acesso a essas áreas de memória devem ser
tratadas pelo VMM, de modo a emular ou dar suporte a
elas.
O termo
compressão do espaço de endereçamento refere-se aos
desafios do VMM proteger as porções de memória que
ele acessa e suportar o acesso dos visitantes a
ela.
- Acesso ao estado privilegiado sem gerar
falta
Quando um software
tenta acessar certo componente de estado da CPU sem os
privilégios necessários, uma falta é gerada, o que
permite que, no caso de um SO visitante, o VMM emule a
instrução deseja, de forma transparente para o visitante.
No entanto, existem instruções no conjunto da arquitetura
IA-32, que acessam estados privilegiados da CPU, mesmo com um
nível de privilégio insuficiente. Se o VMM mantiver os
registradores de estado da CPU com valores inesperados, um SO
visitante pode usar uma dessas instruções para determinar
que não tenha controle total da CPU.
- Impactos adversos nas chamadas de sistema
dos SO visitantes
O uso da
técnica de ring deprivileging pode gerar uma queda de
eficiência de mecanismos da arquitetura IA-32 que aceleram a
entrega e a manipulação de transições para o
sistema operacional. Algumas chamadas de sistema podem gerar
resultados para o VMM ao invés do SO visitante, sendo assim, o
VMM deve emular a execução dessas instruções
para o SO visitante.
- Virtualização das
Interrupções
A arquitetura IA-32
provê mecanismos de mascaramento de interrupções,
isto é, mecanismos que previnem que as interrupções
externas sejam entregues ao SO quando este não está
preparado para tratá-las. O mascaramento de
interrupções é feito através da flag IF
no registrador EFLAGS. No entanto, quando tratamos de um ambiente
de virtualização, o VMM geralmente não garante ao
sistema operacional visitante a habilidade de controlar o
mascaramento de interrupções. Uma das formas de impedir o
uso desses mecanismos pelo SO visitante é a geração
de uma falta no momento em que o visitante tentar usar o
mascaramento da interrupção. Interceptar todas as
tentativas do sistema visitante de fazer o mascaramento
significaria uma grande redução de desempenho do
sistema.
- Acesso ao estado
oculto
Alguns componentes
de estado do processador não ficam disponíveis em
registradores que possam ser acessados por software. A arquitetura
IA-32 não possui nenhum mecanismo que salve e recupere os
componentes ocultos do contexto do sistema operacional visitante,
durante a troca de máquinas virtuais, ou os preserve enquanto
o VMM está sendo executado.
- Compressão dos Níveis de
Privilégio
Para proteger o VMM
das aplicações visitantes, em um contexto de ring
deprivileging, os sistemas operacionais visitantes são
executados no ring 3, modelo 0/3/3. Nesse modelo, tanto o
sistema operacional visitante quanto as aplicações sobre
ele, são executados com o mesmo nível de privilégio.
Isso deixa o sistema operacional visitante vulnerável em
relação às suas
aplicações.
- Acesso freqüente a Recursos
Privilegiados
O acesso a recursos
privilegiados pelo sistema operacional visitante deve ser impedido
pelo VMM, através da geração de uma falta no momento
em que o SO visitante tente acessar esses recursos. Mesmo com
comportamento normal, o acesso freqüente a esses recursos pode
gerar uma queda de desempenho do sistema.
Tendo em vista os
desafios da arquitetura IA-32 para a virtualização, surge
a proposta da tecnologia VT-x da Intel. A tecnologia Intel VT-x
é o primeiro componente da tecnologia Intel VT, que ainda
conta com a Intel Virtualization Technology for Direct I/O.
Nesse trabalho será abordado mais a frente o funcionamento
dessas tecnologias e como elas lidam com cada um dos desafios da
virtualização na arquitetura IA-32.