1. 虚拟机的内存
Guest机的RAM
Guest机的RAM由 qvm 进程在创建VM时配置,在Guest OS看来就是物理地址,但这并不是真正物理地址,内存寻址时还需做一次转换,ARM将这种内存成为中间内存(也叫Guest-physical Address 或IPA)
直通存储器
Guest 将直通设备映射到可访问的内存区域中。同样,直通设备的物理地址不一定与虚拟机管理程序域中的主机物理地址(真正的内存物理地址或PA)相同。
共享内存
可以分配部分物理内存以在Guest之间共享 或虚拟设备(如 vdev-shmem)连接到同一物理地址 (PA),并使用共享内存区域共享数据,每当有新数据可用或已读取时,就会相互触发。
2.物理设备
直通设备
虚拟机管理程序没有直通物理设备的驱动,但必须将中断从物理设备直接路由到Guest,并将Guest信号直接传递给物理设备;
Guest直接独占使用物理设备,所以Guest必须具有自己的物理设备驱动程序;
特点就是Guest访问直通设备速度快;
共享设备
引用共享方式: 虚拟机管理程序不参与,多个Guest使用物理设备。其中一个VM(暂称为A)完全控制设备,其他VM通过 TCP,shared memory ,virtqueues与A通讯,通过A完成对物理设备的数据输出及控制
中介共享方式: 虚拟机管理程序参与, 一个或多个Guest使用物理设备。Hypervisor完全控制物理设备并充当中介,在Guest和物理设备之间传递请求和响应;
虚拟设备
虚拟设备(vdevs仅存在于虚拟化环境中。要使用 vdev,Guest需要驱动程序;vdev可能永远不会访问物理设备,或者它可能充当中介,响应Guest在Guest和物理设备之间传递请求和响应。
qvm 进程中提供 vdevs。Guest从 vdev 接收中断并向其发送信号
全虚拟设备 半虚拟设备
3.虚拟机的线程调度
vCPU就是QVM进程的一个线程,他对VMM是可见和可被调度;
VMM负责vCPU的调度,当一个vCPU被调度到获得pCPU的使用权后,基于该vCPU运行的guest OS又可以调度OS中的各个线程/进程了
VMM不知道其VM中正在运行的内容。在Guest OS 中设置优先级时,Guest才知道这些优先级。
以下情况会导致Guest退出:
Halt,vdev access,主机上的中断,虚拟计时器,类似CPUID 指令