ARM系列 -- 虚拟化(一)

news2025/1/24 1:40:26

今天来研究一个有意思的话题,虚拟化(virtualization)。

开始前,先闲扯一下,最近一个词比较火,“元宇宙(Metaverse)”。在维基百科里面是这么定义元宇宙的,“The Metaverse is a collective virtual shared space, created by the convergence of virtually enhanced physical reality and physically persistent virtual space, including the sum of all virtual worlds, augmented reality, and the Internet”。啥是虚拟呢,通俗点说就是假的,不是物理上真实的。

虚拟化技术是一种广泛使用的技术,比如在云计算业务,数据中心业务中。为什么处理器需要虚拟化,或者说虚拟化能带来什么好处呢?

首先,在处理器设计和应用里,要提一个概念,就是“虚拟机(Virtual Machine)”。关于虚拟机,玩过Vmware的同学可能有一定了解。与虚拟机相对应的就是“真实机(Real Machine)”,有时也叫物理机。物理机好理解,比如我们买一台电脑做家用机,那么这台电脑的所有物理设备,比如硬盘,网卡等等,都是归你自己使用。

如果是服务器机,这种独占的使用方式无疑是效率非常低下的。把服务器的巨大资源划分成块分配使用,或者是按照时间片轮流使用,就可以大大提高效率了。这就需要使用到虚拟化技术了。虚拟化技术就是要让应用程序运行在虚拟机上,就像运行在真实机上一样。归纳一下,虚拟化技术能带来的好处有以下几点:

  • 隔离:即允许在相互不信任的计算环境之间共享物理系统。例如,两个竞争对手可以在一个数据中心共享同一台物理机器,而不能够访问彼此的数据。
  • 高可用性:虚拟化技术允许在物理机器之间无缝且透明地迁移工作负载,通常用于将工作负载从可能需要维护和更换的故障硬件平台迁移出去。
  • 工作负载平衡:尽可能多地使用每个硬件平台,这可以通过虚拟机的迁移来实现,或者通过在物理机上共同托管适当的工作负载来实现。
  • 沙箱:虚拟机可用于为可能干扰其运行的机器其他部分的应用程序提供沙箱。在虚拟机中运行这些应用程序可以防止应用程序的错误或恶意部分干扰物理计算机上的其他应用程序或数据。

当然,虚拟化技术带来的好处不止这些,此处就不一一列举了。

如何把虚拟机和真实的物理设备隔绝呢,或者说如何实现虚拟化。聪明的行业前辈们想到了一个方法,在hardware之上加一层hypervisor。对于hypervisor,百度百科是这样定义的,“一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( Virtual Machine Monitor ),即虚拟机监视器。

Hypervisor是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘”。

有了hypervisor,我们再来看一下系统如何构成。先以汽车芯片为例,如下图。Hypervisor负责协调,控制所有的硬件资源。在hypervisor之上,把汽车行驶和安全相关的部分隔离成一部分,运行封闭操作系统(Closed OS);把与娱乐等相关的部分隔离成另一部分,运行开放操作系统(Open OS)。相对应的应用程序(APP)运行在各自操作系统之上。这样就可以起到一个很好的隔离作用,用户自己安装的APP不会影响到汽车行驶安全。

图1 汽车芯片中的虚拟化示意图

再来看一个服务器的例子,如下图。一台服务器可能拥有很多的处理器,硬盘等。通过hypervisor,可以分配给不同的虚拟机以不同的硬件资源。比如对于VM1,可能要运行一些安全等级高的任务,这时就可以把Hardware0的资源只分配给VM1,其它的虚拟机不能访问。对于Hardware1,同时分配给VM0,VM1,VM2等多个虚拟机,充分利用其资源。

图2 服务器芯片中的虚拟化示意图

Hypervisor分为两大类:

  • 一类是standalone hypervisor,或者叫type 1;
  • 另一类是hosted hypervisor,也叫type 2。

图3 Type 1 hypervisor(standalone)

图4 Type 2 hypervisor(hosted)

两者的区别是,type 1的hypervisor是直接运行在硬件之上的,而type 2的hypervisor是运行在Host OS之中的。Type 1相当于一个轻量级的操作系统,直接跑在宿主机的硬件上;而Type 2相当于一个应用软件,运行在宿主机的操作系统之中。两者相同的是,客户操作系统(Guest OS)都是运行在hypervisor之上的。

Type 1的hypervisor通常在性能上比Type 2表现的更好,更为安全。**Type 2相较于type 1还有一个缺点就是延迟太高,**这是因为hypervisor与硬件之间的交流还需要穿过操作系统这一层。Hosted hypervisor最多的应用场景是作为client hypervisor运行在终端用户的电脑上,而这种场景下一般是不需要关心延迟问题的。大多数企业一般选择Type 1类型的hypervisor用于数据中心的计算需求。

在ARM平台上,type 1 hypervisor比较典型的代表是Xen。Xen是由剑桥大学计算机实验室开发的一个开源项目。是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个Guest OS。Xen支持x86、x86-64、Power PC和ARM多种处理器。

2014年03月11日,Xen发布4.4版本,更好地支持ARM架构。Xen是半虚拟化(Para-Virtualization)技术的典型代表。半虚拟化技术,主要解决的就是如何捕获非特权指令的敏感指令。x86体系是导致半虚拟化技术产生的重要原因,因为x86体系结构中,部分敏感指令不是特权指令,这些指令不能自动产生异常,因此想要系统正常运行就必须要捕获这些指令。于是Xen采用修改Guest OS内核的方法对这些有缺陷的指令进行替换。

根据直觉,既然有半虚拟化,就一定有全虚拟化,对不对?没错,你很机智,**确实有“完全虚拟化”,又称“硬件虚拟化(Hardware Virtual Machine)”。**简单说,两者的区别就是在半虚拟化中,Guest OS知道自己运行在Hypervisor上而不是硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。在全虚拟化中,Guest OS任务自己运行在硬件上,无法感知其他Guest OS。

在ARM平台上,type 2 hypervisor比较典型的代表是KVM。KVM(Kernel-basedVirtual Machine)是一个基于Linux环境的开源虚拟化解决方案,最早由以色列Qumranet公司开发,并于2007年2月被集成到Linux 2.6.20内核中,成为内核的一部分。与VMware ESX/ESXi、微软Hyper-V和Xen等虚拟化产品不同,KVM的思想是在Linux内核的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度、内存管理、IO管理等代码,使之成为一个可以支持运行虚拟机的Hypervisor。

图5 Xen和KVM对比示意图

对于hypervisor感兴趣的同学可以上网去搜搜,一大堆的文章,在此就不过多介绍了(其实我也是一知半解,哈哈)。我们更关心的是,芯片要支持虚拟化,我们要做哪些工作。


作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/uJM8fs-FiGyGBxHLxUKruQ

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

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

相关文章

MSSQL 获取表对应的列明,备注,字段类型

旧系统代码CV多了想解放一下双手写个代码生成器,这时候就需要获取到表的某一些信息了 SELECT a.NAME AS colname,CONCAT(UPPER(SUBSTRING(b.name, 1, 1)), LOWER(SUBSTRING(b.name, 2,LEN(b.name)-1))) AS typename,a.length AS length,a.scale AS scale, a.prec A…

京东数据分析(电商数据分析):2024年1月京东白酒TOP10品牌销量销额排行榜

在公布2024年1月京东白酒品牌排行榜之前,分享一个有点意思的现象:在今年龙年春晚“黄金5分钟”的广告片里,白酒局知名的品牌基本都亮相了(茅台、五粮液、洋河股份、郎酒、古井贡酒、水井坊),但今年汾酒却缺…

Thread多线程(创建,方法,安全,通信,线程池,并发,并行,线程的生命周期)【全详解】

目录 1.多线程概述 2.多线程的创建 3.Thread的常用方法 4.线程安全 5.线程同步 6.线程通信 7.线程池 8.其它细节知识:并发、并行 9.其它细节知识:线程的生命周期 1.多线程概述 线程是什么? 线程(Thread)是一个程序内部的一条执行…

安全运营中心(SOC)综合指南

什么是安全运营中心(SOC) 安全运营中心,也称为信息安全运营中心 (ISOC),是结构良好的网络安全战略的核心。安全运营中心是一个集中式枢纽,无论是在组织内部还是外包,都致力于对整个…

非线性优化资料整理

做课题看了一些非线性优化的资料,整理一下,以方便查看: 优化的中文博客 数值优化|笔记整理(8)——带约束优化:引入,梯度投影法 (附代码)QP求解器对比对于MPC的QP求解器 数值优化| 二次规划的…

Linux命名管道

Linux匿名管道-CSDN博客 目录 1.原理 2.接口实现 3.模拟日志 Linux匿名管道-CSDN博客 这上面叫的是匿名管道,不要将两者搞混,匿名管道说的是两个有血缘关系的进程相互通信,但是命名管道就是两个没有关系的管道相互通信。 1.原理 和匿名…

Mysql的备份还原

模拟环境准备 创建一个名为school的数据库,创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…

Leetcode3045. 统计前后缀下标对 II

Every day a Leetcode 题目来源:3045. 统计前后缀下标对 II 解法1:字典树 将这个列表哈希化:idx (s[i] - ‘a’) * 26 (s[j] - ‘a’)。 枚举 twords[j],怎么统计有多少个 swords[i] 是 t 的前缀? 这可以用字典树…

[Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包

一、设置应用包名 在Flutter开发中,修改应用程序的包名(也称作Application ID)涉及几个步骤,因为包名是在项目的Android和iOS平台代码中分别配置的。请按照以下步骤操作: 1.Android Flutter工程中全局搜索替换包名 …

[Mac软件]Adobe Substance 3D Stager 2.1.4 3D场景搭建工具

应用介绍 Adobe Substance 3D Stager,您设备齐全的虚拟工作室。在这个直观的舞台工具中构建和组装 3D 场景。设置资产、材质、灯光和相机。导出和共享媒体,从图像到 Web 和 AR 体验。 处理您的最终图像 Substance 3D Stager 可让您在上下文中做出创造性…

Window10安装ruby

最好的方法,使用rubyinstaller,即在Downloads。 这是官方推荐的安装方式 通常来说我们会下载64位的 下载完后执行下载的exe即可。在最后一步会提示让安装gem,选则安装即可。 然后就可以在控制台进行测试了。

axios接口请求超时,重试方法

import axios from "axios"; import { Message } from "element-ui";const service axios.create({baseURL: xxxx,timeout: 2000,//超时时间retry: 3, //设置全局重试请求次数(最多重试几次请求)retryDelay: 1000, //设置全局请求间…

如何在有限的预算里做好服务器的DDOS防护?

在网络安全领域,防御分布式拒绝服务(DDoS)攻击是一项持续且复杂的挑战。尤其对于预算有限的组织来说,如何在不牺牲安全性的前提下进行有效的防护,更是一个需要深思熟虑的问题。以下是一些建议,帮助你在有限…

459. 重复的子字符串(力扣LeetCode)

文章目录 459. 重复的子字符串题目描述暴力移动匹配 459. 重复的子字符串 题目描述 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: s “ab…

Android 15的新功能介绍

虽然谷歌已经发布了 Android 15 Preview 1,但这并不是完整的更新,因为该公司计划在后续的每月测试版中引入新功能。但这可能会让您思考,“Android 15 带来了哪些新功能?” 为了寻找答案,让我们深入了解 Android 15。 …

CSS3技巧37:JS+CSS3 制作旋转图片墙

开学了就好忙啊,Three.js 学习的进度很慢。。。 备课备课才是王道。 更一篇 JS CSS3 的内容,做一个图片墙。 其核心要点是把图片摆成这个样子: 看上去这个布局很复杂,其实很简单。其思路是: 所有图片放在一个 div.…

【小沐学QT】QT学习之OpenGL开发笔记

文章目录 1、简介2、Qt QOpenGLWidget gl函数3、Qt QOpenGLWidget qt函数4、Qt QOpenGLWindow5、Qt glut6、Qt glfw结语 1、简介 Qt提供了与OpenGL实现集成的支持,使开发人员有机会在更传统的用户界面的同时显示硬件加速的3D图形。 Qt有两种主要的UI开发方…

计算机网络:路由协议

路由协议简介 路由协议是计算机网络中不可或缺的一部分,它们负责确定数据包从源地址到目的地址的最佳路径。想象一下,如果你是一个数据包,路由协议就像是地图或导航工具,指导你如何到达目的地。 目录 路由协议简介 工作原理简化…

动态更新(LanqiaoOJ)

2024.2.27 前缀和、差分解析 前缀和与差分 图文并茂 超详细整理(全网最通俗易懂)_前缀和差分-CSDN博客 k倍区间【暴力、前缀和】 输入描述 第一行包含两个整数 NN 和 KK( 1≤N,K≤1051≤N,K≤105 )。 以下 N 行每行包含一个整数 AiAi​ ( 1≤Ai≤1051≤Ai​≤105 ) 输…

【Java】常用实用类及java集合框架(实验六)

目录 一、实验目的 二、实验内容 三、实验小结 3.1 常用实用类 3.2 Java集合框架 一、实验目的 1、掌握java常用类的方法 2、掌握String类与数值类型数据的相互转化 3、掌握正则表达式的应用 4、掌握常用集合的创建和操作方法 二、实验内容 1、菜单的内容如下&#x…