Trap-and-Emulate模型

Trap-and-Emulate模型

Trap-and-Emulate模型 #

陷入模型的核心思想是:将 Guest 运行的指令进行分类,一类是安全的指令,也就是说这些指令可以让 Host 的 CPU 正常执行而不会产生任何副作用,例如普通的数学运算或者逻辑运算,或者普通的控制流跳转指令等;另一类则是一些“不安全”的指令,又称为“Trap”指令,也就是说,这些指令需要经过 VMM 进行模拟执行,例如中断、IO 等特权指令等。

接下来,我们来看一下它的具体实现过程:对于“安全”的指令,Guest 在执行时可以交由 Host 的 CPU 正常运行,这样可以保证大部分场景的性能。不过,当 Guest 执行一些特权指令时就需要发出 Trap,通知 VMM 来接管 Guest 的控制流。VMM 会对特权指令进行模拟 (Emulate),从而达到资源控制的效果。当然在进行模拟的过程中需要保证执行结果的等价性。

经过这样一个 Trap-and-Emulate 的过程,Guest 就可以在保障等价性以及资源限制的前提下,尽可能地满足虚拟化的高效性的条件。

Viewpoint #

From #

12 | 内存虚拟化:云原生时代的奠基者