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之前需要认识的一些存储结构。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【无刷电机学习】各种电机优势比较

目录 0 参考出处 1 有刷与无刷比较 2 交流与直流比较 3 内转子与外转子比较 4 Delta型与Y型定子绕向比较 5 低压BLDC的一些优点 0 参考出处 【仅作自学记录,不出于任何商业目的。如有侵权,请联系删除,谢谢!】 维基百科…

2024 CKS 题库 | 11、AppArmor

不等更新题库 CKS 题库 11、AppArmor Context: APPArmor 已在 cluster 的工作节点node02上被启用。一个 APPArmor 配置文件已存在,但尚未被实施。 Task: 在 cluster 的工作节点node02上,实施位于 /etc/apparmor.d/nginx_apparmor 的现有APPArmor 配置…

opencv判断二值的情况

目的 先说说理论: 什么叫图像的二值化?二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个版…

STM32控制max30102读取血氧心率数据(keil5工程)

一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块&#xff0c;适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下&#xff1a; &#xff08;1&#xff09;光学测量&#xff1a;MAX30102内置…

java面试设计模式篇

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#…

【刷题记录】链表的回文结构

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.题目链接&#xff1a; LINK 2.详解思路&#xff1a; 思路&#xff1a;思路&#xff1a;先找到中间节点&#xff0c;然后逆置后半部分链表&#xff0c;一个指针指向链表的头节点&#xff0c;再一个指针指向逆置的头…

RK3568平台开发系列讲解(Linux系统篇)SPI 客户端通信

🚀返回专栏总目录 文章目录 一、spi_transfer二、spi_message三、初始化沉淀、分享、成长,让自己和他人都能有所收获!😄 SPI I/O模型由一组队列消息组成。我们提交一个或多个struct spi_message结构时,这些结构以同步或异步方式处理完成。单个消息由一个或多个struct sp…

Gitlab 设置页面语言为简体中文

1.用户登录&#xff0c;点击头像&#xff0c;再点击Preferences&#xff08;偏好设置&#xff09; 2.向下滑动&#xff0c;找到 Localization&#xff08;本地化&#xff09;&#xff0c;进行修改&#xff0c;并保存 3.刷新页面&#xff0c;就更改成简体中文了

架构篇36:微服务架构最佳实践 - 基础设施篇

文章目录 自动化测试自动化部署配置中心接口框架API 网关服务发现服务路由服务容错服务监控服务跟踪服务安全小结每项微服务基础设施都是一个平台、一个系统、一个解决方案,如果要自己实现,其过程和做业务系统类似,都需要经过需求分析、架构设计、开发、测试、部署上线等步骤…

pclpy KD-Tree K近邻搜索

pclpy KD-Tree K近邻搜索 一、算法原理1.KD-Tree 介绍2.原理 二、代码三、结果1.原点云2.k近邻点搜索后的点云 四、相关数据 一、算法原理 1.KD-Tree 介绍 kd 树或 k 维树是计算机科学中使用的一种数据结构&#xff0c;用于在具有 k 维的空间中组织一定数量的点。它是一个二叉…

反序列化字符串逃逸 [安洵杯 2019]easy_serialize_php1

打开题目 $_SESSION是访客与整个网站交互过程中一直存在的公有变量 然后看extract()函数的功能&#xff1a; extract($_POST)就是将post的内容作为这个函数的参数。 extract() 函数从数组中将变量导入到当前的符号表(本题的作用是将_SESSION的两个函数变为post传参) function…

eureka 简介和基本使用

Eureka 是Netflix开发的服务发现框架&#xff0c;是Spring Cloud微服务架构中的一部分。它主要用于微服务架构中的服务注册与发现。Eureka由两部分组成&#xff1a;Eureka Server 和 Eureka Client。获取更详细的信息可以访问官网&#xff0c;如下图&#xff1a; Eureka Server…

【论文阅读】ICCV 2023 计算和数据高效后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目&#xff1a; Computation and Data Efficient Backdoor Attacks&#xff08;计算和数据高效后门攻击&#xff09; 论文来源&#xff1a; 2023-ICCV&#xff08;CCF-A&#xff09; 论文团…

Spring及工厂模式概述

文章目录 Spring 身世什么是 Spring什么是设计模式工厂设计模式什么是工厂设计模式简单的工厂设计模式通用的工厂设计 总结 在 Spring 框架出现之前&#xff0c;Java 开发者使用的主要是传统的 Java EE&#xff08;Java Enterprise Edition&#xff09;平台。Java EE 是一套用于…

【视频编码\VVC】环路滤波基础知识

本文为新一代通用视频编码H.266\VVC原理、标准与实现的简化笔记。 定义&#xff1a;在视频编码过程中进行滤波&#xff0c;滤波后的图像用于后续编码。 目的&#xff1a;1、提升编码图像的质量。2、为后续编码图像提供高质量参考&#xff0c;获得更好的预测效果。 VVC中主要…

计算机组成原理(11)----指令流水线

目录 一.指令流水的定义 二.流水线的表示方式 1.指令执行过程图 2.时空图 三.流水线的性能指标 1.吞吐率 2.加速比 3.效率 四.指令流水线影响因素分类 &#xff08;1&#xff09;结构相关&#xff08;资源冲突&#xff09; &#xff08;2&#xff09;数据相关&#…

阿里巴巴中国站获得淘口令真实url API(1688.item_password)

阿里巴巴&#xff08;1688.com&#xff09;是一个B2B电商平台&#xff0c;而淘口令&#xff08;或称为淘宝口令&#xff09;是一种在阿里巴巴集团旗下的淘宝和天猫平台中分享商品或活动链接的特殊形式。淘口令通常包含一串字符&#xff0c;用户可以复制这串字符并在淘宝或天猫的…

Vue3项目结构分析

node_modules: 是项目npm install下载的node依赖库。 public&#xff1a; favicon.ico: 网页图标logo图片。index.html: 入口html。是一个基础的html页面&#xff0c;其中进行网页最基础的设置&#xff0c;并且设置了id为app的div盒子。该页面即为Vue单页面应用的基础页面。后…

Kafka:kafka的技术架构? ①

一、Kafka的优势 Apache Kafka是一个开放源代码的分布式事件流平台&#xff0c;成千上万的公司使用它来实现高性 能数据管道&#xff0c;流分析&#xff0c;数据集成和关键任务等相关的应用程序。 二、技术架构 0&#xff09;partition分区可以设置备份数&#xff0c;也可以设…