ARM的虚拟化原理

ARM 134浏览

1、基本模型

Hypervisor运行在一个新的非安全模式,称为Hyp模式,Hypervisor负责客户操作系统的切换

客户操作系统运行在非安全特权和非特权模式。

 

用于安全扩展的软件不需要任何改变,因为Hypervisor本身没有用到安全模式的任何状态。

2、虚拟化的扩展如下

非安全状态下的Hyp模式

中断处理

内存管理

load和store的模拟来提供虚拟外设的处理

一些trap用来处理Hypervisor相关的特殊情况。

 

Hyp模式,是一种在非安全状态下最高的一种模式,能够控制比其他模式更多的功能。为了更好的对arm的虚拟化

进行描述,我们采用如下术语:

内核模式,是指六种模式的集合,Supervisor, System , Abort, FIQ和IRQ,Undef

特权模式,是指七种模式的集合,Supervisor, System , Abort, FIQ和IRQ,Undef,以及Monitor

非特权模式,是指一种模式的集合,即 User

Hyp模式在CPSR和SPSR中的模式编码中为11010

 

与其他的模式相同,Hyp需要有自己的SP和SPSR来保存自己的栈指针和状态,但是对于bank LR寄存器,会有一定的问题。理论上

我们应该允许Hypervisor在任何时刻都可以接收中断。但是当hypervisor模式下,hypervisor自己的LR保存着过程返回直的时候,

这时候如果有中断和异常发生,则会导致LR的数据被中断或者异常的返回地址覆盖。

 3、指令的扩展

一个新的指令ERET

ERET的功能在于在 Hyp模式下执行的时候,Spsr_hyp的内容赋给CPSR而ELR_Hyp的值赋给PC