日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
解剖KVM的內(nèi)部是如何運(yùn)作的?

解剖KVM的內(nèi)部是如何運(yùn)作的?

作者:佚名 2020-02-12 15:08:41

云計(jì)算

虛擬化 kvm已經(jīng)是內(nèi)核模塊,被看作是一個(gè)標(biāo)準(zhǔn)的linux 字符集設(shè)備(/dev/kvm)。Qemu通過(guò)libkvm應(yīng)用程序接口,用fd通過(guò)ioctl向設(shè)備驅(qū)動(dòng)來(lái)發(fā)送創(chuàng)建,運(yùn)行虛擬機(jī)命令。

一、 KVM架構(gòu)

kvm基本結(jié)構(gòu)有2個(gè)部分構(gòu)成:

kvm 驅(qū)動(dòng),現(xiàn)在已經(jīng)是linux kernel的一個(gè)模塊了。其主要負(fù)責(zé)虛擬機(jī)的創(chuàng)建,虛擬內(nèi)存的分配,VCPU寄存器的讀寫以及VCPU的運(yùn)行。

另一個(gè)組成是Qemu,用于模擬虛擬機(jī)的用戶空間組件,提供I/O設(shè)備模型,訪問(wèn)外設(shè)的途徑。

圖1 kvm基本結(jié)構(gòu)

kvm基本結(jié)構(gòu)如上圖。kvm已經(jīng)是內(nèi)核模塊,被看作是一個(gè)標(biāo)準(zhǔn)的linux 字符集設(shè)備(/dev/kvm)。Qemu通過(guò)libkvm應(yīng)用程序接口,用fd通過(guò)ioctl向設(shè)備驅(qū)動(dòng)來(lái)發(fā)送創(chuàng)建,運(yùn)行虛擬機(jī)命令。設(shè)備驅(qū)動(dòng)kvm就會(huì)來(lái)解析命令(kvm_dev_ioctl函數(shù)在kvm_main.c文件中),如下圖:

圖2 kvm_dev_ioctl函數(shù)

kvm 模塊讓Linux主機(jī)成為一個(gè)虛擬機(jī)監(jiān)視器(VMM),并且在原有的Linux兩種執(zhí)行模式基礎(chǔ)上,新增加了客戶模式,客戶模式擁有自己的內(nèi)核模式和用戶模式。在虛擬機(jī)運(yùn)行時(shí),三種模式的工作各為:

客戶模式: 執(zhí)行非I/O的客戶代碼,虛擬機(jī)運(yùn)行在這個(gè)模式下。

用戶模式:代表用戶執(zhí)行I/O指令,qemu運(yùn)行在這個(gè)模式下。

內(nèi)核模式:實(shí)現(xiàn)客戶模式的切換,處理因?yàn)镮/O或者其他指令引起的從客戶模式退出(VM_EXIT)。kvm 模塊工作在這個(gè)模式下。

在kvm的模型中,每一個(gè)Gust OS都是作為一個(gè)標(biāo)準(zhǔn)的linux進(jìn)程,都可以使用linux進(jìn)程管理命令管理。

這里假如qemu通過(guò)ioctl發(fā)出KVM_CREATE_VM 指令,創(chuàng)建了一個(gè)VM后,qemu需要需要發(fā)送一些命令給VM,如KVM_CREATE_VCPU。這些命令當(dāng)然也是通過(guò)ioctl發(fā)送的,用戶程序中用ioctl發(fā)送KVM_CREATE_VM得到的返回值就是新創(chuàng)建的VM對(duì)應(yīng)的fd(kvm_vm),fd是創(chuàng)建的指向特定虛擬機(jī)實(shí)例的文件描述符,之后利用這個(gè)fd發(fā)送命令給VM進(jìn)行訪問(wèn)控制。kvm解析這些命令的函數(shù)是kvm_vm_ioctl。 

二、 KVM 工作原理

kvm基本工作原理概述:

用戶模式的qemu利用libkvm通過(guò)ioctl進(jìn)入內(nèi)核模式,kvm模塊為虛擬機(jī)創(chuàng)建虛擬內(nèi)存,虛擬CPU后執(zhí)行VMLAUCH指令進(jìn)入客戶模式。加載Guest OS并執(zhí)行。如果Guest OS 發(fā)生外部中斷或者影子頁(yè)表缺頁(yè)之類的情況,會(huì)暫停Guest OS的執(zhí)行,退出客戶模式出行異常處理,之后重新進(jìn)入客戶模式,執(zhí)行客戶代碼。如果發(fā)生I/O事件或者信號(hào)隊(duì)列中有信號(hào)到達(dá),就會(huì)進(jìn)入用戶模式處理。(如下圖)

圖3 KVM工作原理流程圖


本文名稱:解剖KVM的內(nèi)部是如何運(yùn)作的?
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/dhochjg.html