19.05.2013 Views

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

Facoltà di Ingegneria Tesi di laurea ANALISI DELLE TECNOLOGIE ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Nella tecnica write-protecting, l’hypervisor scrive e protegge tutte le pagine fisiche che<br />

costituiscono una gPT, e ogni mo<strong>di</strong>fica da parte del guest <strong>di</strong> aggiungere o rimuovere una<br />

traduzione provoca un’eccezione <strong>di</strong> page fault; ad ogni page fault il controllo del processore<br />

viene trasferito all'hypervisor cosicché questo possa emulare l’operazione opportuna.<br />

Nell’altra tecnica l’hypervisor permette al guest <strong>di</strong> aggiungere o rimuovere nuove traduzioni<br />

nella gPT senza intervenire; quando poi il guest accede, attraverso quella traduzione, a<br />

un’istruzione o a un dato che si trova nella memoria <strong>di</strong> riferimento del processore, avviene un<br />

page fault perché la traduzione non è presente nella sPT. Il page fault permette l’intervento<br />

dell’hypervisor, che controlla la gPT per aggiungere la traduzione mancante nella sPT ed<br />

esegue le istruzioni opportune.<br />

Entrambe le tecniche provocano un gran numero <strong>di</strong> eccezioni <strong>di</strong> page fault, che possono<br />

essere guest-induced oppure hypervisor-induced: in ogni caso l’hypervisor deve intercettare<br />

tutti i faults ed emulare le corrette operazioni per gestirle, e questo provoca significativi<br />

overhead nel meccanismo <strong>di</strong> address translation. Inoltre ogni volta che il guest tenta <strong>di</strong><br />

programmare un nuovo processo nella CPU, aggiorna il registro CR3 per stabilire la gPT<br />

corrispondente al nuovo processo; l’hypervisor deve intercettare quest’operazione, invalidare<br />

gli ingressi della TLB associati al valore precedente <strong>di</strong> CR3 e assegnare a CR3 il valore reale<br />

basato sulla corrispondente sPT del nuovo processo. I frequenti context switch all’interno del<br />

guest provocano ulteriori sovraccarichi dell’hypervisor.<br />

Gli overhead dello shadow paging sono ancora più rilevanti nei sistemi con più processori<br />

(SMP): infatti, in questo caso una stessa istanza dell gPT può essere utilizzata per l’address<br />

translation <strong>di</strong> più processori. In questo caso l’hypervisor deve o mantenere le istanze della sPT<br />

che possono essere usate da ogni processore, o con<strong>di</strong>videre la sPT tra più processori virtuali:<br />

nel primo caso si avranno sovraccarichi <strong>di</strong> memoria elevati, nel secondo ci saranno elevati<br />

sovraccarichi dovuti alla sincronizzazione [21].<br />

Si comprende, quin<strong>di</strong>, che l’address translation effettuata in questo modo richiede molti cicli<br />

<strong>di</strong> CPU: ciò può arrivare a impiegare un tempo fino a 400 volte superiore <strong>di</strong> un sistema<br />

nativo. Il risultato è che nelle applicazioni in cui si richiede un utilizzo frequente della<br />

memoria, il memory management causa la maggior parte dei problemi <strong>di</strong> prestazione dovuti<br />

alla virtualizzazione.<br />

Per migliorare le cose si può ricorrere alla Paravirtualization, che, come la binary translation,<br />

traduce il co<strong>di</strong>ce, ma non lo fa <strong>di</strong> volta in volta con l’hypervisor, dal momento che la<br />

36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!