Desenvolvedores de projetos NetBSD
O NVMM inclui um driver que roda no nível do kernel do sistema e coordena o acesso aos mecanismos de virtualização de hardware, e uma pilha Libnvmm que roda no espaço do usuário. A interação entre os componentes do kernel e o espaço do usuário é realizada através do IOCTL. Um recurso do NVMM que o distingue de hipervisores como o KVM é
No entanto, o próprio Libnvmm não contém funções de emulador, mas apenas fornece uma API que permite integrar o suporte NVMM em emuladores existentes, por exemplo, QEMU. A API cobre funções como criação e inicialização de uma máquina virtual, alocação de memória para o sistema convidado e alocação de VCPUs. Para melhorar a segurança e reduzir possíveis vetores de ataque, libnvmm fornece apenas funções que são explicitamente solicitadas – por padrão, manipuladores complexos não são chamados automaticamente e não podem ser usados se puderem ser evitados. O NVMM tenta manter as coisas simples, sem ficar muito complicado e permitindo que você controle tantos aspectos do seu trabalho quanto possível.
A parte do NVMM no nível do kernel é totalmente integrada ao kernel do NetBSD e permite melhor desempenho, reduzindo o número de alternâncias de contexto entre o sistema operacional convidado e o ambiente host. No lado do espaço do usuário, libnvmm tenta agregar operações de E/S comuns e evitar fazer chamadas de sistema desnecessariamente. O sistema de alocação de memória é baseado no subsistema pmap, que permite despejar páginas de memória guest para a partição swap em caso de falta de memória no sistema. O NVMM é livre de bloqueios globais e é bem dimensionado, permitindo que você use simultaneamente diferentes núcleos de CPU para executar diferentes máquinas virtuais convidadas.
Foi preparada uma solução baseada em QEMU que utiliza NVMM para habilitar mecanismos de virtualização de hardware. Estão em curso trabalhos para incluir os patches preparados na estrutura principal do QEMU. A combinação QEMU+NVMM já está
Fonte: opennet.ru