虚拟机又叫虚拟机管理程序或者虚拟机监控程序(Virtual Machine Monitor/Hypervisor,VMM),使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器 (Virtual Machine,VM),每个虚拟机器都可以独立运行一个操作系统。
VMM分为两类:
第一类直接运行在硬件上,一个硬件资源上可以安装多台虚拟机器。若硬件为单核CPU,那么该CPU会被分为多个事件片,每个虚拟机器分配几个时间片,但在上层看来,每个自己都占有独立CPU。
只有虚拟机管理程序运行在内核态,所以上层的操作系统不能使用特权指令,若上层操作系统想要使用特权指令,那么其就会将特权指令传到虚拟机管理程序,管理程序就会对该指令进行等价转换。
第二类VMM,运行在宿主操作系统上
虚拟机管理程序运行在宿主操作系统上,若虚拟机管理程序想要给操作系统分配资源,就要先向宿主操作系统申请硬件资源,再做分配。
第二类虚拟机管理程序总需要通过宿主操作系统为中介进行映射,性能比第一类更差。
两类虚拟机管理程序的对比
这里的最高特权级指的是CPU分的更多指令等级
分更多级别是有好处的,对于第一类虚拟机管理程序,若上层操作系统想要使用特权指令,那么其就会将特权指令传到虚拟机管理程序,管理程序就会对该指令进行等价转换。但是分更多类别, 就可以使上层用户空间使用Ring1,Ring2时管理程序不用介入,直接可以执行,除非执行少数的Ring0,才需要介入。
这就相当于将原本的特权指令进行细分,将特权指令中的敏感指令设为Ring0。这样虚拟机管理程序不用检查每一条特权指令,只会检查敏感指令Ring0