# Virtualização x86

Em computação, virtualização x86 é a funcionalidade que permite que vários sistemas operacionais compartilhem recursos do processador x86 ao mesmo tempo, de maneira segura e eficiente, uma funcionalidade genericamente conhecida como virtualização de hardware. No final dos anos 1990 a virtualização x86 foi conseguida por meio de complexas técnicas de software, que superaram a falta de suporte à virtualização dos processadores e atingiram um desempenho razoável. Em meados dos anos 2000, Intel e AMD adicionaram suporte nativo à virtualização em seus processadores, tornando o software de virtualização mais simples.
Na virtualização x86 com emulação de processador e hardware x86, um "convidado" ou "Sistema Operacional virtual" pode funcionar como um processo no "Sistema Operacional hospedeiro", com pouca ou nenhuma modificação no sistema operacional convidado. Uma máquina virtual (VM) é um ambiente criado por um virtualizador (como os famosos: VirtualBox e o VMware Player). Clientes executam sistemas operacionais em máquinas virtuais.
O cenário a seguir ilustra o típica virtualização x86 desktop:
* Um PC desktop padrão (a máquina física hospedeira) é executado a 32-bit sistema operacional Linux Ubuntu.
* A "VMware Player para Linux" é executado no sistema.
* A compilação padrão do Microsoft Windows XP (o sistema convidado) é instalado e executado no "VMware Player para Linux" como uma máquina virtual x86.
* Os usuários veem um desktop normal do Windows XP dentro da janela do aplicativo VMware Player com nenhuma instalação ou hardware dedicado para a máquina virtual.
* Os usuários podem iniciar e parar a máquina virtual na vontade de usá-lo como um computador físico executando um OS com acesso a hardware, rede local e à Internet.
* A máquina virtual aparece para a máquina hospedeira do sistema operacional como um aplicativo nativo que criar e gerenciar uma coleção de arquivos no disco rígido do hospedeiro e usa a memória RAM da máquina hospedeira quando está em execução. Esse aplicativo nativo, um programa Linux, neste cenário, ações de entrada e saída são exibidas na área de trabalho virtual.

## Técnicas de Software

A VMware introduziu o primeiro produto de virtualização de x86 em 8 de Fevereiro de 1999. O "VMware Virtual Platform", foi baseado em pesquisas anteriores de fundadores da VMware na Universidade de Stanford. VMware arquivou para uma patente sobre suas técnicas em Outubro de 1998, e recebeu Patente 6.397.242 em 28 de Maio de 2002. Software de virtualização VMware e similares para a família de processador x86 deve empregar técnicas de tradução binária para interceptar e virtualizar a execução de determinadas instruções. Estas técnicas incorrer em alguma sobrecarga de desempenho em comparação com uma VM em execução em uma arquitetura nativa virtualizadora (como o IBM System/370 ou Motorola MC68020).
Microsoft oferece três opções de produtos baseado virtualização x86 no Windows: Microsoft Virtual PC e Microsoft Virtual Server, baseado na tecnologia adquirida da Connectix e Hyper-V,mais solução empresarial avançada.
Soluções em código aberto incluir QEMU, Kernel-based Virtual Machine (em inglês: KVM) e VirtualBox.
Os sistemas de investigação Denali, L4 e Xen fornecem alto desempenho de virtualização de x86 através da implementação de uma máquina virtual que difere do hardware primário. Esta abordagem, conhecida como paravirtualização, envolve portar sistemas operacionais para rodar em máquina virtual resultante, que não implementar as partes do conjunto de instruções x86 reais que são difíceis de virtualizar. A partir da versão 3.0 Xen suporta a virtualização completa com um sistema operacional convidado não modificado. Isso pressupõe que o sistema hospedeiro suporta virtualização assistida por hardware (tais como Intel VT ou AMD-V).

## Suporte de Hardware

A arquitetura do processador x86, inicialmente, não cumpriu o "Formal Requirements for Virtualizable Third Generation Architectures", uma especificação para a virtualização criado em 1974 por Gerald J. Popek e Robert P. Goldberg. Assim, os desenvolvedores acharam difícil implementar uma plataforma de máquina virtual na arquitetura x86, sem sobrecarga significativa na máquina hospedeira. Em 2005 e 2006, Intel e AMD (trabalho independente) resolveu este problema criando novas extensões "Processadoras" para a arquitetura x86. Embora a aplicação efectiva das extensões do processador diferem entre AMD e Intel, tanto alcançar o mesmo objetivo. Ambos permitem um hypervisor da máquina virtual para executar um sistema operacional modificado, sem incorrer em penalidades de desempenho significativo de emulação.

## AMD Virtualização (AMD-V)

AMD mercados de virtualização extensões para arquitetura 64-bit x86 como AMD Virtualization, abreviado AMD-V. É ainda referida como "Pacifica", o processador AMD codinome interno do projeto pelo manual de usuário Xen (http://bits.xensource.com/Xen/docs/user.pdf).
Em 23 de maio de 2006, a AMD lançou o Athlon 64 ( "Orleans"), o Athlon 64 X2 ( "Windsor") e o Athlon 64 FX ( "Windsor") como o primeiro processador AMD para suportar esta tecnologia.
AMD-V também possui a capacidade Athlon 64 e Athlon 64 X2 família de processadores com "F" ou "G" no soquete AM2 (não o soquete 939), Turion 64 X2 e Opteron de 2nd geração e 3rd-geração, Phenom e os processadores Phenom II. Processadores Apenas Sempron exceto Sable e Huron não incluem suporte para processadores AMD-V.
Começando com a linha Barcelona, AMD Opteron CPUs virtualizadoras uma tecnologia de hardware chamado Rapid Virtualization Indexing, posteriormente adaptado pela Extended Page Tables(EPT).

## Tecnologia de Virtualização da Intel para o x86 (Intel VT-x)

Anteriormente denominados "Vanderpool", VT-x representa a tecnologia de virtualização da Intel para a plataforma x86. Intel inclui Extended Page Tables (EPT), uma tecnologia de virtualização page-table na arquitetura Nehalem. A partir de 2009 nem todos os recentes processadores Intel suportam VT-x - A Intel usa o recurso para o seu segmento de mercado. Para uma completa lista e actualizada consulte o site da Intel. Os seguintes processadores Intel inclui suporte para VT-x:
* Pentium 4 662 e 672
* Pentium Extreme Edition 955 e 965 (e não Pentium 4 Extreme Edition com HT)
* Pentium D 920-960 exceto 945, 935, 925, 915
* Core Duo T2300, T2400, T2500, T2600, T2700 (Yonah)
* Core 2 Duo E6300, E6400, E6320, E6420, E6540, E6550, E6700, E6750, E6850 (Conroe)
* Core 2 Duo E5400, E7600, E8200, E8300, E8400, E8500, E8600 e algumas versões do E7400 e E7500 (Wolfdale)
* Mobile Core 2 Duo T5500, T5600, T6670, T7100, T7200, T7250, T7300, T7400, T7500, T7600, T7600G, T7700, T7800, U7500, L7200, L7300, L7400, L7500, L7700, U7500, U7600, U7700 (Merom)
* Mobile Core 2 Duo SU9300, SU9400, SU9600, SL9300, SL9380, SL9400, SL9600, SP9300, SP9400, SP9600, P7370, P7570, P8400, P8600, P8700, P8800, P9500, P9600, P9700, T8100, T8300, T9300, T9400, T9500, T9550, T9600, T9800, T9900 (Penryn)
* Core 2 Quad Q6600, Q6700 (Kentsfield)
* Core 2 Quad Q8400, Q8400S, Q9300, Q9400, Q9400S, Q9450, Q9550, Q9550S, Q9650 e algumas versões do Q8300 (Yorkfield)
* Core 2 Extreme X6800 ( Conroe XE )
* Core 2 Extreme QX6700, QX6800, QX6850 (Kentsfield XE)
* Core 2 Extreme QX9650, QX9770, QX9775 (Yorkfield XE)
* Xeon 3300 e +, 5000, 7000 series
* Atom Z520, Z530, Z540, Z550 (Silverthorne)
* Todos os processadores Intel Core i7
* Todos os processadores Intel Core i5
* Pentium Dual-Core E6300, E6500 e algumas versões do E5300 e E5400*
* Celeron E3200, E3300, E3400 (que será lançado em 2010)
Nota: Se não tiver certeza se um processador Intel suporta Intel VT-x ou não, verificar o Intel Processor Spec Finder para obter informações oficiais.
Importante: Mesmo que alguns modelos parecem suportar Intel VT, nem todas as CPUs do mesmo modelo suportam. Exemplo: Intel Core 2 Duo T5500 parece suportar Intel VT , mas dos quatro modelos deste processador, apenas um (SL9U8) suporta Intel VT.

### IOMMU

Uma entrada/saída da unidade de gerenciamento de memória (IOMMU) permite que as máquinas virtuais hospedeiras usem diretamente os dispositivos periféricos, tais como Ethernet, placas aceleradoras gráficas e controladores de disco rígido, através da DMA e remapeamento de interrupções. Tanto a AMD e a Intel lançaram especificações:
* A especificação da AMD, "AMD-Vi" (anteriormente apenas IOMMU)
* "Intel Virtualization Technology for Directed I/O" (VT-d)

### Uma nota aos convidados de 64-bit

Pode-se executar um 64-bits em um 32-bit OS anfitrião se o processador subjacente é executado em modo de 64 bits e suporta as extensões de virtualização necessárias. Nem todas as plataformas suportam isso.

### Virtualização de recursos de ativação

Intel VT-x característica necessária de ativação na BIOS antes dos aplicativos fazerem uso dele. A maioria dos fabricantes de computador e placa-mãe/BIOS/chipset o suporte esta desabilitado por padrão, mas basta ativar está opção.

### Software usando AMD-V e/ou Intel VT

O seguinte software condicionalmente faz uso de recursos de tecnologia de virtualização:
* Kernel-based Virtual Machine(em inglês: KVM) - um módulo de Linux e o hypervisor. Ele suporta ambas as arquiteturas (AMD-V e VT-x) e requer uma delas. Suporta os clientes em tempo real.
* VirtualBox roda em Windows, FreeBSD, Linux, Mac OS X e Solaris. Ele oferece suporte a Intel VT e AMD-V.
* Xen - um sistema operacional separado e independente, estruturada com o Xen hypervisor como a camada mais baixa e mais privilegiadas. Ele oferece suporte a Intel VT e AMD-V.
* Blue Pill (prova de conceito de malware)
* VMware ESX Server - também conhecido como vSphere. Produto de virtualização da VMware suporta Intel VT e AMD-V.
* Hyper-V - Hyper-V - a plataforma da Microsoft/Hypervisor que é executado no Windows Server 2008. Ele requer Intel VT ou AMD-V.
* LynxSecure - Secure MILS Hypervisor da LynuxWorks. Suporta Intel VT-x e VT-d.
* Microsoft Virtual Server (também com a marca Microsoft Virtual PC ou o Virtual PC com Windows) - Virtual Server 2005 R2 SP1 oferece suporte a virtualização assistida por hardware.
* Oracle VM - Oracle VM Server é (licença GPL) usa o Xen hypervisor, enquanto que o Oracle VM Manager é de código fechado.
* Bochs é um emulador multiplataforma da plataforma x86. Isso quer
dizer que ele pode executar SO's compilados para a plataforma x86.
* Parallels Workstation e Parallels Desktop para Mac - hypervisor leve com suporte a Intel VT-x e AMD-V . Requer suporte de hardware para executar máquinas virtuais de 64 bits.
* Parallels Server - Enterprise versão do Parallels Workstation e Desktop para Mac. Irá suportar a IOMMU Intel VT-d. Requer suporte de hardware para executar máquinas virtuais de 64 bits.
* Padded Cell - tecnologia de máquina virtual da Green Hills Software hospedados na INTEGRITY em tempo real do sistema operacional. Suporta ambas as arquiteturas.
* Real-Time Systems RTS Real-Time Hypervisor para x86.
* Sun xVM - xVM Server, baseado no Xen em x64.
* Virtual Iron - suporta ambas as arquiteturas.
* VirtualLogix - suporta ambas as arquiteturas.
* VMware Workstation, VMware Fusion, VMware Server — a partir de 2009 , as versões recentes suportam ambas as arquiteturas.
* VMware Server - Exige suporte de hardware para executar 64-bit máquinas virtuais.
* TenAsys Virtualization Platform EVM para Windows.
* Windows Virtual PC 7 - (a partir de 2009 versão mais recente do Microsoft Virtual PC, rodando no Windows 7) e XP Mode (Windows da máquina virtual XP rodando dentro do Windows 7).
* acontis technologies baseadas em x86 RTOSVisor que está disponível como Type1 e Real-Time Type2 Hypervisor, como Type2 não exigir o Intel VT ou AMD-V e também suporta os processadores single core.
* Wind River Hypervisor fornece virtualização em tempo real para sistemas embarcados utilizando Intel VT.

## Convidados de 64 bits

Em algumas plataformas, é possível executar um cliente de 64 bits em um 32-bit OS hospedeiro se o processador subjacente é executado no modo de 64 bits e suporta as extensões de virtualização necessária.

## Exemplo cenários de virtualização x86
### Executando uma ou mais aplicações que não são suportados pelo sistema operacional hospedeiro

Uma máquina virtual rodando o sistema operacional convidado exigido poderia permitir que as aplicações desejadas para ser executado, sem alterar o sistema operacional hospedeiro.

### Avaliação de um sistema operacional alternativo

O novo sistema operacional pode ser executado dentro de uma VM, sem alterar o sistema operacional hospedeiro.

### A virtualização de servidores

Múltiplos servidores virtuais poderão ser executados em um único servidor físico, a fim de aproveitar melhor os recursos de hardware do servidor físico.

### Duplicando ambientes específicos

Uma máquina virtual pode, dependendo do software de virtualização utilizado, ser repetido e instalado em várias máquinas.

### Criando um ambiente protegido

Se um convidado OS rodando em uma máquina virtual torna-se infectado com malware o sistema operacional do hospedeiro, a exposição ao risco pode ser limitado, dependendo da configuração do software de virtualização.

## Veja também

* Virtualização de Desenvolvimento
* Máquina virtual
* A comparação da plataforma de máquinas virtuais
* Comparação da aplicação de máquinas virtuais
* Emulador
* Virtualização assistida por hardware
* Virtualização de rede
* Paravirtualização
* Virtualização de nível de sistema operacional