USB设备虚拟化论述

时间:2022-10-30 01:38:25

USB设备虚拟化论述

内存虚拟与I/O设备一样,内存的地址也是固定的,一般来说,内存的地址都是从零开始并且是连续的。内存只能有一个从零开始的地址,如何产生多个从零开始的地址,以满足多个虚拟机使用的目的,同时还要让内在的利用率最大,所以虚拟机不可能将内存分成多个不同的连续大容量的地址空间。一般采取的方法是:将客户端内存地址转换成宿主机的物理地址,此时,客户机内存仍然采用段页式管理模式,此时就可以将客户机的虚拟地址转化为现实的物理地址。处理器虚拟化在计算机中,处理器是整个硬件的核心,对处理器进行虚拟化操作,主要虚拟操作的对象有:指令集、寄存器、地址翻译系统、保护机制和中断异常机制。虚拟机可以虚拟出来功能及参数相同的处理器,这与主机里面的CPU数量没有任何关系。

usb设备及驱动框架

USB设备当前的计算配置,USB设备都是连接在PCI总线上,对于系统查找USB设备,都是通过枚举的方式来完成。PCI总线在描述USB设备以前,首先对主机内部的PCI总线进行描述,PCI总线呈现出树形结构,其结构。在PCI总线上的设备,从加电之后,开始以枚举的形式进行查找相关设备,总线的值为0,找到设备之后,依次加1,最多不能超过255,这同时也对PCI总线挂载的硬件设备总数进行了限制。USB串行总线通用串行总线称之为USB,是当前最流行的总线传输标准。根据传输速率的不同,分为低速USB、全速USB和高速USB3种。其接口可以在各种不同的设备上进行应用操作。它是接PCI总线的USBHOST为根,在此基础上进行USB设备的连接,也可以连接USBHUB,而USBHUB下面又可以连接USB及USBHUB,形成一个典型的树型结构。需要说明的是:一个USBHUB下面最多只能接5个HUB及USB设备。其拓扑结构如图2所示。USB设备驱动框架整个计算机体系是按照分层来设计的,USB设备也是采用分层结构。在整个USB设备体系中,USB的驱动是在各个不同的实体中完成的。在用户应用程序到USB电缆之间,要经过USB设备驱动程序、USBD模块和HCD模块。其中USBD模块是整个体系的核心,它主要负责USB设备的带宽分配和USB总线管理,为用户的应用程序提供相应的接口。具体的体系结构如图3所示。

USB设备虚拟

利用软件对硬件进行模拟是目前IT行业最常见的方法,通过虚拟机将USB设备有效地映射在对应的应用程序或操作系统上。对USB设备进行虚拟化,最直接最有效的方法就是将USB设备直接分配给虚拟机,而不是通过VMM对USB设备进行管理。在每次虚拟机启动以前,需要把USB设备从虚拟机中进行注销,通过VMM自带的驱动对每个USB设备重新注册。本文以KVM+LINUX的环境为例,通过对KVM进行修改的方法来实现。其具体的过程如下:首先,当虚拟机启动时,所有的USB设备并没有分配给任何虚拟机,假如发现已经分配或部分分配情况出现,则直接报错,虚拟机将注销,重新启动。当没有分配,则开始申请KVM内核的结构体,同样申请不成功,则直接报错;申请成功,要根据总线号和设备号,在PCI总线上找到对应的设备,并返回该设备的结构体,然后检查该设备是否在主机中被禁止,假如禁止,按出错处理;没被禁止,按照返回的描述结构体,将其分配至对应的链表之中,最后建立I/O页表,并将其映射到虚拟机的地址空间当中,最后将链接指定到对应的虚拟机。

总结

针对USB设备虚拟化展开研究,通过对USB设备和虚拟技术的论述,利用最直观的直接分配法进行虚拟机的设计。由于篇幅所限,对于USB虚拟化技术的其他方法并没有给出,但通过本文的描述,可以让读者对USB设备虚拟化有进一步的了解,对以后的研究工作有积极的作用。

作者:李世杰 单位:无锡市建设局

上一篇:液压与气压课虚拟教学刍议 下一篇:虚拟资本的产生及历史限度探索