zoukankan      html  css  js  c++  java
  • 全虚拟化和半虚拟化(转)

    CPU通过Ring级别进行访问控制的。Ring0是最高级别,Ring1、Ring2、Ring依次降低。

    以Linux X86为例,操作系统(内核)的代码运行在Ring0上,可以使用特权指令,控制中断、修改页表、访问控制等。

    应用程序的代码运行在最低级别Ring3上,不能做受控操作。如果需要访问磁盘、写文件,需要通过执行系统调用(函数),执行系统调用时,CPU的运行级别从Ring3到Ring0依次切换,并跳转到系统调用对应的内核代码位置执行,由内核完成设备访问,之后再从Ring0返回Ring3,实现用户态和内核态的切换。

    基于二进制的全虚拟化:

    因为宿主操作系统工作在Ring0,客户操作系统不能运行在Ring0,当客户操作系统执行特权指令时,就会发生错误。

    虚拟机管理程序(VMM)就是负责客户操作系统和内核交互的驱动程序,运行在Ring0上,以驱动程序的形式体现(驱动程序工作在Ring0,否则不能驱动设备)。

    当客户操作系统执行特权指令时,会触发异常(CPU机制,没权限的指令,触发异常),VMM捕获这个异常,在异常处做翻译、模拟,返回处理结构到客户操作系统内。客户操作系统认为自己的特权指令工作正常,继续运行。

    通过复杂的异常处理过程,性能损耗比较大。

    半虚拟化(准虚拟化):

    通过修改客户操作系统代码,将原来在物理机上执行的一些特权指令,修改成可以和VMM直接交互的方式,实现操作系统的定制化。

    半虚拟化技术XEN,就是通过为客户操作系统定制一个专门的内核版本,和X86、MIPS、ARM这些内核版本等价。

    这样,就不会有捕获异常、翻译和模拟的过程,性能损耗比较少。

    这也是XEN这种半虚拟化架构的优势,也是为什么XEN只支持Linux的虚拟化,不能虚拟化Windows的原因(微软不开源)。

    基于硬件辅助的全虚拟化:

    随着CPU厂商开始支持虚拟化,以X86 CPU为例,推出了支持Intel-VT的CPU,有VMX root operation和VMX non-root operation两种模式,两种模式都支持CPU运行的四个级别。

    这样,VMM可以运行在root operation模式下,客户操作系统运行在non-root operation模式下。

    通过硬件层做出区分,这样,在全虚拟化技术下,有些依靠“捕获异常-翻译-模拟”的实现就不需要了。

    而且CPU厂商支持虚拟化的力度在不断加大,靠硬件辅助的虚拟化技术性能逐渐逼近半虚拟化,再加上全虚拟化不需要修改客户操作系统的优势,全虚拟化技术应该是未来的发展趋势。

    全虚拟化技术:KVM、VMWare等。

    半虚拟化技术:XEN等。

    XEN是最典型的半虚拟化技术,不过随着全虚拟化的不断壮大,现在XEN也支持硬件辅助全虚拟化。

    From:http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html

    From:http://www.cnblogs.com/hsqdboke/p/4103415.html

  • 相关阅读:
    IBM X3650 M4服务器安装centos找不到硬盘的解决方法
    页面头部title、description、keywords标签的优化
    SEO优化之Title 和 Meta 标签
    WPA字典锦集
    PIN码计算锦集
    神经网络入门 第6章 识别手写字体
    神经网络入门 第5章 实现多层神经网络BP算法
    神经网络入门 第4章 神经网络可以模拟任意函数
    神经网络入门 第3章 S函数
    神经网络入门 第2章 编写第一个神经元
  • 原文地址:https://www.cnblogs.com/xiaoerlang/p/7459504.html
Copyright © 2011-2022 走看看