NetBSD projektutvecklare
NVMM inkluderar en drivrutin som körs på systemkärnnivå och koordinerar åtkomst till hårdvaruvirtualiseringsmekanismer och en Libnvmm-stack som körs i användarutrymmet. Interaktion mellan kärnkomponenter och användarutrymme utförs genom IOCTL. En funktion hos NVMM som skiljer den från hypervisorer som KVM är
Libnvmm i sig innehåller dock inga emulatorfunktioner utan tillhandahåller bara ett API som låter dig integrera NVMM-stöd i befintliga emulatorer, till exempel QEMU. API:et täcker funktioner som att skapa och starta en virtuell maskin, allokera minne till gästsystemet och allokera VCPU:er. För att förbättra säkerheten och minska möjliga attackvektorer tillhandahåller libnvmm endast funktioner som är explicit efterfrågade – som standard anropas inte komplexa hanterare automatiskt och kanske inte används alls om de kan undvikas. NVMM försöker hålla saker enkla, utan att bli för komplicerade, och låta dig kontrollera så många aspekter av ditt arbete som möjligt.
Kärnnivådelen av NVMM är ganska tätt integrerad med NetBSD-kärnan och möjliggör förbättrad prestanda genom att minska antalet kontextväxlar mellan gäst-OS och värdmiljön. På användarutrymmessidan försöker libnvmm samla vanliga I/O-operationer och undvika att göra systemanrop i onödan. Minnestilldelningssystemet är baserat på pmap-undersystemet, vilket gör att du kan vräka gästminnessidor till swap-partitionen i händelse av minnesbrist i systemet. NVMM är fri från globala lås och skalar väl, vilket gör att du kan använda olika CPU-kärnor samtidigt för att köra olika virtuella gästmaskiner.
En QEMU-baserad lösning har tagits fram som använder NVMM för att möjliggöra hårdvaruvirtualiseringsmekanismer. Arbete pågår för att inkludera de förberedda lapparna i QEMU:s huvudstruktur. Kombinationen QEMU+NVMM finns redan
Källa: opennet.ru