博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《NewBluePill深入硬件虚拟机》- 新书预览

Posted on 2010-12-11 11:11  Superymk  阅读(1298)  评论(0编辑  收藏  举报

 

深入HEV技术细节

在第一章中,我们简单介绍了SVM和VT技术,但是他们是如何被具体使用的呢?在本章中我们将详细介绍这些技术的细节:

n HEV下虚拟机的启动过程

n VMEXIT事件的产生和处理

n HEV下虚拟机的关闭过程

n SVM和VT技术的关键数据结构

n HEV中的双层地址翻译

直接阅读本章,可能会觉得理解其中内容却印象不深,推荐在阅读完全书后再次阅读本章——在理解了NewBluePill代码后,对本章内容自然会有更深的认识。

HEV下虚拟机启动过程

“物有本末,事有终始,知所先后,则近道矣”——《大学》

想要了解HEV技术的本质,则要了解HEV要解决的问题和怎样解决这些问题。要熟悉这些,就要沿着虚拟机开启——运行——关闭的过程,看HEV技术是怎样融入其中的。所以我们首先就来看看在HEV技术的帮助下,虚拟机是怎样启动的。

启动过程模型

首先介绍下有了HEV技术后,启动虚拟机的方式。使用了硬件虚拟化技术的虚拟机可以有三种引导Guest操作系统的方式:

1.存在特殊OS/Host OS,后启动Hypervisor的虚拟机启动过程

2.存在特殊OS/Host OS,先启动Hypervisor的虚拟机启动过程

3.不存在特殊OS/Host OS,先启动Hypervisor的虚拟机启动过程

n 存在特殊OS/Host OS,后启动Hypervisor的虚拟机启动过程。采用这种启动过程的虚拟机代表是KVM,其启动过程如下:

a) 先启动宿主Linux操作系统

b) 在Linux中启动KVM设备,从而启动了Hypervisor

c) 启动虚拟机,作为Linux进程运行

图3.1 KVM中虚拟机的启动过程

启动过程如图3.1,可以看出,KVM启动虚拟机的模式说明它不想脱离进程级虚拟机的本质,但是它要利用虚拟化技术进行加速。这样做的缺点在于需要一个Host OS充当载体。除KVM外,VMWare6.5以上版本也是采用类似的架构,使用支持HEV技术的CPU进行加速。但是它们都需要再另外安装相应Guest OS上的驱动。

NewBluePill也属于这样的一个启动模型,略有不同的是在成功启动NewBluePill后,它会把宿主Windows操作系统置于虚拟机中运行,详细过程可以参考本书后续章节。

n 存在特殊OS/Host OS,先启动Hypervisor的虚拟机启动过程。采用这种启动过程的虚拟机代表是Xen,其启动过程如下:

a) 先创建并启动Hypervisor

b) 引导Dom0

c) 由Hypervisor和Dom0一起协作创建虚拟机

d) 启动该虚拟机[1]


[1] Xen中具体创建和启动虚拟机的过程会在“附录A 其它有关HEV项目”中介绍