NetBSD-projektien kehittäjät
NVMM sisältää ajurin, joka toimii järjestelmäytimen tasolla ja koordinoi pääsyä laitteiston virtualisointimekanismeihin, sekä Libnvmm-pinon, joka toimii käyttäjätilassa. Ytimen komponenttien ja käyttäjätilan välinen vuorovaikutus tapahtuu IOCTL:n kautta. NVMM:n ominaisuus, joka erottaa sen hypervisoreista, kuten KVM, on
Libnvmm itsessään ei kuitenkaan sisällä emulaattoritoimintoja, vaan tarjoaa vain API:n, jonka avulla voit integroida NVMM-tuen olemassa oleviin emulaattoreihin, esimerkiksi QEMU. API kattaa toiminnot, kuten virtuaalikoneen luomisen ja käynnistämisen, muistin varaamisen vierasjärjestelmälle ja VCPU:iden varaamisen. Turvallisuuden parantamiseksi ja mahdollisten hyökkäysvektorien vähentämiseksi libnvmm tarjoaa vain toimintoja, jotka on nimenomaisesti pyydetty – oletusarvoisesti monimutkaisia käsittelijöitä ei kutsuta automaattisesti, eikä niitä saa käyttää ollenkaan, jos ne voidaan välttää. NVMM pyrkii pitämään asiat yksinkertaisina, muttei kuitenkaan liian monimutkaisia, ja antaa sinun hallita mahdollisimman monia työsi näkökohtia.
NVMM:n ydintason osa on melko tiiviisti integroitu NetBSD-ytimeen ja mahdollistaa paremman suorituskyvyn vähentämällä kontekstin vaihtojen määrää vieraskäyttöjärjestelmän ja isäntäympäristön välillä. Käyttäjätilan puolella libnvmm yrittää yhdistää yleisiä I/O-toimintoja ja välttää tarpeettomia järjestelmäkutsuja. Muistinvarausjärjestelmä perustuu pmap-alijärjestelmään, jonka avulla voit häätää vierasmuistisivuja swap-osioon, jos järjestelmässä on muistipula. NVMM:ssä ei ole globaaleja lukkoja ja skaalauksia, joten voit käyttää samanaikaisesti eri prosessoriytimiä eri vierailevien virtuaalikoneiden ajamiseen.
On valmisteltu QEMU-pohjainen ratkaisu, joka käyttää NVMM:ää mahdollistamaan laitteiston virtualisointimekanismeja. Valmisteltujen korjaustiedostojen sisällyttäminen QEMU:n päärakenteeseen on meneillään. QEMU+NVMM-yhdistelmä on jo
Lähde: opennet.ru