
Nella presente sezione esaminiamo l’interfaccia di paravirtualizzazione di Xen in architettura IA32 soffermandoci sugli aspetti della gestione della memoria, della CPU e dei device di I/O. Si noti che viene esaminata la paravirtualizzazione, e quindi il comportamento di Xen verso i domain U PV, e non i domain U HVM.
La virtualizzazione della memoria è senza dubbio l’aspetto più complesso, sia in termini di automatismi che deve svolgere l’hypervisor, sia per le modifiche da apportare ai sistemi operativi guest. I progettisti di Xen hanno quindi preso due decisioni, precisamente:
Lo spazio di indirizzamento riservato a Xen non è in alcun modo accessibile o mappabile dai sistemi operativi guest e tanto meno è utilizzabile dall’Application Binary Interface, evitando così che si creino delle incompatibilità con le applicazioni o causando instabilità nell’hypervisor.

Fig. 3.6: Lo spazio di indirizzamento riservato a Xen
Ogni volta che il sistema operativo guest necessita di una pagina di memoria, ad esempio alla creazione di un nuovo processo, esso la alloca e la inizializza dalla propria zona di memoria e la comunica a Xen.
A questo punto il sistema operativo guest rinuncia ai privilegi di scrittura relativi a quella pagina di memoria e tutti gli aggiornamenti successivi dovranno essere validati da Xen. Questo limita il numero di aggiornamenti permettendo al sistema operativo di mappare solo le pagine di memoria che possiede ed impedendone la mappatura in scrittura. Inoltre il sistema operativo guest può raggruppare gli aggiornamenti delle pagine per ammortizzare il costo di ingresso dell’hypervisor.
La segmentazione della memoria è virtualizzata in maniera similare, validando gli aggiornamenti della Local Description Table e della Global Description Table utilizzate dal sistema guest e dalle applicazioni in esecuzione per accedere ai segmenti di memoria.
I vincoli imposti dall’hypervisor per validare gli aggiornamenti sono i seguenti:
Ottimizza l'efficienza del tuo lavoro