CN112506818B - 一种基于软件模拟的usb硬件虚拟化方法 - Google Patents

一种基于软件模拟的usb硬件虚拟化方法 Download PDF

Info

Publication number
CN112506818B
CN112506818B CN202011423363.8A CN202011423363A CN112506818B CN 112506818 B CN112506818 B CN 112506818B CN 202011423363 A CN202011423363 A CN 202011423363A CN 112506818 B CN112506818 B CN 112506818B
Authority
CN
China
Prior art keywords
usb
hardware
virtual
application program
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011423363.8A
Other languages
English (en)
Other versions
CN112506818A (zh
Inventor
颜亮
文刚
刘栋
赖韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 30 Research Institute
Original Assignee
CETC 30 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 30 Research Institute filed Critical CETC 30 Research Institute
Priority to CN202011423363.8A priority Critical patent/CN112506818B/zh
Publication of CN112506818A publication Critical patent/CN112506818A/zh
Application granted granted Critical
Publication of CN112506818B publication Critical patent/CN112506818B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明公开了一种基于软件模拟的USB硬件虚拟化方法,包括以下步骤:S1、在操作系统启动时自动加载USB主机控制器驱动和配套的应用程序;S2、为配套的应用程序设置必要参数;S3、将USB硬件接入操作系统,通过主机控制驱动自动根据物理设备的信息虚拟出多个USB虚拟设备;S4、通过操作系统识别出多个USB虚拟设备并添加到设备列表。本发明改进了传统的USB设备虚拟化技术,支持一个设备同时虚拟出多个,最高可支持128个功能完全相同的硬件设备,每一个虚拟出的硬件设备可同时独立工作,互不影响。

Description

一种基于软件模拟的USB硬件虚拟化方法
技术领域
本发明涉及USB硬件虚拟化技术领域,具体涉及一种基于软件模拟的USB硬件虚拟化方法。
背景技术
USB硬件设备虚拟化是解决连接在主机的USB硬件设备在远程的其它系统上使用的一种通用技术。一般的实现方案为通过网络的方式,将USB设备定向到其它系统,如运行在主机的虚拟机系统、主机连接的云终端系统、局域网内其它主机等。现有的实现方案如USBRedirector、USBIP等都已实现通过网络的方式,通过安装在主机与远程主机的程序,将连接在主机的USB设备重定向到远程的系统,在远程操作系统无需做任何特殊配置即可使用重定向的虚拟USB设备。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于软件模拟的USB硬件虚拟化方法解决了主机端与虚拟机系统无法同时使用USB设备,一个硬件设备无法同时映射到多个不同的系统的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于软件模拟的USB硬件虚拟化方法,包括以下步骤:
S1、在操作系统启动时自动加载USB主机控制器驱动和配套的应用程序;
S2、为配套的应用程序设置必要参数;
S3、将USB硬件接入操作系统,通过主机控制驱动自动根据物理设备的信息虚拟出多个USB虚拟设备;
S4、通过操作系统识别出多个USB虚拟设备并添加到设备列表。
进一步地:所述步骤S2中的必要参数包括:需要虚拟化的硬件设备信息,如PID和VID;需要虚拟的硬件个数;虚拟硬件的硬件设备信息,如PID、VID、物理序列号、名称和描述信息。
进一步地:所述USB虚拟设备的具体使用流程为:
A、通过应用程序根据PID和VID信息枚举USB虚拟设备;
B、根据需要通过应用程序选择一个USB虚拟设备;
C、通过应用程序以使用物理设备的方式使用USB虚拟设备。
进一步地:所述步骤C的具体步骤为:
C1、通过USB虚拟化的主机控制驱动获取应用程序发送的USB请求,将请求路由到物理设备中;
C2、通过物理设备响应该USB请求,并通过主机控制驱动将响应结果写入USB虚拟设备的输出端口;
C3、通过应用程序获取到主机控制驱动提交的响应结果并使用。
进一步地:所述应用程序可将USB虚拟硬件再次提供给USB映射软件,USB映射软件可任意选择一个虚拟设备并映射到其它操作系统,实现同一个USB硬件在多个不同操作系统中使用。
进一步地:对所述USB请求进行细粒度的切片管理与协同,适应简单和复杂的USB硬件,保证多个USB虚拟硬件并发访问时无差错的响应。
进一步地:所述对USB请求进行细粒度的切片管理与协同具体为:
针对无状态机的单次请求,主机控制驱动内部实现请求队列,当响应完成后再执行下一个请求;
针对需要多个特定请求按序响应的设备,主机控制驱动抽象出设备的操作流程,将一个顺序流封装到抽象的操作流中,在顺序流完成后执行下一个操作流;
针对有状态机的硬件设备,主机控制驱动无需协同。
本发明的有益效果为:本发明改进了传统的USB设备虚拟化技术,支持一个设备同时虚拟出多个,最高可支持128个功能完全相同的硬件设备,每一个虚拟出的硬件设备可同时独立工作,互不影响。虚拟出的USB设备与物理USB设备的使用方式完全相同,可通过虚拟机软件本身的USB映射功能映射到虚拟机系统中使用,也可通过USBIP、USBRedirector等映射软件将设备重定向到其它系统中使用。同时,基于USB指令的细粒度切片管理与协同,保证每一个虚拟设备的功能正确且不干扰其它设备的正常使用。
(1)本发明适应性极高,支持的USB协议包括自USB1.0至USB3.2所有版本USB协议。支持的USB设备,包括但不仅限于:USB智能卡、USB存储设备、USB键盘、USB鼠标、USB摄像头;
(2)本发明支持市面上主流操作系统,包括但不仅限于:Windows操作系统(Win7、win10)、通用Linux操作系统(Ubuntu、CentOS)、信创操作系统(中标麒麟、银河麒麟、UOS优信操作系统)、Android 7以上版本操作系统;
(3)本发明与传统的USB设备虚拟化相比,本方法可将一个物理设备虚拟成多个相互独立的USB设备,各个虚拟设备可当真实的物理设备使用,互不影响;
(4)本发明虚拟出的USB设备可再通过通用的USB硬件映射程序,映射到其它不同系统中使用,扩展了USB硬件设备的用途;
(5)本发明基于USB请求的细粒度切片管理,使用抢占式的调度方式,保证了每一个虚拟的设备都能正常使用到物理设备资源。
附图说明
图1为本发明流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,一种基于软件模拟的USB硬件虚拟化方法,包括以下步骤:
S1、在操作系统启动时自动加载USB主机控制器驱动和配套的应用程序;
S2、为配套的应用程序设置必要参数;
a)配置需要虚拟化的硬件设备信息,如PID,VID等;
b)配置需要虚拟的硬件个数;
c)配置虚拟硬件的硬件设备信息,如PID、VID、物理序列号、名称、描述信息等。
S3、将USB硬件接入操作系统,通过主机控制驱动自动根据物理设备的信息虚拟出多个USB虚拟设备;
S4、通过操作系统识别出多个USB虚拟设备并添加到设备列表。
应用程序对虚拟USB设备的具体使用流程按以下方式:
1.应用程序根据PID、VID等信息枚举虚拟化设备
2.应用程序根据自己的需要,选择一个虚拟化设备使用
3.应用程序以使用物理设备的方式使用虚拟化设备,详细流程如下:
1)USB虚拟化的主机控制驱动首先获取到应用程序发送的USB请求,将请求路由到真实的物理设备中。
2)物理设备对该请求响应,主机控制驱动将结果写入虚拟设备的输出端口;
3)应用程序获取到主机控制驱动提交的返回结果并使用。
本发明实现的USB硬件虚拟化方法,在应用程序使用方面,可将虚拟化USB硬件再次提供给USBRedirector,USBIP等传统的USB映射软件使用,USB映射软件可选择任意一个虚拟设备并映射到其它操作系统,实现同一个USB物理硬件在多个不同的操作系统中使用。
本发明实现的USB硬件虚拟化方法,通过对USB请求进行细粒度的切片管理与协同,适应简单的和复杂的USB设备,保证多个虚拟硬件并发访问时无差错地响应,避免真实的物理设备对某些虚拟设备长期占用而导致其它虚拟设备“饥饿”的现象。
USB请求细粒度切片管理与协同需要考虑USB硬件的特性,从以下几个方面考虑:
(1)设备内部无状态机,只能实现请求->响应模式,中途不能被打断
(2)设备内部无状态机,且需要多个特定的请求按序请求->响应,中途不能打断
(3)设备内部有状态机,能处理请求->响应中途被打断的请求
根据设备的不同特性,解决设备请求协同以如下几种方式实现:
(1)针对无状态机的单次请求->响应设备,主机控制驱动内部实现请求队列,当响应完成后再执行下一个请求
(2)针对需要多个特定请求按序响应的设备,主机控制驱动抽象出设备的操作流程,将一个顺序流封装到抽象的操作流中,顺序流完成后再执行下一个操作流
(3)有状态机的硬件设备,主机控制驱动无需做过多的协同。

Claims (3)

1.一种基于软件模拟的USB硬件虚拟化方法,其特征在于,包括以下步骤:
S1、在操作系统启动时自动加载USB主机控制器驱动和配套的应用程序;
S2、为配套的应用程序设置必要参数;
S3、将USB硬件接入操作系统,通过主机控制驱动自动根据物理设备的信息虚拟出多个USB虚拟设备;
S4、通过操作系统识别出多个USB虚拟设备并添加到设备列表;
所述USB虚拟设备的具体使用流程为:
A、通过应用程序根据PID和VID信息枚举USB虚拟设备;
B、根据需要通过应用程序选择一个USB虚拟设备;
C、通过应用程序以使用物理设备的方式使用USB虚拟设备;
所述步骤C的具体步骤为:
C1、通过USB虚拟化的主机控制驱动获取应用程序发送的USB请求,将请求路由到物理设备中;
C2、通过物理设备响应该USB请求,并通过主机控制驱动将响应结果写入USB虚拟设备的输出端口;
C3、通过应用程序获取到主机控制驱动提交的响应结果并使用;
对所述USB请求进行细粒度的切片管理与协同,适应简单和复杂的USB硬件,保证多个USB虚拟硬件并发访问时无差错的响应;
所述对USB请求进行细粒度的切片管理与协同具体为:
针对无状态机的单次请求,主机控制驱动内部实现请求队列,当响应完成后再执行下一个请求;
针对需要多个特定请求按序响应的设备,主机控制驱动抽象出设备的操作流程,将一个顺序流封装到抽象的操作流中,在顺序流完成后执行下一个操作流;
针对有状态机的硬件设备,主机控制驱动无需协同。
2.根据权利要求1所述的基于软件模拟的USB硬件虚拟化方法,其特征在于,所述步骤S2中的必要参数包括:需要虚拟化的硬件设备信息,如PID和VID;需要虚拟的硬件个数;虚拟硬件的硬件设备信息,如PID、VID、物理序列号、名称和描述信息。
3.根据权利要求1所述的基于软件模拟的USB硬件虚拟化方法,其特征在于,所述应用程序可将USB虚拟硬件再次提供给USB映射软件,USB映射软件可任意选择一个虚拟设备并映射到其它操作系统,实现同一个USB硬件在多个不同操作系统中使用。
CN202011423363.8A 2020-12-08 2020-12-08 一种基于软件模拟的usb硬件虚拟化方法 Active CN112506818B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011423363.8A CN112506818B (zh) 2020-12-08 2020-12-08 一种基于软件模拟的usb硬件虚拟化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011423363.8A CN112506818B (zh) 2020-12-08 2020-12-08 一种基于软件模拟的usb硬件虚拟化方法

Publications (2)

Publication Number Publication Date
CN112506818A CN112506818A (zh) 2021-03-16
CN112506818B true CN112506818B (zh) 2022-05-31

Family

ID=74971284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011423363.8A Active CN112506818B (zh) 2020-12-08 2020-12-08 一种基于软件模拟的usb硬件虚拟化方法

Country Status (1)

Country Link
CN (1) CN112506818B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282527B (zh) * 2021-05-08 2024-08-13 珠海金智维信息科技有限公司 一种实现usb设备切换管理的方法、装置和主机
CN113590218A (zh) * 2021-07-27 2021-11-02 深圳市发掘科技有限公司 一种虚拟设备共享方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523264A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 面向虚拟机的usb设备远程共享方法和系统
CN107203409A (zh) * 2017-04-10 2017-09-26 成都长天信息技术有限公司 一种usb重定向处理方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050209842A1 (en) * 2004-03-16 2005-09-22 Digi International Inc. Remote USB port system and method
US8181176B2 (en) * 2010-06-21 2012-05-15 Intel Corporation Uniform storage device access using partial virtual machine executing within a secure enclave session
CN102609298B (zh) * 2012-01-11 2016-01-13 中国科学技术大学苏州研究院 基于硬件队列扩展的网卡虚拟化系统及其方法
KR101720654B1 (ko) * 2012-09-14 2017-03-28 한국전자통신연구원 가상화 시스템 및 가상화 서비스 제공방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523264A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 面向虚拟机的usb设备远程共享方法和系统
CN107203409A (zh) * 2017-04-10 2017-09-26 成都长天信息技术有限公司 一种usb重定向处理方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Sharing A USB With Multiple Virtual Machines At Once";mikerohan;《https://forum.proxmox.com/threads/sharing-a-usb-with-multiple-virtual-machines-at-once.51250/》;20190131;全文 *
"USB OVER Network用法 共享USB端口 虚拟机";看见就非常;《https://www.360doc.com/content/12/0818/19/21412_231006404.shtml》;20120818;全文 *

Also Published As

Publication number Publication date
CN112506818A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
US8271743B2 (en) Automated paging device management in a shared memory partition data processing system
EP2335156B1 (en) Virtualized storage assignment method
US8291135B2 (en) Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode
US9086904B2 (en) Live migration of virtual machine during direct access to storage over SR IOV adapter
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
JP3653159B2 (ja) 仮想計算機システム間の仮想計算機移動制御方法
EP1380947B1 (en) Method for forking or migrating a virtual machine
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US20080162800A1 (en) Computer, Control Method for Virtual Device, and Program Thereof
EP4050477A1 (en) Virtual machine migration techniques
US9454489B2 (en) Exporting guest spatial locality to hypervisors
US20160085568A1 (en) Hybrid virtualization method for interrupt controller in nested virtualization environment
US20130346613A1 (en) Scheduling a processor to support efficient migration of a virtual machine
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
CN112506818B (zh) 一种基于软件模拟的usb硬件虚拟化方法
JP2013511079A (ja) 仮想マシンの対称型ライブ・マイグレーション
US8898444B1 (en) Techniques for providing a first computer system access to storage devices indirectly through a second computer system
US20140215467A1 (en) Method and Virtualization Controller for Managing a Computer Resource With at Least Two Virtual Machines
US11922043B2 (en) Data migration between storage systems
US20240184612A1 (en) Virtual machine live migration with direct-attached non-volatile memory express device
CN114816648A (zh) 一种计算装置和计算方法
TWI497294B (zh) 用於增加虛擬記憶體效能之電腦可讀儲存媒體、設備及電腦實施方法
CN118210593A (zh) 一种虚拟机绑核方法及计算设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant