lançamento do projeto . Como emulador, o QEMU permite executar um programa compilado para uma plataforma de hardware em um sistema com uma arquitetura completamente diferente, por exemplo, executar um aplicativo para ARM em um PC compatível com x86. No modo de virtualização, o desempenho da execução do código em um ambiente isolado é próximo ao de um sistema nativo, graças à execução direta de instruções na CPU e ao uso do hipervisor Xen ou do módulo KVM.
O projeto foi inicialmente criado por Fabrice Bellard com o objetivo de permitir a execução de arquivos executáveis Linux compilados para a plataforma x86 em arquiteturas diferentes da x86. Ao longo dos anos de desenvolvimento, foi adicionada suporte para emulação completa de 14 arquiteturas de hardware, e o número de dispositivos de hardware emulados ultrapassou 400. Para a versão 4.2, foram feitas mais de 2200 alterações por 198 desenvolvedores.
Principais , adicionadas no QEMU 4.2:
- O gerador de código clássico TCG (Tiny Code Generator) agora suporta plugins para monitorar instruções de CPU e endereços na memória;
- No driver de dispositivos de bloco (Network Block Device) foi garantido um processamento mais eficiente das solicitações de cópia durante a leitura (copy-on-read). O código do servidor NBD foi otimizado para cópias de imagens esparsas (com lacunas). Melhorias gerais foram feitas na implementação do cliente e do servidor NBD;
- O desempenho da criptografia de discos LUKS usando o algoritmo AES-XTS foi melhorado;
- No vfio-pci, foi adicionada a suporte para a propriedade "failover_pair_id" para simplificar a migração de dispositivos VFIO;
- No virtio-mmio, foi adicionada a suporte para o padrão virtio-compatible 2 e um mecanismo definido na especificação virtio 1.1 para filas virtuais empacotadas () para a troca de dados com dispositivos virtuais de entrada/saída em modo de batelada;
- No emulador da arquitetura x86, foi adicionado um novo tipo de máquinas emuladas "microvm", utilizando virtio-mmio em vez de PCI para otimizar o desempenho. A funcionalidade de ativação e desativação do VMX foi implementada por meio das flags "-cpu". A emulação das extensões AVX512 BFloat16 foi adicionada. Suporte a novos modelos de CPU Denverton (SoC de servidor baseado em Atom), Snowridge e Dhyana foi garantido. O suporte ao macOS Hypervisor Framework ("-accel hvf") foi estabilizado.
- O emulador da arquitetura ARM agora suporta a emulação do SoC Aspeed AST2600 ("ast2600-evb"). Foi adicionada a capacidade de utilizar a tecnologia Semihosting 2.0 com as extensões STDOUT_STDERR/EXIT_EXTENDED, que permite que o dispositivo emulado use stdout, stderr e stdin para criar arquivos no lado do host. No KVM, agora é possível utilizar mais de 256 CPUs e o suporte para instruções SIMD SVE foi implementado. Nas máquinas virtuais do tipo "" foi implementado suporte para conexão a quente de memória. O desempenho da emulação usando o gerador de código TCG foi aumentado.
- No emulador da arquitetura PowerPC, agora é possível emular as instruções POWER9 mffsce, mffscrn e mffscrni. Nas máquinas emuladas "powernv", foi adicionado suporte para os dispositivos de sistema Homer e OCC SRAM;
- No emulador da arquitetura RISC-V, foi adicionada a opção "-initrd" e a capacidade de visualizar o estado completo da arquitetura no depurador;
- No emulador da arquitetura s390, foi implementado suporte para as instruções IEP (Instruction Execution Protection);
- No emulador da arquitetura 68k, foi adicionada a capacidade inicial de emular o Macintosh Quadro 800 e sistemas clássicos NeXTcube;
- No emulador da arquitetura xtensa, foi adicionado um novo tipo de máquinas emuladas "virt" e implementado suporte para ABI call0 para emulação no espaço do usuário.
Fonte: opennet.ru
