CN102521015B - 嵌入式平台下的设备虚拟化方法 - Google Patents
嵌入式平台下的设备虚拟化方法 Download PDFInfo
- Publication number
- CN102521015B CN102521015B CN201110405492.9A CN201110405492A CN102521015B CN 102521015 B CN102521015 B CN 102521015B CN 201110405492 A CN201110405492 A CN 201110405492A CN 102521015 B CN102521015 B CN 102521015B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- equipment
- machine manager
- data
- described virtual
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种嵌入式平台下的设备虚拟化方法,包括步骤:将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口,判断设备的I/O是主动设备I/O还是被动设备I/O,若是主动设备I/O,判断主动设备I/O的数据量大小是否小于一预设的阈值,若小于阈值,则在虚拟机管理器中为每个虚拟机开放一段内存区域,虚拟机以可读可写的权限在用户地址空间中建立到内存区域的映射,虚拟机管理器将数据写入用户地址空间中所映射的内存区域,虚拟机直接读取内存区域,以获取数据。本发明将同步设备I/O和异步设备I/O相结合,效率较高,且真正实现了所有设备在虚拟机间共享,达到了设备虚拟化的效果。
Description
技术领域
本发明涉及嵌入式虚拟化领域,更具体地说,本发明涉及一种嵌入式平台下的设备虚拟化方法。
背景技术
嵌入式虚拟化,也就是在手机、掌上游戏机、智能化控制系统等各种嵌入了处理器芯片的电子电器系统中应用虚拟化技术,达到一个硬件平台上同时运行多个操作系统(Operating System,简称OS)的目的,以实现用户体验的多样化,或核心应用逻辑与绚丽操作界面的隔离,或为手机支付等对安全要求较高的应用提供一个隔离的计算环境。设备虚拟化是嵌入式虚拟化的核心研究内容之一,经过多年的不断研究,已提出了不少设备虚拟化方法,大体上有如下几种,在服务器和个人电脑平台上,有特权虚拟机主导型设备虚拟化、直接设备I/O和全设备模拟三种,在嵌入式平台上有独享使用,用户态特权域主导型设备虚拟化两种,本文只讨论嵌入式虚拟化系统中的设备虚拟化方法,下文着重介绍嵌入式系统中的两种设备虚拟化方法。(1)独享使用:设备以独享方式分配给指定虚拟机,即将某些设备指派给某个虚拟机单独使用,直接访问,而不允许其他虚拟机以任何方式访问这些设备,其他设备在多个虚拟机之间共享;(2)用户态特权域主导型设备虚拟化:所有设备由运行于用户态的一个域负责管理分配,其他虚拟机通过该域完成设备I/O,目前,共有两种实现方式,虚拟机型特权域和单独服务例程型特权域:①虚拟机型特权域,即将某一虚拟机作为特权域,其他虚拟机通过域间通信机制,如I/O环、共享内存、零拷贝内存映射等将设备访问请求发往特权虚拟机,特权虚拟机将所有请求做排队、合并等处理后代替其他虚拟机逐一直接访问硬件设备,并将结果仍通过域间通信机制发回各个虚拟机。②单独服务例程型特权域,即将设备驱动作为虚拟机管理器的一个用户态服务例程运行,其他虚拟机或虚拟机管理器应用程序通过进程间通信(Inter-process Communication,简称IPC)机制把设备访问请求发给该驱动服务例程,驱动服务例程在被调度执行时代替其他虚拟机或虚拟机管理器应用程序直接访问硬件设备,并将结果仍通过进程间通信机制返回给各虚拟机或虚拟机管理器应用程序。
比较以上设备虚拟化方法,直接设备I/O需要硬件支持,嵌入式系统设备不具备,无法采用;全设备模拟,效率太低,也不适用;独享使用设备虚拟化,没有实现所有设备在多个虚拟机间真正地共享,只适用于特定领域;基于特权域的主导型设备共享,设备I/O路径太长,且都是异步I/O,效率不高。嵌入式虚拟化系统需要的是一种更简单更便捷的设备虚拟化方法,而对I/O吞吐量、虚拟机动态迁移等要求不高。
发明内容
本发明的目的在于提供一种嵌入式平台下的设备虚拟化方法,在嵌入式系统硬件不支持直接设备I/O的情况下,其设备I/O路径短,将同步设备I/O和异步设备I/O相结合,效率较高,且真正实现了所有设备在虚拟机间共享,达到了设备虚拟化的效果。
本发明是通过以下技术方案实现的:
一种嵌入式平台下的设备虚拟化方法,包括以下步骤:(1)将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口,(2)判断设备的I/O是主动设备I/O还是被动设备I/O,如果设备的I/O是主动设备I/O,则进入步骤(3),如果是被动设备I/O,则进入步骤(8),(3)判断主动设备I/O的数据量大小是否小于一预设的阈值,阈值等于4096字节,如果小于阈值,则进入步骤(4),否则进入步骤(6),(4)在虚拟机管理器中为每个虚拟机开放一段内存区域,虚拟机以可读可写的权限在用户地址空间中建立到内存区域的映射,(5)虚拟机管理器将数据写入用户地址空间中所映射的内存区域,虚拟机直接读取内存区域,以获取数据,(6)在虚拟机管理器中分配缓冲区并缓存数据,通过事件通道通知虚拟机读取缓存数据,(7)虚拟机以超级调用的形式响应通知,虚拟机管理器中的超级调用处理函数把缓存数据写入用户地址空间,(8)判断被动设备I/O是否容忍丢弃,若可以丢弃则进入步骤(9),否则进入步骤(11),(9)虚拟机在其设备驱动初始化时为被动设备分配一块物理地址连续的内存缓冲区,并将内存缓冲区的物理首地址注册到虚拟机管理器中,(10)虚拟机将数据直接输出到内存缓冲区中,虚拟机管理器改变为被动设备分配的内存缓冲区的首地址,(11)判断被动设备是否正在使用,若是则进入步骤(12),否则进入步骤(15),(12)判断虚拟机中是否存在其他进程等待调度,若存在则进入步骤(13),否则进入步骤(14),(13)调度虚拟机的其他进程,(14)调度其它虚拟机,(15)虚拟机管理器对被动设备执行加锁操作,(16)虚拟机以超级调用的形式向虚拟机管理器发送I/O请求,(17)虚拟机管理器处理I/O请求,并对被动设备执行解锁操作。
若设备是接收外部数据且通知虚拟机管理器读取数据,则设备的I/O是主动设备I/O,若设备是处理从虚拟机管理器发来的I/O请求,则设备的I/O为被动设备I/O。
本发明的方法具有以下优点:
1、请求和回应的传输路径短:移动虚拟化平台(Mobile VirtualizationPlatform,简称MVP)、开放核心实验室4(Open Kernel Labs 4,简称OKL4)等虚拟化平台下虚拟机的I/O请求并非由虚拟机管理器直接处理,在到达最终处理地点之前,一般都需要虚拟机管理器的介入。而基于虚拟机管理器的设备虚拟化方法,虚拟机管理器就是最终处理地点;
2、不涉及地址空间切换,开销较小:MVP、OKL4等虚拟化平台中I/O请求的发出和执行分在两个域(如MVP中I/O请求由一个虚拟机发出,在另外一个虚拟机中执行;OKL4中的I/O请求由一个虚拟化或应用程序发出,在驱动服务例程中完成)中单独实现,完成一次I/O请求都涉及至少一次甚至更多次的内存地址空间切换,一项研究表明:地址空间切换越频繁,Cache命中率就越低,开销就越大。在基于虚拟机管理器的设备虚拟化方法中,虚拟机完全拷贝了虚拟机管理器的内存地址空间映射,虚拟机管理器中的驱动程序与虚拟机间的数据传输,可在不涉及内存地址空间切换的情况下完成;
3、调用开销更小:MVP、OKL4等虚拟化平台完成一次I/O请求实际上是一种远程过程调用(Remote Procedure Call,简称RPC),而本发明只是一至两次超级调用,效率更高。
附图说明
图1为本发明嵌入式平台下的设备虚拟化方法的流程图。
具体实施方式
首先对本发明中的技术用语进行解释和说明:
超级调用:即Hypercall,指虚拟机管理器以软中断的方式提供给虚拟机的软件接口,类似于系统功能调用。
超级调用处理函数:即虚拟机管理器中处理通过超级调用提出的请求的函数。
用户地址空间:用户态的对象如进程、运行在用户态的虚拟机的所有虚拟内存所构成的内存区间。
事件通道:即Event Channel,在Xen虚拟机管理器中使用的一种虚拟机管理器向虚拟机发送按键、网络数据包达到等事件的机制,通过虚拟机管理器和虚拟机之间的共享内存实现,用来模拟虚拟机的硬件中断。
加锁:在访问共享资源前设置的一个标志,以标记该共享资源正在被访问,用于多对象访问共享资源之间的同步。
解锁:在访问共享资源后恢复的一个标志,以标记对该共享资源的访问已结束,用于多对象访问共享资源之间的同步。
虚拟机上下文:虚拟机会通过超级调用、内存页错误等异常机制陷入虚拟机管理器,模仿进程以异常(如系统功能调用、内存页错误等)的方式进入操作系统内核时系统所处的上下文叫进程上下文,称此时的虚拟机管理器所处的上下文为虚拟机上下文。
被动设备:可接受虚拟机管理器输出的设备。
主动设备:可向虚拟机管理器发送数据的设备。
如图1所示,本发明的嵌入式平台下的设备虚拟化方法包括以下步骤:
(1)将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口,所有虚拟机均通过虚拟机管理器进行I/O;
(2)判断设备的I/O是主动设备I/O还是被动设备I/O,如果设备的I/O是主动设备I/O,则进入步骤(3),如果是被动设备I/O,则进入步骤(8),具体来说,若设备是接收外部数据且通知虚拟机管理器读取数据,即虚拟机从设备接收,则设备的I/O是主动设备I/O,若设备是处理从虚拟机管理器发来的I/O请求,即虚拟机向设备发送数据,则设备的I/O为被动设备I/O。如此划分原因在于,虚拟机一般通过硬件中断的方式从设备接收数据,而通过超级调用的方式向设备发送数据,接收数据的中断处理函数运行于中断上下文,不宜访问用户地址空间,即虚拟机的地址空间,接收到的数据不能直接写入虚拟机的内存中;发送数据的超级调用处理函数处于类似于进程上下文的虚拟机上下文中,可访问用户地址空间,即虚拟机的地址空间,将发送的数据可以直接从虚拟机内存中获取;
(3)判断主动设备I/O的数据量大小是否小于一预设的阈值,如果小于阈值,则进入步骤(4),否则进入步骤(6),在本实施方式中,阈值等于4096字节,在其它实施方式中,阈值可以更小,这是一种较灵活的处理方法,数据量较小时可通过方便快捷的大小确定的共享内存的方式传输,数据量较大时通过复杂缓慢的临时缓存通知读取的方式传输。数据量较小的主动设备I/O如键盘、鼠标、触摸屏等产生的数据,数据量,数据量较大的主动设备I/O如网卡、录音设备、摄像头等产生的数据;
(4)在虚拟机管理器中为每个虚拟机开放一段内存区域,内存区域一般为一页,即4096字节大小,虚拟机以可读可写的权限在自己的操作系统地址空间中建立到该内存区域的映射,从而建立起虚拟机管理器和虚拟机之间的共享内存;
(5)虚拟机管理器中的中断处理程序,在读取到设备中的数据后,将该数据写入刚建立好的共享内存中,虚拟机根据虚拟机中的这块内存的地址,直接读取这块共享内存,以获取数据;
(6)虚拟机管理器中的中断处理程序,在读取到设备中的数据后,临时分配缓冲区缓存数据,且通过事件通道通知虚拟机读取该数据;
(7)虚拟机以超级调用的形式响应通知,由于超级调用的整个过程都处于虚拟机上下文中,虚拟机管理器中的超级调用处理函数直接把缓存数据写入虚拟机的地址空间,且释放缓存该数据的内存;
(8)判断被动设备I/O是否容忍丢弃,若可以丢弃则进入步骤(9),否则进入步骤(11),对于虚拟机的某些设备I/O,如图形图像显示,只要求保证前台虚拟机的显示不丢失,后台虚拟机的前一次显示输出可以覆盖后一次,即允许丢失;
(9)虚拟机在其设备驱动初始化时为有被动设备I/O的设备分配一块物理地址连续的内存缓冲区,并将内存缓冲区的物理首地址注册到虚拟机管理器中;
(10)在进行设备I/O时,虚拟机将数据直接输出到内存缓冲区中,在该虚拟机被切换到前台时,虚拟机管理器更改设备直接内存存取(DirectMemory Access,简称DMA)缓冲区的物理内存首地址为该虚拟机预先注册到虚拟机管理器的内存缓冲区的首地址;
(11)判断设备是否正在使用,若是则进入步骤(12),否则进入步骤(15);
(12)判断虚拟机中是否存在其他进程等待调度,若存在则进入步骤(13),否则进入步骤(14);
(13)调度虚拟机的其他进程运行;
(14)请求虚拟机管理器调度其它虚拟机运行;
(15)虚拟机管理器对被动设备执行加锁操作;
(16)虚拟机以超级调用的形式向虚拟机管理器发送I/O请求;
(17)虚拟机管理器处理I/O请求,并对被动设备执行解锁操作。
Claims (2)
1.一种嵌入式平台下的设备虚拟化方法,包括以下步骤:
(1)将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口;
(2)判断所述设备的I/O是主动设备I/O还是被动设备I/O,如果所述设备的I/O是主动设备I/O,则进入步骤(3),如果是被动设备I/O,则进入步骤(8);
(3)判断所述主动设备I/O的数据量大小是否小于一预设的阈值,所述阈值等于4096字节,如果小于所述阈值,则进入步骤(4),否则进入步骤(6);
(4)在所述虚拟机管理器中为每个虚拟机开放一段内存区域,所述虚拟机以可读可写的权限在用户地址空间中建立到所述内存区域的映射;
(5)所述虚拟机管理器将数据写入所述用户地址空间中所映射的内存区域,所述虚拟机直接读取所述内存区域,以获取所述数据,然后过程结束;
(6)在所述虚拟机管理器中分配缓冲区并缓存数据,通过事件通道通知所述虚拟机读取所述缓存数据;
(7)所述虚拟机以所述超级调用的形式响应通知,所述虚拟机管理器中的超级调用处理函数把所述缓存数据写入所述用户地址空间,然后过程结束;
(8)判断所述被动设备I/O是否容忍丢弃,若可以丢弃则进入步骤(9),否则进入步骤(11);
(9)所述虚拟机在其设备驱动初始化时为被动设备分配一块物理地址连续的内存缓冲区,并将所述内存缓冲区的物理首地址注册到所述虚拟机管理器中;
(10)所述虚拟机将数据直接输出到所述内存缓冲区中,所述虚拟机管理器改变为被动设备分配的内存缓冲区的首地址,然后过程结束;
(11)判断所述被动设备是否正在使用,若是则进入步骤(12),否则进入步骤(15);
(12)判断所述虚拟机中是否存在其他进程等待调度,若存在则进入步骤(13),否则进入步骤(14);
(13)调度所述虚拟机的其他进程,然后过程结束;
(14)调度其它虚拟机,然后过程结束;
(15)所述虚拟机管理器对所述被动设备执行加锁操作;
(16)所述虚拟机以超级调用的形式向所述虚拟机管理器发送I/O请求;
(17)所述虚拟机管理器处理所述I/O请求,并对所述被动设备执行解锁操作,然后过程结束。
2.根据权利要求1所述的设备虚拟化方法,其特征在于,若所述设备是接收外部数据且通知所述虚拟机管理器读取所述数据,则所述设备的I/O是主动设备I/O,若所述设备是处理从所述虚拟机管理器发来的I/O请求,则所述设备的I/O为被动设备I/O。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110405492.9A CN102521015B (zh) | 2011-12-08 | 2011-12-08 | 嵌入式平台下的设备虚拟化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110405492.9A CN102521015B (zh) | 2011-12-08 | 2011-12-08 | 嵌入式平台下的设备虚拟化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521015A CN102521015A (zh) | 2012-06-27 |
CN102521015B true CN102521015B (zh) | 2014-03-26 |
Family
ID=46291954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110405492.9A Expired - Fee Related CN102521015B (zh) | 2011-12-08 | 2011-12-08 | 嵌入式平台下的设备虚拟化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521015B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559075B (zh) * | 2013-10-30 | 2016-10-05 | 华为技术有限公司 | 一种数据传输方法、装置和系统及内存装置 |
DE102015214424A1 (de) * | 2015-07-29 | 2017-02-02 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Kommunizieren zwischen virtuellen Maschinen |
CN106959881B (zh) * | 2016-01-08 | 2021-06-22 | 华为技术有限公司 | 发送数据的方法和装置 |
US9891945B2 (en) * | 2016-03-21 | 2018-02-13 | Qualcomm Incorporated | Storage resource management in virtualized environments |
CN110221867A (zh) * | 2019-05-31 | 2019-09-10 | 湖北三江航天万峰科技发展有限公司 | 一种xp系统下脉冲i/o功能卡通信驱动系统及方法 |
CN110308974A (zh) * | 2019-07-11 | 2019-10-08 | 联想(北京)有限公司 | 一种数据处理方法、虚拟机装置及虚拟机架构 |
CN110572304B (zh) * | 2019-08-08 | 2021-07-06 | 深圳拓邦股份有限公司 | 一种设备权限转移方法、装置、存储介质及电子设备 |
CN111309649B (zh) * | 2020-02-11 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 一种数据传输和任务处理方法、装置及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
US7814496B2 (en) * | 2005-08-19 | 2010-10-12 | Intel Corporation | Method and system for replicating schedules with regard to a host controller for virtualization |
-
2011
- 2011-12-08 CN CN201110405492.9A patent/CN102521015B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814496B2 (en) * | 2005-08-19 | 2010-10-12 | Intel Corporation | Method and system for replicating schedules with regard to a host controller for virtualization |
CN101520738A (zh) * | 2008-02-27 | 2009-09-02 | 黄歆媚 | 基于设备访存管理技术的虚拟机系统及其设备访问方法 |
Non-Patent Citations (2)
Title |
---|
I/O Device Virtualization in the multi-core era, a QoS perspective;J. Lakshmi等;《In the Grid and Pervasive Computing Conference 2009》;20091231;第128-135页 * |
J.Lakshmi等.I/ODeviceVirtualizationinthemulti-coreera a QoS perspective.《In the Grid and Pervasive Computing Conference 2009》.2009 |
Also Published As
Publication number | Publication date |
---|---|
CN102521015A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521015B (zh) | 嵌入式平台下的设备虚拟化方法 | |
US8924959B2 (en) | Switching hardware devices in virtual machine systems using resource converting relationships | |
Suzuki et al. | {GPUvm}: Why Not Virtualizing {GPUs} at the Hypervisor? | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
EP3185128A1 (en) | Gpu virtualisation | |
WO2018119952A1 (zh) | 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
US10409633B2 (en) | Hypervisor-visible guest thread management | |
US10852990B2 (en) | Hybrid framework of NVMe-based storage system in cloud computing environment | |
CN101520738A (zh) | 基于设备访存管理技术的虚拟机系统及其设备访问方法 | |
CN103282881A (zh) | 通过虚拟化直接共享智能设备 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN103593185A (zh) | 基于单Linux内核的多Android系统共享输入显示设备的方法 | |
CN102207886A (zh) | 虚拟机快速仿真辅助 | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
CN110447012B (zh) | 协作虚拟处理器调度 | |
CN100568180C (zh) | 一种虚拟机系统及其显卡访问方法 | |
US20220156103A1 (en) | Securing virtual machines in computer systems | |
CN113419845A (zh) | 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质 | |
US20130117762A1 (en) | Information processing apparatus, information processing method, and computer product | |
CN109857517B (zh) | 一种虚拟化系统及其数据交换方法 | |
Chang et al. | Virtualization technology for TCP/IP offload engine | |
Li et al. | The Quest-V separation kernel for mixed criticality systems | |
CN108304248A (zh) | 一种多系统虚拟化的移动设备 | |
CN116225614A (zh) | 一种安全密码模块分片虚拟化方法及系统 | |
Miliadis et al. | VenOS: A Virtualization Framework for Multiple Tenant Accommodation on Reconfigurable Platforms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140326 Termination date: 20201208 |
|
CF01 | Termination of patent right due to non-payment of annual fee |