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.

L’hypervisor può evitare il problema con un’appropriata virtualizzazione della CPUID; nello<br />

specifico, si fa in modo che la CPUID non riporti alcuna caratteristica non supportata da tutti i<br />

processori del pool <strong>di</strong> risorse. Nell’esempio precedente, l’hypervisor virtualizzerà<br />

l’esecuzione <strong>di</strong> CPUID sul processore A in modo tale da non riportare la caratteristica X:<br />

come risultato il software guest non tenterà <strong>di</strong> utilizzare questa caratteristica e continuerà a<br />

operare correttamente dopo la migrazione sul processore B.<br />

Intel VT FlexMigration comprende meto<strong>di</strong> sia per le VM che operano in VMX non-root<br />

operation (quelle supportate da Intel VT-x), sia per le VM che non sfruttano Intel VT-x.<br />

Come detto, le macchine virtuali con il supporto alla virtualizzazione VT-x operano in VMX<br />

non-root operation; ogni esecuzione dell’istruzione CPUID fatta in questa modalità <strong>di</strong><br />

esecuzione provoca una transizione all’hypervisor: queste transizioni si chiamano CPUID-<br />

induced VM exits. La CPUID riporta informazioni sul processore ritornando dei valori nei<br />

registri EAX, EBX, ECX ed EDX; l’hypervisor emula l’esecuzione della CPUID mettendo i<br />

valori voluti in questi registri, dopo<strong>di</strong>ché restituisce il controllo al guest, che avrà le<br />

informazioni determinate dall’hypervisor.<br />

Se non c’è il supporto <strong>di</strong> Intel VT-x, si utilizzano le tecniche <strong>di</strong> CPUID masking e CPUID<br />

faulting.<br />

CPUID masking è un aiuto hardware che permette all’hypervisor <strong>di</strong> implementare la live-<br />

migration; in questo caso l’hypervisor non ha il completo controllo sull’esecuzione <strong>di</strong> CPUID<br />

del guest, ma può virtualizzare parzialmente l’istruzione, allo scopo <strong>di</strong> non riportare<br />

caratteristiche non supportate da ogni processore del pool.<br />

CPUID faulting è un aiuto hardware alternativo che, come le CPUID-induced exits, dà<br />

all’hypervisor completo controllo sulle esecuzioni della CPUID da parte del guest.<br />

Supponendo che l’hypervisor operi al livello <strong>di</strong> privilegio 0 e il software guest operi su un<br />

livello maggiore, la CPUID faulting provoca ad ogni esecuzione della CPUID una transizione<br />

all’hypervisor (attraverso un’eccezione); quest’ultimo, gestendo l’eccezione, emula<br />

l’esecuzione della CPUID mettendo i valori che vuole nei registri, e restituisce il controllo al<br />

guest, che riceve dalla CPUID le informazioni inserite dall’hypervisor [28].<br />

50

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

Saved successfully!

Ooh no, something went wrong!