第7章 Smart-VM虚拟化层的实现

本文详细介绍了Smart-VM虚拟化层的实现,包括激活VMX模式的条件和流程,以及CPU虚拟化中的实模式虚拟化。在实模式虚拟化中,重点讨论了如何利用VMX非根操作模式下的虚拟8086模式来模拟实模式,处理软件异常、特权级指令,并实现BIOS虚拟化。内存虚拟化方面,通过映射虚拟内存页表分配给客户操作系统。
摘要由CSDN通过智能技术生成

1.1 Smart-VM 虚拟化层

在使用 Intel-VT 技术之前, Smart-VM 需要先激活 VMX 模式。为了激活 VMX 模式,处理器需要先进入保护模式。

当处理器在保护模式下未进入 VMX 模式的时候,跟普通处理器的保护模式操作是一样的。当处理器激活 VMX 模式,进入 VMX 根操作模式时,基本上跟正常的处理器在保护模式下的操作是一样的,但是 VMX 根操作模式多了几条操作 VMX 模式的指令。

VMX 非根操作模式下虚拟的是保护模式。但是跟正常的保护模式有差别,比如说当客户操作系统在 VMX 非根操作模式下运行的时候,需要访问硬件资源的时候,就需要回到 VMX 根模式,交由虚拟机监控器处理。

VMX 架构中,虚拟机监控器放在 VMX 的根操作模式下,用于管理计算机的硬件资源,同时为客户操作系统虚拟他们所需的虚拟硬件资源。客户操作系统运行在 VMX 非根操作模式下。

1.2 虚拟服务分发器

虚拟服务分发器在 Smart-VM 虚拟化层所处的位置如图 5.4 所示。

虚拟服务分发器会维护一种虚拟服务表,这张表的每个条目对应的是一个服务函数。当处理器从非根操作模式退出到根操作模式下的时候,都可以从这个虚拟服务表中找到相应的服务函数进行处理。从非根操作模式退出到根操作模式下的基本原因存放在 Basic VM-Exit Information 域。

1.3 激活 VMX 模式

1.3.1 激活 VMX 模式的条件

第一代 Intel-VT 技术,在激活 VMX 模式的时候,需要将 CR0.PE CR0.NE CR0.PG CR4.VMXE 设置为 1 ,即开启 VMX 模式需要先开启保护模式和分页机制。

1.3.2 激活 VMX 模式的流程

7 . 1 判断和设置进入 VMX 所需条件的流程图

7.1 显示了 Smart-VM 激活 VMX 模式的流程图:

a)        开启保护模式和虚拟内存机制:在加载程序的时候,已经开启了保护模式和分页机制。具体参看引导程序和加载程序部分;

b)        判断是否支持 CPUID 指令;

c)        判断该处理器是否有支持 Intel-VT 技术;

d)       开启 VMX 操作:

                        i.              激活 VMX 指令操作:置 IA32_FEATURE_CONTROL.bit2 1

                      ii.              锁定 MSR 寄存器:置 IA32_FEATURE_CONTROL.bit0 1

                    iii.              CR0.NE CR4.VME 1

                    iv.              设置 VMCS revision id

                      v.              执行 VMXON 指令,激活 VMX 模式;

1.4 CPU 虚拟化

1.4.1 实模式虚拟化

真实的机子在启动的时候,进入的是实模式,然后从实模式跳转到保护模式。虚拟机监控器也需要虚拟这个过程。但是当处理器进入 VMX 非根操作模式是,处理器只有虚拟 8086 模式和保护模式两种。因此,要虚拟实模式,一般采用以下两种方式:

a)        实现一个模拟实模式的模块;

b)        利用虚拟 8086 模式;

Smart-VM 采用第二种方法来虚拟实模式。

利用虚拟 8086 模式来实现实模式的虚拟化同样也有两种方法:

a)        利用保护模式下的虚拟 8086 模式;

b)        利用 VMX 非根操作操作模式下的保护模式下的虚拟 8086 模式;

7.2 的着色部分显示了虚拟 8086 模式在处理器各个模式中所处的位置。如果利用保护模式下的虚拟 86 模式,那么需要进行保护模式和 VMX 模式之间的切换,因此,我们采用第二种方法,即使用 VMX 非根操作模式下的保护模式下的虚拟 8086 模式。

7 . 2 虚拟 8086 模式

虚拟 8086 模式在保护模式下是运行在特权级 3 的,因此跟实模式还是有一些差别的:

1.      不能运行特权级指令;

2.     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值