Intel处理器虚拟化技术VT-x86下实现小型虚拟化框架(1)

一.前言

我一直觉得,学习计算机中的一门新技术,一定要从历史去了解他的全貌。这样有利于我们了解事情的来龙去脉和发展的过程。一上来直接接触新兴事物,很容易陷入不知从何下手的困境。不了解历史发展,就不明白前人的一些操作。因此,这个系列的博客将详细完整记录VT(处理器虚拟化技术)的一些细节包括简单实现。单纯是对这门技术的兴趣。


二.虚拟化技术的介绍以及历史

虚拟化的诞生对计算机的发展是巨大的。好比如我们经常用的虚拟机VMware Workstation,VirtualBox等出名的虚拟化软件。都是基于这个技术去实现的。虚拟化,顾名思义就是将一个事物虚拟成多个事务。就拿我们的计算机来说。CPU,内存,寄存器等物理设备。假设一台电脑只会有一个。但是通过虚拟化技术,能让外界感觉你有多个CPU,多个内存,多个寄存器等物理设备,但是这不是真的,只是逻辑上感觉是有多个。从而能产生多个操作系统。(想象一下为啥虚拟机能运行多个操作系统)。这种通过虚拟化技术提供的多个操作系统或者软件,我们称之为虚拟机。


(2.1)基于软件的虚拟化技术的诞生

虚拟化技术早在20世纪60年代的时候就已经诞生,最早是由IBM提出。那个时候,其实是通过软件功能去模拟多个各种各样的设备或组件,类似于C++创建一个类并且实例化这样的思想。本质上是一个进程在操作系统中存在。那么多个模拟组件进程在操作系统中切换,就好像拥有多个真实组件一样,早期的VMware等软件是基于这个方案实现的。


(2.2)基于硬件的虚拟化技术的诞生

在2005-2006年,Intel和AMD相继开发出了硬件支持的虚拟化技术。也就是CPU支持一种新的技术模式。硬件厂商从底层出发设计出了这种虚拟化技术,并提供新的指令来操作和编写支持虚拟化技术的实现。从此,开发基于虚拟化技术的软件或者功能的实现将大大降低了开发难度。在硬件虚拟化技术的诞生,随之而来就是一个新的概念:虚拟机监视器(VMM)全称为Virtual Machine Monitor。有些书上把它称之为Hypervisor(超级监督者,管理器)。其实本质它们是一类东西。它的作用就是作为虚拟机的管理者。可以这么去理解,如果进程的调度切换等是由操作系统管理的。那么虚拟机就相当于进程,而VMM就是操作系统。VMM是作为管理者而存在的。由此,我们就引出了软件层面的虚拟化技术总体的框架脉络:


于此因为要作为管理者来集中管理这些虚拟机,并且作为中间人来操作物理设备。所以它的权限是要大于等于操作系统的。所以它的权限其实要凌驾于操作系统之上。也就是所谓的-1环。其实并没有所谓的-1环,但是为了区分它的权限比操作系统还大。所以叫-1环。可能有些人会想,和操作系统一个权限能够理解。毕竟系统编程属于驱动级的,肯定是跟操作系统一个权限的。那么比它还大是为什么呢?其实很简单。假设我把物理机上的操作系统给接管了,让他变成了我的虚拟机,而虚拟机的操作,都将通过我的VMM来反馈和拦截。这不就意味着操作系统想干嘛都得告诉我们嘛。在硬件虚拟化诞生之初,其实是为了加速类似于VMware Workstation这种软件的效率和速度,后续也用于云计算方面的应用。但是在后面的实践中。人们发现安全领域下,VT技术也是非常强大的。毕竟安全领域中,权限大就是王道。因此高于操作系统的权限利用,一定是会被人们发掘和利用的。据我所知目前最直接和广泛的应用主要有游戏公司使用VT技术保护游戏。一些木马使用VT技术隐藏自己等。当然我学习它的目的并非出于破坏计算机,因此不要拿来干非法的事情。(免责申明)。


三.Intel硬件虚拟化开发框架

前面我们讲了目前Intel和AMD两大硬件厂商分别实现了硬件虚拟化技术。我们主要讲Intel的虚拟化技术。其实大致思想和框架是一样的,只是细节上的细微部分有所差别。Intel虚拟化技术分为三个部分--Intel-VTx,Intel-VTd,Intel-VTc。其实很好区分,x对应是软件开发。d是物理上的实现,c是网络虚拟化相关的内容。我们只讲Intel-VTx和软件实现相关的部分。

(3.1)框架图

上面我们描述虚拟化技术的基本框架,我们经过详细修改给出更加详细的框架图:


(3.2)权限和设计目标

从上面的框架图中,我们可以看到Intel-VTx是有两种权限的。Guest虚拟机在no-root权限下,VMM处于root权限下。这个很好理解,类比于Linux系统的root用户和普通用户。基于这个权限VT有如下设计目标:

对于VMM层来说:

1,为每个虚拟机提供虚拟处理器,可以在恰当的时候将它放入真正的物理处理器上执行。

2.VMM层可以控制处理器资源,内存管理,管理中断和IO操作等。

对于Guest虚拟机来说:

1.每个虚拟机使用相同的接口来使用虚拟处理器,内存,存储设备等。

2.每个虚拟机可以独立运行,互不干扰。

3.对于虚拟机来说,VMM层完全透明(不存在的意思)。


(3.3)VMM框架开启和退出模型


基于这个图(取自Intel手册3卷23章)谈谈这个VMM模型。其实它很类似我们的操作系统发生系统调用的过程(3环进0环的过程),当执行VMXON指令后,就进入了root模式,也就是VMM下。当执行对应的指令(VMLAUNCH)就会进入虚拟机模式也就是no-root下执行。当虚拟机发生某些事件触发VM Exit将会把控制权交给VMM。只有当VMM显示调用VMXOFF指令后,VMM才会被关闭。也就是退出虚拟化。


四,小结

通过上述的一些概念和基础知识,我们对虚拟化技术有了基本的认识。了解这些对后续的理解是有很大帮助的。下一篇我们将介绍编写VMM之前需要认识的一些存储结构。

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

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

相关文章

Xcode中App图标和APP名称的修改

修改图标 选择Assets文件 ——> 点击Applcon 换App图标 修改名称 点击项目名 ——> General ——> Display Name

Servlet(2)

文章目录 更方便的部署方式安装 Smart Tomcat 插件配置 Smart Tomcat 插件 访问出错怎么办出现 404出现 405出现 500出现 "空白页面"出现 "无法访问此网站" 小结 更方便的部署方式 手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法. 此处我…

智慧校园的未来已来!AI与数字孪生领航教育新时代

随着科技的飞速发展,人工智能(AI)和数字孪生技术正逐渐渗透到我们生活的方方面面,而在教育领域,它们的结合更是催生出一种全新的智慧校园模式。这种模式的出现,不仅预示着教育管理方式的彻底变革&#xff0…

网络原理 - HTTP/HTTPS(5)

HTTPS HTTPS也是一个应用层协议.在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的. 这就导致了在传输过程中出现了一些被篡改的情况. 臭名昭著的"运营商劫持" 下载一个天天动听. 未被劫持的效果,点击下载按钮,就会弹出天天动听的…

【linux】常见指令 -通配符,数据管道,重定向,压缩打包...

目录 前言 基本指令 ls命令 常见选项 ​编辑 pwd命令 cd 指令 常见选项 touch指令 mkdir指令 常见选项 rm 指令 常见选项 man指令 cp指令 常用选项: mv指令 常用选项 nano指令 如何写入且执行文件? cat指令 常用选项 more指令…

基于RK3399 Android11适配OV13850 MIPI摄像头

目录 1、原理图分析2、编写和配置设备树3、调试方法4、遇到的问题与解决5、补丁 1、原理图分析 从上图可看出,我们需要关心的,①MIPI数据和时钟接口使用的是MIPI_TX1/RX1 ②I2C使用的是I2C4总线 ③RST复位引脚使用的是GPIO2_D2 ④PWDN使用的是GPIO1_C7 ⑤…

【Python笔记-设计模式】外观模式

一、说明 外观模式是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个统一的接口。 (一) 解决问题 简化复杂系统的接口调用 (二) 使用场景 简化复杂系统:需要一个指向复杂子系统的直接接口, 且该接口的功能有限时重构复杂的代码…

unity ui界面优化

优化一个比较复杂的界面,里面有多个rt和组件。 在初次打开这个界面的时候会发生1s多的卡顿,还是非常严重的。 分析 通过profiler分析 1.打开界面时卡顿。 分析:除了update和dotween相关逻辑,主要在于打开时的lua function调用…

幻兽帕鲁(Palworld 1.4.1)私有服务器搭建(docker版)

文章目录 说明客户端安装服务器部署1Panel安装和配置docker服务初始化设置设置开机自启动设置镜像加速 游戏服务端部署游戏服务端参数可视化配置 Palworld连接服务器问题总结 说明 服务器硬件要求:Linux系统/Window系统(x86架构,armbian架构…

spring boot3登录开发-3(账密登录逻辑实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 内容简介 用户登录逻辑实现 创建交互对象 1.创建用户登录DTO 2.创建用户登录VO 创建自定义登录业务异…

如何使用ChatGPT创建一份优质简历

目录 第一步:明确目标和重点 第二步:与ChatGPT建立对话 第三步:整理生成的内容 第四步:注重行文风格 第五步:强调成就和量化结果 第六步:个性化和定制 第七步:反复修改和完善 总结 在现…

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测

分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测 目录 分类预测 | Matlab实现KPCA-ISSA-LSSVM基于核主成分分析和改进的麻雀搜索算法优化最小二乘支持向量机故障诊断分类预测分类效果基本描述程序设计参考资…

【软件测试】定位前后端bug总结+Web/APP测试分析

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Web测试中简单…

k8s-pod的介绍及命令行创建pod

一、 pod介绍 在kubernetes的世界中,k8s并不直接处理容器,而是使用多个容器共存的理念,这组容器就叫做pod。 pod是k8s中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,其他的资源对象…

车载测试面试:题库+项目

车载测试如何面试(面试技巧)https://blog.csdn.net/2301_79031315/article/details/136229809 入职车载测试常见面试题(附答案)https://blog.csdn.net/2301_79031315/article/details/136229946 各大车企面试题汇总(含答案&am…

Megalinter 初体验

简介 MegaLinter 是一个多语言、多工具的集成代码检查工具,它能够通过一个统一的工作流来运行多个静态代码分析工具,从而提供全面的代码质量检查。 官网:https://megalinter.io/latest/ MegaLinter 的特点: 多语言支持&#x…

Arcgis小技巧【17】——如何修改ArcGIS中影像的背景颜色

一、问题分析 在ArcGIS中,有时候会遇到影像有背景色,看上去很不美观。 尤其在多个影像叠加的时候,更是会造成遮挡的问题。 二、解决办法 首先,用【识别】工具在背景色是点击一下,查看弹出的窗口,记住背景…

新型智慧城区建设方案

智慧社区项目以改善基础设施环境为基础,以搭建社区综合服务平台为纽带,通过利用物联网、大数据技术建立覆盖社区居民生活方方面面的综合服务体系,向社区管理机构、服务机构和居民提供智能化服务,保障社区的安全,保障居…

飞行机器人专栏(十三)-- 智能优化算法之粒子群优化算法与多目标优化

一、理论基础 1.1 引言 粒子群优化算法(Particle Swarm Optimization, PSO)自1995年由Eberhart和Kennedy提出以来,已经成为解决优化问题的一种有效且广泛应用的方法。作为一种进化计算技术,PSO受到社会行为模式,特别是…

document.cookie中expires 格式设置问题导致部分iphone safari上登录失效

一、问题描述 设备信息:iPhone 12, iOS 16.3 昨天有个小伙伴发现自己的iPhone safari打开网页登录时,登录页面显示登录成功,但实际进入首页后仍然显示未登录。多次测试,该问题在该设备上属于必现问题。 二、问题排查与解决 经过…