异构操作系统部署方法、系统、电子设备及存储介质与流程

文档序号:32483521发布日期:2022-12-10 00:04阅读:172来源:国知局
异构操作系统部署方法、系统、电子设备及存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种异构操作系统部署方法、系统、电子设备及存储介质。


背景技术:

2.随着多核芯片应用越来越广泛,多核芯片如何管理共享资源存在极大挑战。在大多数情况下,多核cpu的内核拥有独立的l1缓存,共享l2缓存、内存子系统、中断子系统和外设,因此,需要让每个内核独立访问某种资源,并确保资源不会被其他内核上的应用程序争抢。
3.多核的出现还让系统设计变得更加复杂,如运行在不同内核上的应用为了互相访问和相互协作,需要进行一些独特的设计,如高效的进程间通信(inter process communication,ipc)机制、共享内存的数据结构和同步原语(synchronization primitives)。程序代码迁移(code migration)也是个问题,大多数系统厂商都在针对单核cpu架构的代码库上进行了大量投资。因而,需要有一个清晰的迁移策略,来使其代码可以最大化地利用多核硬件资源。
4.针对多核设计的操作系统可能会大大减少解决上述挑战所需的工作量,也可能增加另一些问题的复杂性,取决于操作系统是如何支持多核芯片的多处理模式,多处理模式主要有以下三种:
5.(1)非对称多处理(asymmetric multiprocessing,amp)
6.每个cpu内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation)。
7.(2)对称多处理(symmetric multiprocessing,smp)
8.一个操作系统的实例可以同时管理所有cpu内核,且应用并不绑定某一个内核。
9.(3)混合多处理(bound multiprocessing,bmp)
10.一个操作系统的实例可以同时管理所有cpu内核,但每个应用被锁定于某个指定的核心。
11.以linux和vxworks操作系统进行比较,如表1所示:
12.表1
[0013][0014][0015]
因此,需要提出一种能将不同类型操作系统同时部署到不同硬核上的方法,能将多核cpu的性能发挥到极限。


技术实现要素:

[0016]
本发明提供一种异构操作系统部署方法、系统、电子设备及存储介质,用以解决现有技术中针对不同类型操作系统部署到不同硬核上的有效方法的缺陷。
[0017]
第一方面,本发明提供一种异构操作系统部署方法,包括:
[0018]
获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;
[0019]
获取所述不同操作系统的多个虚拟地址;
[0020]
基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;
[0021]
确定所述不同操作系统的镜像的部署运行结果。
[0022]
根据本发明提供的一种异构操作系统部署方法,所述获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域之前,还包括:
[0023]
通过设备树dts文件确定硬核启动数量;
[0024]
基于所述硬核启动数量,从内核管理空间中获取连续物理内存区域,由所述连续物理内存区域确定所述规划物理内存。
[0025]
根据本发明提供的一种异构操作系统部署方法,所述获取所述不同操作系统的多个虚拟地址,包括:
[0026]
从用户态上获取内存映射文件方法mmap,基于所述mmap映射获得所述不同操作系统的多个虚拟地址。
[0027]
根据本发明提供的一种异构操作系统部署方法,所述基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域,包括:
[0028]
确定所述不同操作系统的镜像在所述硬核加载区域中的固定存储区域;
[0029]
通过文件读写方式,根据所述多个虚拟地址将所述不同操作系统的镜像加载至所述固定存储区域。
[0030]
根据本发明提供的一种异构操作系统部署方法,所述确定所述不同操作系统的镜像的部署运行结果,包括:
[0031]
依次释放存储在不同固定存储区域的硬核,若确定所述不同操作系统的镜像加载成功,则输出部署运行成功结果,否则输出部署运行失败结果。
[0032]
根据本发明提供的一种异构操作系统部署方法,所述dts文件和所述内核管理空间基于linux环境运行。
[0033]
第二方面,本发明还提供一种异构操作系统部署系统,包括:
[0034]
规划模块,用于获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;
[0035]
映射模块,用于获取所述不同操作系统的多个虚拟地址;
[0036]
加载模块,用于基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;
[0037]
确定模块,用于确定所述不同操作系统的镜像的部署运行结果。
[0038]
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述异构操作系统部署方法。
[0039]
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述异构操作系统部署方法。
[0040]
第五方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述异构操作系统部署方法。
[0041]
本发明提供的异构操作系统部署方法、系统、电子设备及存储介质,以硬核作为硬件载体,以不同类型操作系统为软件载体,并提通过具体加载及实现方式,实现多核cpu下如何将不同类型的操作系统部署到硬核上运行,并能实现系统之间高效的数据交互功能。
附图说明
[0042]
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]
图1是本发明提供的异构操作系统部署方法的流程示意图;
[0044]
图2是本发明提供的异构操作系统部署系统的结构示意图;
[0045]
图3是本发明提供的电子设备的结构示意图。
具体实施方式
[0046]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]
下面结合图1-图3描述本发明的异构操作系统部署方法。
[0048]
为实现在多核cpu下如何将不同类型的操作系统部署到硬核上运行,彼此之间能高效的进行数据交互,本发明提出一种基于飞腾d2000处理器架构的异构操作系统部署方法,涉及内核态和用户态下的功能的实现。
[0049]
需要说明的是,飞腾d2000是飞腾新一代高效能桌面cpu,集成了8个飞腾自主研发的高性能处理器内核ftc663,兼容64位armv8指令集,主频2.0~2.3ghz,tdp功耗25w,集成丰富i/o接口,访存带宽达18.7gb/s。
[0050]
用户态和内核态是操作系统中的两种cpu状态,通常,内核态运行操作系统程序和操作硬件,用户态则是运行用户程序。用户态向内核态切换的唯一途径是通过中断、异常和陷入机制(访管指令),内核态向用户态切换通过设置程序状态字psw。
[0051]
图1是本发明提供的异构操作系统部署方法的流程示意图,如图1所示,包括:
[0052]
步骤100:获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;
[0053]
步骤200:获取所述不同操作系统的多个虚拟地址;
[0054]
步骤300:基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;
[0055]
步骤400:确定所述不同操作系统的镜像的部署运行结果。
[0056]
具体地,首先将预先获取的规划物理内存,对应到不同操作系统的硬核加载区域,在一定状态下获取上述多个不同操作系统映射出来的多个虚拟地址,再根据映射出的多个虚拟地址将不同操作系统的镜像加载至硬核加载区域中划分的特定存储区域,最后依次对硬核进行操作,查看获取不同操作系统的镜像是否部署成功。
[0057]
这里提供了一种可以在多核上部署不同种类的操作系统、多核彼此之间能高效进行数据传递的一种方法。
[0058]
本发明以硬核作为硬件载体,以不同类型操作系统为软件载体,并提通过具体加载及实现方式,实现多核cpu下如何将不同类型的操作系统部署到硬核上运行,并能实现系
统之间高效的数据交互功能。
[0059]
在上述实施例的基础上,所述获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域之前,还包括:
[0060]
通过设备树dts文件确定硬核启动数量;
[0061]
基于所述硬核启动数量,从内核管理空间中获取连续物理内存区域,由所述连续物理内存区域确定所述规划物理内存。
[0062]
其中,所述dts文件和所述内核管理空间基于linux环境运行。
[0063]
具体地,本发明均是在linux环境下进行,通过linux的设备树dts文件控制硬核启动数目,并从linux内核管理的空间中申请一块连续的物理内存区域,用于不同类型的操作系统提供运行空间。具体实现的源代码为:
[0064][0065]
此处,设备树是linux内核采用的参数表示和传递技术,在系统引导启动阶段进行设备初始化的时候,将设备树中描述的硬件信息传递给操作系统。在设备驱动源码中,分为驱动代码和设备代码,驱动代码是操作硬件的方法,设备代码是硬件资源、数据,当驱动代码和设备代码匹配时就会调用驱动的probe函数,probe函数会利用设备代码的资源去初始化设备;应用设备树之前,设备代码都是直接写在内核源码中的,以platform_device结构
体的形式存在,驱动代码和设备代码也是在platform总线上匹配,当需要修改设备资源时,就需要修改内核源码;设备树技术将设备的硬件资源信息就写在dts文件中,需要修改就修改dts文件,不必在修改内核源码;不采用设备树技术:内核源码中会充斥大量设备硬件描述信息,导致内核源码不停增多,但是增多的硬件描述信息代码和内核功能并不相关;采用设备树技术之后:设备的硬件描述信息都在dts文件中,修改方便,但是内核要增加解析dts文件格式的代码。设备树的工作原理具体为:驱动开发者根据硬件编写/修改dts文件,使得将来驱动代码能匹配到合适的设备硬件信息;编译内核时,kernel会先编译出dtc,然后再用dtc将dts文件编译成dtb;uboot启动kernel时,将内核镜像和dtb都重定位到内存,并告诉内核dtb的所在内存地址;内核启动初期调用内部函数解析dtb,得到硬件信息后再组装成硬件函数,最后去和驱动代码进行匹配。
[0066]
本发明通过设备数控制硬核的启动数目,并专门划分连续物理内存区域用于记载不同类型的操作系统,能提高不同操作系统的加载速度。
[0067]
在上述实施例的基础上,所述获取所述不同操作系统的多个虚拟地址,包括:
[0068]
从用户态上获取内存映射文件方法mmap,基于所述mmap映射获得所述不同操作系统的多个虚拟地址。
[0069]
具体地,本发明通过在用户态上获取mmap来映射出相应的虚拟地址。
[0070]
其中,mmap是一种内存映射文件的方法,mmap通过将一个文件或者其它对象映射进内存,文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零,mmap在用户空间映射调用系统中作用很大。通常的实现代码为:
[0071]
头文件《sys/mman.h》
[0072]
函数原型
[0073]
void*mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset);
[0074]
int munmap(void*start,size_t length);
[0075]
mmap函数必须以page_size为单位进行映射,而内存也只能以页为单位进行映射,若要映射非page_size整数倍的地址范围,要先进行内存对齐,强行以page_size的倍数大小进行映射。mmap操作提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。在要求高性能的应用中比较常用。mmap映射内存必须是页面大小的整数倍,面向流的设备不能进行mmap,mmap的实现和硬件有关。
[0076]
在上述实施例的基础上,所述基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域,包括:
[0077]
确定所述不同操作系统的镜像在所述硬核加载区域中的固定存储区域;
[0078]
通过文件读写方式,根据所述多个虚拟地址将所述不同操作系统的镜像加载至所述固定存储区域。
[0079]
具体地,本发明进一步通过文件读写的方式将不同类型的操作系统镜像加载到固定的内存区域,具体实现代码为:
[0080]
int bsp_load_bin_file(void)
[0081]
本发明通过在多核cpu下如何将不同类型的操作系统部署到硬核上运行,使彼此之间能高效的进行数据交互。
[0082]
在上述实施例的基础上,所述确定所述不同操作系统的镜像的部署运行结果,包括:
[0083]
依次释放存储在不同固定存储区域的硬核,若确定所述不同操作系统的镜像加载成功,则输出部署运行成功结果,否则输出部署运行失败结果。
[0084]
具体地,当不同类型操作系统的镜像加载到固定内存区域后,采用依次释放硬核,查看上述加载的镜像是否启动成功。具体实现代码为:
[0085]
unsigned long bspreleasecore(unsigned long ulcoremask,unsigned int entryaddr)
[0086]
本发明以硬核作为硬件载体,以不同类型操作系统为软件载体,并提通过具体加载及实现方式,实现多核cpu下如何将不同类型的操作系统部署到硬核上运行,并能实现系统之间高效的数据交互功能。
[0087]
下面对本发明提供的异构操作系统部署系统进行描述,下文描述的异构操作系统部署系统与上文描述的异构操作系统部署方法可相互对应参照。
[0088]
图2是本发明提供的异构操作系统部署系统的结构示意图,如图2所示,包括:
[0089]
规划模块21用于获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;映射模块22用于获取所述不同操作系统的多个虚拟地址;加载模块23用于基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;确定模块24用于确定所述不同操作系统的镜像的部署运行结果。
[0090]
本发明以硬核作为硬件载体,以不同类型操作系统为软件载体,并提通过具体加载及实现方式,实现多核cpu下如何将不同类型的操作系统部署到硬核上运行,并能实现系统之间高效的数据交互功能。
[0091]
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(communications interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行异构操作系统部署方法,该方法包括:获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;获取所述不同操作系统的多个虚拟地址;基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;确定所述不同操作系统的镜像的部署运行结果。
[0092]
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0093]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的异构操作系统部署方法,该方法包括:获取规划物
理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;获取所述不同操作系统的多个虚拟地址;基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;确定所述不同操作系统的镜像的部署运行结果。
[0094]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的异构操作系统部署方法,该方法包括:获取规划物理内存,由所述规划物理内存确定不同操作系统的硬核加载区域;获取所述不同操作系统的多个虚拟地址;基于所述多个虚拟地址将所述不同操作系统的镜像加载至所述硬核加载区域;确定所述不同操作系统的镜像的部署运行结果。
[0095]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0096]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0097]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1