一种嵌入式操作系统虚拟机及其实现方法

文档序号:6338966阅读:950来源:国知局
专利名称:一种嵌入式操作系统虚拟机及其实现方法
技术领域
本发明涉及一种嵌入式操作系统虚拟机及其核心技术的实现方法,支持在单个硬件微处理器上建立两个不同的嵌入式操作系统及其通信机制,应用在逻辑上隔离的两个不同特性的软件系统,属于计算机技术领域。
背景技术
目前在PC产品上已经有多种虚拟机产品,在这些产品之上软件的运行类似于在一台物理计算机上运行,包含自己的虚拟CPU(即基于软件实现的CPU)、虚拟RAM硬盘和虚拟网络接口卡(NIC)等。这些虚拟机产品用不同的技术手段实现,其满足的需求也不完全相同。本发明主要针对支持蜂窝网通信的各种各样的移动终端设备。在此类设备的设计中,通常包括两种主要类型的微处理器芯片,一个是以应用微处理器(AP)为中心的硬件系统,运行用户操作系统和相应的应用,另一个是以通信微处理器(CP)为中心的硬件系统,运行相应的通信协议栈(基带系统)。由此,此类移动终端设备的设计也通常包括两种类型,一种是采用应用微处理器和通信微处理器分离的硬件设计,应用系统与通信系统之间的通信通过两个微处理器之间的特殊硬件通道进行。另一种是把应用微处理器和通信微处理器合二为一,即在一个微处理器上实现应用系统与通信系统,此时应用系统与通信系统从逻辑上是不独立的。应用系统与通信系统是两个具有不同特点的系统,应用系统完成应用性功能及相应的用户交互,着重用户体验;通信系统完成相应的通信协议功能,要求硬实时特性。所以, 微处理器分离的方案可以较好地满足应用系统与通信系统本身的要求,但会带来功耗、硬件复杂度及性价比较差等方面的缺点,微处理器和通信微处理器合二为一的方案则会带来应用软件设计相对复杂,可扩展性差等方面的缺点。针对两类系统设计的缺点,本发明通过在单一微处理器设计虚拟机(以下简称 HopenVM)的方法,在虚拟机在支持应用系统与通信系统所需要的各自的操作系统,最后分别运行应用系统与通信系统,使得整个架构同时满足两个系统的要求,又克服了各自的缺
点ο

发明内容
操作系统虚拟机是一种软件产品,在特定的软件平台上,通过软件手段把具有完整硬件系统功能的物理硬件机器,转化成多个逻辑上隔离的完整计算机系统。虚拟机提供了一种隔离的软件容器,在它之上可以运行自己的操作系统和应用程序,就好像一台物理计算机一样。本发明的虚拟机产品应用于支持嵌入式操作系统,为了满足如下的需求
(1)满足不同实时性需求的系统。如应用系统和专用系统可以有强实时和软实时之分, 可以根据需要使用不同的调度算法。
(2)逻辑上两个系统相互独立,以提高整个系统的可靠性,提高整个系统的抗崩溃的能力,有利于建立更可靠的内核安全机制。(3)便于系统的移植,不同的系统独立开发和调试。本发明需要支持硬实时的系统,并且尽可能减少性能上的开销,所以需要满足逻辑上分隔,硬实时系统绝对优先(包括中断响应、任务的运行),不引入任何不必要的功能和机制,不降低性能,不影响并发性能,不做指令的仿真,也不考虑驱动程序的问题。Hopen VM提供必要的虚拟设备,包括虚拟中断器、虚拟定时器、虚拟终端和虚拟管道。1、虚拟化寄存器的方法
类似于硬件实现时寄存器地址的映射可以采用IO地址映射和MEMORY地址映射思想, 我们用内存地址单元直接仿真寄存器单元,以实现虚拟化的寄存器集合。相应地,提供对这些虚拟化的寄存器存取的函数读函数和写函数。2、虚拟化虚拟中断控制器的方法
基于以上虚拟化寄存器的方法,提供一组虚拟的虚拟中断控制器。基于虚拟中断控制器,HopenVM为每个虚拟机提供若干个虚拟中断和若干个伪中断。在虚拟机操作系统中,只能操作虚拟中断控制器。真实的硬件通过映射的方式和虚拟中断建立对应关系,真实中断不能共享,只能被某一个虚拟机所运行的操作系统使用,通过“虚拟中断映射表”事先将系统真实中断预分配,或者通过HopenVM中断注册的方法改变该中断在映射表的属性。中断控制器硬件完全由HopenVM控制,虚拟机中的操作系统不能直接操作中断控制器硬件,只能操作虚拟中断控制器。HopenVM为每一个虚拟机都提供一个有若干个虚拟中断和若干个伪中断的虚拟中断控制器。有的虚拟中断有对应的硬件中断,有的则没有对应的硬件中断。操作系统可以通过调用虚拟中断控制器操作程序允许和禁止指定的虚拟中断。如果该虚拟中断对应了硬件中断,则Hopen VM会根据要求操作对应的硬件中断控制器。大部分虚拟中断会直接对应某个真实中断。直接对应虚拟中断的真实中断使用标准的真实中断处理程序。该处理程序如下运行
(1)根据中断的类型操作真实的中断控制器。(2)向虚拟机发送对应的虚拟中断。由于真实中断的优先级并不按照中断号排列,因此如果要使真实中断的优先级能同时反映在虚拟中断上,那么真实中断号就必须按照中断的优先级对应的虚拟中断号。这样对应的虚拟中断号就可能与真实中断号不是同一个号。3、构造虚拟设备系统的方法
Hopen VM在硬件之上构建中断虚拟设备,建立起虚中断和伪中断为主的中断虚拟系统,再以虚拟机和中断虚拟系统为基础,虚拟出定时器、控制台、管道等若干虚拟设备, Hopen VM架构下的虚拟设备具有丰富的扩展功能。虚拟设备和硬件设备的寄存器组类似, 虚拟中断及伪中断的处理流程和真实中断相一致,因此虚拟设备完全具备了真实硬件设备的操作方法和流程。 其中,虚拟管道是基于Hopen VM和伪中断设计的一个虚拟设备,硬件上没有对应的真实设备,其主要功能是建立两个操作系统之间的数据通信通道,使得两个建立在HopenVM上的逻辑上相互隔离的客户操作系统之间可以进行数据通信,类似与在两个独立的微处理器之间用独立的硬件通道,比如串行口或者并行口进行通信。Hopen VM提供可配置个数的连接两个虚拟机的双向虚拟管道。每一个虚拟管道都可以分别指定各个方向的缓存的大小。所有虚拟管道共享一个虚拟管道中断,伪中断,使用中断状态位来快速判断哪一个虚拟管道有中断。本发明的目的是支持基带系统和应用系统分离的软件架构,进行底层软件架构的优化,设计Hopen VM虚拟硬件系统,提出虚拟微处理器的概念,其结果是从基带系统和应用系统看,硬件系统依然是基带处理器和应用处理器两个微处理器,这样的设计实现很大程度上节省了手机硬件设计成本,减小了系统功耗,使有限的硬件资源适合于复杂软件架构。


下面结合附图和具体实施方式
对本发明作进一步的说明。图1为本发明所述的虚拟管道结构图。图2为本发明所述的虚拟机及客户操作系统结构图。
具体实施例方式操作系统虚拟机是一种软件产品,在特定的软件平台上,通过软件手段把具有完整硬件系统功能的物理硬件机器,转化成多个逻辑上隔离的完整计算机系统。虚拟机提供了一种隔离的软件容器,在它之上可以运行自己的操作系统和应用程序,就好像一台物理计算机一样。本发明的虚拟机软件产品应用于支持嵌入式操作系统,两个客户操作系统有各自有其独立的任务调度、内存管理和中断处理等。Hopen VM虚拟机负责对真实硬件进行管理, 向两个操作系统抽象出两个不同的虚拟中断处理单元,协调两个操作系统之间的运行,并提供一系列在两个操作系统之间进行通信的机制。通常,基带系统可以看成一个实时系统, 其调度特性上要求进程具有可抢占性和确定的响应时间,具有较高优先执行的特点。应用系统负责运行功能性程序,处理用户交互。虚拟机虚拟出两个虚拟CPU,但同一时刻只能有一个客户操作系统获得实际的硬件CPU,HopenVM设计的实质是优化系统总的调度策略。HopenVM将每个虚拟机定义成以下六种状态
(1)空转状态
(2)异常服务状态
(3)低优先级线程状态
(4)高优先级线程状态
(5)伪中断服务状态
(6)虚拟中断服务状态
每个OS所处的运行的状态必为六种状态之一,客户操作系统设计者可以根据目标系统的要求为每一个状态设置一个优先级。HopenVM虚拟机调度策略按照虚拟机当前状态的优先级进行调度,优先级高者获得CPU。HopenVM提供必要的虚拟设备,包括虚拟中断器、虚拟定时器、虚拟终端和虚拟管道。
1、虚拟化寄存器的方法
类似于硬件实现时寄存器地址的映射可以采用IO地址映射和MEMORY地址映射思想, 我们用内存地址单元直接仿真寄存器单元,以实现虚拟化的寄存器集合。相应地,提供对这些虚拟化的寄存器存取的函数读函数和写函数。(1)读函数定义
unsigned HVM_ffriteRegister (int register_addr, unsigned value); 说明写虚拟寄存器。返回数值是该虚拟寄存器原先的内容。(2)写函数定义
unsigned HVM_ReadRegister (int register_addr); 说明读虚拟寄存器。2、虚拟化虚拟中断控制器的方法
基于以上虚拟化寄存器的方法,提供一组虚拟的虚拟中断控制器。基于虚拟中断控制器,HopenVM为每个虚拟机提供64个虚拟中断和32个伪中断,在虚拟机操作系统中,只能操作虚拟中断控制器。真实的硬件通过映射的方式和虚拟中断建立对应关系,真实中断不能共享,只能被某一个虚拟机所运行的操作系统使用,可通过“虚拟中断映射表”事先将系统真实中断预分配,也可以通过HopenVM中断注册的方法改变该中断在映射表的属性。中断控制器硬件完全由HopenVM控制,虚拟机中的操作系统不能直接操作中断控制器硬件,只能操作虚拟中断控制器。HopenVM为每一个虚拟机都提供一个有64个虚拟中断和32个伪中断的虚拟中断控制器。有的虚拟中断有对应的硬件中断,有的则没有对应的硬件中断。操作系统可以通过调用虚拟中断控制器操作程序允许和禁止指定的虚拟中断。如果该虚拟中断对应了硬件中断,则HopenVM会根据要求操作对应的硬件中断控制器。中断处理程序应该按照如下方式运行 void interrupt_entry ( Reg—save )
{ Int state—save, int—n;
保存寄存器现场,将reg_save中的数据移动到寄存器现场保存区中。开放CPU的IRQ中断和FIQ中断。State_save = HVM_ReadRegister(VM_STATE_SAVE);
while ( (int)(int_n = HVM_ReadRegister(VM_INTC_QINTR) >= O ) {
if ( int_n是伪中断){ 通过HVM_WriteRegiSter操作将状态设置成伪中断状态, 开放虚拟中断。}
处理中断int_n;
}
通过HVM_WriteRegister操作恢复中断前的状态
}
大部分虚拟中断会直接对应某个真实中断。直接对应虚拟中断的真实中断使用标准的真实中断处理程序。该处理程序如下运行(1)根据中断的类型操作真实的中断控制器。(2)向虚拟机发送对应的虚拟中断。由于真实中断的优先级并不按照中断号排列,因此如果要使真实中断的优先级能同时反映在虚拟中断上,那么真实中断号就必须按照中断的优先级对应的虚拟中断号。这样对应的虚拟中断号就可能与真实中断号不是同一个号。3、构造虚拟设备系统的方法
HopenVM在硬件之上构建中断虚拟设备,建立起虚中断和伪中断为主的中断虚拟系统, 再以虚拟机和中断虚拟系统为基础,虚拟出定时器、控制台、管道等若干虚拟设备,Hopen VM架构下的虚拟设备具有丰富的扩展功能。虚拟设备和硬件设备的寄存器组类似,虚拟中断及伪中断的处理流程和真实中断相一致,因此虚拟设备完全具备了真实硬件设备的操作方法和流程。虚拟管道是基于HopenVM和伪中断设计的一个虚拟设备,硬件上没有对应的真实设备,其主要功能是建立两个操作系统之间的数据通信通道,使得两个建立在HopenVM上的逻辑上相互隔离的客户操作系统之间可以进行数据通信,类似与在两个独立的微处理器之间用独立的硬件通道,比如串行口或者并行口进行通信。HopenVM提供可配置个数的连接两个虚拟机的双向虚拟管道。每一个虚拟管道都可以分别指定各个方向的缓存的大小。所有虚拟管道共享一个虚拟管道中断,伪中断,使用中断状态位来快速判断哪一个虚拟管道有中断。每一个虚拟管道可以工作于三种数据传输方式
(1)字节流管道管道中传输的是字节流,不区分数据包的边界。发送方一次发送的报文可能被接收方分若干次取出,发送方多次发送的报文也可能被合并从而被接收方一次取出ο(2)定长数据包管道管道中传输的是固定长度的数据包。发送方每次只能发送一个数据包,接收方每次只能接收一个数据包。(3)指针管道管道中传输的是指针而不是数据内容。发送方每次只能发送一个指针,接收方每次只能接收一个指针。如图1所示,两端的操作系统分别有各自的虚拟寄存器,依靠虚拟管道实现两端寄存器的互访,从而达到两个操作系统通信的目的。两个操作系统虚拟寄存器之间有一致对应的关系,当一端操作寄存器时,通过虚拟管道的通信,另一端对应寄存器就会发生相应的变化。由于基带系统和应用系统分属两个操作系统,应用系统需要和基带系统的协议栈通信,实现数据业务交互,同时为满足系统省电策略的优化,协议栈需优先集成电源管理的底层实现,因此OS双方需要进行省电交互。交互的过程通过HopenVM虚拟管道实现。本发明的目的是支持基带系统和应用系统分离的软件架构,进行底层软件架构的优化,设计Hopen VM虚拟硬件系统,提出虚拟微处理器的概念,其结果是从基带系统和应用系统看,硬件系统依然是基带处理器和应用处理器两个微处理器,这样的设计实现很大程度上节省了手机硬件设计成本,减小了系统功耗,使有限的硬件资源适合于复杂软件架构。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种用于嵌入式操作系统的虚拟机(HopenVM),其在单个硬件微处理器上建立两个不同的嵌入式操作系统,从而把一个嵌入式系统的物理处理器芯片转化为多个逻辑的芯片系统,Hopen VM负责对真实硬件进行管理,向两个操作系统抽象出两个不同的虚拟中断处理单元,协调两个操作系统之间的运行,并提供一系列在两个操作系统之间进行通信的机制。
2.如权利要求1所述的用于嵌入式操作系统的虚拟机,其中所述HopenVM提供必要的虚拟设备,包括虚拟寄存器、虚拟中断器、虚拟定时器、虚拟终端和虚拟管道。
3.如权利要求2所述的用于嵌入式操作系统的虚拟机,其中所述虚拟寄存器用内存地址单元,通过提供读写函数的方法,仿真对寄存器单元的读写,由此可以把一组内存地址单元转化为寄存器集合,从而实现虚拟化的寄存器集合。
4.如权利要求2所述的用于嵌入式操作系统的虚拟机,其中所述虚拟中断器是基于所述虚拟寄存器而得到的,并且所述HopenVM提供一个有64个虚拟中断和32个伪中断的虚拟中断器。
5.如权利要求2所述的用于嵌入式操纵系统的虚拟机,其中基于所述虚拟寄存器,而在两个操作系统中分别实现虚拟的寄存器端点,在两个寄存器端点之间形成数据通道,从而实现虚拟管道。
6.如权利要求5所述的用于嵌入式操纵系统的虚拟机,其中HopenVM提供可配置个数的连接两个虚拟机的双向虚拟管道。
7.一种基于蜂窝网通信的移动终端设备,其包括如权利要求1-6任一所述的用于嵌入式操纵系统的虚拟机。
8.一种用于嵌入式操作系统的虚拟机(HopenVM)的实现方法,所述HopenVM用于在单个硬件微处理器上建立两个不同的嵌入式操作系统,从而把一个嵌入式系统的物理处理器芯片转化为多个逻辑的芯片系统,Hopen VM负责对真实硬件进行管理,向两个操作系统抽象出两个不同的虚拟中断处理单元,协调两个操作系统之间的运行,并提供一系列在两个操作系统之间进行通信的机制,其中包括以下步骤a)提供虚拟寄存器的步骤;b)提供虚拟中断器的步骤;c)提供虚拟定时器的步骤;d)提供虚拟终端的步骤和通过虚拟管道的步马聚ο
9.如权利要求8所述的方法,其中所述提供虚拟寄存器的步骤包括所述虚拟寄存器用内存地址单元,通过提供读写函数的方法,仿真对寄存器单元的读写,由此可以把一组内存地址单元转化为寄存器集合,从而实现虚拟化的寄存器集合。
10.如权利要求8所述的方法,其中提供所述虚拟中断器的步骤包括所述虚拟中断器是基于所述虚拟寄存器而得到的,并且所述HopenVM提供一个有64个虚拟中断和32个伪中断的虚拟中断器。
11.如权利要求8所述的方法,其中提供所述虚拟管道的步骤包括基于所述虚拟寄存器,而在两个操作系统中分别实现虚拟的寄存器端点,在两个寄存器端点之间形成数据通道,从而实现虚拟管道。
12.如权利要求11所述的方法,其中HopenVM提供可配置个数的连接两个虚拟机的双向虚拟管道。
全文摘要
本发明公开了一种嵌入式操作系统虚拟机(简称HopenVM)及该虚拟机核心技术的实现方法。该产品支持在单个硬件微处理器上建立两个不同的嵌入式操作系统,从而把一个嵌入式系统的物理处理器芯片转化为多个逻辑的芯片系统,并且在两个操作系统之间,建立类似与硬件通信机制的虚拟化的通信机制。本文中说明的实现方法,可以在逻辑上隔离两个不同特性的软件系统。
文档编号G06F9/455GK102541616SQ20101059285
公开日2012年7月4日 申请日期2010年12月17日 优先权日2010年12月17日
发明者奉旭辉, 王新社, 顾玉良 申请人:北京凯思昊鹏软件工程技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1