基于微内核机制的嵌入式虚拟化系统实现方法

文档序号:27947167发布日期:2021-12-11 14:41阅读:227来源:国知局
基于微内核机制的嵌入式虚拟化系统实现方法

1.本发明属于arm架构虚拟化技术领域,更为具体地讲,涉及一种基于微内核机制的嵌入式虚拟化系统实现方法。


背景技术:

2.在嵌入式软硬件高速发展的当下,嵌入式系统产品深入我们生活中的方方面面,在手机、车载电子、工业控制等等领域都应用了嵌入式系统及设备。一方面,伴随着嵌入式硬件架构的不断升级,嵌入式系统在今天要求具备有高性能、实时性、采取微内核架构等等特性。另一方面,随着需求不断的深入,复杂的使用场景出现的越来越频繁,往往运行于通用操作系统和运行于实时操作系统的应用间还存在着协同工作。这类的情况的产生,让虚拟化技术从上世纪六十年代诞生至今一直都是行业的重要研究方向之一。
3.嵌入式虚拟化技术对硬件资源利用率问题更加关注,也对系统性能的要求也要比普通pc更高,特别是实时性、可靠性、安全性这些方面。这些特性表明了在嵌入式设备上不能运行过于复杂的虚拟机软件,例如在windows上广泛运用的vmware就并不适用于嵌入式系统。虚拟化技术在云计算、服务器虚拟化等领域广泛应用且越来越成熟的同时,传统的虚拟化技术却并不适用于嵌入式。
4.在软件架构层面,考虑到使用性能,半虚拟化的解决方案最先有所突破,在功能丰富的主体操作系统上运行需要更改系统内核,通过这种方式得以实现嵌入式虚拟化。但是半虚拟化的方案中客户操作系统集成了虚拟化方面的代码,导致难以适用于多变的嵌入式环境,业内也在对其软件架构进行不断的优化。在嵌入式软件架构不断革新的同时,嵌入式硬件体系架构的升级也对嵌入式虚拟化技术的发展提供了助力。得益于arm等cpu厂商对虚拟化的支持越来越丰富,并且伴随着需求的驱动,全虚拟化有了逐步取代半虚拟化的趋势。
5.在上述背景下,如何在底层嵌入式硬件上创建独立、隔离的分区,运行多个操作系统内核,这一课题有着巨大的研究价值。在研究该课题的同时,保证内核的精简和高效,提升安全性和可移植性,也成为了嵌入式系统研究者的迫切问题之一。
6.现有的嵌入式虚拟化解决方案中,比较主流的架构有两类,一种方法如kvm架构,其深耕于linux生态环境中,本质上就是托管在linux系统内核中的一个功能组件。这类虚拟化极大程度的利用linux的各种服务,包括任务调度、内存资源分配等核心功能。与linux内核共同向上提供虚拟机需要的运行环境。另一种方法的典型架构如xen,虽然其本身无需宿主机支持的,但其在客户机中必须存在特权域,而其他客户机所需的大部分操作系统功能需求由特权域dom0的内核(大多为linux)来提供,它能够访问所有硬件资源并以此为其他客户机提供完善的功能服务。这两种方法共同的局限和缺陷相似,都过多地依赖linux丰富的组件生态环境,一旦脱离linux则无法支持虚拟化系统中客户机的正常运行。在普通客户机内核在引导上也都需要linux组件的支持,都具有很大的局限性。并且在嵌入式领域,支撑软件的大小也会造成一定的限制,在某些应用领域中linux内核并不能够满足其精简、高效、安全性和可移植性的需求。


技术实现要素:

7.本发明的目的在于克服现有技术的不足,提供一种基于微内核机制的嵌入式虚拟化系统实现方法,采用非对称处理器架构和微内核权限访问控制机制,保障各操作系统的隔离性与安全性,解决处理器资源的隔离访问,并在多个客户机之间以rpmsg框架实现了跨核通信。
8.为实现上述发明目的,本发明基于微内核机制的嵌入式虚拟化系统实现方法包括以下步骤:
9.s1:根据实际情况从嵌入式设备的处理器资源中划分出虚拟系统资源,然后对虚拟系统资源进行分区,得到若干客户机资源分区和共享资源分区,每个资源分区包括若干cpu,每个客户机资源分区将作为一个独立的执行环境去执行一个客户机操作系统内核,共享资源分区由各客户机共享使用;
10.s2:将预设的基于微内核的虚拟机管理程序、客户机操作系统内核以及各个客户机的引导工具的映像烧写至嵌入式设备的存储器中;
11.s3:嵌入式设备开机,加载虚拟机管理程序映像到内部sram中,并完成内存初始化;
12.s4:虚拟机管理程序为用户选择的客户机选择一个客户机资源分区并对该资源分区进行初始化,然后将该客户机的引导工具映像加载至dram中并执行该引导工具;
13.s5:虚拟机管理程序开启虚拟系统资源的分区访问控制,虚拟机管理程序由用户进行权限配置,然后根据当前加载的客户机引导工具对所要引导的客户机进行权限配置,虚拟机管理程序和所要引导的客户机根据所配置权限对客户机资源分区内的资源进行协作控制;
14.s6:在开启分区访问控制的同时,步骤s4中所加载的引导工具将客户机操作系统内核对应的映像加载至对应的客户机资源分区;
15.s7:在客户机运行过程中基于rpmsg框架实现客户机跨核通信,具体方法为:在每个客户机中配置一个rpmsg前端,在虚拟机管理程序中配置rpmsg后端,客户机中的rpmsg前端通过虚拟机管理程序中的rpmsg后端与其他可用的客户机进行通信,并通过分区访问控制中的权限配置来限制不同客户机通信权限。
16.本发明基于微内核机制的嵌入式虚拟化系统实现方法,对嵌入式设备的虚拟化资源进行分区,每个资源分区包括若干cpu,每个资源分区组作为一个独立的执行环境去执行一个客户机操作系统内核,在进行客户机引导时,将各个客户机操作系统内核映像加载至对应的客户机资源分区,并通过基于微内核的权限访问控制对虚拟系统资源进行分区访问控制,令虚拟机管理程序和所要引导的客户机根据所配置权限对客户机资源分区内的资源进行协作控制,然后在客户机运行过程中基于rpmsg实现客户机跨核通信。
17.本发明具有以下效果:
18.1)本发明对嵌入式设备的虚拟化资源进行了分区,实现了非对称多处理器架构,在脱离了linux生态支持的同时,实现虚拟化系统中处理器资源的分区隔离,使得嵌入式虚拟化系统的灵活性大大增加,并且客户机直接运行在其分区cpu资源之上,能够进一步提升客户机性能与效率;
19.2)本发明将微内核基于权能的访问控制机制与虚拟化系统客户机的访问控制相
结合,该方法实现相对简单,执行权限检查时速度快,有效的实现了客户机将之间权限检查,提升了整体系统的安全性;
20.3)本发明基于rpmsg框架实现客户机跨核通信,使得客户机之间的协同通信更加高效。
附图说明
21.图1是本发明基于微内核机制的嵌入式虚拟化系统实现方法的具体实施方式流程图;
22.图2是嵌入式设备的处理器资源分区示例图;
23.图3是本发明客户机跨核通信示意图;
24.图4是本实施例中rpmsg通信的工作流程图。
具体实施方式
25.下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
26.实施例
27.图1是本发明基于微内核机制的嵌入式虚拟化系统实现方法的具体实施方式流程图。如图1所示,本发明基于微内核机制的嵌入式虚拟化系统实现方法的具体步骤包括:
28.s101:处理器资源分区:
29.根据实际情况从嵌入式设备的处理器资源中划分出虚拟系统资源,然后对虚拟系统资源进行分区,得到若干客户机资源分区和共享资源分区,每个资源分区包括若干cpu,每个客户机资源分区将作为一个独立的执行环境去执行一个客户机操作系统内核,共享资源分区由各客户机共享使用。
30.采用这种方式实现了嵌入式虚拟化系统的非对称处理器架构,各个客户机分区可以独享属于自己的资源的同时又可以共享资源,在共享资源时各客户机可以在虚拟机管理程序的控制下来共享使用,从而提高处理器资源利用率。图2是处理器资源分区示例。如图2所示,将嵌入式设备中的cpu0和cpu1作为一个客户机资源分区,将cpu2和cpu3作为一个客户机资源分区,每个分区分别执行一个客户机操作系统内核。
31.s102:配置虚拟化相关镜像:
32.将预设的基于微内核的虚拟机管理程序(hypervisor)、客户机操作系统内核以及各个客户机的引导工具(如u

boot或arm atf等)的映像烧写至嵌入式设备的存储器中。基于微内核的虚拟机管理程序可以根据实际需要进行开发,通常需要包括客户机引导、分区访问控制等功能。
33.s103:嵌入式设备初始化:
34.嵌入式设备开机,加载虚拟机管理程序映像到内部sram(static random

access memory,静态随机存取存储器)中,并完成内存初始化。所初始初始化的内存一般包括ddr3和lpddr3。
35.s104:加载引导工具:
36.虚拟机管理程序为用户选择的客户机选择一个客户机资源分区并对该资源分区进行初始化,然后将该客户机的引导工具映像加载至dram(动态随机存取存储器,dynamic random access memory)中并执行该引导工具。
37.在对资源分区进行初始化时,首先需要屏蔽中断、快速中断和abort异常,然后进行获取cpuid、找到idle任务栈的物理地址并设置栈(aarch64模式下栈指针必须以16字节对齐)、清除全局数据区域完成bss端的置零,最后转到唤醒其他核cpu的主要函数中执行。
38.为了便于查找引导工具的映像,可以预先在虚拟机管理程序中设置各客户机的引导工具映像信息,包括加载大小、加载地址、启动地址等。虚拟机管理程序在加载引导工具时可以根据保存的引导工具映像信息迅速找到其映射并完成加载。
39.在实际应用中,可以对客户机根据重要性进行主次划分,当同时引导两个以上客户机时,主客户机可以直接引导运行,而次客户机可以在主客户机引导运行之后再进行引导。
40.s105:分区访问控制:
41.虚拟机管理程序开启虚拟系统资源的分区访问控制,虚拟机管理程序由用户进行权限配置,然后根据当前加载的客户机引导工具对所要引导的客户机进行权限配置,虚拟机管理程序和所要引导的客户机根据所配置权限对客户机资源分区内的资源进行协作控制。
42.为了在多个分区中运行操作系统内核,需要使分区与管理程序进行协作,例如,分区不能直接管理硬件中断的状态:尝试直接启用或禁用中断会引发一个额外需要hypervisor的权限进行的操作。
43.s106:客户机引导:
44.在开启分区访问控制的同时,步骤s104中所加载的引导工具将客户机操作系统内核对应的映像加载至对应的客户机资源分区。
45.在客户机引导过程中需要根据步骤s105中的权限配置,为每个客户机操作系统分配访问资源的权限。客户机操作系统运行时需要使用hypercall接口来请求hypervisor提供虚拟机内存申请等服务,客户机操作系统中每个访问权限都只能访问特定的某个hypercall接口。
46.表1是本实施例中虚拟机管理程序(hypervisor)和客户机(guest os)的权限配置表。
47.48.表1
49.在本实施例中,虚拟机管理程序为每个客户机维护一个访问权限空间cspace,cspace是一个有向图,其中每个节点cnode包括若干槽位,每个槽位包含一个具体功能访问结构或者包含指向下一级节点cnode的句柄。当引导运行某个客户机操作系统内核时,虚拟机管理程序为其维护一个cptr指针,该指针用于指向该客户机访问权限空间cspace的根节点,每个客户机所拥有的访问权限空间cspace均为初始访问权限空间cspace的有向子集,当客户机需要请求内存或其他需要陷入虚拟机管理程序的功能访问操作时,虚拟机管理程序读取为该客户机保存的cptr指针,然后通过寻址查询该功能访问的操作权限,实现客户机的权限控制。通过这种机制,可以保障虚拟化系统的客户机隔离性。
50.s106:客户机跨核通信配置:
51.由于本发明对嵌入式设备资源进行了分区,当在执行两个以上客户机操作系统内核时,实现跨核通信是必不可少的。而且本发明嵌入式虚拟化系统的通信机制不仅是多核,还是跨系统通信,需要同时考虑这两个方面。
52.本发明客户机运行过程中的跨核通信机制基于远端处理器消息(remote processor messaging,rpmsg)组件实现,该组件是linux基于virtio的消息传递机制实现的,linux系统中的每个处理器可以使用该组件通过共享存储器创建可寻址后端endpoint和进行消息通讯。rpmsg组件可以根据消息中包含的目标处理器地址以及消息报头中的源处理器地址,利用endpoint在不同处理器间建立连接,传递消息。
53.本发明在每个客户机中配置一个rpmsg前端,在虚拟机管理程序中配置rpmsg后端,客户机中的rpmsg前端通过虚拟机管理程序中的rpmsg后端与其他可用的客户机进行通信,并通过分区管理中访问权限控制限制不同客户机通信权限。
54.图3是本发明客户机跨核通信示意图。如图3所示,每个rpmsg地址(虚拟管理程序的rpmsg后端和客户机的rpmsg前端)通过rpmsg_endpoint结构绑定到rx回调(因此当消息到达时,它们由总线使用对应的回调处理程序进行分派处理)。rpmsg_endpoint是可在每个通道任意一端创建的逻辑抽象,是提供用于在多操作系统架构两端之间发送消息的基础结构。在通道两端的多个用户空间应用可以通过请求唯一地使用一个rpmsg通道与另一端服务进行不同的交互。rpmsg组件驱动程序为每个资源分区中的cpu核心创建多个端点,从而可以将同一通道用于不同目的。当虚拟机管理程序创建一个新的客户机分区时同时也在后端注册了该分区的rpmsg设备,该设备应该绑定到rpmsg驱动程序。当两个客户机操作系统内核存在通信需求时,客户机提供唯一的端点索引或请求管理程序rpmsg后端为端点重新分配一个地址。此外,客户机提供其定义的回调,将其与自身端点关联,并由管理程序建立rpmsg通道。
55.图4是本实施例中rpmsg通信的工作流程图。如图4所示,rpsmg通信的工作流程包括以下步骤:
56.(1)调用方(core0)只指定通道(rpdev)、想要发送的数据(data)及其长度(len,以bytes为单位)。消息将在指定的通道上发送,即消息的源地址和目的地址字段将被设置为通道的src和dst地址。
57.(2)调用方除通道、数据、长度外显式指定目标地址,那么消息将被发送到通道所属的远端处理器,使用rpmsg通道的src地址和调用方提供的dst地址(因此通道的dst地址
将被忽略)。
58.(3)调用方提供src地址和dst地址向远程处理器发送消息,此时消息将被发送到指定通道所属的远端处理器,但是该rpmsg通道的src和dst地址将被忽略(而将使用用户提供的地址)。
59.如果没有可用的发送缓冲区,消息发送流程将被阻塞,直到有一个缓冲区可用(其他处理器核心消耗发送缓冲区并将其放回virtio使用的描述符环)或超时15s。
60.尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1