CN113672342A - 嵌入式虚拟化系统及构建、测试方法、终端及介质 - Google Patents
嵌入式虚拟化系统及构建、测试方法、终端及介质 Download PDFInfo
- Publication number
- CN113672342A CN113672342A CN202110881269.5A CN202110881269A CN113672342A CN 113672342 A CN113672342 A CN 113672342A CN 202110881269 A CN202110881269 A CN 202110881269A CN 113672342 A CN113672342 A CN 113672342A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- machine monitor
- jailhouse
- inter
- compiling
- 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.)
- Granted
Links
- 238000010276 construction Methods 0.000 title claims abstract description 19
- 238000010998 test method Methods 0.000 title description 8
- 238000011161 development Methods 0.000 claims abstract description 82
- 238000012360 testing method Methods 0.000 claims description 72
- 230000015654 memory Effects 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 40
- 238000005192 partition Methods 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 5
- 101100226364 Arabidopsis thaliana EXT1 gene Proteins 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 6
- 238000011056 performance test Methods 0.000 abstract description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 208000009115 Anorectal Malformations Diseases 0.000 description 24
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种嵌入式虚拟化系统及其构建方法,其中构建方法包括:配置系统环境;在配置的所述系统环境下,将虚拟机监视器移植到ARM架构的嵌入式开发板;在移植后的所述虚拟机监视器上运行多个异构操作系统,完成对嵌入式虚拟化系统的构建。还提供了一种嵌入式虚拟化系统的实时性能测试方法,发送核间中断,根据总时延计算平均时延与核间中断延迟的抖动性。同时还提供了一种相应的终端及介质。本发明解决了现有技术中的嵌入式虚拟化平台中使用TypeII虚拟机监视器性能开销巨大以及难以进行实时性能测试的技术问题,具有指导虚拟化平台搭建和设计性能测试的有益效果。
Description
技术领域
本发明涉及计算机虚拟化技术领域,具体地,涉及一种嵌入式虚拟化系统及其搭建方法、实时性能测试方法、终端及计算机可读存储介质。
背景技术
机器智能化的发展使得控制软件复杂度和集成度不断提升,Hypervisor(虚拟机监视器)的虚拟化方案可以在多核异构的单芯片上运行多个不同类型的操作系统,各个系统之间共享硬件资源,互相独立又可以相互通信,提高了硬件效率,大幅度降低成本。更重要的是,虚拟化所具备的不同操作系统之间的隔离能力,可以提升系统的可靠性和安全性。由于ARM芯片的高效能特点,ARM芯片是移动和嵌入式领域的主要选择,ARM芯片也是是汽车平台的主流芯片平台。
目前国内外嵌入式虚拟化方案并不多且大多是商用闭源软件。TYPE2型虚拟机监视器由于需要运行在一个主机操作系统,所有敏感指令和I/O操作都要陷入到VM-Exit中处理并交由主机操作系统处理,导致实时性能可能无法满足工业生产要求。而TYPE1型的虚拟机监视器由于能够运行在裸机之上所以可以直接控制硬件,相较于TYPE2型虚拟机监视器在实时性能上有更多的优化空间。
现有的将KVM虚拟化技术应用到ARM开发板的方案存在一些问题。KVM在ARM上采用了分离式设计,其highvisor与虚拟机之间的切换涉及多次上下文切换,在ARMv8架构下的性能开销非常巨大。本发明将TYPE1型的虚拟机监视器Jailhouse和Xen移植到了NXP公司推出的imx8系列开发板,构建的虚拟化平台性能开销大幅度降低并且具有良好的实时性能。
同时,现有的用于测试虚拟化实时性能的基准测试(benchmark)不够灵活,只面向固定的性能标准,无法测试基于实际应用场景的实时性能指标。核间中断在ARMv8架构的GICv3中属于软件生成中断。该类型的中断主要是一个CPU向另一个CPU发送中断。GICv3间的中断传输是Jailhouse虚拟化框架下为数不多的开销,也是Xen的主要开销之一,并且核间中断的延迟对于实时系统来说也是比较重要的性能指标。
综上所述,现有技术对实时性能测试的测试工具大多关注线程响应延迟,能够有效测试核间中断的测试工具较少。目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
本发明针对现有技术中存在的上述不足,提供了一种嵌入式虚拟化系统及其构建方法、实时性能测试方法、终端和计算机可读存储介质,尤其是一种TYPE1型虚拟化系统。
根据本发明的一个方面,提供了一种嵌入式虚拟化系统的构建方法,包括:
配置系统环境;
在配置的所述系统环境下,将虚拟机监视器移植到ARM架构的嵌入式开发板;
在移植后的所述虚拟机监视器上运行多个异构操作系统,完成对嵌入式虚拟化系统的构建;
其中:
所述将虚拟机监视器移植到ARM架构的嵌入式开发板,包括:
获取虚拟机监视器指定版本的源代码;
对所述虚拟机监视器指定版本的源代码进行编译,获得能够运行在ARM架构的虚拟机监视器镜像;
将所述虚拟机监视器镜像拷贝至根文件系统的第一个分区,并加载虚拟机监视器镜像,完成将虚拟机监视器移植到ARM架构的嵌入式开发板。
优选地,所述配置系统环境,包括:
部署yocto系统环境编译所需要的依赖工具包,并配置repo;
利用git获取yocto系统环境源码,指定目标开发板的类型,并配置和编译yocto系统环境源码,得到配置文件、设备树文件以及根文件系统镜像;
构建系统环境的SDK,获取所需运行的操作系统的编译开发工具链,并安装到指定开发目录,将所述编译开发工具链添加到环境变量中,完成对系统环境的配置。
优选地,所述目标开发板的类型的类型,包括:NXP公司i.MX 8MQuad开发板和i.MX8QuadMax开发板。
优选地,所述将虚拟机监视器移植到ARM架构的嵌入式开发板,还包括如下任意一项或任意多项:
-通过git从镜像网站获取虚拟机监视器指定版本的源代码;
-通过所述编译开发工具链以交叉编译的方式在x86架构的机器上对所述虚拟机监视器的源代码进行编译;
-在U-boot命令行中加载虚拟机监视器镜像。
优选地,所述虚拟机监视器包括Jailhouse虚拟机监视器和Xen虚拟监视器。
优选地,在所述Jailhouse虚拟机监视器运行多个异构操作系统,包括:
利用通过配置系统环境得到的所述编译开发工具链编译操作系统源码与Jailhouse源码,获得操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
启动所述Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
在所述Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过所述用户态工具将所述操作系统创建为Root Cell;
采用所述用户态工具根据Cell配置文件为所述述Jailhouse虚拟机监视器配置指定的硬件资源;
利用所述操作系统镜像以及设备树文件,创建并启动所述操作系统。
优选地,所述为所述Jailhouse虚拟机监视器配置指定的硬件资源,包括:CPU核心和物理内存区域。
优选地,在所述Jailhouse虚拟机监视器运行的操作系统,包括Linux操作系统和Android操作系统。
优选地,所述操作系统为Linux操作系统时,其运行方法包括:
利用通过配置系统环境得到的Linux操作系统编译开发工具链编译Linux源码与Jailhouse源码,获得Linux操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
启动所述Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
在所述Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过所述用户态工具将所述Linux操作系统创建为Root Cell;
采用所述用户态工具根据Cell配置文件为所述述Jailhouse虚拟机监视器配置指定的硬件资源;
利用所述Linux操作系统镜像以及设备树文件,创建并启动所述Linux操作系统。
优选地,所述操作系统为Android操作系统时,其运行方法包括:
利用通过配置系统环境得到的Android操作系统编译开发工具链编译Android源码与Jailhouse源码,获得Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
在配置的系统环境下,通过git获取Python源码,给Python源码打上适用于Android操作系统的补丁,使用编译开发工具链得到用于ARM架构的Android操作系统下的Python解释器;
将Jailhouse源码放入Android源码中一同编译,获得Android镜像;
将Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序、Android操作系统下的Python解释器、Android镜像拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
启动所述Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
在所述Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过用户态工具将所述Android操作系统创建为Root Cell;
采用所述用户态工具根据Cell配置文件为所述Jailhouse虚拟机监视器配置指定的硬件资源;
利用所述Android镜像以及设备树文件,创建并启动所述Android操作系统。
优选地,在所述Xen虚拟机监视器运行多个异构操作系统,包括:
利用通过配置系统环境得到的所述编译开发工具链编译操作系统源码与Xen源码,获得操作系统镜像与Xen虚拟机监视器镜像;
将所述操作系统烧录至预设的存储卡或开发板自带的eMMC;
启动所述Xen虚拟机监视器,在Uboot命令行中为Xen虚拟机监视器设置环境变量,将Xen虚拟机监视器镜像加载到内存的特定位置,并启动Dom0;
进入Dom0后,通过Xen虚拟机监视器提供的xl工具创建DomU,并在所述DomU中启动操作系统。
优选地,将所述预设的存储卡分为三个分区,其中,第一个分区为启动所需配置文件分区,第二个分区为根文件系统分区,第三个分区为创建操作系统分区。
优选地,所述配置文件为FAT格式文件,包括:Xen虚拟机监视器镜像、LinuxImage、imx8qm对应的设备树文件以及Dom0的配置文件。
优选地,所述根文件系统为EXT4格式的Dom0下的Linux根文件系统。
根据本发明的另一个方面,提供了一种嵌入式虚拟化系统,采用上述任一项所述的构建方法构建得到,包括:
Jailhouse虚拟机监视器模块,该模块运行在裸机之上,根据Cell配置文件初始化并管理物理硬件资源;
Jailhouse内核模块,该模块将Jailhouse虚拟机监视器镜像加载到指定的内存位置;同时,将cell文件中的配置数据从用户态被拷贝到kernel态;
Jailhouse用户态工具模块,该模块提供创建和管理虚拟机的使用接口;用户通过所述使用接口查询虚拟机的状态,并创建和销毁虚拟机;
Xen虚拟机监视器模块,该模块运行在裸机之上,根据配置文件进行初始化并管理物理硬件资源;
Xl工具模块,该模块通过Xen虚拟机监视器提供用户接口,用户通过所述用户接口查询虚拟机的状态,并创建和销毁虚拟机;同时,用户通过所述用户接口在不同虚拟机间切换。
根据本发明的第三个方面,提供了一种上述嵌入式虚拟化系统的实时性能测试方法,所述方法基于核间中断,包括:
构建测试内核模块,将所述测试内核模块加载到虚拟机的内核并与当前运行所述测试内核模块的CPU绑定;
当所述测试内核模块向另一个CPU发送核间中断时,首先记录当前时间,然后向除了当前运行的CPU之外的任一CPU发送核间中断;
负责接收所述核间中断的CPU记录时间并返回给发送所述核间中断的CPU收到所述核间中断的时间,进而得到所述核间中断发送延迟时间;
重复发送核间中断,根据总时延计算平均时延与核间中断延迟的抖动性。
优选地,所述方法,通过编译开发工具链以交叉编译的方式编译一内核模块,构建得到所述测试内核模块;其中:
所述测试内核模块与当前运行所述测试内核模块的CPU绑定,并通过Linux内核提供的smp_call_function_many函数向其他CPU发送核间中断,并让其他CPU记录收到核间中断的时间;
重复发送核间中断,最后根据总时延计算平均时延与核间中断延迟的抖动性。
优选地,通过get_cpu函数,将所述测试内核模块加载到虚拟机的Linux内核并与当前运行所述内核模块的CPU进行绑定。
根据本发明的第四个方面,提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可用于执行上述任一项所述的方法,或,运行上述的系统。
根据本发明的第五个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行上述任一项所述的方法,或,运行上述的系统。
由于采用了上述技术方案,本发明与现有技术相比,具有如下至少一项的有益效果:
本发明提供的嵌入式虚拟化系统及构建、测试方法、终端及介质,设计了一种嵌入式虚拟化系统及其搭建方法,可以使得Jailhouse和Xen这两种TYPE1型虚拟机监视器能够移植到ARM架构的嵌入式开发板,并能够运行Android、Linux、Freertos等多个异构操作系统,具有性能开销大幅度降低并且具有良好的实时性能的优点。
本发明提供的嵌入式虚拟化系统及构建、测试方法、终端及介质,设计了一种基于核间中断传递的虚拟化实时性测试方法,通过将Linux内核模块与CPU绑定,然后随机选择向除本CPU之外的任意一个CPU发送核间中断,记录从发送到接收的时间间隔,进而计算核间中断的平均时延与抖动性,具有测试步骤简单、性能测试结果精确的优点。
本发明提供的嵌入式虚拟化系统及构建、测试方法、终端及介质,设计了一款核间中断测试方法,能够有效测试虚拟机的实时性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例中嵌入式虚拟化系统的构建方法流程图。
图2为本发明一优选实施例中Yocto环境搭建示意图。
图3为本发明一优选实施例中Jailhouse虚拟机监视器中异构操作系统示意图。
图4为本发明一优选实施例中Xen虚拟机监视器中异构操作系统示意图。
图5为本发明一实施例中嵌入式虚拟化系统组成模块及工作示意图;其中,(a)为虚拟机监视器为Jailhouse虚拟机监视器的部分,(b)为虚拟机监视器为Xen虚拟监视器的部分。
图6为本发明一实施例中实时性能测试方法流程图。
图7为本发明一优选实施例中实时性能测试方法的核间中断测试示意图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
图1为本发明一实施例提供的嵌入式虚拟化系统的构建方法流程图。
如图1所示,该实施例提供的嵌入式虚拟化系统的构建方法,可以包括如下步骤:
S100,配置系统环境;
S200,在配置的系统环境下,将虚拟机监视器移植到ARM架构的嵌入式开发板;
S300,在移植后的虚拟机监视器上运行多个异构操作系统,完成对嵌入式虚拟化系统的构建;
其中:
S200中,将虚拟机监视器移植到ARM架构的嵌入式开发板,包括:
获取虚拟机监视器指定版本的源代码;
对虚拟机监视器指定版本的源代码进行编译,获得能够运行在ARM架构的虚拟机监视器镜像;
将虚拟机监视器镜像拷贝至根文件系统的第一个分区,并加载虚拟机监视器镜像,完成将虚拟机监视器移植到ARM架构的嵌入式开发板。
在该实施例的S100中,作为一优选实施例,配置系统环境,可以包括如下步骤:
S101,部署yocto系统环境编译所需要的依赖工具包,并配置repo;
S102,利用git获取yocto系统环境源码,指定目标开发板的类型,并配置和编译yocto系统环境源码,得到配置文件、设备树文件以及根文件系统镜像;
S103,构建系统环境的SDK,获取所需运行的操作系统的编译开发工具链,并安装到指定开发目录,将编译开发工具链添加到环境变量中,完成对系统环境的配置。
在该实施例的S102中,作为一优选实施例,目标开发板的类型的类型,可以包括:NXP公司i.MX 8MQuad开发板和i.MX 8QuadMax开发板。
在该实施例的S200中,作为一优选实施例,将虚拟机监视器移植到ARM架构的嵌入式开发板,还包括如下任意一项或任意多项:
-通过git从镜像网站获取虚拟机监视器指定版本的源代码;
-通过编译开发工具链以交叉编译的方式在x86架构的机器上对虚拟机监视器的源代码进行编译;
-在U-boot命令行中加载虚拟机监视器镜像。
在该实施例的S200中,作为一优选实施例,虚拟机监视器可以包括Jailhouse虚拟机监视器和Xen虚拟监视器。
进一步地,在Jailhouse虚拟机监视器运行多个异构操作系统,可以包括如下步骤:
S201a,利用通过配置系统环境得到的编译开发工具链编译操作系统源码与Jailhouse源码,获得操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
S202a,将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
S203a,启动Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
S204a,在Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过用户态工具将操作系统创建为Root Cell;
S205a,采用用户态工具根据Cell配置文件为述Jailhouse虚拟机监视器配置指定的硬件资源;
S206a,利用操作系统镜像以及设备树文件,创建并启动操作系统。
在该实施例的S205a中,作为一优选实施例,为Jailhouse虚拟机监视器配置指定的硬件资源,可以包括:CPU核心和物理内存区域。
在该实施例的S200中,作为一优选实施例,在Jailhouse虚拟机监视器运行的操作系统,可以包括Linux操作系统和Android操作系统。
在该实施例的S200中,作为一具体应用实例,操作系统为Linux操作系统时,其运行方法可以包括如下步骤:
S201a,利用通过配置系统环境得到的Linux操作系统编译开发工具链编译Linux源码与Jailhouse源码,获得Linux操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
S202a,将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
S203a,启动Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
S204a,在Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过用户态工具将Linux操作系统创建为Root Cell;
S205a,采用用户态工具根据Cell配置文件为述Jailhouse虚拟机监视器配置指定的硬件资源;
S206a,利用Linux操作系统镜像以及设备树文件,创建并启动Linux操作系统。
在该实施例的S200中,作为一具体应用实例,操作系统为Android操作系统时,其运行方法可以包括如下步骤:
S201a,利用通过配置系统环境得到的Android操作系统编译开发工具链编译Android源码与Jailhouse源码,获得Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;S202a,在配置的系统环境下,通过git获取Python源码,给Python源码打上适用于Android操作系统的补丁,使用编译开发工具链得到用于ARM架构的Android操作系统下的Python解释器;
S203a,将Jailhouse源码放入Android源码中一同编译,获得Android镜像;
S204a,将Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序、Android操作系统下的Python解释器、Android镜像拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
S205a,启动Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
S206a,在Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过用户态工具将Android操作系统创建为Root Cell;
S207a,采用用户态工具根据Cell配置文件为Jailhouse虚拟机监视器配置指定的硬件资源;
S208a,利用Android镜像以及设备树文件,创建并启动Android操作系统。
在该实施例的S200中,作为一优选实施例,在Xen虚拟机监视器运行多个异构操作系统,可以包括如下步骤:
S201b,利用通过配置系统环境得到的编译开发工具链编译操作系统源码与Xen源码,获得操作系统镜像与Xen虚拟机监视器镜像;
S202b,将操作系统烧录至预设的存储卡或开发板自带的eMMC;
S203b,启动Xen虚拟机监视器,在Uboot命令行中为Xen虚拟机监视器设置环境变量,将Xen虚拟机监视器镜像加载到内存的特定位置,并启动Dom0;
S204b,进入Dom0后,通过Xen虚拟机监视器提供的xl工具创建DomU,并在DomU中启动操作系统。
在该实施例的S202b中,作为一优选实施例,将预设的存储卡分为三个分区,其中,第一个分区为启动所需配置文件分区,第二个分区为根文件系统分区,第三个分区为创建操作系统分区。
在该实施例的S202b中,作为一优选实施例,配置文件为FAT格式文件,包括:Xen虚拟机监视器镜像、Linux Image、imx8qm对应的设备树文件以及Dom0的配置文件。
在该实施例的S202b中,作为一优选实施例,根文件系统为EXT4格式的Dom0下的Linux根文件系统。
本发明一优选实施例提供的了一种嵌入式虚拟化系统的构建方法,该方法可以包括:
步骤1,yocto环境配置;
步骤2,在配置的系统环境下,将Jailhouse和Xen虚拟机监视器移植到ARM架构的嵌入式开发板;具体地:使用yocto提供的开发工具链编译操作系统源码与虚拟机监视器源码,获得操作系统镜像、虚拟机监视器镜像。之后挂载根文件系统镜像,将操作系统镜像和虚拟机监视器镜像复制到根文件系统中。随后卸载根文件系统镜像,将根文件系统镜像烧写到开发板的eMMC中。
步骤3,在移植后的Jailhouse和Xen虚拟机监视器上运行多个异构系统。
作为一优选实施例,步骤1中,yocto环境配置包括如下步骤:
步骤1,安装yocto编译所需要的依赖工具包,并安装和配置repo。
步骤2,使用git获取yocto源码,指定目标开发板的类型,并配置和编译yocto源码,得到一系列配置文件,例如u-boot,设备树文件以及根文件系统镜像。
步骤3,构建yocto的SDK,获取对应平台的编译开发工具链,并安装到指定开发目录。
作为一优选实施例,步骤3中,在Jailhouse虚拟机监视器上运行多个异构系统,包括如下步骤:
步骤1,如果特权虚拟机运行的操作系统为Linux。使用yocto环境配置第三步获得的开发工具链编译Linux源码与Jailhouse源码,获得Linux操作系统镜像、Jailhouse镜像与用户态工具、程序和内核模块、Cell配置和Inmate程序。
步骤2,如果特权虚拟机运行的操作系统为Android。我们需要给Python源码打上适用于Android的补丁,使用交叉编译工具得到能够用于ARM架构的Android环境的Python解释器。之后我们需要将Jailhouse的源码放入Android源码里一同编译,以获得适用于Android的镜像。
步骤3,将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到SD卡或开发板自带的eMMC。
步骤4,启动特权虚拟机,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域。
步骤5,在特权虚拟机中加载Jailhouse模块运行Jailhouse,并通过用户态工具将该Linux创建为Root Cell。
步骤6,使用用户态工具根据Cell配置文件为虚拟机配置指定的硬件资源,例如CPU核心与物理内存区域。最后通过异构系统的镜像以及设备树文件,创建并启动异构的操作系统。
作为一优选实施例,步骤3中,在Xen虚拟机监视器上运行多个异构系统,包括如下步骤:
步骤1,使用yocto环境配置第三步获得的开发工具链编译Linux源码与xen源码获得Linux操作系统镜像与Xen虚拟机监视器镜像。
步骤2,准备一张SD卡,SD卡分为三个分区,一个分区为启动所需配置文件分区,第二个分区为系统根目录系统。
步骤3,第一个分区FAT格式的文件系统,里面包括xen,Linux Image,imx8qm对应的设备树文件和Dom0的配置文件。
步骤4,第二个分区为EXT4格式的Dom0下的Linux根文件系统,该根文件系统由yocto环境配置第三步获得。
步骤5,烧录Android系统。我们可以在SD卡为Android创建第三个分区,也可以直接将Android烧录到开发板自带的eMMC。
步骤6,在Uboot命令行中为xen设置环境变量,将xen加载到内存的特定位置,并启动Dom0。
步骤7,进入Dom0之后,通过xen提供的xl工具创建DomU,并在DomU中启动Android系统。
本发明上述优选实施例提供的嵌入式虚拟化系统的构建方法,基于开源的虚拟机监视器,使得Jailhouse和Xen这两种虚拟机监视器能够移植到ARM架构的嵌入式开发板,并运行Android、Linux多个异构操作系统。
该优选实施例中,对于yocto环境的配置过程如图2所示,通过指定目标开发板配置和编译yocto源码,得到一系列配置文件并构建yocto的SDK,获取对应平台的编译开发工具链。最终Jailhouse上运行多个异构操作系统,Jailhouse的Root Cell可以是Linux和Android,Inmate-Cell可以是其他异构操作系统,例如Linux、Freertos等,如图3所示。最终Xen上运行多个异构操作系统,Xen的Dom0可以是Linux,DomU可以是其他异构操作系统,例如Linux、Freertos、Android等,如图4所示。
在该优选实施例中,运行Android、Linux多个异构操作系统的方法,包括:
如果特权虚拟机运行的操作系统为Linux。通过yocto为目标开发板制作设备树文件和根文件系统。然后使用yocto提供的SDK编译Linux、Jailhouse和Xen的源码。当移植Jailhouse时,需要将Linux操作系统镜像、Jailhouse镜像和用户态工具、程序和内核模块、Cell配置和Inmate程序、Linux加载器和Jailhouse的usr与lib目录拷贝到根文件系统。对于Xen来说,需要将xen的镜像、特权域虚拟机的设备树文件拷贝进根文件系统镜像。通过UUU工具将根文件系统镜像烧写到开发板用于启动的存储芯片。
如果特权虚拟机为Android。由于Jailhouse的需要Python环境,所以首先我们需要给Python源码打上适用于Android的补丁,使用交叉编译工具得到能够用于ARM架构的Android环境的Python解释器。之后我们需要将Jailhouse和Xen的代码放入Android源码里一同编译,以获得适用于Android的镜像。
下面结合一具体应用实例,对本发明上述实施例提供的技术方案进一步详细描述如下。需要说明的是,适用平台不限于下述实例。
在该具体应用实例中,Jailhouse部署实例是NXP公司推出的ARM-V8架构的i.MX8MQuad开发板。一根二合一USB转串口线用于调试,HDMI线用于连接显示器展示Android界面。
本发明的具体开发是基于Linux内核imx_4.14.98_2.0.0_ga、Jailhouse imx_4.14.98_2.0.0_ga和Android P9.0.0_2.0.0_GA的源码版本作为说明。Xen的镜像是由NXP公司提供的spl-imx8qm-xen.bin镜像。使用yocto提供的开发工具链编译Linux内核imx_4.14.98_2.0.0_ga源码与Jailhouse imx_4.14.98_2.0.0_ga源码,获得操作系统镜像、虚拟机监视器镜像。之后挂载根文件系统镜像,将操作系统镜像和虚拟机监视器镜像复制到根文件系统中。随后卸载根文件系统镜像,将根文件系统镜像烧写到存储卡中。之后将另一个装有操作系统镜像的根文件系统镜像烧写到开发板的eMMC中,这里的操作系统镜像可以是Linux、Android、Freertos。通过存储卡启动开发板进入特权虚拟机,最后通过特权虚拟机内的用户态工具启动eMMC上保存的虚拟机。在搭建完成的虚拟化平台上,可以同时运行Linux、Android、Freertos等异构操作系统。
图5为本发明一实施例提供的嵌入式虚拟化系统组成模块及工作示意图。
如图5中(a)和(b)所示,该实施例提供的嵌入式虚拟化系统,采用本发明上述实施例中任一项的构建方法构建得到,可以包括:
Jailhouse虚拟机监视器模块,该模块运行在裸机之上,根据Cell配置文件初始化并管理物理硬件资源;
Jailhouse内核模块模块,该模块将Jailhouse虚拟机监视器镜像加载到指定的内存位置;同时,将cell文件中的配置数据从用户态被拷贝到kernel态;
Jailhouse用户态工具模块,该模块提供创建和管理虚拟机的使用接口;用户通过使用接口查询虚拟机的状态,并创建和销毁虚拟机;
Xen虚拟机监视器模块,该模块运行在裸机之上,根据配置文件进行初始化并管理物理硬件资源;
Xl工具模块,该模块通过Xen虚拟机监视器提供用户接口,用户通过用户接口查询虚拟机的状态,并创建和销毁虚拟机;同时,用户通过用户接口在不同虚拟机间切换。
该实施例提供的嵌入式虚拟化系统,其工作过程为:
如图5中(a)所示,在Jailhouse虚拟机监视器运行多个异构操作系统,可以包括如下步骤:
S201a,利用通过配置系统环境得到的编译开发工具链编译操作系统源码与Jailhouse源码,获得操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhouse内核模块、Cell配置和Inmate程序;
S202a,将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
S203a,启动Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
S204a,在Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过用户态工具将操作系统创建为Root Cell;
S205a,采用用户态工具根据Cell配置文件为述Jailhouse虚拟机监视器配置指定的硬件资源;
S206a,利用操作系统镜像以及设备树文件,创建None Root Cell,并在None RootCell中启动操作系统。
如图5中(b)所示,在Xen虚拟机监视器运行多个异构操作系统,可以包括如下步骤:
S201b,利用通过配置系统环境得到的编译开发工具链编译操作系统源码与Xen源码,获得操作系统镜像与Xen虚拟机监视器镜像;
S202b,将操作系统烧录至预设的存储卡或开发板自带的eMMC;
S203b,启动Xen虚拟机监视器,在Uboot命令行中为Xen虚拟机监视器设置环境变量,将Xen虚拟机监视器镜像加载到内存的特定位置,并启动Dom0;
S204b,进入Dom0后,通过Xen虚拟机监视器提供的xl工具创建DomU,并在DomU中启动操作系统。
图6为本发明一实施例提供的嵌入式虚拟化系统的实时性能测试方法流程图。
如图6所示,该实施例提供的嵌入式虚拟化系统的实时性能测试方法,基于核间中断,可以包括如下步骤:
s100,构建测试内核模块,将测试内核模块加载到虚拟机的内核并与当前运行测试内核模块的CPU绑定;
s200,当测试内核模块向另一个CPU发送核间中断时,首先记录当前时间,然后向除了当前运行的CPU之外的任一CPU发送核间中断;
s300,负责接收核间中断的CPU记录时间并返回给发送核间中断的CPU收到核间中断的时间,进而得到核间中断发送延迟时间;
s400,重复发送核间中断,根据总时延计算平均时延与核间中断延迟的抖动性。
在该实施例的S100中,构建测试内核模块,可以包括如下步骤:
通过编译开发工具链以交叉编译的方式将一测试程序编译为内核模块,构建得到测试内核模块;其中:
测试程序可以为一个可以运行在ARM64位上的Linux内核模块,通过编译开发工具链以交叉编译的方式,构建得到测试内核模块。
在该实施例中,该测试内核模块能够与当前运行测试内核模块的CPU绑定,并通过Linux内核提供的smp_call_function_many函数向其他CPU发送核间中断并让其他CPU记录收到核间中断的时间。重复发送核间中断,其中重复次数可以通过修改times这一参数进行设置。最后可以根据总时延计算平均时延与核间中断延迟的抖动性。
在该实施例的S100中,作为一优选实施例,通过get_cpu函数,将测试内核模块加载到虚拟机的内核并与当前运行测试内核模块的CPU进行绑定。
图7为本发明一优选实施例提供的实时性能测试方法的核间中断测试示意图。
IPI(Inter-Processor Interrupt,处理器之间的中断)属于软中断。所以当一个CPU向另一个CPU发送,需要从当前EL1级的Cell退出到EL2级的Jailhouse Hypervisor进行处理,Jailhouse通过写ICC_SGI1R_EL1寄存器,直接向接收者CPU发送SGI中断(软件触发中断),所以在Jailhouse虚拟化框架下,发送IPI中断相较于裸机的开销就是从EL1到EL2的上下文切换的开销,由于EL1和EL2有自己独立的一套寄存器,所以上下文切换只涉及到3个通用寄存器(GP Register)的状态保存和恢复,所以延迟开销较小。而对于Xen来说,Xen为每一个虚拟机都虚拟的GIC中断控制器(vGIC),Xen通过操作List Register来注入虚拟中断,List Register是GICv3专门中断虚拟化设计的寄存器,发送给虚拟机的中断写在ListRegister寄存器内,重新进入虚拟机后从这些寄存器内读出中断,并通过List Register返回状态。当中断超过List Register的容量时,Hypervisor将虚拟中断放在内存上,所以List Register相当于一个缓冲区,加快中断的处理。但是除此之外还要额外维护一个虚拟的GIC状态,所以比Jailhouse有更大的开销。
如图7所示,该优选实施例提供的实时性能测试方法,其主要设计思路为:利用Linux内核,将编译测试程序后获得的内核测试模块加载到该Linux内核中,当内核测试模块向另一个CPU发送的核间中断时,将内核测试模块与当前CPU绑定,记录当前时间,然后向除了当前CPU之外的任一CPU发送核间中断,接收者CPU收到核间中断后记录时间返回给发送者CPU收到核间中断的时间,进而得到核间中断发送延迟时间;重复发送100000次核间中断,最后可以计算平均时延与核间中断延迟的抖动性。该优选实施例提供的实时性能测试方法,其核间中断测试模式,能够统计CPU之间核间中断的时延。
进一步地,该优选实施例提供的实时性能测试方法,可以包括如下步骤:
步骤1,创建一个内核测试模块,将其加载到Linux内核并通过get_cpu函数与当前运行该模块的CPU绑定。
步骤2,当内核测试模块向另一个CPU发送的核间中断时,首先记录当前时间,然后向除了当前CPU之外的任一CPU发送核间中断
步骤3,负责接受该核间中断的CPU会记录时间并返回给发送核间中断的CPU收到核间中断的时间,进而得到核间中断发送延迟时间
步骤4,重复发送100000次核间中断,最后根据总时延计算平均时延与核间中断延迟的抖动性。
在该优选实施例中,当加载用于核间测试的内核测试模块时,该内核测试模块会与当前运行的CPU绑定。模块向另一个CPU发送的核间中断时,首先记录当前时间,然后向除了当前CPU之外的任一CPU发送核间中断。接收者CPU收到核间中断后记录时间返回给发送者CPU收到核间中断的时间,进而得到核间中断发送延迟时间,最后可以计算平均时延与核间中断延迟的抖动性。
该优选实施例提供的实时性能测试方法,是一种基于核间中断的虚拟化实时性测试方法,能够测试在嵌入式虚拟化环境下核间中断的平均时延与核间中断延迟的抖动性。
本发明一实施例提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时可用于执行本发明上述实施例中任一项的方法(包括嵌入式虚拟化系统的构建方法和实时性能测试方法),或,运行本发明上述实施例中的嵌入式虚拟化系统。
可选地,存储器,用于存储程序;存储器,可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-access memory,缩写:RAM),如静态随机存取存储器(英文:static random-access memory,缩写:SRAM),双倍数据率同步动态随机存取存储器(英文:Double Data Rate Synchronous Dynamic Random Access Memory,缩写:DDR SDRAM)等;存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory)。存储器用于存储计算机程序(如实现上述方法的应用程序、功能模块等)、计算机指令等,上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器中。并且上述的计算机程序、计算机指令、数据等可以被处理器调用。
处理器,用于执行存储器存储的计算机程序,以实现上述实施例涉及的方法中的各个步骤。具体可以参见前面方法实施例中的相关描述。
处理器和存储器可以是独立结构,也可以是集成在一起的集成结构。当处理器和存储器是独立结构时,存储器、处理器可以通过总线耦合连接。
根据本发明的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可用于执行本发明上述实施例中任一项的方法(包括嵌入式虚拟化系统的构建方法和实时性能测试方法),或,运行本发明上述实施例中的嵌入式虚拟化系统。
本发明上述实施例提供的嵌入式虚拟化系统及构建、测试方法、终端及介质,设计了一种嵌入式虚拟化系统及其搭建方法,可以使得Jailhouse和Xen这两种TYPE1型虚拟机监视器能够移植到ARM架构的嵌入式开发板,并能够运行Android、Linux、Freertos等多个异构操作系统,具有性能开销大幅度降低并且具有良好的实时性能的优点。设计了一种基于核间中断传递的虚拟化实时性测试方法,通过将Linux内核模块与CPU绑定,然后随机选择向除本CPU之外的任意一个CPU发送核间中断,记录从发送到接收的时间间隔,进而计算核间中断的平均时延与抖动性,具有测试步骤简单、性能测试结果精确的优点。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (12)
1.一种嵌入式虚拟化系统的构建方法,其特征在于,包括:
配置系统环境;
在配置的所述系统环境下,将虚拟机监视器移植到ARM架构的嵌入式开发板;
在移植后的所述虚拟机监视器上运行多个异构操作系统,完成对嵌入式虚拟化系统的构建;
其中:
所述将虚拟机监视器移植到ARM架构的嵌入式开发板,包括:
获取虚拟机监视器指定版本的源代码;
对所述虚拟机监视器指定版本的源代码进行编译,获得能够运行在ARM架构的虚拟机监视器镜像;
将所述虚拟机监视器镜像拷贝至根文件系统的第一个分区,并加载虚拟机监视器镜像,完成将虚拟机监视器移植到ARM架构的嵌入式开发板。
2.根据权利要求1所述的嵌入式虚拟化系统的构建方法,其特征在于,所述配置系统环境,包括:
部署yocto系统环境,编译所需要的依赖工具包,并配置repo;
利用git获取yocto系统环境源码,指定目标开发板的类型,并配置和编译yocto系统环境源码,得到配置文件、设备树文件以及根文件系统镜像;
构建系统环境的SDK,获取所需运行的操作系统的编译开发工具链,并安装到指定开发目录,将所述编译开发工具链添加到环境变量中,完成对系统环境的配置。
3.根据权利要求2所述的嵌入式虚拟化系统的构建方法,其特征在于,所述将虚拟机监视器移植到ARM架构的嵌入式开发板,还包括如下任意一项或任意多项:
-通过git从镜像网站获取虚拟机监视器指定版本的源代码;
-通过所述编译开发工具链以交叉编译的方式在x86架构的机器上对所述虚拟机监视器的源代码进行编译;
-在U-boot命令行中加载虚拟机监视器镜像。
4.根据权利要求1所述的嵌入式虚拟化系统的构建方法,其特征在于,所述虚拟机监视器包括Jailhouse虚拟机监视器和Xen虚拟监视器;其中:
在所述Jailhouse虚拟机监视器运行多个异构操作系统,包括:
利用通过配置系统环境得到的编译开发工具链编译操作系统源码与Jailhouse源码,获得如下文件:操作系统镜像、Jailhouse镜像与Jailhouse用户态工具、Jailhous内核模块、Cell配置和Inmate程序;
将上述文件拷贝到根文件系统镜像,并通过UUU工具将根文件系统烧录到预设的存储卡或开发板自带的eMMC;
启动所述Jailhouse虚拟机监视器,在U-boot命令行中,加载Jailhouse镜像到指定的保留内存区域;
在所述Jailhouse虚拟机监视器中加载Jailhouse内核模块运行Jailhouse,并通过所述用户态工具将所述操作系统创建为Root Cell;
采用所述用户态工具根据Cell配置文件为所述述Jailhouse虚拟机监视器配置指定的硬件资源;
利用所述操作系统镜像以及设备树文件,创建并启动所述操作系统;
在所述Xen虚拟机监视器运行多个异构操作系统,包括:
利用通过配置系统环境得到的所述编译开发工具链编译操作系统源码与Xen源码,获得操作系统镜像与Xen虚拟机监视器镜像;
将所述操作系统烧录至预设的存储卡或开发板自带的eMMC;
启动所述Xen虚拟机监视器,在Uboot命令行中为Xen虚拟机监视器设置环境变量,将Xen虚拟机监视器镜像加载到内存的特定位置,并启动Dom0;
进入Dom0后,通过Xen虚拟机监视器提供的xl工具创建DomU,并在所述DomU中启动操作系统。
5.根据权利要求4所述的嵌入式虚拟化系统的构建方法,其特征在于,所述为所述Jailhouse虚拟机监视器配置指定的硬件资源,包括:CPU核心和物理内存区域。
6.根据权利要求4所述的嵌入式虚拟化系统的构建方法,其特征在于,将所述预设的存储卡分为三个分区,其中,第一个分区为启动所需配置文件分区,第二个分区为根文件系统分区,第三个分区为创建操作系统分区;其中:
所述配置文件为FAT格式文件,包括:Xen虚拟机监视器镜像、Linux Image、imx8qm对应的设备树文件以及Dom0的配置文件;
所述根文件系统为EXT4格式的Dom0下的Linux根文件系统。
7.一种嵌入式虚拟化系统,其特征在于,采用权利要求4-6中任一项所述的构建方法构建得到,包括:
Jailhouse虚拟机监视器模块,该模块运行在裸机之上,根据Cell配置文件初始化并管理物理硬件资源;
Jailhouse内核模块模块,该模块将Jailhouse虚拟机监视器镜像加载到指定的内存位置;同时,将cell文件中的配置数据从用户态被拷贝到kernel态;
Jailhouse用户态工具模块,该模块提供创建和管理虚拟机的使用接口;用户通过所述使用接口查询虚拟机的状态,并创建和销毁虚拟机;
Xen虚拟机监视器模块,该模块运行在裸机之上,根据配置文件进行初始化并管理物理硬件资源;
Xl工具模块,该模块通过Xen虚拟机监视器提供用户接口,用户通过所述用户接口查询虚拟机的状态,并创建和销毁虚拟机;同时,用户通过所述用户接口在不同虚拟机间切换。
8.一种权利要求7所述的嵌入式虚拟化系统的实时性能测试方法,其特征在于,所述方法基于核间中断,包括:
构建测试内核模块,将所述测试内核模块加载到虚拟机的Linux内核并与当前运行所述测试内核模块的CPU绑定;
当所述测试内核模块向另一个CPU发送核间中断时,首先记录当前时间,然后向除了当前运行的CPU之外的任一CPU发送核间中断;
负责接收所述核间中断的CPU记录时间并返回给发送所述核间中断的CPU收到所述核间中断的时间,进而得到所述核间中断发送延迟时间;
重复发送核间中断,根据总时延计算平均时延与核间中断延迟的抖动性。
9.根据权利要求8所述的嵌入式虚拟化系统的实时性能测试方法,其特征在于,
通过编译开发工具链以交叉编译的方式编译一内核模块,构建得到所述测试内核模块;其中:
所述测试内核模块与当前运行所述测试内核模块的CPU绑定,并通过Linux内核提供的smp_call_function_many函数向其他CPU发送核间中断,并让其他CPU记录收到核间中断的时间;
重复发送核间中断,最后根据总时延计算平均时延与核间中断延迟的抖动性。
10.根据权利要求8所述的嵌入式虚拟化系统的实时性能测试方法,其特征在于,通过get_cpu函数,将所述测试内核模块加载到虚拟机的Linux内核并与当前运行所述内核模块的CPU进行绑定。
11.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时可用于执行权利要求1-6或8-10中任一项所述的方法,或,运行权利要求7所述的系统。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时可用于执行权利要求1-6或8-10中任一项所述的方法,或,运行权利要求7所述的系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110881269.5A CN113672342B (zh) | 2021-08-02 | 2021-08-02 | 嵌入式虚拟化系统及构建、测试方法、终端及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110881269.5A CN113672342B (zh) | 2021-08-02 | 2021-08-02 | 嵌入式虚拟化系统及构建、测试方法、终端及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672342A true CN113672342A (zh) | 2021-11-19 |
CN113672342B CN113672342B (zh) | 2024-02-27 |
Family
ID=78541111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110881269.5A Active CN113672342B (zh) | 2021-08-02 | 2021-08-02 | 嵌入式虚拟化系统及构建、测试方法、终端及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672342B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168153A (zh) * | 2022-02-10 | 2022-03-11 | 统信软件技术有限公司 | 一种编译方法、计算设备及存储介质 |
CN115543545A (zh) * | 2022-11-25 | 2022-12-30 | 麒麟软件有限公司 | Jailhouse使用ACPI实现设备隔离的方法 |
CN116302303A (zh) * | 2022-09-09 | 2023-06-23 | 科东(广州)软件科技有限公司 | 一种基于type1虚拟化系统的实时性增强方法及装置 |
CN116737322A (zh) * | 2023-08-10 | 2023-09-12 | 麒麟软件有限公司 | 虚拟机同时支持PCIe虚拟设备和物理设备的方法 |
CN117389691A (zh) * | 2023-12-11 | 2024-01-12 | 利尔达科技集团股份有限公司 | 一种基于嵌入式操作系统的虚拟机 |
CN118227145A (zh) * | 2024-03-20 | 2024-06-21 | 北京航天万源科技有限公司 | 一种鸿蒙操作系统和实时操作系统混合部署方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03143247A (ja) * | 1989-10-26 | 1991-06-18 | Fuji Electric Co Ltd | 永久磁石同期機の冷却装置 |
DE10246690A1 (de) * | 2002-10-07 | 2004-04-22 | Siemens Ag | Belüftungssystem für Generatoren in Windkraftanlagen |
FR2895845A1 (fr) * | 2006-01-04 | 2007-07-06 | Volkswagen Ag | Dispositif et procede de refroidissement de l'electronique de puissance d'une combinaison generateur/moteur electrique. |
US20080030085A1 (en) * | 2006-07-28 | 2008-02-07 | Danotek Motion Technologies, Inc. | Permanent-magnet generator and method of cooling |
CN102279769A (zh) * | 2011-07-08 | 2011-12-14 | 西安交通大学 | 一种面向嵌入式Hypervisor 的中断虚拟化操作方法 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
US9720674B1 (en) * | 2008-05-05 | 2017-08-01 | Open Invention Network, Llc | Automating application of software patches to a server having a virtualization layer |
DE102017216732A1 (de) * | 2017-09-21 | 2019-03-21 | Conti Temic Microelectronic Gmbh | Stromrichter, elektrische Antriebsanordnung mit einem Stromrichter |
CN112817690A (zh) * | 2021-01-22 | 2021-05-18 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统 |
-
2021
- 2021-08-02 CN CN202110881269.5A patent/CN113672342B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03143247A (ja) * | 1989-10-26 | 1991-06-18 | Fuji Electric Co Ltd | 永久磁石同期機の冷却装置 |
DE10246690A1 (de) * | 2002-10-07 | 2004-04-22 | Siemens Ag | Belüftungssystem für Generatoren in Windkraftanlagen |
FR2895845A1 (fr) * | 2006-01-04 | 2007-07-06 | Volkswagen Ag | Dispositif et procede de refroidissement de l'electronique de puissance d'une combinaison generateur/moteur electrique. |
US20080030085A1 (en) * | 2006-07-28 | 2008-02-07 | Danotek Motion Technologies, Inc. | Permanent-magnet generator and method of cooling |
US9720674B1 (en) * | 2008-05-05 | 2017-08-01 | Open Invention Network, Llc | Automating application of software patches to a server having a virtualization layer |
CN102279769A (zh) * | 2011-07-08 | 2011-12-14 | 西安交通大学 | 一种面向嵌入式Hypervisor 的中断虚拟化操作方法 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
DE102017216732A1 (de) * | 2017-09-21 | 2019-03-21 | Conti Temic Microelectronic Gmbh | Stromrichter, elektrische Antriebsanordnung mit einem Stromrichter |
CN112817690A (zh) * | 2021-01-22 | 2021-05-18 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168153A (zh) * | 2022-02-10 | 2022-03-11 | 统信软件技术有限公司 | 一种编译方法、计算设备及存储介质 |
CN114168153B (zh) * | 2022-02-10 | 2022-05-20 | 统信软件技术有限公司 | 一种编译方法、计算设备及存储介质 |
CN116302303A (zh) * | 2022-09-09 | 2023-06-23 | 科东(广州)软件科技有限公司 | 一种基于type1虚拟化系统的实时性增强方法及装置 |
CN116302303B (zh) * | 2022-09-09 | 2024-02-13 | 科东(广州)软件科技有限公司 | 一种基于type1虚拟化系统的实时性增强方法及装置 |
CN115543545A (zh) * | 2022-11-25 | 2022-12-30 | 麒麟软件有限公司 | Jailhouse使用ACPI实现设备隔离的方法 |
CN115543545B (zh) * | 2022-11-25 | 2023-03-17 | 麒麟软件有限公司 | Jailhouse使用ACPI实现设备隔离的方法 |
CN116737322A (zh) * | 2023-08-10 | 2023-09-12 | 麒麟软件有限公司 | 虚拟机同时支持PCIe虚拟设备和物理设备的方法 |
CN116737322B (zh) * | 2023-08-10 | 2023-10-31 | 麒麟软件有限公司 | 虚拟机同时支持PCIe虚拟设备和物理设备的方法 |
CN117389691A (zh) * | 2023-12-11 | 2024-01-12 | 利尔达科技集团股份有限公司 | 一种基于嵌入式操作系统的虚拟机 |
CN117389691B (zh) * | 2023-12-11 | 2024-03-22 | 利尔达科技集团股份有限公司 | 一种基于嵌入式操作系统的虚拟机 |
CN118227145A (zh) * | 2024-03-20 | 2024-06-21 | 北京航天万源科技有限公司 | 一种鸿蒙操作系统和实时操作系统混合部署方法 |
CN118227145B (zh) * | 2024-03-20 | 2024-09-24 | 北京航天万源科技有限公司 | 一种鸿蒙操作系统和实时操作系统混合部署方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113672342B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113672342A (zh) | 嵌入式虚拟化系统及构建、测试方法、终端及介质 | |
US9811369B2 (en) | Method and system for physical computer system virtualization | |
CN101819538A (zh) | 管理执行在虚拟机中的操作系统的请求 | |
US20140089924A1 (en) | Sharing Reconfigurable Computing Devices Between Workloads | |
CN110716845B (zh) | 一种Android系统的日志信息读取的方法 | |
US10467027B1 (en) | Dynamic script loading resource files | |
CN103577308A (zh) | 移动设备的日志文件的获取方法 | |
CN113051088B (zh) | 程序加载方法、装置、设备及计算机可读介质 | |
KR101249735B1 (ko) | 범용 운영체제 상에서 안드로이드 어플리케이션을 실행하기 위한 단말장치 및 방법, 그리고 이를 위한 컴퓨터로 판독가능한 기록매체 | |
US7574696B2 (en) | Multiprocessor application interface requiring no utilization of a multiprocessor operating system | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN114398172A (zh) | 资源配置方法、装置、电子设备及计算机可读存储介质 | |
CN112214388A (zh) | 内存监控方法、装置、设备及计算机可读存储介质 | |
US8726258B2 (en) | Supporting multiple hardware components in UEFI | |
EP2869189A1 (en) | Boot up of a multiprocessor computer | |
KR20130068630A (ko) | 임베디드 디바이스의 초기화 방법 및 장치 | |
CN105094870A (zh) | 64位Linux操作系统兼容32位应用软件的方法 | |
CN111782335A (zh) | 通过进程内操作系统的扩展应用机制 | |
US10552135B1 (en) | Reducing a size of an application package | |
CN102141915B (zh) | 一种基于RTLinux的设备实时控制方法 | |
US12067380B2 (en) | System and method of offloading and migrating management controller functionalities using containerized services and application thereof | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN109656758B (zh) | 用于异构双处理器系统芯片的调试方法及系统 | |
CN113467893B (zh) | 虚拟机自动化测试方法、装置、存储介质及处理器 | |
US11720348B2 (en) | Computing node allocation based on build process specifications in continuous integration environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |