A Intel VT-x
(Intel Virtualization Technology for IA-32) é uma
tecnologia que se propõe a diminuir a complexidade dos
Monitores de Máquina Virtual (VMM), aumentar o desempenho de
sistemas virtualizados baseados em software e permitir que sistema
operacionais não modificados sejam executados, em
máquinas virtuais, com desempenho igual ou superior ao
alcançado pela paravirtulização, na qual os sistemas
operacionais são modificados ou sofrem translações
binárias para serem executados sobre um
VMM.
A
virtualização assistida por hardware, caso da Intel VT-x,
muda a forma de acesso ao sistema operacional. Sistemas
operacionais para a plataforma IA-32 são projetados para terem
acesso direto aos recursos do sistema para executarem. Na
virtualização por software, o VMM emula o hardware
requerido pelo SO visitante. Na virtualização por
hardware, o SO tem acesso direto aos recursos, sem
emulação ou qualquer modificação no SO
visitante.
As extensões de
virtualização para os processadores oferecem novas
instruções para controlar a virtualização. Vale
lembrar que a arquitetura IA-32 fornece diferentes níveis de
acesso a recursos, os chamados rings. O nível de maior
privilégio é o ring 0 e, também, é esse
o nível de privilégio que acessa diretamente o hardware
do sistema [3].
Na arquitetura
IA-32, o núcleo do sistema operacional espera ter acesso
direto à CPU executando no nível 0. Com a
virtualização por software isso não é
possível, pois o VMM já está sendo executado no
nível 0, sendo assim, o sistema operacional visitante deve ser
executado no nível 1 ou nível 3. No entanto, algumas
instruções só funcionam no nível 0, então
uma possível solução é recompilar o sistema
operacional visitante, para evitar essas instruções, essa
é a chamada paravirtualização, que muitas vezes
não é prática, pois o código do SO nem sempre
está disponível. Para evitar esse problema, o VMM captura
as instruções que podem vir a falhar na
execução e emula a sua execução, o que resulta
numa perda significativa de desempenho.