全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?

ring0是指CPU的运行级别,ring0是最高级别,ring1次之,ring2更次之……
拿Linux+x86来说,
操作系统(内核)的代码运行在最高运行级别ring0上,可以使用特权指令,控制中断、修改页表、访问设备等等。
应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。这个过程也称作用户态和内核态的切换。

那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在ring0的,客户操作系统就不能也在ring0了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,那肯定不行啊,没权限啊,玩不转啊。所以这时候虚拟机管理程序(VMM)就要避免这件事情发生。
(VMM在ring0上,一般以驱动程序的形式体现,驱动程序都是工作在ring0上,否则驱动不了设备)
一般是这样做,客户操作系统执行特权指令时,会触发异常(CPU机制,没权限的指令,触发异常),然后VMM捕获这个异常,在异常里面做翻译,模拟,最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。但是这个性能损耗,就非常的大,你想想原来,简单的一条指令,执行完,了事,现在却要通过复杂的异常处理过程。

这时候半虚拟化就来了,半虚拟化的思想就是,让客户操作系统知道自己是在虚拟机上跑的,工作在非ring0状态,那么它原先在物理机上执行的一些特权指令,就会修改成其他方式,这种方式是可以和VMM约定好的,这就相当于,我通过修改代码把操作系统移植到一种新的架构上来,就是定制化。所以像XEN这种半虚拟化技术,客户机操作系统都是有一个专门的定制内核版本,和x86、mips、arm这些内核版本等价。这样以来,就不会有捕获异常、翻译、模拟的过程了,性能损耗非常低。这就是XEN这种半虚拟化架构的优势。这也是为什么XEN只支持虚拟化Linux,无法虚拟化windows原因,微软不改代码啊。

可以后来,CPU厂商,开始支持虚拟化了,情况有发生变化,拿X86 CPU来说,引入了Intel-VT 技术,支持Intel-VT 的CPU,有VMX root operation 和 VMX non-root operation两种模式,两种模式都支持Ring 0 ~ Ring 3 这 4 个运行级别。这下好了,VMM可以运行在VMX root operation模式下,客户OS运行在VMX non-root operation模式下。也就说,硬件这层做了些区分,这样全虚拟化下,有些靠“捕获异常-翻译-模拟”的实现就不需要了。而且CPU厂商,支持虚拟化的力度越来越大,靠硬件辅助的全虚拟化技术的性能逐渐逼近半虚拟化,再加上全虚拟化不需要修改客户操作系统这一优势,全虚拟化技术应该是未来的发展趋势。

XEN是最典型的半虚拟化,不过现在XEN也支持硬件辅助的全虚拟化,大趋势,拗不过啊。。。
KVM、VMARE这些一直都是全虚拟化。

1098543-20190625182352345-232999542.jpg

转载于:https://www.cnblogs.com/xuliangwei/p/10420932.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dual mysql 获取序列_MySQL JDBC客户端反序列化漏洞

标题: MySQL JDBC客户端反序列化漏洞☆ 背景介绍☆ 学习思路☆ 搭建测试环境☆ 恶意MySQL插件 1) 获取MySQL 5.7.28源码 2) 在rewrite_example基础上修改出evilreplace☆ 测试rewriter插件 1) 安装rewriter.so 2) 在服务端替换SQL查询语句 3) 卸载rewriter.so …

kali linux之edb--CrossFire缓冲区溢出

漏洞的罪恶根源------变量,数据与代码边界不清,开发人员对用户输入没做过滤,或者过滤不严 如这个脚本,写什么,显示什么,但是加上;,|,&&,后面加上系统…

SQL连接查询深度探险

测试环境:Windows XP ProfessionMySQL 5.0.45Oracle 9iDB2 UDB 9.1测试的SQL脚本如下:此脚本适合MySQL、DB2,如果要在Oracle上执行,需要做个替换BIGINTINTEGER、VARCHARVARCHAR2。CREATETABLECUSTOMERS (ID BIGINT NOTNULL,NAME V…

自锁时间电路plc_1篇文章,4幅图,了解PLC接线和控制图就是这么简单

有网友留言说看不懂plc梯形图,不知道如何将电气控制原理图转化为plc接线图,今天就系统的来看一下plc的原理和接线,再转化为plc接线图,我们需要借助一个最简单的单向过载保护的自锁控制电路。来看一下电路元器件,FR热机…

Python~字典快速上手

目录 Key的重要性 一 创建字典{} 二 字典用key查找 in(遍历)和[]用key查找 keyerror in和[]的效率对比 三 字典的插入/修改/删除(先查找) ​编辑 四 字典增删查改/遍历的效率 五 字典的遍历 for遍历可迭代对象拿到key 与创建顺序相同 keys/values/items方法 六 可…

活动目录服务器(windows server 2008)

1、在服务器管理器中添加角色,勾选Active Directory域服务、DNS服务器进行安装2、安装好后运行dcpromo进入域服务安装向导,选择高级模式安装3、出现部署配置时,勾选新林中新建4、在命名林输入域名称(ganen5.local)5、在…

漫步者蓝牙只有一边有声音_漫步者DreamPods半个月上手体验:谈谈那些好的和不好的地方...

随着手机逐渐取消了耳机孔,越来越多的人们开始使用上了蓝牙耳机。在当今这个飞速发展的时代,蓝牙耳机蓝无疑成为了新时代的宠儿。无论是上班族还是当代大学生等年轻化群体,蓝牙耳机无疑成为了一个不错的喜好选择。但是面对市面上如此多的蓝牙…

c++ 输出控制iomanip

2019独角兽企业重金招聘Python工程师标准>>> 1输出精度控制 #include<iostream> #include <iomanip>//精度控制相关头文件 using namespace std;int main(){streamsize preccout.precision(); //获取默认精度 cout<<"default precisi…

c++ 可视化界面_这些算法可视化网站助你轻松学算法

作者&#xff1a;守望&#xff0c;Linux应用开发者&#xff0c;目前在公众号【编程珠玑】 分享Linux/C/C/数据结构与算法/工具等原创技术文章和学习资源。前言无疑&#xff0c;数据结构与算法学习最大的难点之一就是如何在脑中形象化其抽象的逻辑步骤。而图像在很多时候能够大大…

2. with check option能起什么作用?_面部毛孔粗大,有什么拯救的方法吗?

很多妹子都有毛孔粗大的问题&#xff0c;却苦恼于怎么改善&#xff0c;用错方法可能会刺激毛孔&#xff0c;但是你知道毛孔粗大的原因吗&#xff1f;首先&#xff0c;先搞清楚自己是什么类型的毛孔粗大&#xff0c;再对症下药。 &#xfffc;皮脂分泌旺盛这是毛孔粗大最常见的原…

Apache Spark源码走读之4 -- DStream实时流数据处理

欢迎转载&#xff0c;转载请注明出处&#xff0c;徽沪一郎。 Spark Streaming能够对流数据进行近乎实时的速度进行数据处理。采用了不同于一般的流式数据处理模型&#xff0c;该模型使得Spark Streaming有非常高的处理速度&#xff0c;与storm相比拥有更高的吞能力。 本篇简要分…

antd-react-mobile(踩坑记录)

1.按照官网步骤进行&#xff0c; $ npm install -g create-react-app # 注意&#xff1a;工具会自动初始化一个脚手架并安装 React 项目的各种必要依赖&#xff0c;如果在过程中出现网络问题&#xff0c;请尝试配置代理或使用 其他 npm registry。 $ create-react-app my-app …

微软私有云分享(R2)22 计算机配置文件与基础设置

计算机配置文件是完全为了裸金属安装准备的。所以如果不准备使用裸金属安装&#xff0c;硬件配置文件在SCVMM2012 R2中也可以不用配置。本章操作完全用图来表示&#xff08;其实我准备文字了&#xff0c;但是貌似文字丢了…………&#xff09;&#xff0c;创建该文件没什么注意…

14.PTD与的基址

0xC0300000就是页目录的基址。 随便找一个软件测试下 通过0xC0300000找到的物理页就是页目录表这个物理页即是页目录表本身也是页表页目录表是一张特殊的页表,每一项PTE指向的不是普通的物理页,而是指向其他的页表.如果我们要访问第N个PDE, 那么有如下公式&#xff1a;0xc03000…

多项式回归

在上一节所介绍的非线性回归分析&#xff0c;首先要求我们对回归方程的函数模型做出推断。尽管在一些特定的情况下我们能够比較easy地做到这一点,可是在很多实际问题上经常会令我们不知所措。依据高等数学知识我们知道&#xff0c;不论什么曲线能够近似地用多项式表示&#xff…

二级c语言无纸化三合一_学习攻略|计算机二级考试重点及注意事项

2020年全国计算机等级考试将于9月26日强势来袭&#xff0c;亲爱的你们准备好了吗&#xff1f;下面为大家准备了一些干货以及考试注意事项&#xff0c;快拿出小本本记下来吧。考试题型二级office考试题型1、选择题 20分(含公共基础知识部分10分)2、操作题 80分 (1)Word文档 30…

mongodb集群与分片的配置说明

mongodb集群与分片的配置说明 Shardingcluster介绍&#xff1a; 这是一种可以水平扩展的模式&#xff0c;在数据量很大时特给力&#xff0c;实际大规模应用一般会采用这种架构去构建monodb系统。 系统分为需要三种角色&#xff1a; Shard Server:mongod 实例&#xff0c;用于存…

使用VS2005进行负载测试

下面通过一个简单的例子来讲解VS2005是如何做负载测试的.1、 编写一个加法程序&#xff0c;其中编写一个加法方法&#xff0c;然后调用该方法。//程序源代码using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using Syst…

NodeJS开发环境配置

为什么80%的码农都做不了架构师&#xff1f;>>> 上链接&#xff5e; http://www.cnblogs.com/Irving/p/3634232.html 转载于:https://my.oschina.net/weiyi/blog/287177

一个平行四边形可以分成四个_将平行四边形分割成两个三角形还易变形么?(人教四下五单元三角形例2)...

最近&#xff0c;我学了三角形一课&#xff0c;研究了三角形的特性。课上我们拿出准备好的拼搭的三角形和平行四边形&#xff0c;动手拉一拉&#xff0c;结果发现三角形拉不动、平行四边形一拉就变形了。原来动动手也是研究数学呀&#xff0c;太有意思了&#xff01;这时&#…