rilascio del progetto . Come emulatore, QEMU permette di eseguire un programma compilato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio, eseguire un'applicazione per ARM su un PC compatibile x86. In modalità virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato si avvicinano a quelle di un sistema nativo grazie all'esecuzione diretta delle istruzioni sulla CPU e all'uso dell'ipervisore Xen o del modulo KVM.
Inizialmente, il progetto è stato creato da Fabrice Bellard con l'obiettivo di consentire l'esecuzione di file eseguibili Linux compilati per la piattaforma x86 su architetture diverse da x86. Negli anni di sviluppo è stato aggiunto il supporto per l'emulazione completa di 14 architetture hardware, e il numero di dispositivi hardware emulati ha superato i 400. Nella preparazione della versione 4.2 sono state apportate oltre 2200 modifiche da parte di 198 sviluppatori.
Le chiave , aggiunti in QEMU 4.2:
- Nel generatore di codice classico TCG (Tiny Code Generator) è stato implementato il supporto per i plugin per il monitoraggio delle istruzioni della CPU e degli indirizzi in memoria;
- Nel driver dei dispositivi a blocchi (Network Block Device) è stata assicurata una gestione più efficiente delle richieste di copia durante la lettura (copy-on-read). Il codice del server NBD è stato ottimizzato per la copia di immagini sparse (con vuoti). Sono stati apportati miglioramenti generali all'implementazione del cliente e del server NBD;
- È stata aumentata la performance della crittografia dei dischi LUKS utilizzando l'algoritmo AES-XTS;
- Nel vfio-pci è stato aggiunto il supporto per la proprietà «failover_pair_id» per semplificare la migrazione dei dispositivi VFIO;
- Nel virtio-mmio è stato aggiunto il supporto per lo standard compatibile con virtio 2 e per il meccanismo di code virtuali impacchettati definito nella specifica virtio 1.1 () per lo scambio di dati con un dispositivo virtuale di input/output in modalità batch;
- Nell'emulatore dell'architettura x86 è stato aggiunto un nuovo tipo di macchine emulabili «microvm», che utilizzano virtio-mmio invece di PCI per ottimizzare le performance. È stata implementata la possibilità di attivare e disattivare VMX tramite i flag «-cpu». È stato aggiunto il supporto per l'emulazione delle estensioni AVX512 BFloat16. È stato fornito supporto per i nuovi modelli di CPU Denverton (System on Chip server basato su Atom), Snowridge e Dhyana. È stato stabilizzato il supporto per il macOS Hypervisor Framework («-accel hvf»);
- Nell'emulatore dell'architettura ARM è stato aggiunto il supporto per l'emulazione della SoC Aspeed AST2600 («ast2600-evb»). È stato aggiunto il supporto per la tecnologia Semihosting 2.0 con estensioni STDOUT_STDERR/EXIT_EXTENDED, che consente al dispositivo emulato di utilizzare stdout, stderr e stdin per creare file sul lato host. Nel KVM è stata added the possibilità di utilizzare più di 256 CPU e garantito il supporto per le istruzioni SIMD SVE. Nelle macchine virtuali di tipo «» è stato implementato il supporto per il hot-plug della memoria. È stata aumentata la performance dell'emulazione utilizzando il generatore di codice TCG.
- Nell'emulatore dell'architettura PowerPC è stata aggiunta la possibilità di emulare le istruzioni POWER9 mffsce, mffscrn e mffscrni. Negli emulatori delle macchine «powernv» è stato aggiunto il supporto per i dispositivi di sistema Homer e OCC SRAM;
- Nell'emulatore dell'architettura RISC-V è stata aggiunta l'opzione «-initrd» e la possibilità di visualizzare lo stato completo dell'architettura nel debugger;
- Nell'emulatore dell'architettura s390 è stato implementato il supporto per le istruzioni IEP (Instruction Execution Protection);
- Nell'emulatore dell'architettura 68k è stata aggiunta la possibilità di emulare inizialmente il Macintosh Quadro 800 e i sistemi classici NeXTcube;
- Nell'emulatore dell'architettura xtensa è stato aggiunto un nuovo tipo di macchine emulate «virt» e implementato il supporto ABI call0 per l'emulazione nello spazio utente.
Fonte: opennet.ru
