中断模型是指Hypervisor处理中断事件的一种框架或模式。当计算机执行一个程序时,如果发生了中断事件(如硬件错误、软件异常、I/O请求等),计算机会停止当前执行的程序,并将控制权转移给Hypervisor。Hypervisor会根据中断事件的类型,执行相应的中断处理程序。
中断模型包括以下4个部分。
1)中断源:引起中断事件的硬件设备或软件程序。
2)中断处理程序:Hypervisor根据中断事件类型提前定义的处理程序。
3)中断控制器:用于管理不同设备发出的中断信号的硬件设备。
4)中断向量表:用于将中断事件映射到相应的中断处理程序的查找表。
中断模型的目的是允许Hypervisor响应异步事件并进行相应的处理。通过中断模型,Hypervisor可以在需要时随时中断当前程序的执行,转而执行特定的中断处理程序。这使得客户操作系统能够同时处理多个任务和事件,并允许多个程序在同一时间内运行。
PRTOS中断模型的设计考虑到了响应中断的可预测性和安全性,其架构如图4-1所示。
图4-1 PRTOS中断模型
在图4-1中,PRTOS中断模型提供了可配置的中断处理机制来处理本地硬件中断,并生成适当的虚拟中断分配给分区(分区 M 、 N )。分区必须处理以下虚拟中断。
1)虚拟陷阱是由PRTOS向分区生成的陷阱,是本地软件陷阱的触发结果。
2)虚拟异常是由PRTOS向分区传播的异常,是本地处理器异常发生的结果。一方面,并非所有本地异常都会传播给分区。例如,因空间隔离违规而生成的内存访问错误会由PRTOS内核处理,PRTOS内核可以执行停止分区操作,也可以生成另一个不同的虚拟异常(例如内存隔离故障)。另一方面,数值错误会直接传播给分区,由分区自行处理。虚拟异常是原生异常的超集,包括Hypervisor生成的附加异常,其中一些是内存隔离错误、I/O隔离错误以及时间隔离错误。
3)虚拟中断由真实硬件或虚拟硬件直接产生。真实硬件对应于外部设备(专用设备)或外围设备,虚拟硬件包括与虚拟化相关联的不同虚拟设备。
只有虚拟硬件中断可以被所在分区启用或禁用。为了防止分区危及时间隔离,PRTOS使用了4种策略。
1)分区无法访问pCPU的原生陷阱表,因此分区应用无法将自己的陷阱处理程序安装到原生陷阱表中。所有陷阱都由PRTOS内核接管,并在必要时由PRTOS传递给分区定义的、属于自己的虚拟陷阱表。
2)分区不能与pCPU的陷阱交互。分区在用户模式下执行,从而保证它们没有访问本地CPU控制寄存器的权限。
3)分区无法屏蔽未分配给该分区的虚拟硬件中断。
4)当一个分区被调度时,与其他分区关联的所有硬件中断都被禁用。当分区上下文切换发生时,PRTOS会检测下一个要执行的分区硬件中断,并根据该分区的中断屏蔽掩码来触发这些中断。