Vývojáři projektu NetBSD
NVMM obsahuje ovladač, který běží na úrovni jádra systému a koordinuje přístup k hardwarovým virtualizačním mechanismům, a Libnvmm stack, který běží v uživatelském prostoru. Interakce mezi komponentami jádra a uživatelským prostorem se provádí prostřednictvím IOCTL. Funkce NVMM, která jej odlišuje od hypervizorů, jako je KVM, je
Samotný Libnvmm však neobsahuje funkce emulátoru, ale poskytuje pouze API, které vám umožňuje integrovat podporu NVMM do existujících emulátorů, například QEMU. Rozhraní API pokrývá funkce, jako je vytváření a spouštění virtuálního počítače, přidělování paměti hostujícímu systému a přidělování VCPU. Pro zlepšení zabezpečení a omezení možných vektorů útoků poskytuje libnvmm pouze funkce, které jsou výslovně požadovány – ve výchozím nastavení nejsou složité handlery volány automaticky a nemusí být vůbec použity, pokud se jim lze vyhnout. NVMM se snaží udržet věci jednoduché, aniž by to bylo příliš komplikované, a umožňuje vám ovládat co nejvíce aspektů vaší práce.
Část NVMM na úrovni jádra je poměrně těsně integrována s jádrem NetBSD a umožňuje lepší výkon snížením počtu kontextových přepínačů mezi hostujícím OS a hostitelským prostředím. Na straně uživatelského prostoru se libnvmm snaží agregovat běžné I/O operace a vyhnout se zbytečnému systémovému volání. Systém přidělování paměti je založen na podsystému pmap, který vám umožňuje vystěhovat stránky paměti hosta do odkládacího oddílu v případě nedostatku paměti v systému. NVMM je bez globálních zámků a dobře se škáluje, což vám umožňuje současně používat různá jádra CPU ke spouštění různých hostovaných virtuálních strojů.
Bylo připraveno řešení založené na QEMU, které využívá NVMM pro umožnění hardwarových virtualizačních mechanismů. Pracuje se na začlenění připravených patchů do hlavní struktury QEMU. Kombinace QEMU+NVMM již existuje
Zdroj: opennet.ru