Requisiti formali per architetture virtualizzabili di terza generazione
“Formal requirements for virtualizable third generation architectures” è un articolo pubblicato nel 1974 da Popek e Goldberg riguardo le tecniche che vengono usate per capire se un’architettura supporta la virtualizzazione.
Un VMM (virtual machine monitor) è essenzialmente il programma che si occupa di gestire le macchine virtuali ed ha il controllo completo delle risorse del sistema.
Le condizioni per le quali un calcolatore soddisfa i requisiti sono:
- Il VMM deve fornire un ambiente essenzialmente identico a quello della macchina originale.
Un programma, eseguito all’interno di una macchina virtuale, deve comportarsi come se il medesimo programma fosse eseguito direttamente sull’hardware (PROPRIETÀ D’EQUIVALENZA)
- I programmi nell’ambiente devono mostrare il minor decremento possibile della velocità (PROPRIETÀ D’EFFICIENZA)
- Il VMM deve avere completo controllo delle risorse del sistema (PROPRIETÀ CONTROLLO DELLE RISORSE)
Oltre a queste proprietà nel documento redatto da Popek e Goldberg sono enunciati tre teoremi:
- un VMM può essere costruito se il set di istruzioni sensibili di quel computer è un sottoinsieme del set delle istruzioni privilegiate.
Il VMM è formato da un suo sistema operativo e un suo kernel che sono in esecuzione direttamente sull’hardware.
Le istruzioni sensibili sono quelle che modificano o dipendono strettamente dalla configurazione delle risorse (es. registri del cpu). Queste devono far parte delle istruzioni privilegiate in quanto solo queste generano una trap se eseguite con privilegi insufficienti, la quale poi può essere gestita dal VMM. Le trap servono per notificare ad un programma che ha tentato di svolgere un’azione non autorizzata.
[ad#midarticlequadr]
Se le istruzioni sensibili non sono anche privilegiate, il VMM deve esaminare tutto quello che viene eseguito da una macchina virtuale al fine di intercettare le istruzioni sensibili perché queste non generano trap.
Un numero limitato di istruzioni richiedono di essere eseguite con i massimi privilegi perciò la loro esecuzione esterna all’ anello zero causa un’eccezione di protezione generale. Ad esempio uno di questi errori può verificarsi quando un programma tenta di usare indirizzi di memoria di altri programmi anche perché i registri base e limite (i valori degli estremi dell’intervallo di indirizzi consentiti) sono caricati tramite istruzioni privilegiate.
Nelle architetture che non includono le istruzioni sensibili nell’insieme delle privilegiate, un tentativo d’uso di istruzioni sensibili fuori dall’anello 0 non produce un’eccezione dunque il software di virtualizzazione non riceve un riscontro. Riscontro (sotto forma di trap) che otterrebbe se l’istruzione fallita fosse privilegiata.
- Un computer convenzionale di terza generazione è ricorsivamente virtualizzabile se è:
- virtualizzabile
- se può essere costruito un VMM che non dipende dal tempo (temporizzazione).
Il VMM deve appartenere alla classe dei programmi che funzionano nello stesso modo sia in una VM sia sull’hardware diretto. Se il comportamento del VMM è identico indipendentemente dove esso sia in esecuzione allora esso può essere usato per virtualizzare ricorsivamente.
- è possibile implementare un VMM ibrido per un computer convenzionale di terza generazione se l’insieme delle istruzioni sensibili in modalità utente (user sensitive instruction) è un sottoinsieme delle istruzioni privilegiate.