- 論壇徽章:
- 8
|
tianxiay2ren 發(fā)表于 2012-05-14 01:41 ![]()
跟KVM是什么關(guān)系?
是第三方軟件嗎?還是KVM的一個(gè)模塊?
這里還有一個(gè)更加詳細(xì)的,你可以看看
Qemu:
是一個(gè)完整的可以單獨(dú)運(yùn)行的軟件,它可以用來模擬機(jī)器,非常靈活和可移植。它主要通過一個(gè)特殊的'重編譯器'將為特定處理器編寫二進(jìn)制代碼轉(zhuǎn)換為另一種。(也就是,在PPC mac上面運(yùn)行MIPS代碼,或者在X86 PC上運(yùn)行ARM代碼)
KQemu:
當(dāng)源和目標(biāo)代碼有同樣的架構(gòu)的時(shí)候(就像最普通的情況 x86運(yùn)行在x86上面),同樣需要解析代碼去出去任何'特權(quán)指令'并且把它們替換為上下文轉(zhuǎn)換。為了盡量使這個(gè)過程有效,有個(gè)內(nèi)核模塊KQemu處理這個(gè)事情。作為一個(gè)內(nèi)核模塊,KQemu僅僅需要替換最底層的ring0-only指令。在這個(gè)情況下,Qemu仍然為模擬的機(jī)器分配所有的RAM并且加載代碼。不同的是,KQemu不需要重新編譯代碼,它僅僅調(diào)用KQemu去掃描/打補(bǔ)丁/執(zhí)行。所有外圍的硬件仿真是在Qemu中做的。由于大部分代碼都是沒有變換的,但是KQemu還是需要轉(zhuǎn)換ring0代碼(VM內(nèi)核的絕大部分代碼),所以性能仍然不好。
KVM:
KVM包括很多部件:首先,它是一個(gè)Linux內(nèi)核模塊(現(xiàn)在包括在主線中)用于轉(zhuǎn)換處理器到一種新的用戶 (guset)模式。用戶模式有自己的ring狀態(tài)集合,但是特權(quán)ring0的指令會(huì)陷入到管理器(hypervisor)的代碼。由于這是一個(gè)新的處理器執(zhí)行模型,代碼不需要任何的改動(dòng)。
除了處理器狀態(tài)轉(zhuǎn)換,這個(gè)內(nèi)核模塊同樣處理很小一部分低層次的模擬,比如MMU注冊(用于管理VM)和一部分PCI模擬的硬件。
在可預(yù)見的未來,Qemu團(tuán)隊(duì)專注于硬件模擬和可移植性,同時(shí)KVM團(tuán)隊(duì)專注于內(nèi)核模塊(如果某些部分確實(shí)有性能提升的話,KVM會(huì)將一小部分模擬代碼移進(jìn)來)和與剩下的用戶空間代碼的交互。
kvm-qemu可執(zhí)行程序像普通Qemu一樣:分配RAM,加載代碼,不同于重新編譯或者調(diào)用calling KQemu,它創(chuàng)建了一個(gè)線程(這個(gè)很重要);這個(gè)線程調(diào)用KVM內(nèi)核模塊去切換到用戶模式,并且去執(zhí)行VM代碼。當(dāng)遇到一個(gè)特權(quán)指令,它從新切換會(huì)KVM內(nèi)核模塊,該內(nèi)核模塊在需要的時(shí)候,像Qemu線程發(fā)信號(hào)去處理大部分的硬件仿真。
這個(gè)體系結(jié)構(gòu)一個(gè)比較巧妙的一個(gè)地方就是客戶代碼被模擬在一個(gè)posix線程,這允許你使用通常Linux工具管理。如果你需要一個(gè)有2或者4核的虛擬機(jī),kvm-qemu創(chuàng)建2或者4個(gè)線程,每個(gè)線程調(diào)用KVM內(nèi)核模塊并開始執(zhí)行。并發(fā)性(若果你有足夠多的真實(shí)核)或者調(diào)度(如果你不管)是被通用的Linux調(diào)度器,這個(gè)使得KVM代碼量十分的小。
當(dāng)一起工作的時(shí)候,KVM管理CPU和MEM的訪問,QEMU仿真硬件資源(硬盤,聲卡,USB,等等)當(dāng)QEMU單獨(dú)運(yùn)行時(shí),QEMU同時(shí)模擬CPU和硬件。
當(dāng)產(chǎn)很火的KVM可以理解為:
KVM 本身不執(zhí)行任何模擬,一個(gè)用戶空間程序會(huì)使用 /dev/kvm 接口設(shè)置一個(gè)來賓虛擬服務(wù)器的地址空間,向它提供模擬的 I/O,并將它的視頻顯示映射回宿主的顯示屏。
在 KVM 架構(gòu)中,虛擬機(jī)實(shí)現(xiàn)為常規(guī)的 Linux 進(jìn)程,由標(biāo)準(zhǔn) Linux 調(diào)度程序進(jìn)行調(diào)度。事實(shí)上,每個(gè)虛擬 CPU 顯示為一個(gè)常規(guī)的 Linux 進(jìn)程。這使 KVM 能夠享受 Linux 內(nèi)核的所有功能。
設(shè)備模擬由提供了模擬的 BIOS、PCI 總線、USB 總線和一組標(biāo)準(zhǔn)的設(shè)備(比如 IDE 和 SCSI 磁盤控制器、網(wǎng)絡(luò)卡等)的修改的 qemu 版本來模擬。
|
|