主流的操作系统都有一个假设,就是这个系统有一个特权模式下的os,之上在跑多个非特权模式的APP.
而ARM的虚拟化技术就是在同一个系统上共存多个操作系统. 实现这种虚拟core需要硬件的扩展(加速虚拟机之间的切换)和hypervisor软件层的实现.
Virtualization是一个允许多个操作系统共享一套硬件的程序, 下面是一个支持Virtualization的软件框图
实现Virtualization需要使用一下several architectural features:
• A dedicated Exception level (EL2) for hypervisor code.
• Support for trapping exceptions that change the core context or state.
• Support for routing exceptions and virtual interrupts.
• Two-stage memory translation, where the second stage is for the hypervisor to isolate the guest operating systems.
• A dedicated exception for Hypervisor Call (HVC).
When hypervisor code in EL2 is executing in AArch64, there are dedicated registers available,including:
• Exception return state registers: SPSR_EL2 and ELR_EL2.
• Stack pointer: SP_EL2 (and SP_EL0).
Hypervisor software
• Memory management.
• Device emulation.
• Device assignment.
• Exception handling.
• Instruction trapping.
• Managing virtual exceptions.
• Interrupt controller management.
• Scheduling.
• Context switching.
• Memory translation.
• Managing multiple virtual address spaces