4.2 Xen
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.
graphic
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.