目前虚拟化技术有软件模拟、全虚拟化(使用二进制翻译)、半虚拟化(操作系统辅助)、硬件辅助虚拟化和容器虚拟化这几种。
(1)软件模拟
软件模拟是通过软件完全模拟cpu、芯片组、磁盘、网卡等计算机硬件:

因为是软件模拟,所以理论上可以模拟任何硬件,但是非常低效,一般只用于研究测试的场景,典型的有QEMU。
(2)全虚拟化
x86平台指令集分为4个特权模式:Ring0 、Ring1、Ring2、Ring3、OS工作在Ring0级别,应用软件工作在Ring3级别,驱动程序工作在Ring1和Ring2。

如何将虚拟机越级的指令使用进行隔离,1998年VMware首次找到了解决办法,通过虚拟化引擎,捕获虚拟机的指令,并进行处理,即全虚拟化方案。
在全虚拟化的情况下,VMM工作在Ring 0 ,Guest OS工作在Ring 1 ,应用程序工作在Ring 3,可是这时候Guest OS是不知道自己工作在虚拟机里的,认为自己还是工作在Ring 0 ,所以它还是按照Ring 0级别产特权生指令,Guest OS产生的每一条指令都会被VMM截取,并翻译成宿主机平台的指令,然后交给实际的物理平台执行,由于每一条指令都需要这么翻译一下,所以这种虚拟化性能比较差。

(3)半虚拟化**
半虚拟化是对Guest OS做相应修改,以便和VMM协同运作。在硬件辅助虚拟化兴起之前,半虚拟化性能胜过全虚拟化。在半虚拟化情况下,Guest OS知道自己并不是直接运行在硬件资源上,而是运行在虚拟化环境里,工作在非Ring 0,那么它原先在物理机上执行的一些特权指令,就会修改成其他方式(超级调用),这种方式是可以和VMM约定好的,半虚拟化不需要VMM层进行二进制翻译,所以性能较好,但是实现比较麻烦(要修改OS内核代码),典型的半虚拟化技术有xen。

(4)硬件辅助虚拟化**
2005年,Intel推出了硬件辅助虚拟化方案,对CPU指令进行改造,即VT-x,VT-x提供了两种操作模式:VMX root operation和VMX non-root operation,VMM运行在 VMX root operation,虚拟机运行在VMX non-root operation。在绝大多数情况下,客户机在此模式下运行与原生系统在非虚拟化环境中运行性能一样,不需要像全虚拟化那样每条指令都要先翻译再执行;在少数必要的时候,某些客户机指令的运行才需要被VMM截获并做相应处理。这种方案因为是基于硬件的,所以效率非常高。

现在不仅CPU指令有硬件虚拟化方案,I/O通信也有硬件解决方案,称为VT-d;网络通信的称为VT-c。
(5)容器虚拟化
容器虚拟化是基于CGroups、Namespace等技术将进程进行隔离,每个进程就像一台独立的虚拟机,拥有自己被隔离出来的资源,也有自己的根目录、独立的进程编号、被隔离的内存空间。基于容器的虚拟化可以实现在单一内核上运行多个实例。目前热门的容器虚拟化技术Docker,Docker可以将一个开发环境进行打包,很方便在另一个系统上运行起来。

软件模拟虚拟化、全虚拟化、半虚拟化、硬件辅助虚拟化和容器相关推荐

  1. CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...

  2. 客户机操作系统已禁用cpu_CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...

  3. 虚拟化技术的实现(完全虚拟化、硬件辅助虚拟化)

    文章转载至网易云架构师刘超的个人微信号 内核,是指的操作系统内核. 所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储. 计算指CPU和内存,网络即网 ...

  4. 开启硬件辅助虚拟化——Intel虚拟化之旅

    English Title: Turn on Hardware-Assisted Virtualization within Virtual PC 2007(sp1) mail to: withtu@ ...

  5. 硬件辅助虚拟化 之EPT(内存虚拟化)介绍

    这篇内容,通过从操作系统的虚拟地址介绍到虚拟机层面的内存虚拟化技术,并介绍这两种技术之间的关联. (以下实例都以intel 64位处理器和win10 x64操作系统位例. ) 一.虚拟地址 在保护模式 ...

  6. 由于虚拟机监控程序未运行,无法启动 Windows Phone Emulator。可能原因是为打开硬件辅助虚拟化。的解决方法

    运行windows phone 8 的程序时,提示以下错误: 由于虚拟机监控程序未运行,无法启动 Windows Phone Emulator.可能原因是为打开硬件辅助虚拟化. 导致打不开虚拟机. 看 ...

  7. KVM硬件辅助虚拟化之 EPT(Extended Page Table)

    传统OS环境中,CPU对内存的訪问都必须通过MMU将虚拟地址VA转换为物理地址PA从而得到真正的Physical Memory Access,即:VA->MMU->PA,见下图. 虚拟执行 ...

  8. wp模拟器启动 提示需要 开启硬件辅助虚拟化

    重启计算机,(联想台式按F1)进入BIOS,找到CPU设置项,将Intel Virtualization Technology设置成Enabled,然后重启计算机

  9. 全虚拟化半虚拟化硬件辅助搜索虚拟化操作系统级虚拟化

    全虚拟化(FullVirtulization) 简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的 ...

最新文章

  1. [转]数据结构:图的存储结构之邻接矩阵
  2. 获取生产订单的系统状态
  3. monit 内存 监控_如何借助Monit搭建服务器监控系统?(1)
  4. 知识表示与融入技术前沿进展及应用
  5. 集群环境下的Session共享
  6. Xcode6.1 模拟器路径
  7. Arthas-MathGame
  8. Android wifi驱动的移植 realtek 8188
  9. 16进制、10进制(n进制)转换为二进制
  10. mysql中dml语言_八、mysql DML语言
  11. MATLAB期末复习
  12. 程序包解析错误解决办法
  13. 计算机思维对本专业的影响,计算机专业本科生创新思维培养及其哲学思考
  14. String的空校验
  15. 将图片资源放入 html 文件中
  16. html 表格 锁定首行,教你实现首行及首列固定 Table
  17. uefi+guid分区与legacy+mbr分区_硬盘分区表格式GUID和MBR知识普及
  18. 时间片轮询+状态机实现裸机多任务
  19. swift纯代码UITabBarController的使用
  20. Windows 无法连接打印机,请检查打印机名并重试。如果这是网络打印机,请确保打印机已打开,并且打印机地址正确。报错代码:0x00000709

热门文章

  1. date和hwclock
  2. 树莓派交叉编译opencv3.4.1/pycharm安装opencv/实现人脸识别Demo记录
  3. turtle叠边形绘制使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。提示:一共9条边,共2圈,每次左转角度为80度(720/9)输出示例叠边形效果如下:
  4. 在win10和centos7上编译synergy
  5. 手牵手系列之记录JavaScript高级程序设计(第3版)
  6. java解析五元组,解析报文 解析出packet的五元组(源地址、目标地址、源端口、目标端口、协议号)信息和当前包的流量大...
  7. 五元组评价算法实现简易五子棋【人工智能】
  8. 这篇文章可能会解决你PyQt5安装失败的问题
  9. webrtc可以做直播吗
  10. 【博学谷学习记录】超强总结,用心分享 |JSON