Vývojári projektu NetBSD
NVMM obsahuje ovládač, ktorý beží na úrovni jadra systému a koordinuje prístup k mechanizmom virtualizácie hardvéru, a zásobník Libnvmm, ktorý beží v užívateľskom priestore. Interakcia medzi komponentmi jadra a užívateľským priestorom sa uskutočňuje prostredníctvom IOCTL. Funkciou NVMM, ktorá ho odlišuje od hypervízorov, ako je KVM, je
Samotný Libnvmm však neobsahuje funkcie emulátora, ale poskytuje iba API, ktoré vám umožňuje integrovať podporu NVMM do existujúcich emulátorov, napríklad QEMU. Rozhranie API pokrýva funkcie, ako je vytvorenie a spustenie virtuálneho počítača, pridelenie pamäte hosťovskému systému a pridelenie VCPU. Aby sa zlepšila bezpečnosť a znížili možné vektory útokov, libnvmm poskytuje iba funkcie, ktoré sú explicitne vyžadované – v predvolenom nastavení sa zložité obslužné programy nevolajú automaticky a nemusia sa vôbec používať, ak sa im dá vyhnúť. NVMM sa snaží robiť veci jednoducho, bez toho, aby to bolo príliš komplikované, a umožňuje vám ovládať čo najviac aspektov vašej práce.
Časť NVMM na úrovni jadra je pomerne úzko integrovaná s jadrom NetBSD a umožňuje lepší výkon znížením počtu kontextových prepínačov medzi hosťujúcim OS a hostiteľským prostredím. Na strane používateľského priestoru sa libnvmm snaží agregovať bežné I/O operácie a vyhýbať sa zbytočným systémovým volaniam. Systém prideľovania pamäte je založený na podsystéme pmap, ktorý vám umožňuje vysťahovať stránky pamäte hosťa do odkladacieho oddielu v prípade nedostatku pamäte v systéme. NVMM je bez globálnych zámkov a dobre sa škáluje, čo vám umožňuje súčasne používať rôzne jadrá CPU na spustenie rôznych hosťujúcich virtuálnych strojov.
Bolo pripravené riešenie založené na QEMU, ktoré využíva NVMM na umožnenie mechanizmov virtualizácie hardvéru. Pracuje sa na zahrnutí pripravených záplat do hlavnej štruktúry QEMU. Kombinácia QEMU+NVMM už existuje
Zdroj: opennet.ru