网站首页 > 资源文章 正文
一、 KVM架构
kvm基本结构有2个部分构成:
kvm 驱动,现在已经是linux kernel的一个模块了。其主要负责虚拟机的创建,虚拟内存的分配,VCPU寄存器的读写以及VCPU的运行。
另一个组成是Qemu,用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。
kvm基本结构如上图。kvm已经是内核模块,被看作是一个标准的linux 字符集设备(/dev/kvm)。Qemu通过libkvm应用程序接口,用fd通过ioctl向设备驱动来发送创建,运行虚拟机命令。设备驱动kvm就会来解析命令(kvm_dev_ioctl函数在kvm_main.c文件中),如下图:
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事件或者信号队列中有信号到达,就会进入用户模式处理。(如下图)
(文段节选自网络)
——迈拓维矩
猜你喜欢
- 2024-09-10 KVM 虚拟化基本原理(kvm虚拟化管理系统)
- 2024-09-10 KVM虚拟化技术:从入门到实战,带你解锁新技能!
- 2024-09-10 虚拟化技术KVM的搭建(kvm虚拟化技术基础与实践)
- 2024-09-10 从0开始教你认识虚拟化及KVM技术——云计算学习必备
- 2024-09-10 KVM切换器是什么?(kvm切换器工作原理)
- 2024-09-10 常规KVM和数字kvm切换器区别(kvm切换器工作原理)
- 2024-09-10 在deepin操作系统上使用KVM虚拟机
- 2024-09-10 解决KVM切换器故障问题的6个方法,学会了,受用终身
- 2024-09-10 虚拟化xen、kvm、vmware、hyper-v等虚拟化技术的比较
- 2024-09-10 Kvm虚拟网络配置(在kvm中,虚拟网卡连接物理网络的方式)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)