KVM-QEMU基本工作原理分析

1、理解KVM與Qemu的關係

我們都知道開源虛擬機KVM,並且知道它總是跟Qemu結合出現,那這兩者之間有什麼關係呢?

首先,Qemu本身並不是KVM的一部分,而是一整套完整的虛擬化解決方案,它是純軟件實現的,包括處理器虛擬化、內存虛擬化以及各種虛擬設備的模擬,但因爲是純軟件模擬,所以性能相對比較低。而廣義的KVM實際上包含兩部分,一部分是基於LINUX內核支持的KVM內核模塊,另一部分就是經過簡化和修改Qemu。KVM內核模塊模擬處理器和內存以支持虛擬機的運行,Qemu主要處理I/O以及爲用戶提供一個用戶空間工具來進行虛擬機的管理。兩者相互結合,相輔相成,構成了一個完整的虛擬化平臺。

2、KVM運行時的三種模式

在虛擬機運行時,有三種模式,分別是:

  • 客戶模式:我們可以簡單理解成客戶機操作系統運行在的模式,它本身又分爲自己的內核模式和用戶模式。
  • 用戶模式:爲用戶提供虛擬機管理的用戶空間工具以及代表用戶執行I/O,Qemu運行在這個模式之下。
  • 內核模式:模擬CPU以及內存,實現客戶模式的切換,處理從客戶模式的退出。KVM內核模塊運行在這個模式下。

三種模式的層次關係我們可以用圖簡單描述一下:

在這裏插入圖片描述
3、KVM工作原理

KVM的大致工作原理:用戶模式的Qemu利用接口libkvm通過ioctl系統調用進入內核模式。KVMDriver爲虛擬機創建虛擬CPU和虛擬內存,然後執行VMLAUNCH指令進入客戶模式,裝載Guest OS並運行。Guest OS運行過程中如果發生中斷或者影子缺頁等異常,將暫停Guest OS的運行並保存當前上下文退出到內核模式來處理這些異常。內核模式處理這些異常時如果不需要I/O則處理完成後重新進入客戶模式,如果需要I/O則進入到用戶模式,由Qemu來處理I/O,處理完成後進入內核模式,再進入客戶模式。
在這裏插入圖片描述
原文鏈接:https://blog.csdn.net/mrbuffoon/article/details/53536757

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章