1.2 Definições e Conceitos
Os primeiros conceitos que devemos ter em relação à virtualização são de instruções privilegiadas e não privilegiadas. Essas instruções fazem parte do conjunto de instruções da arquitetura em questão, neste trabalho a arquitetura considerada é x86. As instruções não- privilegiadas são aquelas que não modificam a alocação ou o estado de recursos compartilhados por vários processos simultâneos, tais como processadores, memória principal e registradores especiais. Em oposição a essas instruções, temos as instruções privilegiadas, que podem alterar o estado e a alocação desses recursos.
Um computador pode operar em dois modos distintos, o modo de usuário ou o de supervisor. O modo de usuário, também chamado de espaço de aplicação, é modo no qual as aplicações normalmente são executadas. Neste modo, não é possível executar as instruções privilegiadas, que são restritas ao modo de supervisor.
O modo de supervisor tem o controle total sobre a CPU, podendo executar todas as instruções do conjunto de instruções do processador em questão, tanto as não-privilegiadas como as privilegiadas. O sistema operacional é executado neste modo. Antes de o sistema operacional passar o controle da CPU para uma aplicação do usuário, o bit de controle de modo é configurado para o modo de usuário.
Vale lembrar que na arquitetura em questão, x86, existem quatro níveis de privilégio, que são chamados de rings. Os rings são numerados de 0 a 3, nos quais o nível 0 é o que tem maior privilégio na execução de instruções, por isso, os sistemas operacionais são executados com esse nível de privilégio.
Já em um ambiente virtualizado, temos que definir mais dois conceitos, os de sistema operacional hospedeiro e o de sistema operacional visitante. O primeiro, sistema operacional hospedeiro (Host Operating System), refere-se ao sistema operacional nativo da máquina na qual ocorrerá a virtualização, ou seja, este é o sistema operacional que é executado diretamente sobre o hardware físico. O segundo, sistema operacional visitante (Gest Operating System), refere-se ao sistema operacional que é executado sobre o hardware virtualizado, isto é, o sistema operacional que é executado na máquina virtual. Uma máquina na qual é feita a virtualização pode contar com apenas um SO hospedeiro sendo executado por vez. No entanto, podem ser executados diversos SOs visitantes simultaneamente.
O próximo conceito a ser discutido é de vital importância para o entendimento da virtualização. O conceito em questão é o do Virtual Machine Monitor (VMM), ou seja, Monitor de Máquina Virtual, também conhecido por Hypervisor.
O Virtual Machine Monitor é um componente de software que hospeda as máquinas virtuais [6]. O VMM é responsável pela virtualização e controle dos recursos compartilhados pelas máquinas virtuais, tais como, processadores, dispositivos de entrada e saída, memória, armazenagem. Também é função do VMM escalonar qual máquina virtual vai executar a cada momento, semelhante ao escalonador de processos do Sistema Operacional [5].
O VMM é executado no modo de supervisor, no entanto as máquinas virtuais são executadas em modo de usuário. Como as máquinas virtuais são executadas em modo de usuário, quando estas tentam executar uma instrução privilegiada, é gerada uma interrupção e o VMM se encarrega de emular a execução desta instrução.
graphic
Figura 1: Relacionamento das Máquinas Virtuais e do VMM [6].