# Xen

Xen è un ipervisore di macchine virtuali Open Source distribuito sotto licenza GPL per piattaforma x86 e compatibili (al momento è in corso il supporto alle famiglie dei processori x86-64 e per IA-64) sviluppato presso il Computer Laboratory dell'Università di Cambridge. Nell'ottobre 2007 il progetto è stato acquisito da Citrix Systems.
Xen consente una completa emulazione hardware senza andare a ridurre in modo drastico le risorse del sistema, emulando sistemi operativi diversi tra loro.

## Paravirtualizzazione

Contrariamente ad altri software di virtualizzazione, Xen non mira a creare un'emulazione dell'hardware di un generico computer x86, ma piuttosto a regolare e controllare l'accesso alle risorse fisiche della macchina da parte delle varie istanze delle macchine virtuali; questo approccio prende il nome di paravirtualizzazione ed è simile a ciò che si utilizza nel campo dei mainframe e dei supercomputer, come ad esempio nei sistemi operativi VM/CMS e OS/360 di IBM, in cui il monitor di macchine virtuali (in gergo hypervisor) è implementato direttamente nell'hardware dei processori.
Questo tipo di approccio consente di ottenere un decadimento delle prestazioni minimo rispetto all'esecuzione non-virtualizzata, poiché le istruzioni provenienti dalle macchine virtuali vengono eseguite quasi tutte direttamente sul processore, senza l'intervento di un sistema operativo che si ponga tra la macchina virtuale e le risorse fisiche. Tuttavia questo comporta che il sistema operativo destinato a girare sulla macchina virtuale (guest) debba essere portato per essere reso compatibile con Xen, in quanto alcune chiamate di sistema del kernel non sarebbero possibili. Invece non è necessario ricompilare le applicazioni, in quanto i kernel Xenizzati espongono la stessa Application Binary Interface (ABI).

## Virtualizzazione

La virtualizzazione è diventata la linea guida per lo sviluppo di nuovi processori nell'ottica del risparmio energetico e nella necessità di aumentare le misure della sicurezza es. VMware Workstation, Virtual PC, e VirtualBox. La macchina virtuale o virtual machine nasce proprio dalla necessità di avere elevati standard di sicurezza su macchine che contengono dati sensibili. Intel ha contribuito al progetto Xen introducendo il supporto per la sua tecnologia VT-x (conosciuta con il nome di Vanderpool): se eseguito su sistemi dotati di questa caratteristica, Xen permette di creare delle macchine virtuali che consentono ai sistemi operativi ivi installati di girare senza modifiche. Una tecnologia simile, denominata AMD-V o Pacifica, sviluppata da AMD consente di ottenere lo stesso risultato con sistemi basati su processori AMD.

## Sistemi operativi supportati

Per quanto riguarda il supporto ai sistemi operativi, è innanzitutto necessario fare una distinzione tra il dominio0 (o dominio privilegiato) ed il dominioU (o dominio non privilegiato). Il primo rappresenta l'istanza di macchina virtuale creata direttamente dall'hypervisor al momento del boot. Da esso possono essere fatte partire successivamente le altre macchine virtuali. Tutte le altre istanze di macchina virtuale in esecuzione sono dominioU (notare che viene creato un distinto dominio per ogni istanza).
A distanza di un anno dalla versione 2.0, fa la sua comparsa nel mercato la versione 3.0, in grado di supportare sistemi guest a 32 bit, con la possibilità di aggiungere o rimuovere in tempo reale le CPU, consentendo di ottimizzare i carichi di lavoro ridistribuendoli tra i sistemi con carico minore. Vi è la possibilità di indirizzare più di 4 GB sulle CPU a 32 bit e vi è il supporto delle x86-64 (AMD) e dell'AGP. In seguito escono le versioni 3.1 e 3.2, e ciascuna introduce nuove caratteristiche e amplia la gamma dei sistemi operativi supportati.
Nella versione 3.3 i sistemi operativi supportati sono:
Dominio 0
* Linux con kernel 2.6
* NetBSD 3.0
Dominio U senza estensioni VT-x o AMD-V
* Linux con kernel 2.4
* Linux con kernel 2.6
* NetBSD 2.0
* NetBSD 3.0
* Plan 9
* FreeBSD 5
Dominio U con estensioni VT-x o AMD-V
* Potenzialmente ogni sistema operativo che supporta l'architettura virtuale fornita da Xen: quindi, Windows XP, Windows 2003, Windows Vista, Windows 2008; Solaris; versioni non modificate di Linux, e BSD.
L'ultima versione disponibile è la 4.0 nella quale sono state introdotte varie migliorie come la gestione della Fault Tolerance delle macchine virtuali, gestione ottimizzata della memoria, ecc.
Ci sono notizie aneddotiche di installazioni di Windows XP "xenizzato" su Xen: tale risultato sarebbe stato possibile nell'ambito di un programma di ricerca accademico, nell'ambito del quale Microsoft rendeva disponibile il codice sorgente di Windows stesso, e quindi permetteva la sua modifica al fine di rendere Windows compatibile con Xen.

## Altri software di virtualizzazione

* Bochs
* coLinux
* KVM
* LXC
* QEMU
* User-Mode Linux (UML)
* Virtual PC
* VirtualBox
* VMware Workstation