8.3.2 I型管理程序

可虚拟化是一个重要的问题,所以让我们来更仔细地研究一下。在图8-26中,我们可以看到一个支持一台虚拟机的I型管理程序。像所有的I型管理程序一样,它在裸机上运行。虚拟机在用户态以用户进程的身份运行,因此,它不允许执行敏感指令。虚拟机内运行着一个客户操作系统,该客户操作系统认为自己是运行在内核态的,但是实际上它是运行在用户态的。我们把这种状态称为虚拟内核态(virtual kernel mode)。虚拟机内还运行着用户进程,这些进程认为自己是运行在用户态的(事实上也正是如此)。

阅读 ‧ 电子书库
图 8-26 当虚拟机当中的操作系统执行了一个内核指令时,如果支持虚拟化技术,那么它会陷入到管理程序

当操作系统(认为自己运行在内核态)执行一条敏感指令(只在内核态下可以执行)的时候会发生什么事情呢?在不支持VT技术的处理器上,指令失效并且操作系统通常情况下会崩溃。这意味着虚拟化是不可行的。有人争辩说所有在用户态执行的敏感指令都应该陷入,但那不是386和它的non-VT后代们的工作模式。

在支持VT技术的处理器上,当客户操作系统运行一条敏感指令时,发生到内核的陷入,如图8-26所示。管理程序分析指令,查看它是来自于虚拟机中的客户操作系统还是来自于虚拟机中的用户程序。如果是前一种情况,管理程序调度将要执行的指令;如果是后一种情况,它仿真面对运行在用户态的敏感指令时真实硬件的行为。如果虚拟机不支持VT技术,指令通常会被忽略;如果虚拟机支持VT技术,它陷入到虚拟机的客户操作系统中。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元