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:
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.
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).
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.
|