内核版本:linux-v5.9
架构:arm64
1 type1型和type2虚拟机管理器
在arm64架构中,共有EL3到EL0四个异常级别,EL3异常级别最高。通常操作系统(如linux)运行在EL1,应用程序运行在EL0,EL2则运行hypervisor管理程序。虚拟机管理器有type1型和type2型之分,kvm属于type2型虚拟机管理器。
首先思考type1型和type2虚拟机管理器有什么相同之处,即同样作为虚拟机管理器,它们都完成哪些工作。
- 虚拟机资源的管理:虚拟机地址空间的管理由虚拟机管理器统一管理;
- 虚拟机的调度和切换:虚拟机运行时VCPU需要进行调度和上下文切换;
- 虚拟设备的管理:虚拟机使用的虚拟设备即设备的中断由虚拟机管理器统一管理。
知道了两类虚拟机管理器都需要完成的工作后,再说明他们在完成上述工作时有何不同。type1型的虚拟机管理器在完成上述工作时,所有的行为都是在EL2完成的。而type2型的虚拟机管理器在完成上述工作时,大部分是在EL1完成的,即在EL1将虚拟机的运行时上下文准备好,而在EL2级别只实现模式切换,即将准备好的运行时上下文加载进寄存器。这里提到了模式切换,暂不描述。
然后再思考为什么会出现type1型和type2型在处理这些工作时存在不同的情况。解决这个问题后,再思考两种类型的优劣,也许就是type1型和type2型虚拟机出现的初