QEMU

QEMU merupakan singkatan dari Quick Emulator yaitu emulator tidak berbayar dan open-source yang melakukan virtualisasi perangkat keras.
QEMU adalah mesin virtual monitor yang dihosting, mengemulasi prosesor mesin melalui terjemahan biner dinamis dan menyediakan satu set perangkat keras dan model perangkat yang berbeda untuk mesin, dapat menjalankan berbagai sistem operasi tamu. Hal ini juga dapat digunakan dengan KVM untuk menjalankan mesin virtual dengan kecepatan mendekati aslinya (dengan mengambil keuntungan dari ekstensi perangkat keras seperti IntelVT. QEMU juga dapat melakukan emulasi untuk proses tingkat pengguna, memungkinkan aplikasi dikompilasi untuk satu arsitektur untuk dijalankan pada yang lain.

Perizinan

QEMU ditulis oleh Fabrice Bellard dan merupakan perangkat lunak gratis, terutama berlisensi di bawah GNU General Public License (GPL untuk pendek). Berbagai bagian dirilis di bawah lisensi BSD, Lisensi Publik Umum GNU GNU (LGPL) atau lisensi lain yang kompatibel dengan GPL.

Mode operasi

QEMU memiliki beberapa mode operasi yaitu:
Emulasi mode pengguna Dalam mode ini, QEMU menjalankan program Linux atau Darwin / macOS tunggal yang dikompilasi untuk rangkaian instruksi yang berbeda. Panggilan sistem di-thunked untuk endianness dan untuk 32/64 bit mismatches. Kompilasi silang yang cepat dan cross-debugging adalah target utama untuk emulasi mode pengguna.
Emulasi sistem Dalam mode ini QEMU mengemulasi sistem komputer lengkap, termasuk periferal. Ini dapat digunakan untuk menyediakan hosting virtual dari beberapa komputer virtual pada satu komputer. QEMU dapat mem-boot banyak sistem operasi tamu, termasuk Linux, Solaris, Microsoft Windows, DOS, dan BSD; mendukung beberapa set instruksi, termasuk x86, MIPS, 32-bit ARMv7, ARMv8, PowerPC, SPARC, ETRAX CRIS dan MicroBlaze.
KVM Hosting = Di sini QEMU berkaitan dengan pengaturan dan migrasi gambar KVM. Ini masih terlibat dalam persaingan perangkat keras, tetapi eksekusi tamu dilakukan oleh KVM seperti yang diminta oleh QEMU.
Xen Hosting QEMU hanya terlibat dalam persaingan perangkat keras; eksekusi tamu dilakukan dalam Xen dan benar-benar tersembunyi dari QEMU.

Tiny Code Generator

The Tiny Code Generator (TCG) bertujuan untuk menghapus kekurangan mengandalkan versi tertentu dari GCC atau kompilator, melainkan menggabungkan compiler (generator kode) ke dalam tugas-tugas lain yang dilakukan oleh QEMU pada waktu proses. Oleh karena itu, seluruh tugas penerjemahan terdiri dari dua bagian: blok kode target (TB) yang ditulis ulang dalam ops TCG - sejenis notasi perantara mesin-independen, dan selanjutnya notasi ini dikompilasi untuk arsitektur host oleh TCG. Optimalisasi pengabaian dilakukan di antara mereka.
TCG membutuhkan kode khusus yang ditulis untuk mendukung setiap arsitektur yang dijalankannya. Ini juga mengharuskan terjemahan instruksi target ditulis ulang untuk memanfaatkan ops TCG, bukan ops dingen yang sebelumnya digunakan.
Dimulai dengan QEMU Versi 0.10.0, kapal TCG dengan rilis stabil QEMU.

Akselerator

KQEMU adalah modul kernel Linux, juga ditulis oleh Fabrice Bellard, yang terutama mempercepat emulasi tamu x86 atau x86-64 pada platform dengan arsitektur CPU yang sama. Ini bekerja dengan menjalankan kode mode pengguna (dan secara opsional beberapa kode kernel) secara langsung pada CPU komputer host, dan dengan menggunakan prosesor dan emulasi perifer hanya untuk mode kernel dan kode real-mode. KQEMU dapat mengeksekusi kode dari banyak OS tamu bahkan jika CPU host tidak mendukung virtualisasi hardware-assisted. KQEMU awalnya adalah produk sumber tertutup yang tersedia secara gratis, tetapi mulai dari versi 1.3.0pre10, itu diberikan lisensi di bawah Lisensi Publik Umum GNU. Versi QEMU dimulai dengan 0.12.0 (per Agustus 2009) mendukung memori besar yang membuat mereka tidak kompatibel dengan KQEMU. Rilis QEMU yang lebih baru telah sepenuhnya menghapus dukungan untuk KQEMU.
QVM86 adalah pengganti drop-in berlisensi GNU GPLv2 untuk KQEMU sumber tertutup. Para pengembang QVM86 berhenti pembangunannya pada Januari 2007.
Mesin Virtual berbasis Kernel (KVM) sebagian besar telah diambil alih sebagai solusi virtualisasi hardware-assisted berbasis Linux untuk digunakan dengan QEMU di tengah kurangnya dukungan untuk KQEMU dan QVM86.
Intel Hardware Accelerated Execution Manager (HAXM) adalah alternatif open-source untuk KVM untuk virtualisasi hardware-assisted berbasis x86 pada Windows dan macOS. Pada 2013 Intel kebanyakan meminta penggunaannya dengan QEMU untuk pengembangan Android. Dimulai dengan versi 2.9.0, QEMU resmi termasuk dukungan untuk HAXM.

Emulasi yang didukung perangkat keras

Prosesor Loongson-3 MIPS yang kompatibel menambahkan 200 instruksi baru untuk membantu QEMU menerjemahkan instruksi x86; instruksi-instruksi baru itu menurunkan overhead mengeksekusi instruksi gaya x86 / CISC dalam pipa MIPS. Dengan peningkatan tambahan di QEMU oleh Chinese Academy of Sciences, Loongson-3 mencapai rata-rata 70% kinerja mengeksekusi binari asli saat menjalankan biner x86 dari sembilan tolak ukur.

Emulasi paralel

Solusi virtualisasi yang menggunakan QEMU dapat menjalankan beberapa CPU virtual secara paralel. Untuk emulasi-emulasi mode pengguna, peta QEMU meniru untaian untuk menghosting untaian. Untuk emulasi sistem penuh, QEMU mampu menjalankan thread host untuk setiap CPU virtual yang teremulasi (vCPU). Ini tergantung pada tamu yang telah diperbarui untuk mendukung emulasi sistem paralel, saat ini ARM, Alpha, HP-PA, PowerPC, RISC-V, dan s390x. Jika tidak, satu utas digunakan untuk meniru semua CPUS virtual (vCPUS) yang mengeksekusi setiap vCPU dengan cara round-robin.