NetBSD-projectontwikkelaars
NVMM bevat een driver die op systeemkernelniveau draait en de toegang tot hardwarevirtualisatiemechanismen coördineert, en een Libnvmm-stack die in de gebruikersruimte draait. Interactie tussen kernelcomponenten en gebruikersruimte wordt uitgevoerd via IOCTL. Een kenmerk van NVMM dat het onderscheidt van hypervisors zoals KVM is
Libnvmm zelf bevat echter geen emulatorfuncties, maar biedt alleen een API waarmee u NVMM-ondersteuning kunt integreren in bestaande emulators, bijvoorbeeld QEMU. De API omvat functies zoals het maken en starten van een virtuele machine, het toewijzen van geheugen aan het gastsysteem en het toewijzen van VCPU's. Om de veiligheid te verbeteren en mogelijke aanvalsvectoren te verminderen, biedt libnvmm alleen functies die expliciet worden aangevraagd. Complexe handlers worden standaard niet automatisch aangeroepen en mogen helemaal niet worden gebruikt als ze kunnen worden vermeden. NVMM probeert het simpel te houden, zonder het te ingewikkeld te maken, zodat u zoveel mogelijk controle heeft over uw werk.
Het gedeelte op kernelniveau van NVMM is behoorlijk nauw geïntegreerd met de NetBSD-kernel en zorgt voor verbeterde prestaties door het aantal contextwisselingen tussen het gastbesturingssysteem en de hostomgeving te verminderen. Aan de kant van de gebruikersruimte probeert libnvmm algemene I/O-bewerkingen te aggregeren en onnodige systeemaanroepen te voorkomen. Het geheugentoewijzingssysteem is gebaseerd op het pmap-subsysteem, waarmee u gastgeheugenpagina's naar de swappartitie kunt verwijderen in geval van geheugentekort in het systeem. NVMM is vrij van globale vergrendelingen en kan goed worden geschaald, waardoor u tegelijkertijd verschillende CPU-kernen kunt gebruiken om verschillende virtuele gastmachines te laten draaien.
Er is een op QEMU gebaseerde oplossing voorbereid die NVMM gebruikt om hardwarevirtualisatiemechanismen mogelijk te maken. Er wordt gewerkt aan het opnemen van de voorbereide patches in de hoofdstructuur van QEMU. De combinatie QEMU+NVMM bestaat al
Bron: opennet.ru