当前位置: 首页 > news >正文

云计算基础-计算虚拟化-CPU虚拟化

CPU指令系统

在CPU的工作原理中,CPU有不同的指令集,如下图,CPU有4各指令集:Ring0-3,指令集是在服务器上运行的所有命令,最终都会在CPU上执行,但是CPU并不是说所有的命令都是一视同仁的,它会把命令分为不同的指令集

Ring0指令集称之为内核态指令集,改啊指令集里面啊运行的主要是操作系统访问硬件、关键数据结构,运行中断等。

Ring1-2指令集主要运行的是设备驱动的命令

Ring3指令集称之为用户态,该指令集运行的是用户态的应用的一些命令

CPU就是通过这种不同的指令集来运行着不同的命令,为什么要做这种涉及呢?因为在服务器上所运行的命令,可能会产生不一样的后果,比如说单纯的额运行上层应用的命令,最多只影响上层的这些软件,比如有些软件跑着跑着就跑非了,但是它仅仅是软件挂了,操作系统并不受影响,

但是向Ring0这里,它包含了操作系统访问硬件,他是可以调度底层硬件设备,向这些命令是非常关键的,如果说调度底层硬件设备的命令出现了问题,相当于这个命令直接给到了底层设备,如果命令不加筛选,或者随便给一个命令的话是有可能损坏底层设备的,所以像这种最高级的操作系统访问硬件,包括中断这种非常敏感和高级的指令是被放在了内核态的指令集里的

这个结构是CPU在最初涉及的时候就是这么涉及的,这个结构最初的涉及仅仅考虑了CPU的正常运行,但并没有考虑到虚拟化场景下出现的问题

CPU虚拟化分类

全虚拟化

在虚拟化场景中,CPU架构面临的问题

在虚拟化场景下,物理主机上的操作系统操作底层硬件的指令运行在Ring0内核态,我们在操作系统上安装的各种软件运行在Ring3用户态,而Hypervisor本质上也是操作系统上的一个软件,所以Hypervisor运行在Ring3用户态。

作为一个虚拟化应用,我们可以在Hypervisor之上创建了虚拟机,因为Hypervisor运行在Ring3用户态,所以通过Hypervisor创建的这台虚拟机也跑在Ring3用户态

但是作为一个完整的虚拟机,虚拟机的CPU也会有Ring0-3,虚拟机上的应用跑在Ring3上是没问题的,问题是虚拟机的操作系统要如何运行?

首先虚拟机的操作系统它应该运行在Ring0内核态,但是由于虚拟机运行在Hypervisor上,而Hypervisor又运行在Ring3上,那虚拟机的操作系统也就只能运行在Ring3上,所以虚拟机的操作系统本应该运行在Ring0内核态,但它实际上处于Ring3用户态,也就是说Guest OS想访问Ring0,由于它运行在Hypervisor上,实际上是跑在Ring3的。这就是引入虚拟化之后对于传统CPU结构带来的巨大冲突,也就是传统CPU结构并不能满足虚拟机操作系统想要的运行环境,这就是最早虚拟化所面临的第一大难题

上世纪八十年代,这个问题由VMware公司提出并解决,VMware的解决思路叫Binary Translation,翻译成中文叫二进制转化,它的解决思路是给Hypervisor附加了一个功能,由Hypervisor来拦截、收集、辨识虚拟机的所有命令,即包括Ring3命令,也包括Ring0命令,Ring3命令正常运行,因为它就应该跑在Ring3,如果是Ring0的命令,则由Hypervisor来拦截虚拟机的这部分Ring0指令,然后将这部分指令进行Binary Translation(翻译),将这些指令进行一些列的翻译和替换,也就是使虚拟机内核态的这部分指令可以运行在Ring0的环境

直白地说就是对所有地指定进行拦截翻译再执行地过程,通过这个过程就保证了虚拟机操作系统的那些指令也可以在经过转化之后运行在Ring0态,通过这种技术就保证了虚拟机实现了CPU的虚拟化

但是这种技术会导致Hypervisor有大量的工作负荷,因为他要拦截虚拟机的每一条指令,并且进行鉴别、筛选、再传递等等工作,这些工作就会占用大量的CPU和内存资源,这种办法仅仅使从技术上解决了CPU的虚拟化,但它实际的使用效率是比较低的

这种方案我们称之为全虚拟化,也就是说这种方案完全是靠软件的功能来解决的,没有涉及到任何硬件,硬件也没有改动

简单来说,全虚拟化就是:虚拟机想访问Ring0,由于它运行在Hypervisor上,实际上它是跑在Ring3的。通过Hypervisor的拦截、翻译、传递这些指令,使虚拟机内核态的指令可以运行在Ring0上

半虚拟化

全虚拟化主要的问题是效率比较低,随着技术的发展,人们又提出半虚拟化技术,Para Virtualization,它还有另外一个名字叫超虚拟化

半虚拟化技术最核心的点在于它直接修改了操作系统,让操作系统即便运行在Ring3上,它也可以产生一些能够直接跑在Ring0的命令,如下图所示,经过修改后的linux操作系统可以直接把他的命令传递给hardware(硬件)而不需要经过hypervisor翻译

半虚拟化技术优点:不需要Hypervisor进行拦截和翻译,占用的CPU和内存资源更少,性能得到了提升

半虚拟化技术缺点:技术门槛高,要求需要对操作系统进行修改,Linux是开源的,是可以进行修改的,而Windows是闭源的,无法进行修改,所以半虚拟化的使用范围也收到了限制,仅仅是可以支持开源的Linux操作系统

硬件辅助全虚拟化

全虚拟化和半虚拟化都是在软件层面解决CPU虚拟化的问题,CPU传统结构对于虚拟化技术是不友好的,技术人员在软件层面做了一些改进,以期让CPU更好的支持虚拟化技术,随着技术的发展,CPU厂商也在硬件层面做了改进,在2000左右,英特尔和AMD升级了他们的CPU硬件,让CPU可以更好的来支持虚拟化技术。这种升级后的技术叫硬件辅助全虚拟化。

升级后的CPU有两种工作形态,一个叫根态,一个叫非根态

根态是物理机正常工作的情况下的形态,主机操作系统运行在Ring0,业务运行在Ring3。当在物理机上起了一台虚拟机之后,虚机想要运行的时候,如Guest OS需要调用Ring0的时候,这时候CPU就会由根态切换到非根态,切换之后,Guest OS可以直接访问到物理CPU的Ring0,Guest OS上的APP可以直接访问到物理CPU的Ring3,当物理机的操作系统又想对CPU进行操作时,再由非根态切换回根态

相比于全虚拟化和半虚拟化,硬件辅助全虚拟化在硬件层面对CPU进行了重新设计,让CPU可以更好的支持虚拟化技术,它不需要在软件层面做修改,虚拟化对于硬件的性能没有过多的占用,保证了虚拟化有较好的性能水平

相关文章:

云计算基础-计算虚拟化-CPU虚拟化

CPU指令系统 在CPU的工作原理中,CPU有不同的指令集,如下图,CPU有4各指令集:Ring0-3,指令集是在服务器上运行的所有命令,最终都会在CPU上执行,但是CPU并不是说所有的命令都是一视同仁的&#xf…...

MySQL数据库⑪_C/C++连接MySQL_发送请求

目录 1. 下载库文件 2. 使用库 3. 链接MySQL函数 4. C/C链接示例 5. 发送SQL请求 6. 获取查询结果 本篇完。 1. 下载库文件 要使用C/C连接MySQL,需要使用MySQL官网提供的库。 进入MySQL官网选择适合自己平台的mysql connect库,然后点击下载就行…...

选择排序和快速排序(1)

目录 选择排序 基本思想 选择排序的实现 图片实现 代码实现 快速排序 基本思想 快速排序的实现 图片实现 代码实现 选择排序 基本思想 每一次从待排序的数据元素中选出最小(最大)的元素,存放在序列的起始位置,直到全部…...

得物面试:Redis用哈希槽,而不是一致性哈希,为什么?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: Redis为何用哈希槽而不用一致性哈希? 最近…...

matlab发送串口数据,并进行串口数据头的添加,我们来看下pwm解析后并通过串口输出的效果

uintt16位的话会在上面前面加上00,16位的话一定是两个字节,一共16位的数据 如果是unint8的话就不会, 注意这里给的是13,但是现实的00 0D,这是大小端的问题,在matlanb里设置,我们就默认用这个模式…...

二分、快排、堆排与双指针

二分 int Binary_Search(vector<int> A,int key){int nA.size();int low0,highn-1,mid;while(low<high){mid(lowhigh)/2;if(A[mid]key)return mid;else if(A[mid]>key)highmid-1;elselowmid1; }return -1; }折半插入排序 ——找到第一个 ≥ \ge ≥tem的元素 voi…...

微信小程序步数返还的时间戳为什么返回的全是1970?

微信小程序步数返还的时间戳为什么返回的全是1970&#xff1f; 将返回的时间 乘以 1000 再 new Date() 转化就对了 微信返回的是秒S单位的&#xff0c;我们要转化为毫秒ms单位&#xff0c;才能进行格式化日期。 微信给我们下了个坑&#xff0c; 参考&#xff1a; https://d…...

Python函数——函数介绍

一、引言 在Python编程中&#xff0c;函数是构建高效代码的关键。通过创建可重用的代码块&#xff0c;我们可以使程序更加清晰、易读且易于维护。在本文中&#xff0c;我们将深入了解Python函数的基本概念及其特性。 二、Python函数的基本概念 函数是一段具有特定功能的代码块…...

【Linux系统化学习】文件重定向

目录 文件内核对象 文件描述符的分配规则 重定向 重定向的概念 dup2系统调用 输出重定向 追加重定向 输入重定向 stderr解析 重定向到同一个文件中 分离常规输出和错输出 文件内核对象 上篇文章中我们介绍到了操作系统中的文件&#xff0c;操作系统为了方…...

防火墙工作模式详解

防火墙工作模式是指防火墙在网络中的工作方式和策略。常见的防火墙工作模式包括以下几种&#xff1a; 1. 包过滤工作模式&#xff1a;根据事先确定的规则集合&#xff0c;对进出网络的网络包进行过滤和检查。根据规则&#xff0c;防火墙可以允许或阻止特定的网络流量。 2. 代…...

CCF编程能力等级认证GESP—C++6级—20231209

CCF编程能力等级认证GESP—C6级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)闯关游戏工作沟通 答案及解析单选题判断题编程题1编程题2 单选题…...

ES6 ~ ES11 学习笔记

课程地址 ES6 let let 不能重复声明变量&#xff08;var 可以&#xff09; let a; let b, c, d; let e 100; let f 521, g "atguigu", h [];let 具有块级作用域&#xff0c;内层变量外层无法访问 let 不存在变量提升&#xff08;运行前收集变量和函数&#…...

001 - Hugo, 创建一个网站

001 - Hugo, 创建一个网站安装hugoWindows系统Macos Hugo博客搭建初始化博客主题安装配置博客各个页面开始创作创建 GitHub Page 仓库本地调试和预览发布内容 教程及鸣谢文字教程视频教程 001 - Hugo, 创建一个网站 这篇文章假设你已经&#xff1a; 了解基本的终端命令行知识&…...

前端开发:Vue框架与前端部署

Vue Vue是一套前端框架&#xff0c;免除原生)avaScript中的DOM操作&#xff0c;简化书写。是基于MVVM(Model–View-ViewModel)思想&#xff0c;实现数据的双向绑定&#xff0c;将编程的关注点放在数据上。简单来说&#xff0c;就是数据变化的时候, 页面会自动刷新, 页面变化的时…...

【leetcode】深搜、暴搜、回溯、剪枝(C++)3

深搜、暴搜、回溯、剪枝&#xff08;C&#xff09;3 一、解数独1、题目描述2、代码3、解析 二、单词搜索1、题目描述2、代码3、解析 三、黄金矿工1、题目描述2、代码3、解析 四、不同路径III1、题目描述2、代码3、解析 一、解数独 1、题目描述 leetcode链接 2、代码 class…...

社区养老|社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;服务种类管理 &#xff08;3&#xff09;社区服务管理 &#xff08…...

云计算基础-存储虚拟化(深信服aSAN分布式存储)

什么是存储虚拟化 分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘&#xff0c;实现服务器存储资源的统一整合、管理及调度&#xff0c;最终向上层提供NFS、ISCSI存储接口&#xff0c;供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。…...

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十二)(3)

实验十二&#xff1a;微分方程模型 练习三 1.分别用数值解命令ode23t和ode45 计算示例3中微分方程的数值解,同用命令ode23 算得的数值解以及解析解比较,哪种方法精度较高?你用什么方法比较它们之间的精度? clc;clear; f(x,y)2*yx2; figure(1) [x,y]ode23t(f,[1,2],1); plo…...

CSS Transition:为网页元素增添优雅过渡效果

随着互联网的发展&#xff0c;网页的视觉效果和用户体验变得尤为重要。CSS Transition作为一种能够让网页元素在状态改变时呈现平滑过渡效果的工具&#xff0c;受到了广大前端开发者的青睐。本文将详细介绍CSS Transition的基本概念、使用方法以及常见应用&#xff0c;帮助读者…...

JDK 17 新特性 (一)

既然 Springboot 3.0 强制使用 JDK 17 那就看看 JDK17 有哪些新特性吧 参考链接 介绍一下 新特性的历史渊源 JDK 17是Java Development Kit&#xff08;JDK&#xff09;的一个版本&#xff0c;它是Java编程语言的一种实现。JDK 17于2021年9月14日发布&#xff0c;并作为Java …...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...