虚拟化技术

上传人:大米 文档编号:562915177 上传时间:2023-02-03 格式:DOCX 页数:9 大小:27.04KB
返回 下载 相关 举报
虚拟化技术_第1页
第1页 / 共9页
虚拟化技术_第2页
第2页 / 共9页
虚拟化技术_第3页
第3页 / 共9页
虚拟化技术_第4页
第4页 / 共9页
虚拟化技术_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《虚拟化技术》由会员分享,可在线阅读,更多相关《虚拟化技术(9页珍藏版)》请在金锄头文库上搜索。

1、虚拟化技术简介 什么是虚拟化虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统, 在 70 年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监 控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运 行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年多核系统、集 群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不 仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深 入到人们日常的工作与生活中。虚拟化是一个广义的术语,对于不同

2、的人来说可能意味着不同的东西,这要取决 他们所处的环境。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不 仅仅局限于虚拟机的概念。例如对物理内存的抽象,产生了虚拟内存技术,使得 应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上, 应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、 闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。虚拟化技术的分类虚拟化技术主要分为以下几个大类 1:平台虚拟化(Platform Virtualizati on),针对计算机和操作系统的虚拟化。 资源虚拟化(Resource Virtualizat

3、io n),针对特定的系统资源的虚拟化,比如 内存、存储、网络资源等。应用程序虚拟化(Applicati on Virtualizatio n),包括仿真、模拟、解释技术等。 我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Con trol Program,也被称为 Virtual Machine Monitor 或 Hypervisor),隐藏特定计算 平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟 机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚 拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控

4、器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)。运 行虚拟机的真实系统我们称之为主机系统。平台虚拟化技术又可以细分为如下几个子类:全虚拟化(Full Virtualization)全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外 设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以 在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定 的硬件接口进行的。全虚拟化 VMM 以完整模拟硬件的方式提供全部接口(同 时还必须模拟特权指令的执行过程)。举例而言, x86 体系结构中,对于操作 系统切换进程页表的操作,真

5、实硬件通过提供一个特权 CR3 寄存器来实现该接 口,操作系统只需执行 mov pgtable,%cr3 汇编指令即可。全虚拟化 VMM 必须完整地模拟该接口执行的全过程。如果硬件不提供虚拟化的特殊支持,那么 这个模拟过程将会十分复杂:一般而言,VMM必须运行在最高优先级来完全控 制主机系统,而 Guest OS 需要降级运行,从而不能执行特权操作。当 Guest OS执行前面的特权汇编指令时,主机系统产生异常(General ProtectionException),执行控制权重新从Guest OS转到VMM手中。VMM事先分配 一个变量作为影子CR3寄存器给Guest OS,将pgtabl

6、e代表的客户机物理 地址(Guest Physical Address)填入影子CR3寄存器,然后VMM还需要 pgtable翻译成主机物理地址(Host Physical Address)并填入物理CR3寄存 器,最后返回到Guest OS中。随后VMM还将处理复杂的Guest OS缺页异 常(Page Fault)。比较著名的全虚拟化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。超虚拟化(Paravirtualizatio n)这是一种修改 Gu

7、est OS 部分访问特权状态的代码以便直接与 VMM 交互的 技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统, 这可以通过 Hypercal(l VMM 提供给 Guest OS 的直接调用,与系统调用类似) 的方式来提供。例如, Guest OS 把切换页表的代码修改为调用 Hypercall 来直 接完成修改影子 CR3 寄存器和翻译地址的工作。由于不需要产生额外的异常和 模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的 VMM 有 Denali、 Xen。硬件辅助虚拟化(Hardware-Assisted Virtualizatio n) 硬件辅助虚

8、拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟 化。例如有了 Intel-VT 技术的支持, Guest OS 和 VMM 的执行环境自动地完 全隔离开来, Guest OS 有自己的“全套寄存器”,可以直接运行在最高级别。因 此在上面的例子中,Guest OS能够执行修改页表的汇编指令。Intel-VT和 AMD-V 是目前 x86 体系结构上可用的两种硬件辅助虚拟化技术。部分虚拟化(Partial Virtualizatio n)VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运 行的,其它程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道 路

9、上的重要里程碑,最早出现在第一代的分时系统 CTSS 和 IBM M44/44X 实 验性的分页系统中。操作系统级虚拟化(Operati ng System Level Virtualizatio n) 在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行, 因此内核或应用程序的缺陷可能影响到其它进程。操作系统级虚拟化是一种在服 务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统 实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。 比较著名的有 Solaris Container 2, FreeBSD Jail 和 OpenVZ 等。这

10、种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。例如VMware Workstation是一个著名的全虚拟化的VMM,但是它使用了一种被称 为动态二进制翻译的技术把对特权状态的访问转换成对影子状态的操作,从而避 免了低效的 Trap-And-Emulate 的处理方式,这与超虚拟化相似,只不过超虚 拟化是静态地修改程序代码。对于超虚拟化而言,如果能利用硬件特性,那么虚 拟机的管理将会大大简化,同时还能保持较高的性能。本文讨论的虚拟化技术只针对 x86 平台(含 AMD 64),并假定虚拟机中运行 的 Guest OS 也是为 x86 平台设计的。回页首纯软件虚拟化技术的原理及面临的

11、挑战虚拟机监控器应当具备的条件1974 年,Popek 和 Goldberg 在Formal Requirements for Virtualizable Third Generation Architectures3 论文中提出了一组称为虚拟化准则的充分条件, 满足这些条件的控制程序可以被称为虚拟机监控器(Virtual Machi ne Mo nitor, 简称 VMM):资源控制。控制程序必须能够管理所有的系统资源。 等价性。在控制程序管理下运行的程序(包括操作系统),除时序和资源可用性 之外的行为应该与没有控制程序时的完全一致,且预先编写的特权指令可以自由 地执行。效率性。绝大多数的客

12、户机指令应该由主机硬件直接执行而无需控制程序的参 与。尽管基于简化的假设,但上述条件仍为评判一个计算机体系结构是否能够有效支 持虚拟化提供了一个便利方法,也为设计可虚拟化计算机架构给出了指导原则。原理简介我们知道,传统的 x86 体系结构缺乏必要的硬件支持,任何虚拟机监控器都无 法直接满足上述条件,所以不是一个可虚拟化架构,但是我们可以使用纯软件实 现的方式构造虚拟机监控器。虚拟机是对真实计算环境的抽象和模拟, VMM 需要为每个虚拟机分配一套数据 结构来管理它们状态,包括虚拟处理器的全套寄存器,物理内存的使用情况,虚 拟设备的状态等等。VMM调度虚拟机时,将其部分状态恢复到主机系统中。并 非

13、所有的状态都需要恢复,例如主机 CR3 寄存器中存放的是 VMM 设置的页 表物理地址,而不是 Guest OS 设置的值。主机处理器直接运行 Guest OS 的 机器指令,由于Guest OS运行在低特权级别,当访问主机系统的特权状态(如 写 GDT 寄存器)时,权限不足导致主机处理器产生异常,将运行权自动交还 给VMM。此外,外部中断的到来也会导致VMM的运行。VMM可能需要先将 该虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代 表 Guest OS 执行相应的特权操作。最简单的情况,如 Guest OS 对 CR3 寄 存器的修改,只需要更新虚拟机的状态数据结构即

14、可。一般而言,大部分情况下, VMM 需要经过复杂的流程才能完成原本简单的操作。最后 VMM 将运行权还 给 Guest OS ,Guest OS 从上次被中断的地方继续执行,或处理 VMM “塞 ”入 的虚拟中断和异常。这种经典的虚拟机运行方式被称为Trap-And-Emulate,虚 拟机对于 Guest OS 完全透明, Guest OS 不需要任何修改,但是 VMM 的设 计会比较复杂,系统整体性能受到明显的损害。面临的挑战在设计纯软件 VMM 的时候,需要解决如下挑战 4:确保 VMM 控制所有的系统资源。x86 处理器有 4 个特权级别, Ring 0 Ring 3,只有运行在 R

15、ing 0 2 级时, 处理器才可以访问特权资源或执行特权指令;运行在 Ring 0 级时,处理器可以 访问所有的特权状态。 x86 平台上的操作系统一般只使用 Ring 0 和 Ring 3 这 两个级别,操作系统运行在 Ring 0 级,用户进程运行在 Ring 3 级。为了满足 上面的第一个充分条件-资源控制, VMM 自己必须运行在 Ring 0 级,同时为了 避免 Guest OS 控制系统资源, Guest OS 不得不降低自身的运行级别,运行 在 Ring 1 或 Ring 3 级( Ring 2 不使用)。特权级压缩(Ring Compressio n)。VMM 使用分页或段限

16、制的方式保护物理内存的访问,但是 64 位模式下段限制 不起作用,而分页又不区分Ring 0, 1,2。为了统一和简化VMM的设计,Guest OS 只能和 Guest 进程一样运行在 Ring 3 级。 VMM 必须监视 Guest OS 对 GDT、IDT 等特权资源的设置,防止 Guest OS 运行在 Ring 0级,同时又要 保护降级后的 Guest OS 不受 Guest 进程的主动攻击或无意破坏。特权级别名(Ri ng Alias)。特权级别名是指 Guest OS 在虚拟机中运行的级别并不是它所期望的。 VMM 必须保证 Guest OS 不能获知正在虚拟机中运行这一事实,否则可能打破等价 性条件。例如, x86 处理器的特权级别存放在 CS 代码段寄存器内, Guest OS 可以使用非特权 push 指令将 CS 寄存器压栈,然后 pop 出来检查该值。又 如,Guest OS在低特权级

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号