Le principali tipologie di Virtualizzazione di sistemi

Le principali tipologie di Virtualizzazione di sistemi

Esistono molteplici tipologie di virtualizzazione di sistemi quali:

  1. Virtualizzazione completa
  2. Paravirtualizzazione
  3. Virtualizzazione a livello kernel
  4. Virtualizzazione hardware
  5. Emulazione
Le principali tipologie di Virtualizzazione di sistemi
Le principali tipologie di Virtualizzazione di sistemi

Virtualizzazione completa e Paravirtualizzazione

La virtualizzazione completa (Full-virtualization) consiste nella completa simulazione software delle risorse hardware. Per far questo ogni istruzione eseguita dalle VM deve essere intercettata e, se è sensibile, tradotta a runtime per mezzo di meccanismi software detti “binary-translation”. Il VMM è tipicamente di tipo 2, ovvero un processo eseguito all’interno dell’ambiente del sistema operativo host. Il controllo di tutte le istruzioni permette di aggirare i limiti delle architetture x86 ma provoca inevitabilmente un degrado consistente delle prestazioni.

La tecnologia di Paravirtualizzazione (Para-virtualization) offre prestazioni decisamente migliori rispetto alla virtualizzazione completa, appena al di sotto degli stessi sistemi non virtualizzati, grazie all’utilizzo di un VMM di tipo 1 e all’utilizzo di speciali chiamate di sistema, dette hypercalls.

Il VMM di tipo 1 utilizzato, detto hypervisor, gestisce direttamente le risorse hardware e fornisce alle VM un’interfaccia software simile a quella di un normale sistema operativo; la comunicazione tra VM e hypervisor avviene tramite le hypercalls che sostituiscono le supercalls utilizzate nei sistemi operativi dalle applicazioni che richiedono l’accesso all’hardware.

Con questo meccanismo è possibile implementare questa tecnologia anche sulle architetture x86, in quanto le hypercalls consentono di intercettare qualunque istruzione sensibile eseguita dalle VM, permettendo contemporaneamente alle stesse l’esecuzione di istruzioni non sensibili (user) direttamente sul processore senza l’intervento del VMM.
L’unico svantaggio di questa tecnologia è che i sistemi guest devono essere opportunamente modificati per poter utilizzare le hypercalls, il che riduce il numero e il tipo di sistemi operativi effettivamente utilizzabili (i software proprietari non sono utilizzabili in quanto è necessario avere accesso al codice sorgente per effettuare le modiche).

Virtualizzazione a livello kernel

In questa tipologia di virtualizzazione le funzionalità per la virtualizzazione sono offerte direttamente dal normale kernel del sistema operativo. Le macchine virtuali così create possono avere ognuna il proprio file-system, ma condividono il kernel del sistema operativo host.

Lo svantaggio di questo approccio è che possono essere avviate macchine virtuali con un solo tipo di sistema operativo e che un eventuale falla di sicurezza nel kernel si ripercuoterebbe su tutte le VM.

Virtualizzazione hardware

Dal 2005 Intel e AMD hanno cominciato a dotare alcuni dei processori da loro prodotti di estensioni specifiche per gestire alcuni aspetti della virtualizzazione direttamente a livello hardware.
Queste tecnologie, la VT di Intel e la Pacifica di AMD, implementano parzialmente nel processore complessi meccanismi per la gestione delle istruzioni sensibili non privilegiate o per la traduzione degli indirizzi di memoria delle VM in indirizzi fisici, funzioni che solitamente spettano al VMM.

Piuttosto che essere considerato una tipologia a sè stante, si può dire che il supporto hardware alla virtualizzazione estende le tecnologie già esistenti; in particolare, su macchine dotate di questi processori, si possono, teoricamente, para-virtualizzare anche sistemi operativi non modicati.
Questo apre la porta della virtualizzazione con buone performance anche ai sistemi a codice sorgente chiuso e quindi non modificabili, come quelli della famiglia Windows.

Emulazione

Infine, l’emulazione non è una tipologia di virtualizzazione, ma poiché i due termini a volte vengono usati indifferentemente in quanto anche l’emulazione permette di eseguire diverse macchine virtuali su un sistema operativo host, fornendo un’interfaccia software verso le risorse fisiche, essa differisce da questa.

Più nel dettaglio a differenza della virtualizzazione, l’emulazione non ha lo scopo di eseguire piu operazioni possibili nativamente sul processore fisico; al contrario è certo che tutte le istruzioni saranno controllate ed eventualmente tradotte prima di essere eseguite. Questo permette di eseguire anche ambienti compilati per architetture diverse da quelle della macchina host (ad esempio di eseguire sistemi operativi e applicazioni compilati per architetture PowerPc su processori x86 e viceversa); in pratica un’istruzione di un architettura può essere convertita in una o più istruzioni equivalenti di un’altra architettura e poi eseguita.

La virtualizzazione invece non prevede questa eventualità, ma i sistemi operativi guest devono essere compilati per la stessa architettura della macchina fisica ospitante. Tra i prodotti per l’emulazione più noti si possono ricordare QEMU, in ambiente Linux, e Microsoft Virtual PC, in ambiente Windows.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *