嵌入式平台下半虚拟化的快速切换客户操作系统的方法

文档序号:6381066阅读:153来源:国知局
专利名称:嵌入式平台下半虚拟化的快速切换客户操作系统的方法
技术领域
本发明属于嵌入式虚拟化领域,更具体地,涉及一种嵌入式平台下半虚拟化的快速切换客户操作系统的方法。
背景技术
随着云计算和硬件技术的快速发展,人们越来越依赖信息化技术,嵌入式终端设备显得愈发重要和普及。为了争取市场的领导地位,主要厂商各自为政,纷纷推出自己的操作系统,引起大量兼容性问题,要最大限度地发挥嵌入式设备的价值,必须利用虚拟化技术,提高设备的利用效率。对于嵌入式虚拟化,目前主要有两种解决方案( I)基于主机和客户端模型主机运行在硬件上,客户端运行在主机的虚拟机上。(2)基于Xen的虚拟化模型存在一个Domain O和多个Domain U,Domain O允许访问硬件,而Domain U只能向Domain O发出访问请求。对于第一种解决方案,实现简单,主机的优先级高,客户端优先级低。在该模型中,主机往往是主操作系统,直接使用各种硬件资源,在客户操作系统切换时,客户操作系统需要从主机中拷贝各种硬件的信息,而且客户操作系统的优先级低,直接降低了硬件信息的拷贝速度,从而导致客户操作系统切换速度慢;对于第二种解决方案,Domain O管理所有的硬件,内存根据气球算法分配,在客户操作系统切换时不仅需要对硬件信息进行恢复,还有重新映射内存,从而导致客户操作系统的切换速度慢。这两种解决方案中都没有很好的解决客户操作系统切换速度慢的问题。以上两种解决方案各具特色,但是都不能很好的解决嵌入式虚拟化面临的问题,嵌入式平台需要一种简单便捷的虚拟化方法,并提供良好的交互性。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种嵌入式平台下半虚拟化的快速切换客户操作系统的方法,旨在解决现有方法中存在的客户操作系统切换速度慢的问题。 为实现上述目的,本发明提供了一种嵌入式平台下半虚拟化的快速切换客户操作系统的方法,包括以下步骤(I)在嵌入式虚拟机内核启动的同时加载第一客户操作系统和第二客户操作系统的内核,并把嵌入式虚拟机内核本身、第一客户操作系统内核和第二客户操作系统内核移动到指定的内存区域;(2)嵌入式虚拟机内核为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件信息缓冲区,并在第一客户操作系统和/或第二客户操作系统启动的同时填充第一客户操作系统和/或第二客户操作系统的中央处理器寄存器缓冲区和硬件信息缓冲区;(3)嵌入式虚拟机内核通过保存和恢复第一客户操作系统或第二客户操作系统中央处理器寄存器缓冲区和硬件信息缓冲区实现客户操作系统的快速切换。步骤(I)包括以下子步骤(1-1)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的内核加载到空闲内存区域。(1-2)嵌入式虚拟机内核把自身转移在0_9MByte之间;(1-3)嵌入式虚拟机内核把第一客户操作系统转移到9_128MByte之间,第二客户操作系统转移到128-256MByte之间;(1-4)第一客户操作系统内核把自身的内存起始地址和结束地址定为9MByte和 128Mbyte,第二客户操作系统内核把自身的内存起始地址和结束地址定为128MByte和256MByte ο步骤(2)包含以下子步骤(2-1)嵌入式虚拟机内核中为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件设备信息缓冲区;(2-2)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的中央处理器寄存器缓冲区和硬件设备信息缓冲区初始化为零;(2-3)嵌入式虚拟机内核根据硬件信息在第一客户操作系统和第二客户操作系统的硬件设备信息缓冲区为每个特定硬件分配内存区间。步骤(3)包括以下子步骤(3-1)接收客户操作系统切换信号,判断当前客户操作系统,如果是第一客户操作系统则跳到步骤(3-2),如果是第二客户操作系统则跳到步骤(3-9),如果为空则忽略信号;(3-2)判断嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区是否为空,若为空,则进入(3-3 ),否则进入(3-9 );(3-3)返回第一客户操作系统;(3-4)把第一客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第一客户操作系统的中央处理器寄存器缓冲区中,把第二客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中;(3-5)判断嵌入式虚拟机内核中第二客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-6),否则进入(3-7);(3-6)把嵌入式虚拟机内核中第一客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第一客户操作系统;(3-7)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第一客户操作系统硬件设备信息缓冲区,把第二客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中;(3-8)切换到第二客户操作系统;(3-9)把第二客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第二客户操作系统的中央处理器寄存器缓冲区中,把第一客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中;(3-10)判断嵌入式虚拟机内核中第一客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-11),否则进入(3-12);(3-11)把嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第二客户操作系统;(3-12)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第二客户操作系统硬件设备信息缓冲区,把第一客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中;(3-13)切换到第一客户操作系统;第一客户操作系统为Android系统,第二客户操作系统为ARM Linux系统。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果
(I)客户操作系统切换速度快由于客户操作系统的中央处理器信息、内存信息和设备信息都缓存在嵌入式虚拟机内核中,在切换的时候只需要把相关信息重新写入中央处理器和设备的寄存器中即可,免去了内存复制、页表切换和内核重新加载等步骤,速度明显提闻;( 2 )稳定性高由于客户操作系统的信息根据硬件的规格在内存中被严格划分,虚拟机内核和客户操作系统均不能改动,所以在客户操作系统的高速切换过程中不会导致内存错位和溢出等问题,从而提高了整个系统的稳定性。


图I为本发明嵌入式平台下的半虚拟化方法的总体架构图。图2是本发明嵌入式平台下的半虚拟化方法的流程图。图3是本发明方法中步骤(I)的细化流程图。图4是本发明方法中步骤(2)的细化流程图。图5是本发明方法中步骤(3)的细化流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所示,本发明的半虚拟化架构包括嵌入式虚拟机内核、第一客户操作系统和第二客户操作系统,嵌入式虚拟机内核为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区、硬件信息缓冲区和客户操作系统内核区;嵌入式虚拟机内核管理所有硬件资源,为客户操作系统缓冲中央处理器寄存器信息和硬件信息;嵌入式虚拟机内核包含客户操作系统快速切换模块,主要负责中央处理器寄存器信息的保存和恢复、硬件信息的保存和恢复,以及客户操作系统切换后当前客户操作系统数据结构的设置。如图2所示,本发明嵌入式平台下的半虚拟化方法包括以下步骤(I)在嵌入式虚拟机内核启动的同时加载第一客户操作系统和第二客户操作系统的内核,并把嵌入式虚拟机内核本身、第一客户操作系统内核和第二客户操作系统内核移动到指定的内存区域;
(2)嵌入式虚拟机内核为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件信息缓冲区,并在第一客户操作系统和/或第二客户操作系统启动的同时填充第一客户操作系统和/或第二客户操作系统的中央处理器寄存器缓冲区和硬件信息缓冲区;(3)嵌入式虚拟机内核通过保存和恢复第一客户操作系统或第二客户操作系统中央处理器寄存器缓冲区和硬件信息缓冲区实现客户操作系统的快速切换。如图3所示,本发明方法中步骤(I)包括以下子步骤(1-1)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的内核加载到空闲内存区域。(1-2)嵌入式虚拟机内核把自身转移在0_9MByte之间; (1-3)嵌入式虚拟机内核把第一客户操作系统转移到9_128MByte之间,第二客户操作系统转移到128-256MByte之间;(1-4)第一客户操作系统内核把自身的内存起始地址和结束地址定为9MByte和128Mbyte,第二客户操作系统内核把自身的内存起始地址和结束地址定为128MByte和256MByte ο如图4所示,本发明方法中的步骤(2)包含以下子步骤(2-1)嵌入式虚拟机内核中为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件设备信息缓冲区;(2-2)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的中央处理器寄存器缓冲区和硬件设备信息缓冲区初始化为零;(2-3)嵌入式虚拟机内核根据硬件信息在第一客户操作系统和第二客户操作系统的硬件设备信息缓冲区为每个特定硬件分配内存区间。如图5所示,本发明方法中的步骤(3)包括以下子步骤(3-1)接收客户操作系统切换信号,判断当前客户操作系统,如果是第一客户操作系统则跳到步骤(3-2),如果是第二客户操作系统则跳到步骤(3-9),如果为空则忽略信号;(3-2)判断嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区是否为空,若为空,则进入(3-3 ),否则进入(3-9 );(3-3)返回第一客户操作系统;(3-4)把第一客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第一客户操作系统的中央处理器寄存器缓冲区中,把第二客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中;(3-5)判断嵌入式虚拟机内核中第二客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-6),否则进入(3-7);(3-6)把嵌入式虚拟机内核中第一客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第一客户操作系统;(3-7)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第一客户操作系统硬件设备信息缓冲区,把第二客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中;
(3-8)切换到第二客户操作系统;(3-9)把第二客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第二客户操作系统的中央处理器寄存器缓冲区中,把第一客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中;(3-10)判断嵌入式虚拟机内核中第一客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-11),否则进入(3-12);(3-11)把嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第二客户操作系统;(3-12)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第二客户操 作系统硬件设备信息缓冲区,把第一客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中;(3-13)切换到第一客户操作系统;本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种嵌入式平台下半虚拟化的快速切换客户操作系统的方法,其特征在于,包括以下步骤 (1)在嵌入式虚拟机内核启动的同时加载第一客户操作系统和第二客户操作系统的内核,并把嵌入式虚拟机内核本身、第一客户操作系统内核和第二客户操作系统内核移动到指定的内存区域; (2)嵌入式虚拟机内核为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件信息缓冲区,并在第一客户操作系统和/或第二客户操作系统启动的同时填充第一客户操作系统和/或第二客户操作系统的中央处理器寄存器缓冲区和硬件信息缓冲区; (3)嵌入式虚拟机内核通过保存和恢复第一客户操作系统或第二客户操作系统中央处理器寄存器缓冲区和硬件信息缓冲区实现客户操作系统的快速切换。
2.根据权利要求I所述的方法,其特征在于,步骤(I)包括以下子步骤 (1-1)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的内核加载到空闲内存区域。
(1-2)嵌入式虚拟机内核把自身转移在0-9MByte之间; (1-3)嵌入式虚拟机内核把第一客户操作系统转移到9-128MByte之间,第二客户操作系统转移到128-256MByte之间; (I -4 )第一客户操作系统内核把自身的内存起始地址和结束地址定为9MBy t e和128Mbyte,第二客户操作系统内核把自身的内存起始地址和结束地址定为128MByte和256MByte ο
3.根据权利要求I所述的方法,其特征在于,步骤(2)包含以下子步骤 (2-1)嵌入式虚拟机内核中为第一客户操作系统和第二客户操作系统分配中央处理器寄存器缓冲区和硬件设备信息缓冲区; (2-2)嵌入式虚拟机内核把第一客户操作系统和第二客户操作系统的中央处理器寄存器缓冲区和硬件设备信息缓冲区初始化为零; (2-3)嵌入式虚拟机内核根据硬件信息在第一客户操作系统和第二客户操作系统的硬件设备信息缓冲区为每个特定硬件分配内存区间。
4.根据权利要求I所述的方法,其特征在于,步骤(3)包括以下子步骤 (3-1)接收客户操作系统切换信号,判断当前客户操作系统,如果是第一客户操作系统则跳到步骤(3-2),如果是第二客户操作系统则跳到步骤(3-9),如果为空则忽略信号;(3-2)判断嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区是否为空,若为空,则进入(3-3),否则进入(3-9); (3-3)返回第一客户操作系统; (3-4)把第一客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第一客户操作系统的中央处理器寄存器缓冲区中,把第二客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中; (3-5)判断嵌入式虚拟机内核中第二客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-6),否则进入(3-7); (3-6)把嵌入式虚拟机内核中第一客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第一客户操作系统; (3-7)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第一客户操作系统硬件设备信息缓冲区,把第二客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中; (3-8)切换到第二客户操作系统; (3-9)把第二客户操作系统中央处理器的寄存器的值写入嵌入式虚拟机内核中第二客户操作系统的中央处理器寄存器缓冲区中,把第一客户操作系统中央处理器的寄存器缓冲区中各个寄存器的值写入中央处理器相应寄存器中; (3-10)判断嵌入式虚拟机内核中第一客户操作系统设备映射内存缓冲区是否为空,若为空,则进入(3-11),否则进入(3-12); (3-11)把嵌入式虚拟机内核中第二客户操作系统寄存器缓冲区中各个寄存器的值逐个写入中央处理器相应寄存器中,返回第二客户操作系统; (3-12)对于特定设备,具体而言是显卡,把当前内存映射的信息写入第二客户操作系统硬件设备信息缓冲区,把第一客户操作系统硬件设备信息缓存区的数据写入特定硬件设备的寄存器中; (3-13)切换到第一客户操作系统。
5.根据权利要求I至4中任意一项所述的方法,其特征在于,第一客户操作系统为Android系统,第二客户操作系统为ARM Linux系统,并且能够实现快速切换。
全文摘要
本发明公开了一种嵌入式平台下半虚拟化的快速切换客户操作系统的方法,主要包括以下步骤采用简单高效的内存管理方案提高客户操作系统的切换速度,对特定设备采用分区缓存和快速影射的方法提高客户操作系统的切换速度,通过快速保存和恢复中央处理器寄存器与硬件设备信息实现客户操作系统的快速切换。本发明能解决现有方法中存在的客户操作系统切换速度慢的问题。
文档编号G06F9/455GK102968342SQ201210450559
公开日2013年3月13日 申请日期2012年11月12日 优先权日2012年11月12日
发明者金海 , 邵志远, 卓达城 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1