Maquinavirtual/Introdução à virtualização

Segundo TECHNOLOGY, A virtualização dos recursos físicos de um sistema computacional permite executar diversos sistemas operacionais em uma mesma plataforma. Isso faz com que sejam atingidas altas taxas de compartilhamento e de utilização dos recursos disponíveis. O conceito de virtualização já é bem estabelecido há décadas, porém ficou restrito, durante muito tempo, aos servidores especializados e aos mainframes. Avanços nas tecnologias dos PCs, permitiram que essa plataforma passasse a dar suporte eficiente à virtualização. No entanto, a arquitetura IA-32, plataforma PC, impõe alguns desafios à implementação da virtualização.

Em um sistema virtualizado, há a introdução de mais uma camada de software, que tem por objetivo arbitrar o acesso ao hardware subjacente a ela, assim esses recursos podem ser compartilhados pelos sistemas operacionais que estão sobre essa camada. A camada de software que controla o acesso ao hardware é chamada VMM (Virtual Machine Monitor, ou Monitor de Máquina Virtual). Os sistemas operacionais que estão sendo executados sobre essa camada são chamados de “visitantes”. A cada sistema operacional visitante, o VMM apresenta um conjunto de interfaces, que constituem a Máquina Virtual (VM, Virtual Machine).

A arquitetura IA-32 provê uma proteção para a execução de aplicações baseada em quatro níveis de privilégio, os chamados rings, no qual o nível 0 é o com maior nível de privilégios e o nível 3 é o com menor. O nível de privilégio 0 é usado por instruções que controlam funcionalidades básicas da CPU, as chamadas instruções privilegiadas, que, nesse nível, podem ser executadas sem falha e garantem a acessibilidade do espaço de endereçamento. Embora sejam quatro níveis de privilégio, grande parte dos software desenvolvidos para a arquitetura IA-32 usam somente os níveis 0 e 3.

Normalmente, para um sistema operacional ter controle sobre a CPU, alguns de seus componentes devem ter nível de privilégio 0. No entanto, quando um sistema virtualizado é considerado, o sistema operacional visitante não pode ser executado no nível de privilégio 0, pois o VMM não pode ceder esse privilégio a ele. Para contornar esse desafio, usa-se a técnica de ring deprivileging, que consiste em executar uma aplicação em um nível de privilégio menor do que ela foi inicialmente projetada para ser executada. Os dois modelos mais usados para essa técnica são o modelo 0/1/3, no qual o sistema operacional visitante é executado no nível 1 de privilégio e suas aplicações no nível 3, e o modelo 0/3/3, no qual tanto as aplicações do sistema operacional visitante como ele mesmo são executados no nível de privilégio 3. Em ambos os modelos o VMM é executado no nível 0. Vale ressaltar que o modelo mais usado é o 0/3/3.