关于全虚拟化和半虚拟化的解释


下面我们讨论一下全虚拟化和半虚拟化。所谓全虚拟化一个操作系统是运行在软件环境下的。我们看到完全虚拟化有一些特点,比如说兼容性好,我拿过来就可以用。这里面引出一个半虚拟化的技术,X86平台实际上不是非常适合做虚拟化,因为他有一些特定的使用一定要运行在特定的级别上面。


  有一些指令一定要用在特定的级别上面,如果你在X86上面再靠一个操作系统的话,这样就会造成一定的冲突,真实的效果是X86平台CPU会忽略一些东西,他们在当时实现完全虚拟化的时候是在虚拟平台上面做一个监听的机制,如果发现从用户派来特权的请求,他就创建另外一个通道,把它翻译成另外一种方式解决。

  实际上它实现了在X86不支持虚拟化的这种情况下,它实现了完全虚拟化,但是这种实现方式的开销就是,这样软件的性能会有大幅的降低,根据现在的数据是 17%到20%的样子,基于这个情形,有人就开始想出了半虚拟化的解决方案,他通过修改操作系统的内核,把一些特权级别的请求翻译成为刚才我们看到那个虚拟化平台的那个图了吧,把一些特权的请求发送给AMM,然后由它转化为真正要处理器处理的指令,那么半虚拟化的优点主要就是由于没有它没有VMR执行的监听机制,性能会有很大的提高。

  由于它把一些请求直接发给,然后由它去和底层的硬件去交流,这样会有很好的性能表现,因为刚才我们讲到X86平台它不适合虚拟化,因为有一些特权指令的操作,另外还有一个,由于你要实现完全虚拟化,那么有一些设备,例如如IO设备还有网卡设备,你也是不能够改的,OX也是不知道底下网卡运行的是真的是假的,那么完全虚拟化怎么做,它用软件模拟出一些快设备,或者是网络的设备,实际上这种模拟开销是非常大的,那么半虚拟化没有模拟的过程,这样也会大幅度增加程序的运行效率,我们大家知道就好了。

  最后总结一下,半虚拟化需要修改操作系统,需要操作系统的支持,那么完全虚拟化不需要修改操作系统,无法感知它到底运行在硬件还是软件上,相带来的问题就是半虚拟化需要改一些东西,有一些系统无法做到,那么全虚拟化相对带来的问题就是由于模拟化所导致的性能的开销,那么实际上在06年的时候,基于虚拟化需求的现状,我们X86的两个厂家,一个叫英特尔一个叫AMD他们在硬件方面实现了硬件虚拟化的技术,解决了之前我们说的第一个问题,那么它通过在硬件上面实现了对这种特权级别的指令级的捕捉,然后从硬件角度转换到另外处理的方式上面去,我们简单理解解决这样的,因为这个话题说起来挺大,我也不知道该怎么说好一些。

    半虚拟化就是操作系统级虚拟化。 这种虚拟化技术的效率最高。


你可能感兴趣的:(信息安全,桌面虚拟化,数据防泄漏,操作系统级虚拟化)