您的位置:首页 > 运维架构 > 网站架构

虚拟化实现架构(处理器虚拟化)

2015-12-17 14:54 344 查看
首先需要理解一个概念——可虚拟化架构与不可虚拟化架构

特权指令:系统中用来操作和管理关键系统资源的指令,这些指令只有在最高特权级上可以执行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件来处理。

敏感指令:在虚拟化世界,操作特权资源的指令,包括修改虚拟机运行模式或者下面物理机状态;读写敏感的寄存器或是内存,例如时钟或者中断寄存器;访问存储保护系统、内存系统或是地址重定位系统以及所有的I/O指令。

所有的特权指令都是敏感指令,然而并不是所有的敏感指令都是特权指令。判断一个结构是否可虚拟化,就在于该结构对敏感指令的支持上,如果在某些结构上所有敏感指令都是特权指令,则它是可虚拟化的结构否则,如果它无法支持在所有敏感指令上触发异常,则是不可虚拟化结构,也就是所谓的虚拟化漏洞

重要概念:虚拟处理器、虚拟寄存器、上下文
当虚拟机操作系统访问关键资源时,该请求不会直接访问物理寄存器,VMM会模拟物理处理器的行为,将其访问定位到与物理寄存器相对应的虚拟寄存器上,这样的虚拟寄存器往往是在内存中。
在操作系统进行调度时,需要保存当前进程的寄存器状态到内存中,并将下一个进程寄存器状态值恢复到相应寄存器中,这些寄存器的状态集合就是进程的上下文,虚拟机中对敏感指令的处理都会试图访问和修改物理机上所有寄存器,这种访问会被VMM重定位到虚拟机上,这就需要保存虚拟寄存器上下文。
无论是定义虚拟寄存器还是虚拟处理器,还是利用上下文进行虚拟处理器调度,都是让虚拟机执行的敏感指令陷入下来,让VMM进行模拟,而不是直接作用的真实硬件上。
陷入方式:
1、基于处理器保护机制触发的异常
2、虚拟机主动触发异常,也就是通常所说的陷阱
3、异步中断,包括处理器内部的中断源和外部设备的中断源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: