Xen , per definizione, è virtualizzato. Assume un codice guest specifico per il kernel del sistema operativo. Non cerca di nascondere la presenza della virtualizzazione, anzi la pubblicizza in modo chiaro. Questa non è la VM che stai cercando.
Un hypervisor completamente invisibile è teoricamente fattibile, ma non economico. Il problema è con i tempi. Un hypervisor funziona potendo intercettare alcune "operazioni sensibili", in particolare relative all'accesso alla memoria, e alterarne il comportamento. L'alterazione viene eseguita con il software, che può effettivamente rimanere nascosto bloccando alcuni accessi alla memoria, emulando invece un'assenza di RAM. Tuttavia, tale intercettazione richiede un po 'di tempo: la gestione di un accesso di memoria intercettato utilizzerà alcuni cicli di clock aggiuntivi su ciò che farebbe una chiamata non intercettata su "hardware grezzo". Poiché il codice può accedere a un orologio con precisione del ciclo di clock (non accuratezza) tramite l'opcode rdtsc
, l'intercettazione può essere rilevata . A meno che non venga intercettato anche il rdtsc
opcode, per renderlo "più lento".
In effetti, il nostro hypervisor invisibile può rimanere invisibile solo "rallentando" la macchina virtuale, in modo da ottenere abbastanza "cicli extra" nascosti per le sue intercettazioni. Quindi il sistema operativo guest deve:
- o non hanno accesso a nessuna fonte temporale esterna (e, se il SO guest ha qualche rete, può accedere a fonti di orario esterne);
- o ritieni che l'hardware abbia un clock inferiore a quello a cui l'hardware fisico funziona realmente.
Come caso estremo, considera gli emulatori . Gli emulatori per vecchi sistemi degli anni '80 possono avere una precisione del ciclo di clock, ovvero rendono l'emulazione così perfetta che il codice in esecuzione non è in grado di rilevare che non funziona sull'hardware originale. Ma possono farlo solo lanciandosi un sacco di potere computazionale; il sovraccarico è tremendo (stiamo parlando di una perdita di potenza di calcolo 10x o 20x qui). Inoltre, l'emulazione degli effetti temporali per un Atari ST è un'attività relativamente semplice perché non c'è una cache in tale macchina.
La Blue Pill è una dimostrazione di un cosiddetto "hypervisor invisibile", e ha generato un acceso dibattito (come si dice, "con più calore che luce"), soprattutto perché non c'è parità tra le competenze nella programmazione dei sistemi di assemblaggio e la capacità di spiegare le cose ad altre persone con pedagogia e serenità. Ciononostante, la "pillola blu" dovrebbe essere rilevabile, sebbene la ricerca di un codice reale che lo faccia, pubblicato sul Web, potrebbe essere una sfida.
Un punto interessante sollevato dallo sviluppatore di pillole blu è che gli hypervisor dovrebbero diventare mainstream e "normali", così che la presenza di un hypervisor non dovrebbe, a lungo termine , indicare che la virtualizzazione sta succedendo. È concepibile, e persino probabile, che i sistemi operativi futuri attivino sempre un hypervisor all'avvio, quindi rilevare che la virtualizzazione è attiva non indicherà più possibili riproduzioni irregolari. Non abbiamo ancora raggiunto quel punto, però.