O Xen é um dos
mais populares exemplos de para-virtualização. Na
virtualização total, o sistema operacional visitante
tenta executar tarefas protegidas e, por estarem no espaço de
aplicação do sistema operacional hospedeiro, não
podem ser executadas. No entanto, o VMM intervem e executa ou
simula a execução dessas, o que reduz o desepenho da
virtualização total. Já a
para-virtualização apresenta-se como uma alternativa a
isso, na medida em que o sistema operacional visitante é
modificado para não tentar executar diretamente na CPU as
tarefas protegidas, mas entregar essas ao VMM. Este tipo de
virtualização tem um ganho de desempenho significativo
frente à total.
Uma das maiores
vantagens do uso do Xen como VMM na para-virtualização
é o fato de que este apresenta um desempenho melhor do que os
produtos de virtualização total, quando a máquina
física hospedeira não tem instruções de
hardware de suporte a virtualização. No entanto,
há a necessidade de que o sistema visitante seja portado para
o Xen, o que não chega a ser uma desvantagem, já que os
sistemas operacionais mais comuns no mercado têm versões
para o Xen. Alguns dos sistemas suportados pelo Xen são Linux,
FreeBSD e Windows XP.
A tecnologia de
virtualização provida pelo Xen difere da tecnologia do
VMWare. O Xen segue o conceito da para-virtualização, que
fornece um conjunto de abstrações (processador virtual,
memória virtual, rede virtual etc.) sobre o qual diferentes
sistemas podem ser portados [7]. As abstrações não
são necessariamente similares ao hardware da
máquina física hospedeira.
Para entender como o
Xen implementa a para-virtualização, é importante
salientar dois conceitos: o de domínio e o de
hypervisor. Os domínios são as máquinas
virtuais do Xen. Essas podem ser de dois tipos, privilegiadas
(domínio 0) e não-privilegiadas (domínio U). O
hypervisor é o responsável por controlar os
recursos de comunicação, de memória e de
processamento das máquinas virtuais, mas não possui os
drivers para manipular os dispositivos
diretamente.
Quando a
máquina hospedeira é iniciada, uma máquina virtual
do domínio 0, privilegiado, é criada. Esse domínio
acessa uma interface de controle e executa aplicações de
gerenciamento. As máquinas virtuais dos domínios U
só podem ser criadas, iniciadas e desligadas através do
domínio 0. Na máquina virtual do domínio 0, é
executado um Linux com núcleo modificado, que pode acessar os
recursos da máquina física, já que possui
privilégios especiais, e ainda se comunicar com as outras
máquinas virtuais, domínio U.
O sistema
operacional do domínio 0 tem que ser modificado para possuir
os drivers de dispositivo da máquina física e dois
drivers que tratam requisições de acessos à
rede e ao disco realizadas pelas máquinas virtuais do
domínio U. Em suma, só a máquina virtual do
domínio 0 tem acesso direto aos recursos da máquina
física, enquanto que as demais máquinas virtuais têm
acesso a uma abstração dos recursos, que para serem
acessados, as máquina virtuais dos domínios U têm
que acessar através do domínio 0.
Figura 5: Componentes do Xen: hypervisor e
domínios [2].
Para a
virtualização da memória, o Xen reserva para cada
máquina virtual uma determinada quantidade de memória,
que pode ser alterada a qualquer momento sem a necessidade de
terminar ou reiniciar a máquina virtual. Cada máquina
virtual pode ter uma ou mais interfaces de rede virtuais. A
comunicação entre as interfaces é implementada por
dois token rings, um para enviar e outro para receber
[7].
Atualmente, o Xen
conta também com um domínio no qual é feita a
virtualização total, o que permite que sistemas
operacionais não modificados sejam executados sobre o
hypervisor Xen. Inicialmente, a escolha pela
para-virtualização justificava-se pelo fato de que o
ganho em desempenho era muito maior do que com a
virtualização total. No entanto, com o advento das
arquiteturas AMD-V e Intel VT, arquitetura que dão o suporte
de hardware para a virtualização, a
virtualização total passou a obter resultados de
desempenho melhores que os da para-virtualização. Vale
ressaltar que o domínio de virtualização total
disponível no Xen a partir da sua versão 3.0, só
pode ser usado nas máquinas hospedeiras que possuam suporte de
hardware à virtualização.