officeba > 单独文章


谈虚拟环境中设备访问的实现方法(中)

摘要: 上期我们对虚拟机中各种设备访问方式进行介绍与分析归纳。在继续具体介绍虚拟机种光驱刻录实现之前,先占用一些篇幅介绍一下设备虚拟化中的一个关键问题:I/O截获。
什么是I/O截获?
VMM截获I/O操作是指:guest 系统发送的I/O访问请求被VMM拦截,而不是像native环境下那样被直接写入到物理设备中。原因是显而易见的,因为不能让guest系统直接修改硬件状态,否则有可能会造成系统故障(轻则影响其他guest运行,重则会让整个系统宕机)。所以VMM会将截获的I/O指令进行分析后模拟执行,也就是将“伪造”的数据返回给Guest系统。       目前所有虚拟机软件的I/O虚拟化原理都如上所说,过程大同小异。不过具体的截获方式又有所差别。这里就几种典型的I/O截获方式进行介绍和分析。
1.ISA层的虚拟化技术中的I/O截获方法      ISA层的虚拟化技术是指采用软件模拟指令集的方式进行指令虚拟。具体的实现方式是截获客户操作系统发出的指令,并把它们“翻译”成Host平台上的可用指令进行执行,其中所说的指令既包括处理器内部指令,也包含IO指令。因此I/O的截获和其他处理器指令截获方式一样,都是在虚拟机模拟CPU取指令过程中被发现并被进而模拟处理的。这种虚拟机的代表是Bochs和QEMU,都是运行在用户空间的进程虚拟机。
2 .  硬件抽象层的虚拟化技术的I/O截获方法硬件抽象层的虚拟化技术是指在guest 和 host系统ISA相同的情况下,尽可能避免翻译和模拟guest指令,而是让其直接运行;仅仅在guest系统执行特权指令(修改系统资源或执行结果受资源状态决定)时,虚拟机才会截获并接管处理,以免系统发生异常或冲突。虚拟机为了能截获特权指令,要求执行于高特权级别,属于内核程序。这样每由用户态运行的guest系统产生trap时,就能被VMM捕获到。而I/O指令(x86中 in/out等)属于典型的特权指令,在用户空间使用将产生trap。如果出现特权指令在特权级不够的情况下执行,并不能方便地产生trap的情况。对这一问题的解决方案有3种:一种是指令扫描结合动态指令修改的软件技术,有许多商业的虚拟化产品采用了这种方案。此种虚拟化技术的代表产品是VMware;另一种是对guest 系统进行修改,使得修改资源时能产生必要的trap,以便能被VMM截获。代表软件是xen(其中的modify方式)。最后一种方案是修改x86 CPU,使它支持虚拟化(即让所有敏感特权指令都能产生trap),也就是Intel的Vanderpool技术和AMD的Pacifica技术的目标,具体代表是KVM 和Xen (unmodify方式)。 I/O截获后如何模拟?
       I/O请求或读或写在被VMM截获后都需要模拟执行。模拟即可以在VMM内部完成,也可以在host中完成。VMM内部完成的好处是速度快,缺点是需要在VMM中实现模拟设备,工作量大;且使得VMM变的臃肿,降低了VMM的可靠性。在host中完成虽然需要将I/O请求从VMM转发到host中的设备模拟进程,增加了上下文切换和调度时间。但是优点更突出:1 可以利用已存在的设备模拟代码(如qemu);2于宿主性设备模拟可以借助host系统的设备驱动。3 保持了VMM尽量精简。鉴于以上原因多数虚拟化软件都采用将设备模拟纺在host中进行。最后,为了让大家能更清楚认识I/O虚拟化过程。我举Xen中完成I/O虚拟化的过程进行说明:首先guest 系统执行I/O请求命令(如out xxx); 由于guest处于用户空间,I/O访问会引发trap,这时处于特权级运行的VMM会将捕获该trap, 然后VMM可能在自己内部模拟执行该I/O请求(如对中断控制器的请求或简单的pit模拟等都实现在VMM内部),或者将I/O请求向上发送给处于Domain0中运行的Qemu进程模拟I/O操作(具体是通过event channel发送模拟中断通知domain0中的qemu)。Qemu进程当监听到上发的I/O请求后,会调对应端口注册的处理函数进行I/O模拟处理,并将模拟结果送回VMM,从而返回给guest系统。

声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2007-11-28 11:12:15,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容