Hypervisor的内核中断设计涉及以下4个方面。
1)中断管理器:Hypervisor必须能管理和分发中断,以确保所有虚拟机都能及时响应中断。
2)中断虚拟化:由于虚拟机是在Hypervisor上运行的,因此Hypervisor必须能够虚拟化中断,以使虚拟机能够感知和响应中断。这涉及将来自物理硬件的中断转换为虚拟中断,并将该虚拟中断投递给相应的虚拟机。
3)中断控制:Hypervisor还必须能够控制虚拟机中断的分发和处理,以确保虚拟机的资源和时间得到充分利用。这涉及分区客户系统中的任务优先级调度和中断屏蔽等技术,以确保高优先级任务能够及时响应中断。
4)中断处理程序:在收到中断后,Hypervisor必须能够调用适当的中断处理程序来处理中断。这涉及虚拟化硬件设备、更新虚拟机状态等操作,以确保虚拟机能正确响应中断。
PRTOS使用的是基于QEMU或者VMware搭建的X86硬件平台。单核硬件平台使用的是两片级联的i8259A PIC,如图4-2所示。
多核硬件平台采用的是APIC中断控制器。与传统的PIC不同,APIC能够提供更多的中断处理功能,具体如下。
1)更高的中断处理能力:APIC支持更多的中断输入,最多可以支持255个中断请求。
2)更快的中断响应速度:APIC能够快速识别和响应中断请求,从而减少处理器延迟。
3)更好的中断管理:APIC可以动态地分配和管理中断请求,从而避免中断冲突和竞争。
图4-2 i8259A PIC
APIC通常由多个子设备组成,包括LAPIC和I/O APIC。LAPIC位于处理器上,用于管理处理器内部的中断请求;I/O APIC则位于系统总线上,用于管理外部设备(如网卡、磁盘控制器等)的中断请求,如图4-3所示。
PRTOS中的中断驱动是一种软件组件,它负责PRTOS内核和物理硬件平台之间的中断传递。当外部设备发出中断请求时,PRTOS会拦截这个请求,并根据PRTOS配置向量,来决定中断请求的处理方式。PRTOS内核中断向量表IDT(Interrupt Descriptor Table,中断描述符表)的初始化请参考3.1.2小节,这里不再赘述。
图4-3 APIC中断控制器