Desarrolladores de proyectos NetBSD
NVMM incluye un controlador que se ejecuta en el nivel del kernel del sistema y coordina el acceso a los mecanismos de virtualización de hardware, y una pila Libnvmm que se ejecuta en el espacio del usuario. La interacción entre los componentes del kernel y el espacio del usuario se realiza a través de IOCTL. Una característica de NVMM que lo distingue de hipervisores como KVM es
Sin embargo, Libnvmm en sí no contiene funciones de emulador, solo proporciona una API que le permite integrar el soporte NVMM en emuladores existentes, por ejemplo, QEMU. La API cubre funciones como la creación y el lanzamiento de una máquina virtual, la asignación de memoria al sistema invitado y la asignación de VCPU. Para mejorar la seguridad y reducir posibles vectores de ataque, libnvmm proporciona solo funciones que se solicitan explícitamente; de forma predeterminada, los controladores complejos no se llaman automáticamente y es posible que no se utilicen en absoluto si se pueden evitar. NVMM intenta mantener las cosas simples, sin complicarse demasiado y permitiéndole controlar tantos aspectos de su trabajo como sea posible.
La parte a nivel de kernel de NVMM está bastante integrada con el kernel de NetBSD y permite un rendimiento mejorado al reducir la cantidad de cambios de contexto entre el sistema operativo invitado y el entorno host. En el lado del espacio de usuario, libnvmm intenta agregar operaciones de E/S comunes y evitar realizar llamadas al sistema innecesariamente. El sistema de asignación de memoria se basa en el subsistema pmap, que le permite desalojar páginas de memoria invitadas a la partición de intercambio en caso de escasez de memoria en el sistema. NVMM no tiene bloqueos globales y se escala bien, lo que le permite usar simultáneamente diferentes núcleos de CPU para ejecutar diferentes máquinas virtuales invitadas.
Se ha preparado una solución basada en QEMU que utiliza NVMM para habilitar mecanismos de virtualización de hardware. Se está trabajando para incluir los parches preparados en la estructura principal de QEMU. La combinación QEMU+NVMM ya está
Fuente: opennet.ru