Qemu-KVM基本工作原理分析
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,处理完成后进入内核模式,再进入客户模式。
KVM的工作原理如图:
Qemu-KVM基本工作原理分析相关推荐
- RxJs map operator 工作原理分析
使用一个例子来研究 map 操作符的工作原理. 推荐阅读本文之前,先浏览这篇文章RxJs fromEvent 工作原理分析以了解相关知识. 源代码: import { Component, OnIni ...
- Hadoop生态圈-Zookeeper的工作原理分析
Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...
- 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析
2019独角兽企业重金招聘Python工程师标准>>> 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析 一.大致介绍 1.在前面章节了解了AQS和 ...
- 匿名突破网络限制 (Tor工作原理分析)
转载自:http://blog.163.com/mike_gz/blog/static/247532200672932800/ 网管顾名思义,就是天天管着网络.想尽各种手段限制我们上网的人.在网络中订 ...
- 滑环的基本结构及工作原理分析
滑环是工业机械部件,基本原理是利用导电机械部件的折动或滚动在接触旋转部件和静止部件之间传递电能或电信号的产业部部件,作为360度旋转方式的一个相当好的解决方法,那么,下面一起了解下滑环的基本结构及工作 ...
- 【高通SDM660平台 Android 10.0】(19) --- Camera_focus、Camera_snapshot、volume_up 按键工作原理分析
[高通SDM660平台 Android 10.0]19 --- Camera_focus.Camera_snapshot.volume_up 按键工作原理分析 一. DTS代码配置 二. Kernel ...
- 二极管温度补偿电路工作原理分析
众所周知,PN结导通后有一个约为0.6V(指硅材料PN结)的压降,同时PN结还有一个与温度相关的特性:PN结导通后的压降基本不变,但不是不变,PN结两端的压降随温度升高而略有下降,温度愈高其下降的量愈 ...
- 船型开关工作原理分析
船型开关工作原理分析 由于疫情,这几个月一直无聊的待在家里,就把家里翻出来的旧电热锅简单的修理了一下,关于电热锅的修理博客之后有时间再写吧,这次就总结下在修过程中让我一直很头疼的船型开关的工作原理. ...
- 全自动升降柱工作原理分析
全自动升降柱工作原理分析 全自动升降柱使用范围比较广泛,在城市交通安全中提供非常便捷的交通舒缓措施,可控制车辆行驶确保安全,全自动升降柱外观设计精美, 具有高的防撞击效果,当电动升降柱升起可在地面形成 ...
最新文章
- express 框架中的参数小记
- 单击GridView进入编辑模式
- Android系统JNI的实现方式
- springsecurity-sample中hsqldb的使用注意
- dmc matlab程序,matlab编的DMC程序.doc
- 黑苹果系统坏了如何恢复_黑苹果macOS系统U盘版/恢复版基础安装教程
- python redis 哨兵_Redis哨兵机制
- C#学习之向量运算符重载
- Sampled Softmax,你真的会用了吗?
- 通用功能模块------滑动图片验证
- Linux命令行打开不了发行光盘RHEL_6.3 i386 Disc 1
- 系统查看PSD缩略图
- 【算法•日更•第五十五期】知识扫盲:什么是卡常数?
- 网络其他计算机无法访问,win7局域网别人无法访问我的电脑是为什么 win7其他电脑无法访问我的电脑如何修复...
- 最新幸运盒子幸运砸金蛋微信盲盒游戏源码
- sed新增首行与尾行
- WordPress采集插件推荐都是免费采集插件
- 网络原理考点之无线网络应用层协议
- 完全认识计算机网络之TCP/IP
- 分享如何跟进转化客户,提高成单率
热门文章
- vue伸缩效果_Vue2(三)实现子菜单展开收缩,带动画效果实现方法
- python安装界面翻译_Python新手教程:40行python代码写一个桌面翻译器
- java 几种类_Java 中有几种类型的流?
- Linux常用的分区方案及目录结构
- 单机android游戏排行榜,安卓单机手机游戏推荐_十大必玩单机手机游戏
- php解析目录函数怎么用,PHP中目录解析函数
- 友源社区APP论坛源码+网站源码
- linux服务器定时关机重启,Ubuntu Server 10.10 每天定时开关机linux服务器应用 -电脑资料...
- 大学计算机基础基础部分试题及答案,大学计算机基础试题及答案,等级考网络部分...
- 织梦生成的html路径,织梦dedecms安装在子目录网页生成在根目录如何设置