Como funciona o Xen
       Como visto na página anterior, o domíno 0 é aquele que tem direitos especiais de acesso ao hardware. Este domínio por sua vez possui os chamados PV Drivers que nada mais são do que os drivers de paravirtualização, divididos em dois tipos: o Network Backend Diver, que faz a interface de comunicação com o dispositivo local de rede para processar as solicitações das máquinas do domínio U; e o Block Backend Driver é o driver que faz as operações de escrita e leitura do disco rígido de solicitações oriundas, também, das máquinas do domíno U. Observe a Figura 6a:

graphic
Figura 6 - a) PV driver do domínio 0; b) PV driver do domínio U (Retirado de [10])
       No caso das máquinas paravirtualizadas (em inglês Domain U PV Guests instaladas no domínio U que não têm estes direitos privilegiados, cujo kernel é modificado (Linux, FreeBSD e Solaris) contém drivers semelhantes: Block Diver e Network Driver, respectivamente para acesso ao disco e rede (Figura 6b).

       No caso das máquinas paravirtualizadas (em inglês Domain U PV Guests instaladas no domínio Ao contrário do Linux e de outros sistemas de código aberto, o Windows não pode ter seu kernel modificado e, por isso é executado como se não tivesse consciência de que está sendo virtualizado e nem compartilhando tempo e memória com outros sistema (no caso do Linux, a retirada das instruções sensíveis torna-o consciente de que isto é feito para que seja rodado sobre um hipervisor). Na verdade o Windows é usado como se estivesse em uma virtualização total. Para cada instância do Windows criada no domínio 0, é adicionado ao SO uma parte de software chamada Xen virtual firmware que simula a BIOS que o sistema esperaria quando da sua inicialização. Este firmware se comunica com a máquina virtual no domínio 0 através de um emulador chamado Qemu-DM.

graphic
Figura 7 - Comunicação entre o domínio 0 e um sistema Windows no domínio U (Retirado de [10])

       A seguir será explicado como funciona a comunicação entre domínios e o acesso ao hardware. Uma aplicação do domíno U envia uma chamada de acesso ao disco para fazer uma operação de escrita e envia esta solicitação para o PV Block Driver, que por sua vez a envia ao domínio 0 através de um canal de eventos que permite o domínio U fazer interrupções no domíno 0. Já no lado do domíno 0, este recebeu a chamada de interrupção para que o PV Block Backend Driver acesse o bloco de memória referente à esta máquina e esreva o que foi pedido em uma área determinada do disco (Figura 8).

graphic
Figura 8 - Comunicação interdomínios (Retirado de [10])

     *Esta página foi escrita com base no estudo do artigo [10] no site oficial do Projeto Xen.