Electronic Joint Business

Solution for E-Business

从虚拟化到云计算(一)概述

文章评价: 在计算机科学领域中,虚拟化有广义和狭义两种概念。广义上来说,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。 狭义的虚拟化技术,则通常指的是硬件虚拟化技术,即计算元件在虚拟的硬件基础上而不是真实的硬件基础上运行。将这个概念应用到计算机系统中,可以在一台计算机上同时运行多个操作系统(例如,一台计算机可以同时运行 Linux 和 Windows),不同用户看到不同的单个系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上。这通常称为全虚拟化(full virtualization)。 硬件虚拟化也可以有更加复杂的格式,例如单个计算机看上去具有多个架构(对于一个用户来说,它是一个标准的 x86 平台;对于另外一个用户来说,它是 IBM Power PC 平台)。这种虚拟化形式通常被称为硬件仿真。 反之,更加简单的一种硬件虚拟化是操作系统虚拟化 (OS Level Virtualization),其中一台计算机可以运行相同类型的多个操作系统。在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。比较著名的有 Solaris Container,FreeBSD Jail 和 OpenVZ 等。 一般来说,从 Guest OS 的角度来划分,虚拟化可以分为三种类型,而最常使用的两种方法是全虚拟化和半虚拟化。使用全虚拟化,在虚拟化的操作系统和硬件之间存在一个层,用于决定访问。这个层称为 Hypervisor 或虚拟机监视器(VMM)。半虚拟化与之类似,但是系统管理程序会以一种更具协作性的方式进行操作。这是因为每个客户操作系统都了解自己正在虚拟化模式中 运行,因此每个系统都与系统管理程序协作,来实现底层硬件的虚拟化。详述如下: 部分虚拟化(Partial Virtualization) VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统 CTSS 和 IBM M44/44X 实验性的分页系统中。部分虚拟化技术的缺点很明显,无法保证兼容性和可移植性。如果需要的某部分硬件没有被虚拟,那么应用程序就无法运行。 半虚拟化(Para-virtualization) 这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在半虚拟化虚拟机中,要修改操作系统内核,替换掉不能虚拟化的指令,通过超级调用(hypercall)直接和底层的虚拟化层 hypervisor 来通讯,hypervisor 同时也提供了超级调用接口来满足关键内核操作,比如内存管理、中断和时间保持,由于减少了大量的陷入 –> 上下文切换–>模拟–>上下文切换的过程,半虚拟化可以大幅度提高性能,但是半虚拟化需要在 Guest OS […]

, , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.