Esistono due tipi principali di macchine virtuali. Uno, chiamato macchina virtuale di sistema, viene utilizzato per imitare tutti i processi e i componenti di un computer reale. L’altra, nota come macchina virtuale di processo, viene utilizzata per eseguire solo una singola applicazione e scompare quando l’applicazione viene chiusa.
Le macchine virtuali di sistema consentono a una persona di utilizzare un singolo server come se si trattasse di molti computer diversi. Utilizzando questo tipo di tecnologia, una macchina può essere riconfigurata in diversi modi. Ognuna di queste riconfigurazioni è completamente isolata dagli altri sistemi e può agire come un computer indipendente, anche se ciascuna di esse esiste sulla stessa macchina fisica. Questo isolamento significa che se un sistema va in crash, le altre macchine virtuali possono ancora essere utilizzate.
L’utilizzo di macchine di sistema consente inoltre a un utente di eseguire più sistemi operativi sulla stessa macchina. Ciò consente a un utente di eseguire programmi disponibili solo su un tipo di sistema operativo. Consente inoltre di testare un programma su più piattaforme senza cambiare macchina.
A seconda delle esigenze dell’utente, le macchine di sistema possono essere configurate per funzionare come se disponessero di una varietà di diversi tipi di hardware. All’interno di ogni macchina c’è una scheda madre virtuale, un processore virtuale, una scheda di accelerazione grafica video virtuale e tutti gli altri componenti che si trovano all’interno di un computer fisico. Il computer virtuale può anche essere configurato per utilizzare l’hardware sul sistema fisico come se fosse realizzato con specifiche diverse. Esistono tante configurazioni diverse di macchine virtuali di sistema quante sono le configurazioni di server di computer fisici.
Le macchine virtuali di processo vengono utilizzate per eseguire un singolo programma in isolamento dal sistema operativo del computer fisico. Ciò consente a un utente di eseguire un programma che altrimenti potrebbe essere incompatibile con il normale sistema operativo. Ogni macchina di processo è creata per eseguire un programma specifico ed esiste solo mentre il programma è in esecuzione. La chiusura del programma in esecuzione farà scomparire una macchina di processo e l’apertura di nuovo del programma creerà una nuova macchina virtuale.