在讲之前,先简单的看一下系统虚拟化到底是在干什么?有什么好处?虚拟化:资源的逻辑表示,将物理资源抽象出来。
这句话就挺抽象的。简单的说下就是资源的高效利用。不管现在你眼前的是什么操作系统,打开任务管理器,看一下系统资源的使用,你会发现自己那么好的cup怎么才用到10%~20%。我们花了4000~6000买的笔记本可不是就让它仅仅能使用这么点的。所以虚拟化经历了40年的起起浮浮因为现在的硬件的高效,又回到了人们的视野。(这是我的观点,如果我哪里说的不对,希望留言,我加以改正)当然我所说的虚拟化好处仅仅是虚拟化好处的冰山一角。虚拟化还有封装性,多实性,隔离性,硬件无关性,特权功能等等。
先简单的介绍下VMM:
VMM:虚拟机监视器,虚拟机中很重要的组件
VMM在干的什么?捕获敏感指令,然后交由VMM处理。
什么叫敏感指令?
以x86架构为例,x86架构最开始一共有4个特级层次。从0~3,越小特权越大。操作系统运行在Ring0上,Ring1和Ring2支持驱动设备,应用程序运行在Ring3上。其中一些关键操作指令只能由Ring0完成。称为特权指令。在VMM模型中,客户机操作系统运行在非特权模式下,即非Ring0模式下。所以一部分原来需要由Ring0处理的指令需要由VMM捕获然后处理。这些指令称为敏感指令。即所有敏感指令都是特权指令。
为什么x86架构最开始不能支持系统虚拟化?
经过上面的铺垫,我们来说下关键问题。
x86架构有个缺陷。x86架构有一部分敏感指令并不是特权指令,变成了非特权指令。这就出现问题了。非特权指令在Ring1~Ring3上是可以执行。VMM不会处理这些指令。这就导致了问题。系统本想让VMM执行的指令却被非特权级别执行了。一个不受虚拟软件控制的指令执行在虚拟层。就好象一个学医学的和你坐在一起敲代码,你是什么感受呢?这就是问题所在了。
但是后来inter和AMD都加强了自己的很多技术,比如inter的VT(Virtualization Technology)和AMD的SVM(Secure Virtual Machine)技术,弥补了x86架构的不足。
阅读(5131) | 评论(1) | 转发(0) |