Um hi­per­vi­sor (também conhecido pelo seu nome em inglês: hy­per­vi­sor) é um software ou firmware que cria e gere máquinas virtuais, abs­traindo os recursos de hardware de um com­pu­ta­dor físico e dis­po­ni­bi­li­zando-os a vários sistemas ope­ra­ti­vos em si­mul­tâ­neo. Em vez de montar um sistema completo (hardware mais sistema operativo), gera-se sim­ples­mente uma versão virtual: uma re­pre­sen­ta­ção virtual de um ambiente de PC.

Como funciona um hi­per­vi­sor?

Ao criar uma máquina virtual (VM), esta é executada numa máquina real não vir­tu­a­li­zada, como um PC. A VM depende, portanto, do hardware físico. Por isso, existe uma camada in­ter­mé­dia entre ambos os níveis, res­pon­sá­vel pela gestão: o hi­per­vi­sor.

O hi­per­vi­sor é um software res­pon­sá­vel pela gestão dos recursos ne­ces­sá­rios. Este programa, também conhecido como Virtual Machine Monitor (VMM), atribui os recursos do sistema. Desta forma, é possível executar várias máquinas virtuais di­fe­ren­tes num mesmo sistema anfitrião, uma vez que o hi­per­vi­sor garante que não in­ter­fe­rem entre si e que todas dispõem da ca­pa­ci­dade ne­ces­sá­ria.

Em resumo, o hi­per­vi­sor cria uma camada de abstração entre o hardware e os sistemas ope­ra­ti­vos que nele são exe­cu­ta­dos. Isto é con­se­guido dividindo os recursos de hardware em unidades lógicas e atri­buindo a cada VM um ambiente próprio. Assim, as máquinas virtuais dão a sensação de estarem a ser exe­cu­ta­das di­re­ta­mente no hardware real, embora, na realidade, estejam a partilhar os recursos com outras VM.

Nota

A separação rigorosa entre as di­fe­ren­tes máquinas virtuais não só garante uma boa dis­tri­bui­ção dos recursos, como também aumenta a segurança. Graças ao hi­per­vi­sor, garante-se que um sistema convidado não possa aceder aos ficheiros de outro. Isto é es­pe­ci­al­mente im­por­tante em ambientes de teste, uma vez que, desta forma, um programa de­fei­tu­oso não pode danificar outras máquinas virtuais de teste.

Gestão da memória

Na vir­tu­a­li­za­ção da CPU, o hi­per­vi­sor utiliza técnicas como a divisão temporal (time-slicing) para dis­tri­buir a ca­pa­ci­dade de com­pu­ta­ção de forma equi­ta­tiva entre as máquinas virtuais (VM). Os pro­ces­sa­do­res modernos incluem fun­ci­o­na­li­da­des es­pe­cí­fi­cas de vir­tu­a­li­za­ção (por exemplo, Intel VT-x ou AMD-V) que auxiliam o hi­per­vi­sor e reduzem a so­bre­carga.

A gestão da memória RAM é realizada através de técnicas de paginação (paging) e ma­pe­a­mento (mapping). O hi­per­vi­sor atribui endereços de memória virtual a blocos de memória física, de modo que cada VM só pode aceder ao seu próprio espaço de memória.

Quando a memória é in­su­fi­ci­ente, pode utilizar me­ca­nis­mos como a so­bre­a­lo­ca­ção de memória (memory over­com­mit­ment) ou o ba­lo­na­mento de memória (memory bal­lo­o­ning) para dis­tri­buir os recursos de forma mais eficiente entre as máquinas virtuais.

Gestão de E/S e de dis­po­si­ti­vos

As máquinas virtuais acedem a dis­po­si­ti­vos de hardware, como discos rígidos, placas de rede ou placas gráficas, através de in­ter­fa­ces virtuais. O hi­per­vi­sor emula esses dis­po­si­ti­vos ou re­di­re­ci­ona os pedidos di­re­ta­mente para o hardware físico, uti­li­zando técnicas de E/S direta (Direct I/O) ou passagem direta (pass-through). Isto garante um equi­lí­brio entre com­pa­ti­bi­li­dade e de­sem­pe­nho.

Iso­la­mento e segurança

Uma das prin­ci­pais vantagens da vir­tu­a­li­za­ção é o iso­la­mento entre as máquinas virtuais (VM). Cada VM é executada no seu próprio ambiente, de modo que os erros ou ataques numa máquina virtual não têm efeitos diretos sobre outras máquinas virtuais nem sobre o sistema anfitrião. O hi­per­vi­sor aplica diversos me­ca­nis­mos de segurança para garantir esta separação rigorosa, entre os quais a proteção de memória, os controlos de acesso e as técnicas de iso­la­mento em ambientes de teste (sand­bo­xing).

Di­fe­ren­tes tipos de monitores de máquinas virtuais

Dis­tin­guem-se dois tipos de monitores de máquinas virtuais (VMM): hi­per­vi­so­res de tipo 1 e de tipo 2. Cada um oferece vantagens muito es­pe­cí­fi­cas. O primeiro é também o mais antigo: já na década de 1960 foram re­a­li­za­das as primeiras ten­ta­ti­vas de vir­tu­a­li­za­ção com esta tec­no­lo­gia.

Hi­per­vi­sor de tipo 1

O primeiro tipo é conhecido como hi­per­vi­sor nativo (em inglês, native hy­per­vi­sor) ou bare metal hy­per­vi­sor. Esta forma de VMM é instalada di­re­ta­mente no hardware físico e não está ligada ao sistema operativo do anfitrião. Por con­se­guinte, este hi­per­vi­sor também deve incluir todos os con­tro­la­do­res de dis­po­si­ti­vos. O consumo de recursos do hi­per­vi­sor de tipo 1 é com­pa­ra­ti­va­mente reduzido, porque os processos in­for­má­ti­cos não são exe­cu­ta­dos através do sistema operativo do anfitrião. Este tipo de hi­per­vi­sor é es­pe­ci­al­mente adequado para uti­li­za­do­res que pretendam con­fi­gu­rar um servidor dedicado à vir­tu­a­li­za­ção. Para projetos de pequena dimensão em ambientes do­més­ti­cos, não faria sentido utilizar um hi­per­vi­sor de tipo 1, uma vez que seria demasiado complexo.

Imagem: Esquema del funcionamiento del hipervisor de tipo 1
El hi­per­vi­sor de tipo 1 se instala di­rec­ta­mente en el hardware.

Hi­per­vi­sor de tipo 2

O segundo tipo (também conhecido como hi­per­vi­sor hospedado) requer um sistema operativo existente, que, por sua vez, assenta no hardware físico. Os hi­per­vi­so­res de tipo 2 são ins­ta­la­dos como qualquer outro programa. Em seguida, o VMM gere a vir­tu­a­li­za­ção. Neste caso, não é ne­ces­sá­rio que os con­tro­la­do­res de dis­po­si­ti­vos estejam ins­ta­la­dos no hi­per­vi­sor, uma vez que o próprio sistema operativo se encarrega de os trans­fe­rir para o software. No entanto, esta co­mo­di­dade reduz o de­sem­pe­nho, porque grande parte dos recursos é investida no sistema operativo do anfitrião. De qualquer forma, graças à sim­pli­ci­dade do processo de ins­ta­la­ção e con­fi­gu­ra­ção, os hi­per­vi­so­res de tipo 2 são perfeitos para projetos de menor dimensão.

Imagem: Esquema del funcionamiento del hipervisor de tipo 2
El hi­per­vi­sor de tipo 2 se instala en un sistema operativo existente.
Ir para o menu principal