嵌入式平台下的设备虚拟化方法技术

技术编号:7466856 阅读:186 留言:0更新日期:2012-06-29 07:55
本发明专利技术公开了一种嵌入式平台下的设备虚拟化方法,包括步骤:将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口,判断设备的I/O是主动设备I/O还是被动设备I/O,若是主动设备I/O,判断主动设备I/O的数据量大小是否小于一预设的阈值,若小于阈值,则在虚拟机管理器中为每个虚拟机开放一段内存区域,虚拟机以可读可写的权限在用户地址空间中建立到内存区域的映射,虚拟机管理器将数据写入用户地址空间中所映射的内存区域,虚拟机直接读取内存区域,以获取数据。本发明专利技术将同步设备I/O和异步设备I/O相结合,效率较高,且真正实现了所有设备在虚拟机间共享,达到了设备虚拟化的效果。

【技术实现步骤摘要】

本专利技术涉及嵌入式虚拟化领域,更具体地说,本专利技术涉及一种。
技术介绍
嵌入式虚拟化,也就是在手机、掌上游戏机、智能化控制系统等各种嵌入了处理器芯片的电子电器系统中应用虚拟化技术,达到一个硬件平台上同时运行多个操作系统 (Operating System,简称OS)的目的,以实现用户体验的多样化,或核心应用逻辑与绚丽操作界面的隔离,或为手机支付等对安全要求较高的应用提供一个隔离的计算环境。设备虚拟化是嵌入式虚拟化的核心研究内容之一,经过多年的不断研究,已提出了不少设备虚拟化方法,大体上有如下几种,在服务器和个人电脑平台上,有特权虚拟机主导型设备虚拟化、直接设备I/O和全设备模拟三种,在嵌入式平台上有独享使用,用户态特权域主导型设备虚拟化两种,本文只讨论嵌入式虚拟化系统中的设备虚拟化方法,下文着重介绍嵌入式系统中的两种设备虚拟化方法。(1)独享使用设备以独享方式分配给指定虚拟机,即将某些设备指派给某个虚拟机单独使用,直接访问,而不允许其他虚拟机以任何方式访问这些设备,其他设备在多个虚拟机之间共享;( 用户态特权域主导型设备虚拟化所有设备由运行于用户态的一个域负责管理分配,其他虚拟机通过该域完成设备1/0,目前,共有两种实现方式,虚拟机型特权域和单独服务例程型特权域①虚拟机型特权域,即将某一虚拟机作为特权域,其他虚拟机通过域间通信机制,如I/O环、共享内存、零拷贝内存映射等将设备访问请求发往特权虚拟机,特权虚拟机将所有请求做排队、合并等处理后代替其他虚拟机逐一直接访问硬件设备,并将结果仍通过域间通信机制发回各个虚拟机。②单独服务例程型特权域,即将设备驱动作为虚拟机管理器的一个用户态服务例程运行,其他虚拟机或虚拟机管理器应用程序通过进程间通信(Inter-process Communication,简称IPC)机制把设备访问请求发给该驱动服务例程,驱动服务例程在被调度执行时代替其他虚拟机或虚拟机管理器应用程序直接访问硬件设备,并将结果仍通过进程间通信机制返回给各虚拟机或虚拟机管理器应用程序。比较以上设备虚拟化方法,直接设备1/0需要硬件支持,嵌入式系统设备不具备, 无法采用;全设备模拟,效率太低,也不适用;独享使用设备虚拟化,没有实现所有设备在多个虚拟机间真正地共享,只适用于特定领域;基于特权域的主导型设备共享,设备1/0路径太长,且都是异步1/0,效率不高。嵌入式虚拟化系统需要的是一种更简单更便捷的设备虚拟化方法,而对1/0吞吐量、虚拟机动态迁移等要求不高。
技术实现思路
本专利技术的目的在于提供一种,在嵌入式系统硬件不支持直接设备1/0的情况下,其设备1/0路径短,将同步设备1/0和异步设备1/0相结合, 效率较高,且真正实现了所有设备在虚拟机间共享,达到了设备虚拟化的效果。本专利技术是通过以下技术方案实现的一种,包括以下步骤(1)将嵌入式平台中所有设备的驱动整合到虚拟机管理器中,并以超级调用的形式向虚拟机提供I/O接口,( 判断设备的I/O是主动设备I/O还是被动设备1/0,如果设备的I/O是主动设备1/0,则进入步骤 (3),如果是被动设备1/0,则进入步骤(8),(3)判断主动设备I/O的数据量大小是否小于一预设的阈值,阈值等于4096字节,如果小于阈值,则进入步骤0),否则进入步骤(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是主动设备 1/0,若设备是处理从虚拟机管理器发来的I/O请求,则设备的I/O为被动设备I/O。本专利技术的方法具有以下优点1、请求和回应的传输路径短移动虚拟化平台(Mobile Visualization Platform,简称MVP)、开放核心实验室4 (Open Kernel Labs 4,简称0KL4)等虚拟化平台下虚拟机的I/O请求并非由虚拟机管理器直接处理,在到达最终处理地点之前,一般都需要虚拟机管理器的介入。而基于虚拟机管理器的设备虚拟化方法,虚拟机管理器就是最终处理地点;2、不涉及地址空间切换,开销较小MVP、0KL4等虚拟化平台中I/O请求的发出和执行分在两个域(如MVP中I/O请求由一个虚拟机发出,在另外一个虚拟机中执行;0KL4 中的I/O请求由一个虚拟化或应用程序发出,在驱动服务例程中完成)中单独实现,完成一次I/O请求都涉及至少一次甚至更多次的内存地址空间切换,一项研究表明地址空间切换越频繁,Cache命中率就越低,开销就越大。在基于虚拟机管理器的设备虚拟化方法中, 虚拟机完全拷贝了虚拟机管理器的内存地址空间映射,虚拟机管理器中的驱动程序与虚拟机间的数据传输,可在不涉及内存地址空间切换的情况下完成;3、调用开销更小MVP、0KL4等虚拟化平台完成一次I/O请求实际上是一种远程过程调用(Remote Procedure Call,简称RPC),而本专利技术只是一至两次超级调用,效率更高。附图说明图1为本专利技术的流程图。具体实施方式首先对本专利技术中的技术用语进行解释和说明超级调用即Hypercall,指虚拟机管理器以软中断的方式提供给虚拟机的软件接口,类似于系统功能调用。超级调用处理函数即虚拟机管理器中处理通过超级调用提出的请求的函数。用户地址空间用户态的对象如进程、运行在用户态的虚拟机的所有虚拟内存所构成的内存区间。事件通道即Event Channel,在Xen虚拟机管理器中使用的一种虚拟机管理器向虚拟机发送按键、网络数据包达到等事件的机制,通过虚拟机管理器和虚拟机之间的共享内存实现,用来模拟虚拟机的硬件中断。加锁在访问共享资源前设置的一个标志,以标记该共享资源正在被访问,用于多对象访问共享资源之间的同步。解锁在访问共享资源后恢复的一个标志,以标记对该共享资源的访问已结束,用于多对象访问共享资源之间的同步。虚拟机上下文虚拟机会通过超级调用、内存页错误等异常机制陷入虚拟机管理器,模仿进程以异常(如系统功能调用、内存页错误等)的方式进入操作系统内核时系统所处的上下文叫进本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:金海邵志远伍箴水李海峰段培罗晶
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术