KVM客户机异常处理机制和代码流程
源自:
(
333
)
摘 要:异常处理机制是虚拟化保证客户机正确执行的基本手段。由于 ! 采取了硬件辅
助虚拟化技术,因此 ! 采用虚拟机控制结构 !"# 处理异常处理。在该文中,介绍了
!"# 的控制结构,然后介绍了 ! 内核中异常处理函数的总入口,最后对该函数的参数进
行了星系地描述。
关键词: !Y虚拟机控制结构Y ! 异常处理函数
1 虚拟机控制结构
!保证客户机正确执行的基本手段就是当客户机执行$%指令或者其它特权指令时,引发
处理器异常,从而陷入到根操作模式,由 ! & ''模拟执行,可以说,虚拟化保证客户机正确
执行的基本手段就是异常处理机制。由于 !采取了硬件辅助虚拟化技术,因此,和异常处理机
制相关的一个重要的数据结构就是虚拟机控制结构 !"#。
!"#控制结构分为三个部分,一个是版本信息,一个是中止标识符,最后一个是 !"#数
据域。 !"#数据域包含了六类信息:客户机状态域,宿主机状态域, !()'*控制域, !(
)+控制域 !()+控制域以及 !()+信息域。其中 !()+控制域可以设置一些可选
的标志位使得客户机可以引发一定的异常的指令。宿主机状态域,则保持了基本的寄存器信息,
其中"#,$-指向 !中异常处理程序的地址。是客户机异常处理的总入口,而异常处理程序则根
据 !()+信息域来判断客户机异常的根本原因,选择正确的处理逻辑来进行处理。
+文件是和$ .(+体系结构相关的代码文件,用于处理内核态相关的硬件逻辑代码。
在 "-/初始化中0+11'2,将中的对应的异常退出处理函数赋值给"#)$-中,在客
户机运行过程中,产生客户机异常时,"-/根据 !"#中的客户机状态域装载"#)$-的值,从而
退出到内核执行异常处理。在 !内核中,异常处理函数的总入口为:
3 3 + 1 1 + 0 ' 3 1 ' 3 4 1 ' 5 3 ' 3 1
42Y
参数:1'5当前虚拟机实例的运行状态信息,5对应的虚拟。
这个函数首先从客户机 !()+信息域中读取+1'字段信息,然后进行一些必要的处理
后,调用对应于函数指针数组中对应退出原因字段的处理函数进行处理。函数指针数组定义信息
为:
33041+1+1'6720'31345
333333'31'341'23839
6):$.1,);#%<1):")-.$%<1<!$733333333333831+5
6):$.1,);#%<1):.),<;=1$<.),,/-.7333333831+'1''5
6):$.1,);#%<1.,$-=)1>;/=.7333333333333831'15
6):$.1,);#%<1<!$1?$<&%?7 33333383115
6):$.1,);#%<1$%1$<#.,/".$%<733333333338315
6):$.1,);#%<1",1;"")##7333333333333333831'5
KVM 客户机异常处理机制和代码流程
评论0
最新资源