Pengembang Proyek NetBSD
NVMM menyertakan driver yang berjalan pada tingkat kernel sistem dan mengoordinasikan akses ke mekanisme virtualisasi perangkat keras, dan tumpukan Libnvmm yang berjalan di ruang pengguna. Interaksi antara komponen kernel dan ruang pengguna dilakukan melalui IOCTL. Salah satu fitur NVMM yang membedakannya dengan hypervisor seperti KVM adalah
Namun Libnvmm sendiri tidak memuat fungsi emulator, melainkan hanya menyediakan API yang memungkinkan Anda mengintegrasikan dukungan NVMM ke dalam emulator yang sudah ada, misalnya QEMU. API mencakup fungsi-fungsi seperti membuat dan meluncurkan mesin virtual, mengalokasikan memori ke sistem tamu, dan mengalokasikan VCPU. Untuk meningkatkan keamanan dan mengurangi kemungkinan vektor serangan, libnvmm hanya menyediakan fungsi yang diminta secara eksplisitβsecara default, penangan kompleks tidak dipanggil secara otomatis dan tidak boleh digunakan sama sekali jika dapat dihindari. NVMM mencoba membuat segalanya tetap sederhana, tanpa menjadi terlalu rumit, dan memungkinkan Anda mengontrol sebanyak mungkin aspek pekerjaan Anda.
Bagian tingkat kernel NVMM cukup terintegrasi dengan kernel NetBSD, dan memungkinkan peningkatan kinerja dengan mengurangi jumlah peralihan konteks antara OS tamu dan lingkungan host. Di sisi ruang pengguna, libnvmm mencoba menggabungkan operasi I/O umum dan menghindari panggilan sistem yang tidak perlu. Sistem alokasi memori didasarkan pada subsistem pmap, yang memungkinkan Anda untuk mengeluarkan halaman memori tamu ke partisi swap jika terjadi kekurangan memori dalam sistem. NVMM bebas dari kunci global dan berskala dengan baik, memungkinkan Anda menggunakan inti CPU yang berbeda secara bersamaan untuk menjalankan mesin virtual tamu yang berbeda.
Solusi berbasis QEMU telah disiapkan yang menggunakan NVMM untuk mengaktifkan mekanisme virtualisasi perangkat keras. Pekerjaan sedang dilakukan untuk memasukkan patch yang telah disiapkan ke dalam struktur utama QEMU. Kombinasi QEMU+NVMM sudah ada
Sumber: opennet.ru