NetBSD-Projektentwickler
NVMM umfasst einen Treiber, der auf Systemkernelebene ausgeführt wird und den Zugriff auf Hardware-Virtualisierungsmechanismen koordiniert, sowie einen Libnvmm-Stack, der im Benutzerbereich ausgeführt wird. Die Interaktion zwischen Kernel-Komponenten und Benutzerraum erfolgt über IOCTL. Ein Merkmal von NVMM, das es von Hypervisoren wie KVM unterscheidet, ist
Allerdings enthält Libnvmm selbst keine Emulatorfunktionen, sondern stellt lediglich eine API bereit, die es ermöglicht, NVMM-Unterstützung in bestehende Emulatoren, beispielsweise QEMU, zu integrieren. Die API umfasst Funktionen wie das Erstellen und Starten einer virtuellen Maschine, die Zuweisung von Speicher für das Gastsystem und die Zuweisung von VCPUs. Um die Sicherheit zu verbessern und mögliche Angriffsvektoren zu reduzieren, stellt libnvmm nur Funktionen bereit, die explizit angefordert werden – komplexe Handler werden standardmäßig nicht automatisch aufgerufen und dürfen überhaupt nicht verwendet werden, wenn sie vermieden werden können. NVMM versucht, die Dinge einfach zu halten, ohne zu kompliziert zu werden, und Ihnen die Kontrolle über so viele Aspekte Ihrer Arbeit wie möglich zu ermöglichen.
Der Kernel-Level-Teil von NVMM ist ziemlich eng in den NetBSD-Kernel integriert und ermöglicht eine verbesserte Leistung, indem die Anzahl der Kontextwechsel zwischen dem Gastbetriebssystem und der Host-Umgebung reduziert wird. Auf der User-Space-Seite versucht libnvmm, allgemeine I/O-Vorgänge zu aggregieren und unnötige Systemaufrufe zu vermeiden. Das Speicherzuweisungssystem basiert auf dem pmap-Subsystem, das es Ihnen ermöglicht, Gastspeicherseiten auf die Swap-Partition zu verlagern, falls im System Speichermangel herrscht. NVMM ist frei von globalen Sperren und lässt sich gut skalieren, sodass Sie gleichzeitig verschiedene CPU-Kerne verwenden können, um verschiedene virtuelle Gastmaschinen auszuführen.
Es wurde eine QEMU-basierte Lösung vorbereitet, die NVMM verwendet, um Hardware-Virtualisierungsmechanismen zu ermöglichen. Derzeit wird daran gearbeitet, die vorbereiteten Patches in die Hauptstruktur von QEMU einzubinden. Die QEMU+NVMM-Kombination gibt es bereits
Source: opennet.ru