NetBSD projektudviklere
NVMM inkluderer en driver, der kører på systemkerneniveau og koordinerer adgang til hardwarevirtualiseringsmekanismer, og en Libnvmm-stak, der kører i brugerrummet. Interaktion mellem kernekomponenter og brugerrum udføres gennem IOCTL. En funktion ved NVMM, der adskiller den fra hypervisorer som KVM er
Libnvmm i sig selv indeholder dog ikke emulatorfunktioner, men leverer kun en API, der giver dig mulighed for at integrere NVMM-understøttelse i eksisterende emulatorer, for eksempel QEMU. API'en dækker funktioner som at oprette og starte en virtuel maskine, allokere hukommelse til gæstesystemet og allokere VCPU'er. For at forbedre sikkerheden og reducere mulige angrebsvektorer, leverer libnvmm kun funktioner, der er eksplicit anmodet om - som standard kaldes komplekse handlere ikke automatisk og kan slet ikke bruges, hvis de kan undgås. NVMM forsøger at holde tingene enkle, uden at blive for komplicerede, og giver dig mulighed for at kontrollere så mange aspekter af dit arbejde som muligt.
Kerneniveaudelen af NVMM er ret tæt integreret med NetBSD-kernen og giver mulighed for forbedret ydeevne ved at reducere antallet af kontekstskift mellem gæste-OS og værtsmiljøet. På brugerpladssiden forsøger libnvmm at samle almindelige I/O-operationer og undgå at foretage unødvendige systemkald. Hukommelseallokeringssystemet er baseret på pmap-undersystemet, som giver dig mulighed for at fjerne gæstehukommelsessider til swap-partitionen i tilfælde af hukommelsesmangel i systemet. NVMM er fri for globale låse og skalerer godt, hvilket giver dig mulighed for samtidigt at bruge forskellige CPU-kerner til at køre forskellige virtuelle gæstemaskiner.
Der er udarbejdet en QEMU-baseret løsning, der bruger NVMM til at aktivere hardwarevirtualiseringsmekanismer. Der arbejdes på at inkludere de forberedte patches i QEMU's hovedstruktur. QEMU+NVMM-kombinationen er allerede
Kilde: opennet.ru