关于VT调试器 什么是VT技术
关于滴水的VT调试器 by 海风月影
论坛上今天吵的比较火热,主要是关于滴水的VT调试器,很多人不了解这个东西,我对Intel的VT技术略有了解,所以我来简单的介绍一下。
第一,什么是VT技术
VT是Intel的硬件虚拟化技术,说到VT,就不得不提虚拟机(例如VMWare)。在硬件还没有支持VT前,系统级的虚拟机其实是很难做的,要考虑的 东西非常多(主要是效率问题,因为用软件模拟东西资源开销比较大)。VT技术主要就是为了解决这个问题而诞生的,有了VT后,可以减少非常多的资源开销, 让虚拟机的速度接近于真机速度。
OK,那么VT到底是个什么技术呢?
首先要说一下VMM(Virtual Machine Monitor),这个是虚拟机的监控器,监控着虚拟机的运行。比如虚拟机想执行一条指令:cpuid,这个时候被VMM捕捉到,然后VMM去模拟执行这 条指令,然后返回给虚拟机,完成了一次vm exit。因为VMM需要执行ring0的指令,所以VMM需要运行在ring0下。
而VT使得CPU进入了一个全新的特殊模式(VMX模式),在这个模式下,CPU可以处于VMX root状态或者VMX non-root状态。处于VMX non-root操作状态下的CPU行为受到了某些方面的限制,关键的共享资源必须运行于VMX root操作状态的监控器的控制之下,并且,对于VMX non-root状态中的任何CPU特权都有效(只要处于VMX non-root状态,ring0 - ring3 都被监控)。因此,将VMM运行于VMX root操作状态,可以轻松监控管理客户操作系统(就是安装在虚拟机里面的操作系统)和客户应用程序(虚拟机里面操作系统里面安装的软件)。
大家可能被绕晕了,我举个例子简单解释一下上面最后一句话
比如:
一个虚拟机,里面装了winxp系统,系统里面有一个记事本程序
OK,winxp内核肯定要运行于ring0,而记事本肯定要运行于ring3,那么VMM怎么高效得管理这两个特权呢?
比如,POPFD这条指令,可以修改EFLAGS的IF位,即中断允许位,但是,在ring3下,是无法修改的。所以,VMM需要先判断客户机处于哪个特 权级别(ring0?ring3?),如果ring0就可以修改,如果ring3就拒绝修改。这样的过程就有开销。而VMX non-root状态对任何CPU特权都支持,因此,VMM可以让客户机完全在真实CPU上执行这条指令,不需要考虑这条指令执行后结果会不会出现问题。
简单的说:VT是为了减少虚拟化技术带来的性能开销而开发的硬件虚拟化技术,尽量消除关键指令和关键共享资源(比如内存的访问)的影响。而全新的VMX模式,可以使CPU运行于一个受监控的VMX non-root状态。
具体的VT技术的实现非常复杂,这里就不说了。
**** Hidden Message *****
:$:(:):sleepy::curse:
页:
[1]