La virtualizzazione dei sistemi operativi – Capitolo 3.2

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.

3.2.1 La gestione della memoria

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:

  • i sistemi operativi guest sono responsabili dell’allocazione e della gestione della tabella della pagine hardware con un coinvolgimento minimo dell’hypervisor necessario solo ad assicurare l’isolamento tra le macchine virtuali
  • Xen occupa una porzione ben identificata dello spazio degli indirizzi per evitare la pulizia del Translation Lookaside Buffer (TLB) nei cambiamenti di contesto che prevedono l’ingresso o l’uscita dell’hypervisior.
    Nel caso di architettura a 32 bit occupa i 64MB superiore dello spazio di indirizzamento di 4GB, nel caso di utilizzo del Physical Address Extention (PAE – 36 bit di indirizzamento) utilizza i 168 MB superiori, nel caso di architettura a 64 bit utilizza un blocco di indirizzamento di grandezza variabile a partire dal 48° bit.

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:

  • I segmenti devono avere un livello di privilegio inferiore rispetto a Xen
  • Non devono permettere l’accesso all’area di memoria riservata a Xen

Notizie: abbiamo molto da raccontare