ARM目前采用的是硬件辅助虚拟化的方式,即在处理器模式上增加了EL2级别,将hypervisor运行在EL2上,那为什么需要这么做呢?
1、虚拟化在业界上有一种说法叫做“经典可虚拟化模型”,也就是要求cpu的敏感指令属于特权指令的一个子集,这样在VM里访问敏感指令的时候就会触发异常并被hypersiver捕获;
2、ARM(x86也类似)的模式是不符合“经典可虚拟化模型”的,也就是说ARM有很多敏感指令都不属于特权指令,因此ARM的虚拟化实现主要有两种方式:
1)、修改Guest操作系统,将其敏感指令替换成特权指令,并在hypervisor中模拟其敏感指令的运行;
2)、通过硬件辅助虚拟化,将hypervisor与VM kernel运行在不同的模式下,VM运行在一个受控模式,hypervisor可以配置哪些敏感指令是否触发异常;