虚拟化技术可分为指令集架构虚拟化、硬件抽象层虚拟化、操作系统层虚拟化、编程语言层虚拟化和数据库层虚拟化。
1.指令集架构虚拟化
指令集架构虚拟化是通过一种模拟与实际运行的应用程序(或操作系统)不同的指令集的纯软件方法来实现的。用这种方法构造的虚拟机通常称为仿真器(仿真器)。仿真器将虚拟平台上的指令转换为一组指令,并在实际硬件上执行。它具有简单、稳定、跨平台等特点。目前,典型的模拟器系统有BOCHS、VLIW等。对于Bochs,Bochs是用C+编写的x86平台的仿真模拟器。用户可以在编译和运行Bochs的任何平台上模拟x86硬件。并且大部分操作系统都可以安装在Bochs仿真平台上。
2.硬件抽象层虚拟化
硬件抽象层虚拟化是指将虚拟资源映射到物理资源,并在虚拟机操作中使用真正的硬件。即使用软件虚拟一个标准的计算机硬件配置,如CPU、内存、硬盘、声卡、显卡、光驱等,也成为一台虚拟裸机。其目的是呈现与客户端操作系统的物理硬件相同或类似的物理抽象层。大多数客户端指令直接在主机上运行,从而提高了执行效率。然而,在分配给虚拟机的硬件资源的同时,虚拟软件本身也需要占用实际的硬件资源,性能损失很大。然而,硬件抽象层虚拟化的好处不容忽视。硬件抽象层中的虚拟机具有以下优点:
(1)高度隔离;
(2)支持与上位机不同的操作系统和应用程序;
(3)易维护、低风险。
比较著名的硬件抽象层虚拟化解决方案是VMware、VirtualPC、Xen、KVM等等。对于Xen,剑桥大学开发的基于x86的开源虚拟机监视器可以在一台物理机器上执行多台虚拟机。特别适用于服务器集成,具有性能高、资源少、节省成本等优点。
3.操作系统层虚拟化
操作系统层虚拟化是指通过划分主机操作系统的特定部分来隔离操作执行环境。操作系统层的虚拟化是操作系统内核直接提供的虚拟化。虚拟操作系统在虚拟操作系统之间共享底层主机操作系统内核和底层硬件资源。操作系统虚拟化的关键是将操作系统与上层应用程序分开,并虚拟化对操作系统资源的访问。让上层应用程序感觉自己拥有操作系统。操作系统虚拟化的优点是将虚拟操作系统与物理操作系统隔离开来,有效地避免了物理操作系统的重复安装。最著名的操作系统虚拟化解决方案是虚拟服务器、zone、Virtuozzo和虚拟专用服务器(Virtual Private Server,VPS)。VP是使用虚拟服务器软件在物理机器上创建多个独立的小型服务器。这些小型服务器本身有自己的操作系统,运行和管理与独立主机完全相同。它可以保证用户只享受资源,并能节省成本。(www.xing528.com)
操作系统虚拟化似乎会产生多个操作系统,就像操作系统安装在由硬件虚拟化的虚拟机上一样,但操作系统虚拟化和硬件虚拟化之间仍然存在许多差异。
(1)操作系统虚拟化是以原有系统为模板,虚拟是原系统的一个副本,而硬件虚拟化是一个虚拟硬件环境,然后是系统的实际安装。
(2)操作系统虚拟化的虚拟系统只能是物理操作系统的拷贝,而硬件虚拟化虚拟系统则有不同的系统,如Linux、Windows等。
(3)虚拟系统之间的关系是不同的。虚拟操作系统虚拟化对多个系统具有很强的相关性,例如可以同时配置多个虚拟系统。原来的系统已经改变了,所有的虚拟输出系统都会改变。而硬件虚拟化虚拟系统是相互独立的,与原有系统没有任何联系,对原有系统的破坏不会影响到虚拟系统。
(4)不同的性能损失。操作系统虚拟化虚拟系统是虚拟的,性能损失低,而硬件虚拟化是硬件虚拟层上对操作系统实际安装的高性能损失。
4.编程语言层虚拟化
不安装操作系统和其他软件的计算机是一台裸机器。操作系统和其他软件是相对于裸金属的应用程序。程序设计语言层上的虚拟机是在应用层上创建的,并支持新定义的指令集这种类型的虚拟机为虚拟体系结构运行进程级作业,通常作为物理计算机系统中的进程运行,使用户感到应用程序正在虚拟机上运行。这个级别的主要虚拟机是JVM和CLR。以JVM为例,通过在物理计算机上模拟计算机的各种功能,实现了JVM。这是一台虚拟计算机。JVM只生成运行在Java虚拟机上的目标代码(字节码),从而使Java程序能够无缝地跨多个平台进行迁移。
5.数据库层虚拟化
在操作系统中,应用程序是使用应用程序级库函数提供的一组API函数编写的。这些函数隐藏了操作系统的一些底层细节,使程序员更容易编程。库功能层的虚拟化就是在操作系统中虚拟化应用程序级库功能的接口,并创建不同的虚拟化环境。允许应用程序在不需要修改的情况下跨不同的操作系统迁移。当然,不同的操作系统库功能有不同的接口。例如,属于这种虚拟化的WIRE,利用API转换技术使Linux和Windows相应的函数调用DLL,从而使Windows程序可以在Linux系统中运行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。