2012-07-30 16 views
0

最近我一直在研究一些關於硬件支持的虛擬化。guestOS進程在任何時候都佔用VCPU?

我讀了3個主機cpu的狀態,因此是最常見的用戶空間,內核空間和一個新的訪客狀態。而且從ps命令中可以看到,有一個vm啓動的過程,還有一些'sub '虛擬機擁有的每個CPU的線程數。我還注意到當虛擬機運行一些與io相關的程序時,主機上會創建更多的線程,我想這可能是qemu對硬件仿真的響應。

因此,我的問題是:對於任何特定時間(在guest狀態中的時間,而不是其他兩個),一個vcpu線程是否代表一個運行的guestOS進程(我的意思是'occupy'和'exclusive')?作爲物理CPU,在用戶空間的任何給定時間,用戶進程正在其上運行。 這可能聽起來有點愚蠢,我只想弄清楚它的進一步研究。

爲了讓這個問題變得簡單: 是在任何給定時間在與某個guestOS進程關聯的主機上運行的vcpu線程?

爲了進一步簡化它: 我說guestOS進程實際上是直接運行在主機CPU上,並作爲普通主機進程調度的嗎?兩種進程之間的區別就是我們所說的虛擬化嗎?

也許我需要另一個線程來解決一些關於guestOS進程切換的問題,但在此之前,希望你們能幫助我解決這個問題。

真誠 MeNok

回答

0

VCPU不是主機中的線程。 KVM允許guest虛擬機在具有較低特權訪客模式的物理CPU上直接運行。定時器中斷將導致CPU從訪客模式返回主機模式並返回到KVM。由於KVM在內核模式下進行安排,因此還應該在主機中安排訪客。

相關問題