自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[314764]]

一、 KVM架構(gòu)

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

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

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

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

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

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

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

圖2 kvm_dev_ioctl函數(shù)

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

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

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

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

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

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

二、 KVM 工作原理

kvm基本工作原理概述:

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

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

圖3 KVM工作原理流程圖

 

 

責(zé)任編輯:武曉燕 來源: 邁拓維矩
相關(guān)推薦

2021-12-17 22:52:44

物聯(lián)網(wǎng)電信技術(shù)

2021-02-15 15:36:04

采礦加密貨幣區(qū)塊鏈

2022-06-07 14:30:40

區(qū)塊鏈比特幣以太坊

2014-11-10 09:29:13

Google

2024-09-29 08:49:49

2022-05-24 17:00:41

區(qū)塊鏈IT比特幣

2024-04-08 14:29:45

AI工廠數(shù)據(jù)中心

2010-08-30 09:05:45

2010-08-16 14:41:49

開源社區(qū)Ubuntu

2017-06-23 15:45:09

AndroidThread

2010-08-23 16:28:24

開源社區(qū)DebianUbuntu

2017-10-30 15:26:54

數(shù)據(jù)中心超融合云計(jì)算

2014-09-17 11:45:20

iOS編程App運(yùn)作

2022-04-26 12:45:52

TikTok機(jī)器學(xué)習(xí)人工智能

2021-05-28 17:24:32

人工智能AI深度學(xué)習(xí)

2012-08-13 09:39:57

虛擬化

2023-05-31 07:32:37

2022-04-28 08:00:00

TikTok人工智能架構(gòu)

2022-10-26 15:22:31

React組件User組件

2020-02-15 15:33:55

Python如何運(yùn)作
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號