1.1 Histórico
Os primeiros computadores que surgiram eram gigantescos e muito caros. No entanto, devido à grande demanda por uso, estes rapidamente se tornaram indispensáveis. Para socializar o uso dos computadores foi criado, no final dos anos 1960, o time-sharing, que permitia o uso de um mesmo computador por vários usuários simultaneamente de forma transparente. Embora este tenha sido um grande passo na história da computação, surgia assim um novo problema, o compartilhamento de um único computador com outras aplicações suscetíveis a falhas.
A fim de sanar esse problema, a primeira solução proposta foi o uso de vários computadores, o que se reverteria em um aumento significativo do desempenho e na garantia de isolamento entre as aplicações. Entretanto esta solução apresentava um altíssimo custo, além de ser um desperdício de recursos, já que os computadores ficavam grande parte do tempo ociosos. Tendo isto em vista, nos anos 60 a IBM começou a desenvolver a primeira máquina virtual, que permitia que um único computador fosse dividido em vários.
O primeiro sistema de virtualização desenvolvido foi o CP-67, software para o mainframe IBM 360/67, que disponibilizava ao usuário um sistema virtual do /360 da IBM. Os resultados obtidos com esse sistema foram ótimos.
Após o CP-67, a IBM lançou o VM/370, um VMM (Virtual Machine Monitor, ou Monitor de Máquina Virtual) para o Sistema /370 com arquitetura estendida, ou seja, com algumas instruções extras que permitiam a virtualização. Essas foram as primeiras tentativas de virtualização.
Em um cenário mais atual, a arquitetura mais comum é a x86 (IA-32). Essa é a arquitetura adotada pelos PCs, que se tornaram commodities. Ao contrário da arquitetura dos antigos sistemas /370 com arquitetura estendida, que apresentavam instruções que visavam a virtualização, a arquitetura x86 não foi projetada considerando a virtualização. Isso pode ser visto em pequeno conjunto de instruções que não necessitam de um modo privilegiado para serem executadas, mas podem prejudicar a estabilidade do sistema.
Ainda que seja difícil desenvolver um VMM para a arquitetura x86, algumas técnicas podem ser usadas para romper com as dificuldades impostas pelo conjunto de instruções desta arquitetura. Voltados para a arquitetura x86, podem ser citados alguns projetos relacionados, tais como VMWare, Xen, Virtual PC, Citrix, Hyper-V, entre outros.