E6998 - 虚拟机课程 2CPU 虚拟化.pptVIP

  • 2
  • 0
  • 约 31页
  • 2016-11-25 发布于山西
  • 举报
E6998 - 虚拟机课程 2CPU 虚拟化

* * * 虚拟软件构造一个从客户机到宿主机的同构。 所有的客户状态S都通过某种函数功能V(S)对应到宿主状态S‘。 另外,每一个客户状态之间的转移操作e(S)也对应有e’(S’)操作在宿主机器上。 虚拟化软件必须负责实现其中的V和e功能函数。 * 直接执行 * 这又是一个实用性的定义。严格虚拟化的定义取决于陷入和模拟能否正常运行。 【再次又一个可使用的定义。严格虚拟化隐含着陷入和模拟能否正常运行。】 X86并不是严格的虚拟化。一个原因就是popf指令。Popf指令从栈中取出一个字并放入标识寄存器中。在标识寄存器中有一个中断允许位。在系统级时,这个中断允许位由popf更新。当X86设计者引入用户态时,意识到用户修改这个位会导致系统崩溃。因此,他们采取忽略用户态下的IF位更新操作来解决这个问题。当然,这也对客户操作系统中断VMM起作用。当VMM把客户操作系统运行在用户态时,客户操作系统所做的中断修改就被VMM忽视了,因此VMM也就不知道客户操作系统的中断状态了。解决的方法就是让popf陷入,或者是让popf在修改IF时陷入。 注意:这些条件都只是必要条件而非充分条件。例如:在x86上还存在其他陷入模拟不能有效工作的原因。 * * * 动态二进制翻译用于Cpu的虚拟化,通过把有潜在危险的指令序列逐一翻译成顺序的指令序列。 它是这样工作: 监视器监测下一个序列的指令。一个指令

文档评论(0)

1亿VIP精品文档

相关文档