Che cos’è un hypervisor?

Un hypervisor è un tipo univoco di software che consente a un computer di eseguire più di un sistema operativo (SO). Attraverso un processo noto come virtualizzazione, il software induce ogni sistema operativo a pensare di avere accesso esclusivo a un particolare set di hardware. Si trova tra l’hardware fisico e il sistema operativo e presenta un insieme virtuale di hardware a tutti gli altri software in esecuzione sulla macchina. Gestisce inoltre il flusso di informazioni tra il software, l’hardware virtualizzato e l’hardware fisico. Questo tipo di software viene utilizzato sia in ambito consumer che aziendale.

Nella maggior parte dei casi, il sistema operativo di un computer viene eseguito in uno stato altamente privilegiato in cui ha accesso illimitato all’hardware della macchina mentre le applicazioni vengono eseguite in uno stato meno privilegiato e devono fare affidamento sul sistema operativo. Questi diversi livelli di privilegi di accesso all’hardware sono noti come anelli, con il sistema operativo tradizionalmente in esecuzione nell’anello 0; le applicazioni utente vengono eseguite negli anelli 1–3, che hanno meno privilegi. Questo modello funziona bene la maggior parte delle volte, ma si sfalda completamente quando si tenta di eseguire più di un sistema operativo su un singolo computer contemporaneamente. Un hypervisor risolve questo problema utilizzando una tecnica chiamata virtualizzazione.

La virtualizzazione non è un’idea nuova, ma è diventata una parola d’ordine dalla metà degli anni 2000, quando le aziende e il settore della tecnologia dell’informazione (IT) hanno realizzato il suo potenziale per ridurre i costi e aumentare l’efficienza. Esistono molti approcci diversi alla virtualizzazione, ma l’idea di base è creare set di hardware simulati, spesso noti come macchine virtuali. Nel caso di un hypervisor, che può anche essere chiamato monitor di macchina virtuale, ogni macchina virtuale contiene un sistema operativo “guest”. L’hypervisor stesso può essere eseguito direttamente sull’hardware fisico, nel qual caso è noto come tipo “bare metal” o all’interno di un sistema operativo host come hypervisor “software”.

Gli hypervisor devono utilizzare alcune tecniche molto sofisticate per gestire i propri sistemi operativi guest e assicurarsi che non siano in conflitto tra loro. Poiché un sistema operativo all’interno di una macchina virtuale non è a conoscenza di essere stato privato dei privilegi dell’anello 0, potrebbe tentare di eseguire funzioni limitate senza autorizzazione. In questi casi, l’hypervisor può intercettare una funzione prima che raggiunga l’hardware, eseguire le istruzioni in un modo che non danneggi gli altri sistemi operativi in ​​esecuzione sull’hardware e restituire il risultato al sistema operativo originale. Conosciuta come tecnica di “trappola ed emula”, questo è solo uno dei tanti concetti avanzati esclusivi del mondo della virtualizzazione.

Poiché questo tipo di software è diventato più importante e redditizio, sempre più aziende hanno cercato modi per alleggerire il carico su un hypervisor e fornire prestazioni migliori. I fornitori di software hanno modificato i loro sistemi operativi per essere consapevoli delle macchine virtuali su cui sono in esecuzione, il che significa meno tipi di scenari di trappola ed emulazione. I fornitori di hardware hanno aggiunto il supporto per un nuovo livello di privilegi a volte noto come anello -1. I programmi software più recenti possono sfruttare una o entrambe queste tecniche per aumentare le prestazioni.

Gli hypervisor possono ora essere trovati in una varietà di prodotti sia a livello consumer che aziendale. I prodotti consumer che consentono l’esecuzione di un sistema operativo all’interno di un altro spesso utilizzano un hypervisor di tipo software. Nello spazio aziendale, il software consente di consolidare i server sottoutilizzati che eseguono diversi sistemi operativi. Gli sviluppatori di software potrebbero utilizzare questo approccio per eseguire più istanze di sistemi operativi simili o addirittura identici per verificare problemi di compatibilità.