我认为完全虚拟化与类虚拟化的分水岭应该是是否对操作系统进行修改。假如要对操作系统进行修改那么就是半虚拟化。否则,即为完全虚拟化。
1.完全虚拟化为什么称为"完全":
“完全”是因为VMM层需要完全了解客户机的一切请求(指令)。并且VMM需要能够处理客户机提出的一切指令。
2.完全虚拟化的2种模式:
软件辅助虚拟化:
由于x86架构开始未对虚拟化进行硬件支持,所以,人们想到了软件辅助虚拟化。要想进行软件辅助虚拟化我们先得知道问题的根在哪里?根在x86架构下会有一部分特权指令不能被VMM发现并捕获,那么怎样能让它被捕获呢?我们想出了两种方法:第一种方法:我们每一条指令都会被扫描下,看看是否是之前那些被漏掉的指令,如果是。那么我们显示的触发一个异常,然后异常被VMM捕获进行处理(二进制代码翻译方法)。
硬件辅助虚拟化:
即inter的VT-x技术(AMD有相应的技术)这个技术是在我们以往的RING 0~RING 3的4层环之后又假如了一层环RING 4而这个环就留给虚拟机来使用了。在此层中运行时,任何在曾经捕获不到的特权指令,在这层中都会被捕获。然后交由VMM处理。
下面就是类虚拟化:
上面说过了。类虚拟化实际上是在修改操作系统内核,使其能够兼容我们的虚拟化。把一些特权指令修改成VMM能识别的指令。
阅读(816) | 评论(0) | 转发(0) |