Intel VT学习笔记(一) 基础知识

本文阅读 6 分钟
首页 驱动开发 正文

前言

本系列主要是记录学习VT虚拟化技术过程中的一些笔记,并通过Intel开发手册和网络资料学习虚拟机体系结构的基础知识,以及支持多软件环境处理器硬件虚拟化的虚拟机扩展(VMX)。
有关VMX指令的信息,请参阅《英特尔64和IA-32体系结构软件开发人员手册》第2B卷。
《英特尔64和IA-32体系结构软件开发人员手册》第3B卷的章节介绍了VMX的其他方面和系统编程注意事项。

简介

VT,就是虚拟化技术(Virtualization Technology)的缩写。Intel VT就是指Intel的虚拟化技术。这种技术简单来说就是让可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作系统。只有部分Intel的CPU才支持这种技术。——摘自《百度百科》

开启VT后,CPU进入VMX模式,处理器对虚拟化的支持是通过一种称为VMX操作的处理器操作形式提供的。

分类

Intel VT技术,主要由三部分技术组成:VT-x、VT-d和VT-c。
VT-x是处理器技术,提供内存以及虚拟机的硬件隔离,所涉及的技术有页表管理以及地址空间的保护。
VT-d是处理有关芯片组的技术,它提供一些针对虚拟机的特殊应用,如支持某些特定的虚拟机应用跨过处理器I/O管理程序,直接调用I/O资源,从而提高效率,通过直接连接I/O带来近乎完美的I/O性能。
VT-c是针对网络提供的管理,它可以在一个物理网卡上,建立针对虚拟机的设备队列。

作用

在VT(Virtualization Technology)诞生之初,主要是为了便于虚拟机的管理,随着掌握VT(Virtualization Technology)技术的人不断增加,VT(Virtualization Technology)的用途也越来越广泛,例如目前一些游戏厂商就是使用VT技术来对游戏内存进行保护。

VT能做到的事情例如:

  • 重定向中断
  • MSR寄存器保护
  • 监控控制寄存器/调试寄存器
  • ……

虚拟机架构

虚拟机扩展定义了对IA-32处理器上的虚拟机的处理器级支持,支持Virtual-machine monitors (VMM) 和Guest software这两类主要的软件。

Virtual-machine monitors (VMM)

VMM充当主机,完全控制处理器和其他平台硬件。
VMM为Guest software提供了虚拟处理器的抽象,并允许它直接在逻辑处理器上执行。
VMM能够保留对处理器资源、物理内存、中断管理和I/O的选择性控制。
它是负责与虚拟机进行交互的管理器,当虚拟机发出一条指令时,会被VMM捕捉到,然后VMM会模拟执行这条指令,并将结果返回给虚拟机。
因为VMM需要有执行0环指令的权限,因此VMM需要运行在0环。
如果用户要在虚拟机中获得使用VT的权限,需要先在设置中开启相关选项。

Guest software

每个虚拟机(VM)都是一个Guest software环境,由操作系统(OS)和应用软件组成。
每个虚拟机独立于其他虚拟机运行,并在同一接口上使用物理平台提供的处理器、内存、存储器、图形和I/O。
软件的行为就像它在没有VMM的平台上运行一样。
在虚拟机中执行的软件必须以较低的权限运行,以便VMM可以保留对平台资源的控制。

VMX

VMX操作有两种:
VMX root
VMX non-root
通常,VMM将在VMX root中运行,而Guest software将在VMX non-root中运行。VMX root和VMX non-root之间的转换称为VMX转换。VMX转换有两种。过渡到VMX non-root称为VM entries。从VMX non-root过渡到VMX root称为VM exits。

VMX root

进入VMX root模式后,CPU唯一的区别是能够执行VMX指令,并能够有限地向部分控制寄存器中加载值。

VMX non-root

VMX non-root中的处理器行为受到限制和修改,以促进虚拟化实现。
某些指令(包括新的VMCALL指令)和事件会导致虚拟机退出,而不是通常的操作。这是由于这些虚拟机出口替换了普通行为,VMX non-root中的软件功能受到限制。正是这个限制允许VMM保留对处理器资源的控制。
由于不存在标志位表示当前系统是否处于VMX non-root状态,因此没有软件能够以此判断自己是否在虚拟机中。

VT实现

在VMware中为用户开启VT支持的方法:
虚拟机」-「设置」-「处理器和内存」-「高级选项」- 勾选「在此虚拟机中启用Hypervisor」
注意:如果无法勾选,需要先在BIOS中开启VT支持。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
Visual Studio中 _Use_decl_annotations_ 宏的作用
« 上一篇 09-08
Intel VT学习笔记(二) 支持检测
下一篇 » 09-08