QEMU

QEMU。其與Bochs，PearPC類似，但擁有高速，跨平臺的特性。QEMU是一個託管的虛擬機器，它透過動態的二進位制轉換，模擬CPU，並且提供一組裝置模型，使它能夠執行多種未修改的客戶機OS，可以透過與KVM一起使用進而接近本地速度執行虛擬機器。QEMU可以執行 user-level 的程序 CPU 模擬，從而可以使為某一架構編譯的程式在另一架構上執行。系統模組.QEMU有多種模式架構.QEMU的架構由純軟體實現，並在Guest與Host中間，來處理Guest的硬體請求，並由其轉譯給真正的硬體。然而因為QEMU是純軟體實現的，所有的指令都要經過QEMU，使得效能很差，而配合KVM則可以解決這一問題。QEMU虛擬化的思路是：提取Guest程式碼，翻譯為TCG中間程式碼，而後翻譯為Host程式碼。相當於實現了一個“中間人”的角色。特性.QEMU可以在執行所有程式的情況下儲存和恢復虛擬機器的狀態。客戶作業系統不需要修補就可以在QEMU中執行。QEMU支援模擬各種體系結構，包括：虛擬機器可以連線多種型別的實體主機硬體，包括硬碟，CD-ROM，網絡卡，音效卡和USB裝置。USB裝置可以是完全模擬的，也可以使用主機的USB裝置。虛擬磁碟映像可以以特殊格式，使用者可以刪除覆蓋映像，使用較早的模擬磁碟映像版本就行了。QEMU可以透過網路地址轉換模擬共享主機系統連線的網絡卡，從而有效地允許guest虛擬機器使用與主機相同的網路。虛擬網絡卡還可以連線到其他QEMU例項的網絡卡或本地TAP介面。透過使用主機OS的橋接功能，將QEMU使用的TUN / TAP介面與主機OS上的非虛擬乙太網介面橋接，也可以實現網路連線。QEMU集成了多種服務以允許主機和訪客系統進行通訊;例如，整合的SMB伺服器和網路埠重定向。它也可以在沒有載入程式的情況下引導Linux核心。QEMU不依賴主機系統上的圖形輸出方法。相反，它可以允許透過整合的VNC伺服器訪問客戶作業系統的螢幕。它還可以使用模擬的序列線，而不使用任何螢幕和適用的作業系統。模擬多個CPU進行對稱多處理也是可能的。QEMU不需要管理員許可權執行，但在使用了某些提高速度的核心模組，或者使用某些網路連線模組時，則需要管理員許可權。微型程式碼生成器.微型程式碼生成器重寫 ，隨後TCG為宿主機架構執行編譯。可選的最佳化在這兩步之間傳遞。TCG需要專用的程式碼來支援每個體系結構。它還要求重寫目標指令集翻譯過程以利用TCG指令，而不是以前使用的dyngen指令。加速器.KQEMU是一個Linux核心模組，由Fabrice Bellard撰寫，它明顯加快了在具有相同CPU架構的平臺上模擬x86或x86-64程式的速度。這可以透過直接在主機CPU上執行使用者模式程式碼以及僅對核心模式和真實模式程式碼使用處理器與外設模擬來實現。即使宿主機CPU不支援硬體輔助虛擬化，KQEMU也可以從多個客戶作業系統執行程式碼。QEMU支援大容量記憶體，這使得它們與KQEMU不相容。較新的QEMU版本已完全取消對KQEMU的支援。由於缺乏對KQEMU和QVM86的支援，基於核心的虛擬機器已經基本成為基於Linux的硬體輔助虛擬化解決方案，與QEMU一起使用。英特爾的硬體加速執行管理器是KVM在Windows和MacOS上基於x86的硬體輔助虛擬化的開源替代品。2013年，英特爾使用QEMU來進行Android開發。硬體輔助模擬.MIPS相容的龍芯3處理器增加了200條新指令來幫助QEMU翻譯x86指令，這些新指令降低了在MIPS流水線中執行x86 / CISC風格指令的開銷。由於中國科學院對QEMU進行了進一步改進，龍芯3在9個基準測試中，執行x86二進位制檔案的同時，執行本機二進位制檔案的平均效能達到70％。並行模擬.使用QEMU的虛擬化解決方案能夠並行執行多個虛擬CPU。 對於使用者模式模擬，QEMU將模擬執行緒對映到宿主執行緒。 對於全系統模擬，QEMU能夠為每個虛擬CPU執行一個主機執行緒。 前提是客戶端已經更新到可以支援並行系統模擬，目前可以支援的CPU是ARM和Alpha。否則QEMU將使用單個執行緒以迴圈方式模擬執行每個虛擬CPU。與其他虛擬機器的整合.VirtualBoxVirtualBox，釋出於2007年1月，使用了一些QEMU的虛擬硬體裝置，並且有內建的基於QEMUdede動態再編譯器。與KQEMU一樣，VirtualBox透過VMM在宿主機上本地執行幾乎所有客戶程式碼，並將再編譯僅僅用作回退機制——例如，當客戶程式碼以實地址模式執行時。另外，VirtualBox使用內建的反彙編程式進行了大量的程式碼分析和修補，以儘量減少再編譯。除某些功能外，VirtualBox是免費且開源的。Xen-HVMXen是虛擬機器監視器，可以使用Intel VT-x或AMD-V硬體x86虛擬化擴充套件以及ARM Cortex-A7和Cortex-A15虛擬化擴充套件在HVM模式下執行。這意味著，面對domU以使用真實的裝置驅動程式進行交談的是一組真實的虛擬硬體，而不是半虛擬化裝置。QEMU包含幾個元件：CPU模擬器，模擬裝置，通用裝置，機器描述符，使用者介面和偵錯程式。 QEMU中的模擬器件和通用器件組成了虛擬I/O的器件模型。它們包括PIIX3 IDE，Cirrus Logic或純VGA模擬影片，RTL8139或E1000網路模擬以及ACPI支援。Xen提供APIC支援。Xen-HVM具有基於QEMU專案的裝置模擬功能，可為虛擬機器提供虛擬I/O。硬體透過執行在dom0後端的“QEMU裝置模型”守護程序來模擬。與其他QEMU執行模式不同，虛擬CPU完全由管理程式管理，管理程式負責在QEMU模擬記憶體對映I/O訪問時停止虛擬CPU。KVMKVM是FreeBSD和Linux的核心模組，它允許使用者空間程式訪問各種處理器的虛擬化硬體特性，這個特點使得QEMU可以為x86，PowerPC和S/390客戶提供虛擬化。當目標體系結構與主機相同時，QEMU可以使用KVM特有的功能，比如加速功能。Win4Lin Pro Desktop在2005年初，Win4Lin推出了Win4Lin Pro Desktop，它基於QEMU和KQEMU的已調諧版本，並且託管了Windows的NT版本。 在2006年6月，Win4Lin釋出了基於相同程式碼庫的Win4Lin虛擬桌面伺服器。 Win4Lin虛擬桌面伺服器為來自Linux伺服器的精簡客戶機提供Microsoft Windows會話服務。2006年9月，Win4Lin宣佈將公司名稱更改為Virtual Bridges，併發布了Win4BSD Pro Desktop，該產品的一個埠用於FreeBSD和PC-BSD。在2007年5月釋出了Win4Solaris Pro Desktop和Win4Solaris虛擬桌面伺服器後，提供了Solaris支援。SerialICESerialICE是一款基於QEMU的韌體除錯工具，可在QEMU內部執行系統韌體，同時透過與主機系統的序列連線訪問真實硬體。這可以用作硬體ICE的廉價替代品。WinUAEWinUAE Amiga模擬器在3.0.0版本中引入了對使用QEMU PPC核心的CyberStorm PPC和Blizzard 603e開發板的支援。硬體平臺模擬.QEMU可模擬多種硬體裝置鍵盤SCSI控制器序列介面音效卡看門狗定時器USB 1.x / 2.x / 3.x控制器USB裝置：音訊，藍芽介面卡，HID，Wacom數位板armQEMU使用NEON擴充套件模擬ARMv7指令集。它模擬整合系統/ CP板，多功能底板，RealView模擬底板，基於XScale的PDA，Palm Tungsten | E PDA，諾基亞N800和諾基亞N810網際網路平板電腦等完整系統.QEMU還為Android SDK提供支援，該模擬器屬於Android SDK 。三星選擇了QEMU來幫助開發模擬'Wave'裝置。基於Xilinx Cortex A9的Zynq SoC採用以下元素進行建模模擬：Zynq-7000 ARM Cortex-A9 CPU Zynq-7000 ARM Cortex-A9 MPCore 三重計時器 DDR記憶體控制器 DMA控制器 Zynq UART控制器 SPI和QSPI控制器 I2C控制器派生版本.UTM虛擬機器是一款基於QEMU的虛擬機器，支援iOS、iPadOS、macOS作業系統。基於QEMU的UTM虛擬機器，可支援模擬30多個架構，例如x86_64，ARM64，以及RISC-V等。目前UTM支援在系統版本 iPadOS 13以上、iOS 11以上、macOS Big Sur 以上的裝置上執行。