当前位置:正文

图1 kvm基本结构kvm基本结构如上图安卓

发布日期:2024-05-29 16:16    点击次数:99

[[314764]]

一、 KVM架构

kvm基本结构有2个部分组成:

kvm 驱动,现时照旧是linux kernel的一个模块了。其主要正经捏造机的创建,捏造内存的分派,VCPU寄存器的读写以及VCPU的开动。

另一个组成是Qemu,用于模拟捏造机的用户空间组件,提供I/O成就模子,拜谒外设的阶梯。

剖解KVM的里面是怎么运作的?

图1 kvm基本结构

kvm基本结构如上图。kvm照旧是内核模块,被看作是一个程序的linux 字符集成就(/dev/kvm)。Qemu通过libkvm应用方法接口,用fd通过ioctl向成就驱动来发送创建,开动捏造机敕令。成就驱动kvm就会来领会敕令(kvm_dev_ioctl函数在kvm_main.c文献中),如下图:

剖解KVM的里面是怎么运作的?

图2 kvm_dev_ioctl函数

kvm 模块让Linux主机成为一个捏造机监视器(VMM),况兼在原有的Linux两种实践形态基础上,新增多了客户形态,客户形态领有我方的内核形态和用户形态。在捏造机开动时,三种形态的责任各为:

客户形态: 实践非I/O的客户代码,捏造机开动在这个形态下。

用户形态:代表用户实践I/O请示,qemu开动在这个形态下。

内核形态:达成客户形态的切换,处理因为I/O梗概其他请示引起的从客户形态退出(VM_EXIT)。kvm 模块责任在这个形态下。

在kvm的模子中,每一个Gust OS齐是手脚一个程序的linux进度,齐不错使用linux进度贬责敕令贬责。

这里假如qemu通过ioctl发出KVM_CREATE_VM 请示,创建了一个VM后,qemu需要需要发送一些敕令给VM,如KVM_CREATE_VCPU。这些敕令虽然亦然通过ioctl发送的,用户方法顶用ioctl发送KVM_CREATE_VM取得的复返值即是新创建的VM对应的fd(kvm_vm),fd是创建的指向特定捏造机实例的文献描画符,之后行使这个fd发送敕令给VM进行拜谒抵制。kvm领会这些敕令的函数是kvm_vm_ioctl。 安卓

二、 KVM 责任旨趣

kvm基本责任旨趣空洞:

用户形态的qemu行使libkvm通过ioctl插足内核形态,kvm模块为捏造机创建捏造内存,捏造CPU后实践VMLAUCH请示插足客户形态。加载Guest OS并实践。淌若Guest OS 发生外部中断梗概影子页表缺页之类的情况,会暂停Guest OS的实践,退出客户形态出行相等处理,之后重新插足客户形态,实践客户代码。淌若发生I/O事件梗概信号部队中有信号到达,就会插足用户形态处理。(如下图)

剖解KVM的里面是怎么运作的?

图3 KVM责任旨趣经过图

 

 





Powered by 🏆华体汇·体育全站app官网入口(中国)官方网站IOS安卓/通用版/手机版APP下载 @2013-2022 RSS地图 HTML地图