Sviluppatori del progetto NetBSD
NVMM include un driver che viene eseguito a livello del kernel del sistema e coordina l'accesso ai meccanismi di virtualizzazione dell'hardware e uno stack Libnvmm che viene eseguito nello spazio utente. L'interazione tra i componenti del kernel e lo spazio utente viene effettuata tramite IOCTL. Una caratteristica di NVMM che lo distingue dagli hypervisor come KVM è
Tuttavia, Libnvmm stesso non contiene funzioni di emulazione, ma fornisce solo un'API che consente di integrare il supporto NVMM negli emulatori esistenti, ad esempio QEMU. L'API copre funzioni come la creazione e l'avvio di una macchina virtuale, l'allocazione della memoria al sistema guest e l'allocazione delle VCPU. Per migliorare la sicurezza e ridurre i possibili vettori di attacco, libnvmm fornisce solo funzioni esplicitamente richieste: per impostazione predefinita, i gestori complessi non vengono chiamati automaticamente e potrebbero non essere utilizzati affatto se possono essere evitati. NVMM cerca di mantenere le cose semplici, senza diventare troppo complicate e permettendoti di controllare quanti più aspetti possibili del tuo lavoro.
La parte a livello di kernel di NVMM è strettamente integrata con il kernel NetBSD e consente prestazioni migliorate riducendo il numero di cambi di contesto tra il sistema operativo guest e l'ambiente host. Dal punto di vista dello spazio utente, libnvmm tenta di aggregare operazioni I/O comuni ed evitare di effettuare chiamate di sistema non necessarie. Il sistema di allocazione della memoria si basa sul sottosistema pmap, che consente di rimuovere le pagine della memoria ospite nella partizione di swap in caso di carenza di memoria nel sistema. NVMM è privo di blocchi globali e si adatta bene, consentendo di utilizzare contemporaneamente diversi core CPU per eseguire diverse macchine virtuali guest.
È stata preparata una soluzione basata su QEMU che utilizza NVMM per abilitare meccanismi di virtualizzazione dell'hardware. Sono in corso i lavori per includere le patch preparate nella struttura principale di QEMU. La combinazione QEMU+NVMM esiste già
Fonte: opennet.ru