System call in QEMU
QEMU è un software di virtualizzazione molto versatile; basti pensare che è stato usato come base per lo sviluppo di VirtualBox e viene adoperato da KVM. Però, quando QEMU è nato è stato concepito come un puro emulatore.
Il fatto di essere un emulatore ha permesso al software di essere adattato per diverse architetture tra cui i ARM, MIPS, PowerPC, Sparc. Dunque non solo per i diffusi x86 (e x86_64), tanto che è usato per far funzionare l’emulatore di Android e dei FreeRunner.
Ma come è sommariamente fatta l’architettura di QEMU? Come funzionano le istruzioni privilegiate, tra cui le chiamate di sistema (system call)?
La versione emulatore di QEMU prevede la creazione di varie istanze del software di virtualizzazione, una per ogni ambiente ospitato la quale ottiene un suo strato di hardware virtuale.
L’hardware virtuale è un’astrazione creata da QEMU che fa percepire al sistema operativo guest di essere in esecuzione direttamente sull’hardware fisico.
Per quanto riguarda l’invocazione di una system call, il guest interagisce con il suo hardware virtuale; QEMU riceve la richiesta e la invia al suo sistema operativo, una volta ricevuto un riscontro, QEMU lo inoltra alla macchina virtuale che ha istanziato.