虚拟化分类和实现原理

6、虚拟化分类

(1)完全虚拟化

直接将Hypervisor跑在0环内核态,客户机os跑在1环,一旦触发敏感指令,由0环的VMM进行捕获翻译,从而模

拟这些指令。而运行在1环的GuestOS永远都不知道自己是个虚拟机。是完全通过软件来实现的二进制翻译BT(Binary Translation)。也可以说叫基于软件的完全虚拟化。

1)CPU的权限级别分为0、1、2、3,级别依次降低,

2)其中0环跑的是OS,权限最高,可以执行特权指令。1环和2环跑的是驱动程序。3环跑的是应用软件,权限最低。

3)0环主要是内核态,3环是用户态

虚拟化的引入,就发生了变化

特点:虚拟机不知道自己是个虚拟机,所有的敏感指令店铺需要借助VMare(VMM)进行翻译,翻译成宿主机OS能够捕捉到的指令,反应速度很慢。所谓的虚拟机里面的操作,必须跟物理机完全一致就是,虚拟机例如创建文件等操作,需要经过VMM,向宿主机申请磁盘空间。

特权指令:对于一些敏感的管理和读写指令被定位为特权指令,只有处于Ring0才能执行。否则会丢异常

敏感指令:由于虚拟化的引入,由于OS现在处于Ring1所以不能执行特权指令,所以就由Ring0的VMM来执行,

注意:以上的这种叫做VMware BT(Binary Translation:二进制翻译技术),就是所谓的完全虚拟化/基于软件的完全虚拟化

(2)XEN虚拟化(半虚拟化)

虚拟化层位于硬件和0环之间,让guestOS直接跑在0环,并且对guestos操作系统进行修改,以便可以对虚拟化层进行超级调用。虚拟化层可以理解为domain0特权虚拟机,客户机直接跑在了0环,因此,速度要比基于软件的完全虚拟化要快。但是需要修改客户机操作系统,因此不支持windows。

1)需要修改客户机(修改虚拟机操作系统内核),修改的目的是为了提升虚拟机的性能

2)例如el5.1,el5.1xen,domain0是直接运行在操作系统的内核上,所以是本身的OS的一部分,其中特权虚拟机是管理基于XEN的虚拟机

3)ParaVirtualization:半虚拟化 / 类虚拟化

4)XEN不支持Windows,因为Windows是闭源的

5)特点:效率快,是相对于VMware,虚拟机有自知之明,知道自己是个虚拟机,特权指令敏感指令要经过domain0这个特权虚拟机来执行,必须升级内核才能使用。维护庞大的内核,所有内核模块,驱动程序都需要重新编译,重新安装,工作量及其大。一旦升级内核,和内核相关的所有的内核模块,驱动都需要重新编译。意味着要经常维护一套庞大的内核,这就是XEN问题所在。

(3)硬件辅助虚拟化

引入了root级别和非root级别。简单来说,硬件和vmm(hypervisor)都运行在root级别,通过cpu硬件直接捕获敏感指令集,完成虚拟化。包括英特尔虚拟化技术(VT-x)和AMD的AMD-V,它们允许 VMM在环0以下以新的根模式运行。特权和敏感的调用被设置为自动捕获到管理程序,从而消除了二进制转换和 paravirtualization半虚拟化。

总结:

(1)KVM是属于完全虚拟化的范畴

(2)完全虚拟化:基于软件的完全虚拟化方案是VMware,基于硬件的完全虚拟化方案是CPU硬件辅助虚拟化

(3)半虚拟化:XEN

注意:XEN是虚拟化的一种,而不是半虚拟化就是XEN。半虚拟化是为了解决早期的X86架构问题而提出的(因为早期的X86架构限制了CPU的性能),刚好XEN采用的就是。现在的XEN在有CPU硬件辅助的支持下,也支硬件辅助的完全虚拟化

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

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

相关文章

【Transformer】深入理解Transformer模型2——深入认识理解(上)

前言 Transformer模型出自论文:《Attention is All You Need》 2017年 近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

OpenCV实战 -- 维生素药片的检测记数

文章目录 检测记数原图经过操作开始进行消除粘连性--形态学变换总结实现方法1. 读取图片:2. 形态学处理:3. 二值化:4. 提取轮廓:5. 轮廓筛选和计数: 分水岭算法:逐行解释在基于距离变换的分水岭算法中&…

关于链表的一些问题

求链表的中间节点 可以定义两个指针,一个一次走两步一个一次走一步,当走的快的走到NULL时,走的慢的就是链表的中间节点。(此法求出的偶数个节点的链表的中间节点是它中间的第二个) 求倒数第K个节点 也可以定义两个指…

9 权限与特权

一,访问级别 权限和特权共同决定了对API对象(例如窗口和会话)的访问级别。 权限和特权是两个不同的概念。权限定义了执行某些操作的能力,例如设置属性。特权是根据角色类型授予的权限集合。 请注意,在创建(例如 screen_create_())或销毁(例如 screen_destroy_())对…

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

【动态规划】673. 最长递增子序列的个数

673. 最长递增子序列的个数 解题思路 本题改造最长递增子序列但是最长子序列的长度不止一个dp数组代表以nums[i]结尾的最长子序列长度count[i]代表以nums[i]结尾的最长子序列的个数那么当nums[i]大于前面的元素nums[j]的时候,计算dp[i]和dp[j] 1的大小&#xff0…

新手快速上手掌握基础排序<一>

目录 引言 一:两数互换排序 1.画图分析 2.代码实现 二:三数换交换排序 1.例题举例 2.代码实现 3.再比如四数互换排序,也可以使用两数互换的方法来实现 ,但最好使用基础的排序方法(冒泡法,选择法) 三&#xf…

PointNet人工智能深度学习简明图解

PointNet 是一种深度网络架构,它使用点云来实现从对象分类、零件分割到场景语义解析等应用。 它于 2017 年实现,是第一个直接将点云作为 3D 识别任务输入的架构。 本文的想法是使用 Pytorch 实现 PointNet 的分类模型,并可视化其转换以了解模…

一个WebSocket的自定义hook

一个WebSocket的自定义hook 自己封装了一个WebSocket的hook,代码如下&#xff1a; import { useEffect, useRef } from "react";const WS_URL wss://xxx // 服务地址const useSocket () > {const socketRef useRef<WebSocket>()let heartTimer 0; // …

【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】

一、导入必要的模块&#xff1a; 这篇博客将介绍如何使用Python编写一个爬虫程序&#xff0c;从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应&#xff0c;以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

第82讲:MySQL Binlog日志的滚动

MySQL Binlog日志的滚动 MySQL Binlog日志滚动指的就是产生一个新的Binlog日志&#xff0c;然后进行记录&#xff0c;因为如果都在一个Binlog中记录&#xff0c;查询是非常慢的&#xff0c;检索的效率也很低。 Binlog日志滚动有三种方法&#xff1a; 重启MySQL 数据库一般不重…

android开发调用百度地图api实现加载地图和定位

目录 一.踩的一些坑以及解决方法 1.权限声明不要少 2.地图初始化 3.定位问题 &#xff08;1&#xff09;监听器注册 &#xff08;2&#xff09;定位监听器类MyLocationListener的实现 &#xff08;3&#xff09;定位功能的调用 4.android studio连接真机调试问题 二.…

Spring Boot应用整合Prometheus

Spring Boot Actuator 提供了一组用于监控和管理 Spring Boot 应用程序的端点&#xff0c;而 Prometheus 是一个开源的监控和告警工具。通过将这两者结合起来&#xff0c;您可以实时监控您的应用程序的性能指标&#xff0c;并通过 Prometheus 提供的丰富的查询语言来分析和可视…

MySQL:索引

MySQL官方对索引的定义为: 索引 (Index) 是帮助MySQL高效获取数据的数据结构。 提取句子主干&#xff0c;就可以得到索引的本质:索引是数据结构。 1. 什么是索引&#xff0c;索引的作用 索引是一种用于快速查询和检索数据的数据结构&#xff0c;帮助mysql提高查询效率的数据…

ros2查看launch文件内需要提供的参数(接口):

格式&#xff1a;ros2 launch --show-args 包名称 launch文件名称 例如&#xff1a; ros2 launch --show-args ros_gz_sim gz_sim.python.py

行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification

文章记录了ICCV2019的一篇优化遮挡行人重识别论文的知识点&#xff1a;Pose-Guided Feature Alignment for Occluded Person Re-Identification 论文地址&#xff1a; https://yu-wu.net/pdf/ICCV2019_Occluded-reID.pdf Partial Feature Branch分支: PCB结构&#xff0c;将…

精致旅游网ROXANDREA 网页设计 html模板

一、需求分析 旅游网站通常具有多种功能&#xff0c;以下是一些常见的旅游网站功能&#xff1a; 酒店预订&#xff1a;旅游网站可以提供酒店预订服务&#xff0c;让用户搜索并预订符合其需求和预算的酒店房间。 机票预订&#xff1a;用户可以通过旅游网站搜索、比较和预订机票…

JavaScript 工具库 | PrefixFree给CSS自动添加浏览器前缀

新版的CSS拥有多个新属性&#xff0c;而标准有没有统一&#xff0c;有的浏览器厂商为了吸引更多的开发者和用户&#xff0c;已经加入了最新的CSS属性支持&#xff0c;这其中包含了很多炫酷的功能&#xff0c;但是我们在使用的时候&#xff0c;不得不在属性前面添加这些浏览器的…

毕业设计之开题报告

终于轮到我来写开题报告了&#xff0c;呃呃呃呃呃&#xff0c;目前有点难产了。想做的东西是关于区块链的后端设计实现&#xff0c;但是因为是完全原创之前没有类似的项目能去参考&#xff0c;所以其实有点慌的。 框架梳理 这是我们开题报告的要求&#xff1a; 包括题目研究的…

Django框架:入门指南与常用命令

引言&#xff1a; 在当今的Web开发世界中&#xff0c;Django无疑是一个备受瞩目的框架。它以其强大的功能和易用性&#xff0c;吸引着越来越多的开发者。这篇博客将为你提供一个关于Django的概览&#xff0c;以及一些常用的命令&#xff0c;帮助你快速上手。 一、Django简介&…