新聞中心
一、QEMU簡介

創(chuàng)新互聯(lián)專注于漢陽網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供漢陽營銷型網(wǎng)站建設,漢陽網(wǎng)站制作、漢陽網(wǎng)頁設計、漢陽網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務,打造漢陽網(wǎng)絡公司原創(chuàng)品牌,更為您提供漢陽網(wǎng)站排名全網(wǎng)營銷落地服務。
QEMU是法布里斯·貝拉在Linux內(nèi)核上寫的一個CPU模擬器,這套開放源碼的模擬器軟件與Bochs、PearPC近似,但具有后兩者所不具備的高速度及跨平臺等特性。QEMU可以在不同的機器上運行獨自開發(fā)的操作系統(tǒng)與軟件,經(jīng)由KQEMU這個開源的加速器,能模擬至接近真實電腦的速度。QEMU構(gòu)思巧妙, 效率極高, 在借助核心態(tài)的KQEMU加速器之后,模擬代碼的執(zhí)行速度甚至能夠接近真實機器。QEMU已成為目前使用最廣泛的模擬器,KVM和Google Android的模擬器都是基于QEMU的。
QEMU是一款開源的模擬器及虛擬機監(jiān)管器(Virtual Machine Monitor, VMM)。QEMU主要提供兩種功能給用戶使用。一是作為用戶態(tài)模擬器,利用動態(tài)代碼翻譯機制來執(zhí)行不同于主機架構(gòu)的代碼。二是作為虛擬機監(jiān)管器,模擬全系統(tǒng),利用其他VMM(Xen, KVM, etc)來使用硬件提供的虛擬化支持,創(chuàng)建接近于主機性能的虛擬機。
用戶可以通過不同Linux發(fā)行版所帶有的軟件包管理器來安裝QEMU。如在Debian系列的發(fā)行版上可以使用下面的命令來安裝:
sudo apt-get install qemu
或者在紅帽系列的發(fā)行版上使用如下命令安裝:
sudo yum install qemu -y
除此之外,也可以選擇從源碼安裝。
獲取QEMU源碼
可以從QEMU官網(wǎng)上下載QEMU源碼的tar包,以命令行下載2.0版本的QEMU為例:
$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2 $tar xjvf qemu-2.0.0.tar.bz2
如果需要參與到QEMU的開發(fā)中,最好使用Git獲取源碼:
$git clone git://git.qemu-project.org/qemu.git
編譯及安裝
獲取源碼后,可以根據(jù)需求來配置和編譯QEMU。
$cd qemu-2.0.0 //如果使用的是git下載的源碼,執(zhí)行cd qemu $./configure --enable-kvm --enable-debug --enable-vnc --enable-werror --target-list="x86_64-softmmu" $make -j8 $sudo make install
configure腳本用于生成Makefile,其選項可以用./configure --help查看。這里使用到的選項含義如下:
--enable-kvm:編譯KVM模塊,使QEMU可以利用KVM來訪問硬件提供的虛擬化服務。 --enable-vnc:啟用VNC。 --enalbe-werror:編譯時,將所有的警告當作錯誤處理。 --target-list:選擇目標機器的架構(gòu)。默認是將所有的架構(gòu)都編譯,但為了更快的完成編譯,指定需要的架構(gòu)即可。
二、基本原理
QEMU作為系統(tǒng)模擬器時,會模擬出一臺能夠獨立運行操作系統(tǒng)的虛擬機。如下圖所示,每個虛擬機對應主機(Host)中的一個QEMU進程,而虛擬機的vCPU對應QEMU進程的一個線程。
QEMU結(jié)構(gòu)圖
系統(tǒng)虛擬化最主要是虛擬出CPU、內(nèi)存及I/O設備。虛擬出的CPU稱之為vCPU,QEMU為了提升效率,借用KVM、XEN等虛擬化技術,直接利用硬件對虛擬化的支持,在主機上安全地運行虛擬機代碼(需要硬件支持)。虛擬機vCPU調(diào)用KVM的接口來執(zhí)行任務的流程如下(代碼源自QEMU開發(fā)者Stefan的技術博客):
open("/dev/kvm")
ioctl(KVM_CREATE_VM)
ioctl(KVM_CREATE_VCPU)
for (;;) {
ioctl(KVM_RUN)
switch (exit_reason) {
case KVM_EXIT_IO: /* ... */
case KVM_EXIT_HLT: /* ... */
}
}QEMU發(fā)起ioctrl來調(diào)用KVM接口,KVM則利用硬件擴展直接將虛擬機代碼運行于主機之上,一旦vCPU需要操作設備寄存器,vCPU將會停止并退回到QEMU,QEMU去模擬出操作結(jié)果。
虛擬機內(nèi)存會被映射到QEMU的進程地址空間,在啟動時分配。在虛擬機看來,QEMU所分配的主機上的虛擬地址空間為虛擬機的物理地址空間。
QEMU在主機用戶態(tài)模擬虛擬機的硬件設備,vCPU對硬件的操作結(jié)果會在用戶態(tài)進行模擬,如虛擬機需要將數(shù)據(jù)寫入硬盤,實際結(jié)果是將數(shù)據(jù)寫入到了主機中的一個鏡像文件中。
python學習網(wǎng),大量的免費python視頻教程,歡迎在線學習!
當前題目:創(chuàng)新互聯(lián)Python教程:qemu是用python寫的嗎
網(wǎng)站鏈接:http://m.5511xx.com/article/cdgieoj.html


咨詢
建站咨詢
