Dezvoltatorii de proiecte NetBSD
NVMM include un driver care rulează la nivelul nucleului sistemului și coordonează accesul la mecanismele de virtualizare hardware și o stivă Libnvmm care rulează în spațiul utilizatorului. Interacțiunea dintre componentele kernelului și spațiul utilizatorului se realizează prin IOCTL. O caracteristică a NVMM care îl deosebește de hipervizoare precum KVM este
Cu toate acestea, Libnvmm în sine nu conține funcții de emulator, ci oferă doar un API care vă permite să integrați suportul NVMM în emulatorii existenți, de exemplu, QEMU. API-ul acoperă funcții precum crearea și lansarea unei mașini virtuale, alocarea memoriei sistemului oaspete și alocarea VCPU-urilor. Pentru a îmbunătăți securitatea și a reduce posibilii vectori de atac, libnvmm oferă doar funcții care sunt solicitate în mod explicit - în mod implicit, handlerele complexe nu sunt apelate automat și pot să nu fie utilizate deloc dacă pot fi evitate. NVMM încearcă să mențină lucrurile simple, fără a se complica prea mult și permițându-vă să controlați cât mai multe aspecte ale activității dvs.
Partea la nivel de kernel a NVMM este destul de strâns integrată cu nucleul NetBSD și permite o performanță îmbunătățită prin reducerea numărului de comutări de context între sistemul de operare invitat și mediul gazdă. În ceea ce privește spațiul utilizatorului, libnvmm încearcă să agregă operațiunile I/O comune și să evite apelurile de sistem inutil. Sistemul de alocare a memoriei se bazează pe subsistemul pmap, care vă permite să evacuați paginile de memorie pentru oaspeți în partiția de swap în caz de lipsă de memorie în sistem. NVMM nu are blocări globale și se scalează bine, permițându-vă să utilizați simultan diferite nuclee CPU pentru a rula diferite mașini virtuale invitate.
A fost pregătită o soluție bazată pe QEMU care utilizează NVMM pentru a activa mecanismele de virtualizare hardware. Se lucrează pentru includerea patch-urilor pregătite în structura principală a QEMU. Combinația QEMU+NVMM este deja
Sursa: opennet.ru