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.
Figura 1: Relacionamento das Máquinas
Virtuais e do VMM [6].