一、指令模拟
处理器虚拟化的关键在于正确的模拟指令行为,其中涉及到三个概念:虚拟寄存器、上下文和虚拟处理器。
虚拟寄存器
从某种程度上说,物理处理器无非包括了一些存放数据的物理寄存器,并且规定了使用这些寄存器的指令集。程序代码就是物理处理器按照一段预先写好的指令流,在给定时间点使用给定的部分物理寄存器来完成某种目的。
在没有虚拟化的环境中,操作系统直接访问物理寄存器,处在最高级权限,可以控制系统中的所有关键资源,包括寄存器、内存和I/O外设。而当虚拟机接管物理处理器之后,操作系统运行在非最高级权限后,其试图访问关键资源的指令就成为了敏感指令。虚拟机会使用各种手段,保证敏感指令的执行能够触发异常,从而陷入到虚拟机中进行模拟,防止对虚拟机运行的破坏。
所以,当客户机操作系统试图访问关键资源的时候,该请求不会真正发生在物理寄存器上。相反,虚拟机会通过准确的模拟物理处理器的行为,将其访问定位到虚拟机为其设计与物理寄存器对应的虚拟寄存器上。当然,从虚拟机的实现上来说,这样的虚拟器往往是在内存中。
上下文
在没有虚拟化的环境中,操作系统直接负责物理处理器管理,负责进程间调度和切换。但当虚拟机接管物理处理器之后,操作系统运行在虚拟机为其设计的虚拟处理器上,并在虚拟处理器上负责该操作系统内进程间调度和切换。虚拟机管理物理处理器,负责虚拟处理器的调度和切换。
不管何种调度