基于xen的声音设备虚拟化的分析-analysis of sound device virtualization based on xen.docxVIP

  • 7
  • 0
  • 约4.07万字
  • 约 46页
  • 2018-05-18 发布于上海
  • 举报

基于xen的声音设备虚拟化的分析-analysis of sound device virtualization based on xen.docx

基于xen的声音设备虚拟化的分析-analysis of sound device virtualization based on xen

本课题以Xen半虚拟环境为平台基于分离驱动模型对声音设备的虚拟化进行了研究,旨在在半虚拟化环境下提供一个高效的声音设备,使得在半虚拟环境也能流畅播放音乐,提高用户在半虚拟环境的使用体验。1.2国内外研究现状在虚拟化技术的发展和应用中,I/O设备的虚拟化一直是研究的热点和难点。目前,在I/O设备的虚拟化上主要有3 种模型:仿真设备模型、分离驱动模型以及直接分配模型。本小节对这几种I/O设备虚拟化模型进行简要的概述和比较。1.2.1仿真设备模型仿真设备模型通过软件方法完全模拟一个物理设备来实现对设备的虚拟化,主要用在一些模拟器中,Xen完全虚拟化就是借助模拟器QEMU[21,22]来实现的设备虚拟化。对于I/O设备,可以看成是一些特定资源的集合,比如I/O端口、内存映射I/O 和中断等,对I/O设备的操作实质上是对这些资源进行操作。仿真设备模型的实质就是通过对这些资源进行虚拟化来实现对设备的虚拟化[23,24],实现过程就是当虚拟机对这些I/O资源进行操作的时候,虚拟机管理器将这些操作截取,然后参照硬件手册对这些I/O操作进行模拟,再将结果返回给虚拟机。在Xen 的完全虚拟化中,为了使虚拟机能操作物理设备,Xen 将对虚拟机的I/O 操作进行截获,然后把这些I/O操作发送给驱动虚拟域(通常是Domain-0),在驱动虚拟域有一个设备模型块来模拟执行I/O操作并将结果返回给虚拟机。设备模型块通过软件方法对物理设备进行模拟,为虚拟机提供了一个虚拟的硬件平台。仿真设备模型是在硬件层次上对设备进行的虚拟化,不需要修改操作系统,因此通用性比较好。只要操作系统中实现了设备驱动程序,就能通过仿真设备模型来操作物理设备。但是在仿真设备模型中,虚拟机I/O性能不甚理想。因为在这个模型下,I/O操作的控制路径比较复杂,不仅需要在虚拟机之间切换,还需要在处理器模式之间切换,从而导致很大的性能开销[25,26,]。另外,由于还需要将数据拷贝到设备模型块中,这也会增加性能开销。1.2.2 直接分配模型直接分配模型的理念其实很早前就已经提出[27],它通过借助硬件对设备进行虚拟化,减少因软件模拟带来的性能开销,其性能接近物理设备[28,29,30]。直接分配模型是将物理设备直接分配给虚拟机使用,虚拟机像操作真实物理设备一样的操作该设备。不过,这时其他虚拟机将不能使用该设备。使用直接分配模型的设备,实质上并未参与虚拟化。在Xen的完全虚拟化中,也可以用直接分配模型来访问设备。直接分配模型需要借助硬件对DMA进行重映射[31,32]。由于在直接分配模型中,虚拟机的I/O操作会直接发送给物理设备,比如通过DMA操作将数据从虚拟机直接写到设备。这时因为虚拟机对内存地址的映射和设备对内存地址的映射不一致,导致数据传输失败。因此,需要通过硬件将虚拟机提供的地址转换成真实物理地址,直接分配模型,虽然性能上和真实物理设备相差无几,但是牺牲了安全隔离性和服务透明性[33,34],同时需要硬件上的支持,对设备的使用也是独占性的。1.2.3 分离驱动模型分离驱动模型需要修改操作系统内核,包括2部分:在非特权虚拟机实现的前端设备驱动和在可以操作物理设备的设备虚拟域(通常是Domain-0)实现的后端设备驱动。前端设备驱动提供一个虚拟设备给上层使用,并截取上层的I/O请求,然后发送给后端设备驱动并等待后端设备驱动的响应。后端设备驱动接收到前端设备驱动发送的I/O请求后,检查该请求是否合法,然后将I/O请求递送到真实设备驱动来操作物理设备。当I/O请求完成后,后端设备驱动发送响应给前端设备驱动,前端设备驱动再将I/O操作的结果发送给上层。在早前分离驱动模型中,后端设备驱动被包含在虚拟机管理器里,但是为了提高设备使用的安全隔离性,现在已经被转移到了设备虚拟域中[35,36]。Xen半虚拟化就是使用的分离驱动模型对设备进行虚拟化,后端设备驱动位于Domain-0。在仿真设备模型里,由于操作系统的设备驱动程序是基于硬件手册实现的,所以对I/O操作的截取也是基于硬件手册提供的接口,比如I/O端口操作等。因此在仿真设备模型I/O操作的截取次数会比较多,这就导致了更多的虚拟机之间的切换和处理器运行模式的切换。相比而言,在分离驱动模式里,前端设备驱动实现的虚拟设备是基于设备驱动在内核层提供的高层接口来实现的,这样前端对I/O请求的一次截取操作里包含了更多的I/O操作,因而在前后端的一次I/O请求传递中,会做更多的事情。这样就可以减少虚拟机之间的切换。同时由于在前端设备驱动和后端设备驱动均处于内核态,因此不需要在处理器模式之间进行切换。另外,在数据传输的过程中,仅需要将数据从前端设备驱动传输给后端设备驱动,然后再传输到真实设备驱动,这样数据传输的开销也很小。因此使用分离驱动模型实现的设备虚拟化,性能

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档