CN116243995A - 通信方法、装置、计算机可读存储介质以及电子设备 - Google Patents

通信方法、装置、计算机可读存储介质以及电子设备 Download PDF

Info

Publication number
CN116243995A
CN116243995A CN202310536661.5A CN202310536661A CN116243995A CN 116243995 A CN116243995 A CN 116243995A CN 202310536661 A CN202310536661 A CN 202310536661A CN 116243995 A CN116243995 A CN 116243995A
Authority
CN
China
Prior art keywords
memory
target
operating system
virtual channel
data
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
Application number
CN202310536661.5A
Other languages
English (en)
Other versions
CN116243995B (zh
Inventor
马斌
陈瑾
马文凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310536661.5A priority Critical patent/CN116243995B/zh
Publication of CN116243995A publication Critical patent/CN116243995A/zh
Application granted granted Critical
Publication of CN116243995B publication Critical patent/CN116243995B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请实施例提供了一种通信方法、装置、计算机可读存储介质以及电子设备,其中,该方法包括:第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行;向第二操作系统发送中断通知消息;第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。通过本申请,解决了核间通信过程浪费资源,对操作系统的依赖性强的问题。

Description

通信方法、装置、计算机可读存储介质以及电子设备
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种通信方法、装置、计算机可读存储介质以及电子设备。
背景技术
随着半导体行业的快速发展以及集成工艺的不断进步,在云计算、大数据、人工智能和工业互联网等领域选用的处理器逐渐由单核演变成多核,使用的操作系统也逐渐由一个操作系统演变成了多个操作系统。
多核多操作系统之间需要提供核间通信的方式来实现数据的同步和交互,同时保证通讯的实时性。在相关技术中,多核多操作系统的核间通信多采用额外的组件来实现,开发困难,操作较为繁琐,增加的额外组件导致系统资源的浪费,同时对操作系统的依懒性也很强。
发明内容
本申请实施例提供了一种通信方法、装置、计算机可读存储介质以及电子设备,以至少解决相关技术中核间通信过程浪费资源,对操作系统的依赖性强的问题。
根据本申请的一个实施例,提供了一种通信方法,包括:第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行;向第二操作系统发送中断通知消息;第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。
在一个示例性实施例中,内存中包含数据存储区和元数据存储区,数据存储区被划分为多个存储单元,每个存储单元用于存储业务数据,元数据存储区用于存储数据存储区的各个存储单元的大小以及被占用状态。
在一个示例性实施例中,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道;将元数据存储区中目标虚拟通道对应的至少一个存储单元的状态设置为被占用状态,并将目标数据存储在目标虚拟通道。
在一个示例性实施例中,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据包括:第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道;从目标虚拟通道对应的至少一个存储单元获取目标数据,并将至少一个存储单元的状态设置为空闲状态。
在一个示例性实施例中,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:第一操作系统的驱动层接收目标数据,在内存中确定处于空闲状态的虚拟通道,得到目标虚拟通道;将目标虚拟通道的状态设置为被占用状态,并将目标数据存储至目标虚拟通道。
在一个示例性实施例中,在第一操作系统中包含应用层的情况下,应用层设置有人机交互接口,在第一操作系统的驱动层在内存中确定处于空闲状态的虚拟通道之前,该方法还包括:第一操作系统的应用层通过人机交互接口接收用户输入的待发送数据,采用预设格式封装待发送数据,得到目标数据,并调用数据写入函数通过预设通信接口将目标数据传递至驱动层,其中,预设通信接口设置在驱动层上。
在一个示例性实施例中,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据包括:第二操作系统基于中断通知消息触发中断处理函数,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
在一个示例性实施例中,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据包括:通过中断处理函数调用目标任务,由目标任务从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
在一个示例性实施例中,在第二操作系统包含应用层的情况下,内存中存储有功能标识,功能标识指示目标功能,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据包括:通过中断处理函数从内存中确定功能标识和目标虚拟通道,并将目标虚拟通道的地址信息发送给功能标志匹配的目标应用程序,其中,目标应用程序为应用层中的目标应用程序;目标应用程序调用数据读取函数通过预设通信接口将地址信息传递至驱动层,驱动层从目标虚拟通道获取目标数据,并将目标数据传递至目标应用程序,其中,预设通信接口设置在驱动层,目标应用程序根据功能标识匹配的处理函数处理目标数据,以执行目标功能。
在一个示例性实施例中,数据存储区中包含多个内存通道,每个内存通道由一个或多个存储单元构成,元数据存储区存储有多条记录,每条记录用于记录一个内存通道的元数据,每个内存通道的元数据至少包含内存通道的通道ID、内存通道的大小、内存通道的被占用状态,第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道包括:遍历元数据存储区存储的记录,判断是否存在指示内存通道处于空闲状态、且内存通道的大小大于等于目标数据的长度的第一目标记录;在存在第一目标记录的情况下,将第一目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
在一个示例性实施例中,在内存通道被占用的情况下,内存通道的元数据还包括目标数据的源CPU核的ID以及目标数据的目的CPU核的ID,第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道包括:遍历元数据存储区存储的记录,判断是否存在第二目标记录,其中,第二目标记录指示内存通道处于被占用状态、且目的CPU核的ID为第二操作系统的CUP核的ID,源CPU核的ID非第二操作系统的CUP核的ID;在存在第二目标记录的情况下,将第二目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
在一个示例性实施例中,元数据存储区存储有映射表,映射表中有多条记录,每条记录用于记录一个存储单元的被占用状态,第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道包括:确定目标数据待占用的存储单元的预设数量;从映射表的初始位置依次扫描每条记录;在扫描到连续的预设数量的目标记录的情况下,确定预设数量的目标记录指示的连续存储单元,其中,目标记录表征存储单元处于空闲状态;将连续存储单元确定为目标虚拟通道。
在一个示例性实施例中,中断通知消息中包含连续存储单元的首地址和预设数量,第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道包括:从映射表的初始位置依次扫描每条记录;在扫描到记录有连续存储单元的首地址的情况下,将扫描到的地址指示的存储单元以及预设数量减一的连续存储单元确定为目标虚拟通道。
在一个示例性实施例中,通过计数器对扫描到的连续的目标记录进行记录,在按照存储单元的数量从映射表的初始位置依次扫描每条记录的过程中,在当前扫描到目标记录的情况下,控制计数器加一,在当前扫描到非目标记录的情况下,控制计数器清零。
在一个示例性实施例中,在第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道之前,该方法还包括:第一操作系统发送内存申请指令,并对处理器的内存执行加锁操作,其中,内存申请指令用于申请使用处理器的内存;在对内存加锁成功的情况下,读取映射表中的记录。
在一个示例性实施例中,对处理器的内存执行加锁操作包括:判断内存当前是否处于被加锁状态,其中,被加锁状态表征内存处于被申请使用的状态;在内存当前未处于被加锁状态的情况下,对内存执行加锁操作;在内存当前处于被加锁状态的情况下,确定对内存的加锁失败,在预设时长后再次申请对处理器的内存进行加锁,直至对内存加锁成功,或者,直至申请加锁的次数大于预设次数。
在一个示例性实施例中,在第一操作系统将目标数据发送至处理器内存中的目标虚拟通道之后,该方法还包括:释放对内存的加锁。
在一个示例性实施例中,该方法还包括:在未扫描到连续的预设数量的目标记录的情况下,释放对内存的加锁。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息。
在一个示例性实施例中,通过硬件中断的方式向第二操作系统发送中断通知消息。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息包括:向处理器的预设寄存器中写入中断号和第二操作系统的CPU核的ID,并基于中断号和第二操作系统的CPU核的ID生成中断通知消息。
根据本申请的另一个实施例,提供了一种嵌入式系统,包括:芯片和至少两个操作系统,其中,芯片包括处理器,处理器的内存中设置有虚拟通道;至少两个操作系统基于处理器运行,至少两个操作系统采用上述实施例的通信方法进行通信。
根据本申请的又一个实施例,还提供了一种芯片,其中,芯片包括可编程逻辑电路以及可执行指令中的至少之一,芯片在电子设备中运行,用于实现上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种BMC芯片,其中,包括:存储单元以及与存储单元连接的处理单元,存储单元用于存储程序,处理单元用于运行程序,以执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种主板,其中,包括:至少一个处理器;至少一个存储器,用于存储至少一个程序;当至少一个程序被至少一个处理器执行,使得至少一个处理器实现上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种服务器,其中,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一项方法实施例中的步骤。
根据本申请的另一个实施例,提供了一种通信装置,包括:第一发送单元,用于通过第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行;第二发送单元,用于向第二操作系统发送中断通知消息;获取单元,用于通过第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于在处理器上运行的多个操作系统需要互相传输数据时,发送数据的第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,并向第二操作系统发送中断通知消息,接收数据的第二操作系统响应中断通知消息从目标虚拟通道获取目标数据,因此,可以解决核间通信过程浪费资源,对操作系统的依赖性强的问题,达到减少核间通信过程对资源的浪费,对操作系统的依赖的效果。
附图说明
图1是本申请实施例的一种通信方法的移动终端的硬件结构框图;
图2是本实施例的嵌入式系统的示意图;
图3是本实施例的可选的嵌入式系统的示意图一;
图4是本实施例的可选的嵌入式系统的示意图二;
图5是根据本申请实施例的通信方法的流程图;
图6是本实施例的通信方法中结构体信息和内存通道的关系示意图;
图7是本实施例的通信方法中映射表和存储单元的关系示意图;
图8是本实施例的通信方法中用于产生中断消息的预设寄存器的示意图;
图9是根据本申请实施例的可选的通信方法的流程图一;
图10是根据本申请实施例的可选的通信方法的流程图二;
图11是根据本申请实施例的通信装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种通信方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的通信方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种嵌入式系统,可以运行于上述移动终端,图2是本实施例的嵌入式系统的示意图,如图2所示,该嵌入式系统可以包括:
芯片和至少两个操作系统,其中,芯片包括处理器1102、硬件控制器1104、第一总线1106和第二总线1108,其中,第一总线1106的带宽高于第二总线1108带宽,且第一总线1106被配置为多主多从模式,第二总线1108被配置为一主多从模式;至少两个操作系统基于处理器1102运行;至少两个操作系统通过第一总线1106进行通信;至少两个操作系统通过第二总线1108实现对硬件控制器的控制。
其中,上述芯片可以是BMC芯片;上述处理器可以是多核处理器,上述硬件控制器可以用于控制连接到对应的对外接口的外部设备。
BMC芯片通过第一总线与第二总线实现片内ARM核、存储单元及控制器硬件资源间的互连。ARM核心与各控制器通过第二总线互连,实现核心与各控制器间的交互。同时,ARM核心间连接至第一总线(比如:可以通过AXI(Advanced eXtensible Interface,高级可扩展接口)桥(Bridge)连接),核心间的通信通过第一总线实现。
上述第一总线被配置为多主多从模式,其可以是处理器的多个处理器内核之间进行通信所使用的总线,例如,AHB(Advanced High Performance Bus,高级高性能总线),上述第二总线被配置为一主多从模式,其可以是处理器对硬件控制器之间控制所使用的总线,例如,APB(Advanced Peripheral Bus,外围总线),第一总线的带宽高于第二总线带宽。
在一个示例性实施例中,AHB被配置为多主(master)多从(slave)模式,Master会首先向仲裁发送发文请求,仲裁决定合适让master获取总线访问的权限,master获取权限之后会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。同样响应的数据会通过Decoder解析,然后返回给对应的master。通过这种多路复用的机制实现多对多的访问。
在一个示例性实施例中,APB被配置为一主多从模式,APB挂在AHB总线系统下,通过AHB-APB Bridge将事务在AHB总线系统之间进行转化,此时Bridgre即为APB的master,其他的外围设备均为slave。数据请求只能由Master发向slave,slave收到请求后返回相应的响应数据给master,此过程可以实现一对多的访问,且访问不涉及AHB总线中的仲裁和Decoder解析操作。
嵌入式系统可以包括至少两个操作系统,至少两个操作系统基于处理器运行,而处理器的处理资源被动态分配给至少两个操作系统,处理器的处理资源包括处理器核心,至少两个操作系统通过第一总线进行通信,至少两个操作系统通过第二总线实现对硬件控制器的控制。
第一操作系统可以是具有明确固定的时间约束的操作系统,所有处理过程(任务调度)需要在固定的时间约束内完成,否则系统会出错,其可以是实时操作系统(Real TimeOperating System,简称RTOS),例如,FreeRTOS、RTLinux等,还可以是其他嵌入式系统中的实时操作系统。第二操作系统不具备该特征,第二操作系统一般采用公平任务调度算法,线程/进程数量增加时,就需要分享CPU时间,任务调试具有不确定性,可称为非实时操作系统,例如,contiki、HeliOS、Linux(全称GNU/Linux,是一套可自由传播的类Unix操作系统)等,还可以是其他嵌入式系统中的非实时操作系统,其中,Linux系统是一个基于POSIX(Portable Operating System Interface,可移植操作系统接口)的多用户、多任务、支持多线程和多CPU的操作系统。
在一个示例性实施例中,硬件控制器可以包括一种或多种,可以包括但不限于以下至少之一的芯片外设对应的控制器:I2C,USB(Universal Serial Bus,通用串行总线),UART,ADC(Analog to Digital Converter,模拟数字转换器),JTAG(Joint Test ActionGroup,联合测试工作组),RTC(Real_Time Clock,实时时钟),GPIO(General PurposeInput/Output,通用输入输出),WDT(Watch Dog Timer,看门狗),虚拟UART(VirtualUART),超级I/O(Super I/O),SGPIO(Serial General Purpose Input/Output,串行通用输入输出),PWM(Pulse Width Modulation,脉冲宽度调制),FanTach(风扇调速),Timer(时钟),PECI(Platform Environment Control Interface,平台环境式控制接口),邮箱(MailBox),还可以包括其他类型的控制器。对外接口可以包括一种或多种,可以包括但不限于与上述任一控制器对应的对外接口。
通过上述嵌入式系统,第一操作系统和第二操作系统基于处理器运行,并通过不同功能的总线实现操作系统间的通信和硬件控制器的控制。由于第一操作系统和第二操作系统均是基于同一个处理器运行,避免了硬件器件的增加和部署,降低了系统成本,并且合理利用处理器资源支持系统之间的运行,因此,可以解决操作系统的运行效率较低的技术问题,达到了提高操作系统的运行效率的技术效果。
根据本申请实施例的另一个方面,还提供了一种嵌入式系统,上述嵌入式系统可以运行于上述BMC芯片上,图3是本实施例的可选的嵌入式系统的示意图一,如图3所示,上述嵌入式系统可以包括:
第一操作系统和第二操作系统,第一操作系统和第二操作系统运行于处理器上,第一操作系统的响应速度高于第二操作系统;
业务管理模块,用于根据资源动态分配规则将一组待分配业务分配给对应的操作系统,其中,资源动态分配规则包括根据以下至少之一进行资源动态分配:业务响应速度,业务资源占用率;
资源动态分配模块,用于确定与一组待分配业务对应的资源分配结果,其中,资源分配结果用于指示处理器的处理资源中与一组待分配业务中的每个待分配业务对应的处理资源,处理器的处理资源包括处理器核心;
资源自适应调度模块,用于根据与每个待分配业务对应的操作系统以及资源分配结果,将处理器的处理资源分配给第一操作系统和第二操作系统。
在本实施例中,第一操作系统和第二操作系统可以与前述实施例中类似,在此不做赘述,业务管理模块、资源动态分配模块和资源自适应调度模块可以是运行在第一操作系统或者第二操作系统下的软件模组,通过进行上述模块划分,可以方便进行不同功能模块的开发与维护,同时,对于资源动态分配规则,通过对资源动态分配规则进行灵活设置,提高资源分配的灵活性。
通过上述嵌入式系统,该嵌入式系统包括:第一操作系统和第二操作系统,第一操作系统和第二操作系统运行于处理器上,第一操作系统的响应速度高于第二操作系统;业务管理模块,用于根据资源动态分配规则将一组待分配业务分配给对应的操作系统,其中,资源动态分配规则包括根据以下至少之一进行资源动态分配:业务响应速度,业务资源占用率;资源动态分配模块,用于确定与一组待分配业务对应的资源分配结果,其中,资源分配结果用于指示处理器的处理资源中与一组待分配业务中的每个待分配业务对应的处理资源,处理器的处理资源包括处理器核心;资源自适应调度模块,用于根据与每个待分配业务对应的操作系统以及资源分配结果,将处理器的处理资源分配给第一操作系统和第二操作系统,解决了相关技术中存在由于多核处理器多数的处理资源处于空闲状态导致的核心资源的整体利用率较低的问题,提高了处理资源的利用率。
需要说明的是,嵌入式系统运行的过程中,可以先启动操作系统,然后不同的操作系统进行业务数据的交互。
在一个示例性实施例中,在操作系统包括第一操作系统和第二操作系统的情况下,可以但不限于采用以下方式启动第一操作系统和第二操作系统:引导所述第一操作系统启动;引导所述第二操作系统启动。
可选地,在本实施例中,第一操作系统和第二操作系统可以但不限于先后启动,第一操作系统可以但不限于比第二操作系统启动更快,第一操作系统也可以但不限于比第二操作系统启动所需的条件更简单,在第一操作系统先启动后可以运行能够满足第二操作系统启动所需的条件,或者能够加快第二操作系统启动的业务,从而使得多系统能够更加高效快速地启动并运行业务。
比如:引导第一操作系统启动后可以由第一操作系统运行能够控制芯片环境参数达到第二操作系统启动要求的业务(比如:风扇运行,参数控制等业务),使得芯片环境参数迅速达成第二操作系统启动运行的环境,提高操作系统的启动效率和运行效率。
可选地,在本实施例中,第一操作系统可以但不限于由第一操作系统的引导程序引导启动,第二操作系统可以但不限于由第二操作系统的引导程序引导启动。或者,二者可以由同一个引导程序先后引导启动。
在一个示例性实施例中,可以但不限于采用以下方式引导所述第一操作系统启动:所述芯片启动上电,通过所述处理器唤醒所述处理器中为所述第一操作系统分配的第一处理器核心;通过所述第一处理器核心执行所述第一操作系统的引导程序引导所述第一操作系统启动。
在一个示例性实施例中,交互的过程可以但不限于采用存储空间和中断请求配合传输的方式来实现,操作系统之间通过存储空间来传递数据,通过中断请求来进行相互之间指令的通知。比如:获取第一操作系统基于处理器运行的过程中产生的业务数据;将业务数据存储至处理器上的存储空间;向第二操作系统发送中断请求,其中,中断请求用于请求第二操作系统从存储空间读取业务数据,第二操作系统用于响应中断请求从存储空间读取业务数据。
可选地,在本实施例中,第一操作系统基于处理器运行的过程中产生的业务数据被存储在处理器上的存储空间中,通过中断请求通知第二操作系统,由第二操作系统从存储空间中读取出业务数据,从而实现业务数据的交互。
可选地,在本实施例中,操作系统之间交互的业务数据可以但不限于是操作系统运行操作业务过程中任何需要在系统间进行传输的数据。比如:业务的过程数据,业务的结果数据等等。
可选地,在本实施例中,处理器上的存储空间中可以但不限于为操作系统之间的交互过程配置专用的存储位置,可以称为共享内存。第一操作系统所对应的共享内存的信息(比如:存储地址)可以携带在用于请求第二操作系统从存储空间读取业务数据的中断请求中,第二操作系统响应中断请求到其指示的共享内存上读取业务数据。
在本实施例中,各个中断请求可以但不限于通过软件协议的方式在系统间进行传输,或者也可以通过硬件模块进行传递。以硬件模块mailbox的形式传输中断请求为例,第一操作系统和第二操作系统之间可以建立mailbox通道,业务数据通过存储空间读写,中断请求通过mailbox通道传输。
第一操作系统在运行过程中产生业务数据并判定该业务数据是第二操作系统需要的或者是需要发送给第二操作系统的。此时,第一操作系统将业务数据存储至存储空间中,并向第二操作系统发送中断请求,第二操作系统响应该中断请求从存储空间中读取业务数据,并进行后续的处理。
图4是根据本申请实施例的可选的嵌入式系统的示意图二,通过图4所示的嵌入式系统实现本实施例的通信方法,如图4所示,系统包括:
芯片和至少两个操作系统,其中,芯片包括处理器,处理器的内存中设置有虚拟通道;至少两个操作系统基于处理器运行,至少两个操作系统采用本实施例的通信方法进行通信。
其中,至少两个操作系统可以包括第一操作系统和第二操作系统,第一操作系统可以将业务数据存储至虚拟通道中,并向第二操作系统发送中断请求,第二操作系统响应该中断请求从虚拟通道中读取业务数据,并进行后续的处理。
具体的,第一操作系统可以包含应用层和/或驱动层,第二操作系统也可以包含应用层和/或驱动层,第一操作系统使用处理器核心CPU0执行任务,第一操作系统使用处理器核心CPU1执行任务,CPU0和CPU1通过中断的方式实现通信。
需要说明的是,应用层给用户提供人机交互接口,灵活实现用户需要的具体功能;驱动层和硬件通信,可以读写硬件的寄存器,同时,驱动层会给应用层提供统一的接口,从而接收应用层传输的数据,程序应用层和驱动层进行分层设计和管理,方便程序的维护和移植。
图5是根据本申请实施例的通信方法的流程图,通过上述实施例的嵌入式系统实现,如图5所示,该流程包括如下步骤:
步骤S502,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行。
具体地,第一操作系统和第二操作系统可以是实时操作系统,也可以是非实时操作系统,第一操作系统和第二操作系统可以是单核操作系统,也可以是多核操作系统,目标数据为待发送的数据,目标虚拟通道是内存中的一段空闲存储空间,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道是指第一操作系统的CPU核将待发送数据写入目标虚拟通道。
步骤S504,向第二操作系统发送中断通知消息。
具体地,第一操作系统的CPU核向第二操作系统的CPU核发送中断通知消息,中断通知消息中可以携带目标虚拟通道的地址,用于通知第二操作系统从目标虚拟通道中获取目标数据,中断通知消息可以是软件触发的,也可以是硬件触发的。
步骤S506,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。
具体地,第二操作系统的CPU核响应中断通知消息,从中断通知消息中解析目标虚拟通道的地址,再根据解析的地址定位至内存中的目标虚拟通道,从目标虚拟通道获取目标数据,实现第一操作系统和第二操作的系统之间的数据交互。
通过上述步骤,在处理器上运行的多个操作系统需要互相传输数据时,发送数据的第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,并向第二操作系统发送中断通知消息,接收数据的第二操作系统响应中断通知消息从目标虚拟通道获取目标数据,解决了核间通信过程浪费资源,对操作系统的依赖性强的问题,达到减少核间通信过程对资源的浪费,对操作系统的依赖的效果。
在一个示例性实施例中,内存中包含数据存储区和元数据存储区,数据存储区被划分为多个存储单元,每个存储单元用于存储业务数据,元数据存储区用于存储数据存储区的各个存储单元的大小以及被占用状态。
具体地,目标虚拟通道由数据存储区的一个或多个存储单元构成,元数据存储区可以划分为与存储单元的数量相同的存储片,每个存储片用于记录一个存储单元的大小以及被占用状态,存储单元的大小可以由存储单元的首地址和末尾地址表征,也可以由首地址和存储单元的长度来表征,占用状态包含被占用状态和未被占用状态,可以由空闲标志的数值来表征。
在一个示例性实施例中,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道;将元数据存储区中目标虚拟通道对应的至少一个存储单元的状态设置为被占用状态,并将目标数据存储在目标虚拟通道。
需要说明的是,为了保证目标数据可以连续写入内存,写入的目标虚拟通道需要是空闲的、且大于等于目标数据的长度的存储空间,由于内存划分为元数据存储区和数据存储区,可以读取元数据存储区记录的各个存储单元的占用状态,从中找出处于空闲状态的、可以满足数据存储需求的存储单元。
例如,每个存储单元的大小相等,若目标数据的长度大于一个存储空间的长度,则根据目标数据的长度确定所需的存储单元的数量,从中找出处于空闲状态的、连续的、数量满足数据存储需求的多个存储单元,构成目标虚拟通道。
再例如,每个存储单元的大小相等,数据存储区已预先对存储单元进行组合,得到多个大小不同的虚拟通道,每个虚拟通道由一个或多个存储单元组合而成,可以读取元数据存储区记录的各个虚拟通道的占用状态,从中找出处于空闲状态的、长度大于目标数据的长度的虚拟通道,也即目标虚拟通道。需要说明的是,当系统软件需要申请共享内存空间时候会判断需要申请的数据长度是否大于虚拟通道存放数据的最大长度,如大于虚拟通道存放数据的最大长度,系统软件可以把需要发送的数据分多次多送,保证每次发送数据的长度小于等于虚拟通道存放数据的最大长度,从而保证通信的顺利进行。
在一个示例性实施例中,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据包括:第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道;从目标虚拟通道对应的至少一个存储单元获取目标数据,并将至少一个存储单元的状态设置为空闲状态。
也即,第二操作系统从目标虚拟通道对应的存储单元提取目标数据之后,为了不影响其他系统或任务对目标虚拟通道的使用,将目标虚拟通道对应的存储单元的状态设置为空闲状态。
在一个示例性实施例中,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:第一操作系统的驱动层接收目标数据,在内存中确定处于空闲状态的虚拟通道,得到目标虚拟通道;将目标虚拟通道的状态设置为被占用状态,并将目标数据存储至目标虚拟通道。
具体地,实时操作系统和非实时操作系统均具有驱动层,驱动层接收待发送的目标数据之后,调用接口在内存中寻找目标虚拟通道,为避免在写入数据的过程中其他系统申请使用目标虚拟通道,在找到目标虚拟通道之后,将目标虚拟通道的状态设置为被占用状态,再将目标数据写入目标虚拟通道。
在一个示例性实施例中,在第一操作系统中包含应用层的情况下,应用层设置有人机交互接口,在第一操作系统的驱动层在内存中确定处于空闲状态的虚拟通道之前,该方法还包括:第一操作系统的应用层通过人机交互接口接收用户输入的待发送数据,采用预设格式封装待发送数据,得到目标数据,并调用数据写入函数通过预设通信接口将目标数据传递至驱动层,其中,预设通信接口设置在驱动层上。
具体地,应用层把需要发送的数据按照预设格式填充好,得到目标数据,然后在系统的/dev路径生成一个设备文件ipidev,应用层需要从驱动层读写数据的时候,可以先使用系统自带的open函数打开设备文件/dev/ipidev,然后就可以使用系统自带的写函数把目标数据从应用层发送到驱动层,驱动层再把数据放在共享内存中的目标虚拟通道,然后触发中断通知第二操作系统取数据。
在一个示例性实施例中,第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据包括:第二操作系统基于中断通知消息触发中断处理函数,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
在一个示例性实施例中,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据包括:通过中断处理函数调用目标任务,由目标任务从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
具体地,中断处理函数发送任务通知唤醒负责数据提取的目标任务,目标任务先通过调用接口在共享内存中寻找目标虚拟通道,然后从目标虚拟通道中读取目标数据并进行数据解析。
在一个示例性实施例中,在第二操作系统包含应用层的情况下,内存中存储有功能标识,功能标识指示目标功能,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据包括:通过中断处理函数从内存中确定功能标识和目标虚拟通道,并将目标虚拟通道的地址信息发送给功能标志匹配的目标应用程序,其中,目标应用程序为应用层中的目标应用程序;目标应用程序调用数据读取函数通过预设通信接口将地址信息传递至驱动层,驱动层从目标虚拟通道获取目标数据,并将目标数据传递至目标应用程序,其中,预设通信接口设置在驱动层,目标应用程序根据功能标识匹配的处理函数处理目标数据,以执行目标功能。
具体地,第二应用系统接收到中断通知消息之后,应用层调用对应的中断处理函数从内存中寻找目标虚拟通道,得到目标虚拟通道的地址信息,然后在系统的/dev路径生成一个设备文件ipidev,应用层需要从驱动层读写数据的时候,可以先使用系统自带的open函数打开设备文件/dev/ipidev,然后就可以使用系统自带的读函数读取目标虚拟通道中的目标数据,也即,驱动层根据目标虚拟通道的地址信息在共享内存中找到对应的目标数据,返回给应用层目标数据和目标数据的长度,在一个示例性实施例中,设置目标虚拟通道的状态为空闲。
需要说明的是,应用层的不同应用程序可以利用目标数据实现不同的功能,内存中存储有功能标识,指示应用程序通过目标数据实现的目标功能,具体地,功能标识可以为Net、Cmd,系统初始化的时候会把Net、Cmd和应用程序PID注册到驱动,驱动层根据收到的NetFn和Cmd就可以找到应用程序的PID,根据PID将数据要发送到对应的应用程序。
例如,NetFn = 1, Cmd = 1表示第一操作系统和第二操作系统之间互发”helloword”, 在系统开始的时候会初始化一个数组,数组的一共三列,第一列NetFn, 第二列Cmd, 第三列对应NetFn和Cmd的处理函数记为xxCmdHandler。例如当第二操作系统收到第一操作系统发过来的消息时,从消息中获得NetFn和Cmd,判断NetFn=1, Cmd=1,就会去执行”hello word”对应的处理函数HelloCmdHandler去完成对应的功能。
在一个示例性实施例中,数据存储区中包含多个内存通道,每个内存通道由一个或多个存储单元构成,元数据存储区存储有多条记录,每条记录用于记录一个内存通道的元数据,每个内存通道的元数据至少包含内存通道的通道ID、内存通道的大小、内存通道的被占用状态,第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道包括:遍历元数据存储区存储的记录,判断是否存在指示内存通道处于空闲状态、且内存通道的大小大于等于目标数据的长度的第一目标记录;在存在第一目标记录的情况下,将第一目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
需要说明的是,可以将数据存储区划分为n个虚拟的内存通道,每个内存通道大小可以不等,也即,n个虚拟通道的大小依次为20*m、21*m、22*m、23*m …… 2n-1*m,其中,m为一个存储单元的大小,并设置以下结构体作为元数据管理内存通道:
typedef struct {
uint32_t Flag;
uint16_t ChannelId;
uint8_t SrcId;
uint8_t NetFn;
uint8_t Cmd;
uint32_t Len;
uint32_t ChannelSize;
uint8_t *pData;
uint8_t CheckSum;
}IpiHeader_T;
其中,uint32_t Flag表征内存通道的状态,例如,0xA5A5A5A5表示此通道非空,否则为空;uint16_t ChannelId表示通道ID;uint8_t SrcId表示源CPU ID,源CPU是指向内存通道写入数据的CPU;uint8_t NetFn和uint8_t Cmd是功能参数;uint32_t Len为内存通道存储的数据的长度;uint32_t ChannelSize表示内存通道的大小;uint8_t *pData是指内存通道的首地址;uint8_t CheckSum是指校验和,第一操作系统需要发送数据时,会将发送的数据通过校验和算法计算出校验值,并将校验值发送至第二操作系统,第二操作系统在接收到数据和校验值的情况下,根据接收到的数据通过相同的校验和算法算出校验值,将计算出的校验值和接收到的校验值进行比较,如果一致,说明接收到的数据有效,如果不一致,说明接收到的数据无效。图6是本实施例的通信方法中结构体信息和内存通道的关系示意图,如图6所示,每个虚拟的内存通道对应一条上面的结构体记录,此结构体记录会按照通道ID递增的方式依次存放在共享内存的开始位置,系统上电后会初始化这些结构体记录,初始化Flag为0表示此通道为空,初始化ChannelId依次为0、1、2 … n-1,初始化ChannelSize为对应虚拟内存通道的大小,初始化pData指向对应虚拟内存通道的首地址。
在一个示例性实施例中,第一操作系统在确定目标虚拟通道时,根据待发送的目标数据的大小使用接口GetEmptyChannel在所有的内存通道中的寻找满足以下两个条件的虚拟通道:通道结构体IpiHeader中的空闲标志Flag不等于0xA5A5A5A5(也即通道处于空闲状态),且通道结构体IpiHeader中的通道的大小ChannelSize大于等于目标数据的大小(也即内存大小可以满足目标数据的存储需求)。在寻找到满足上述条件的目标虚拟通道后,把该通道的状态设置为非空,也即,设置通道结构体IpiHeader中的空闲标志Flag为0xA5A5A5A5,然后把目标数据拷贝到目标虚拟通道中。
在一个示例性实施例中,在内存通道被占用的情况下,内存通道的元数据还包括目标数据的源CPU核的ID以及目标数据的目的CPU核的ID,第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道包括:遍历元数据存储区存储的记录,判断是否存在第二目标记录,其中,第二目标记录指示内存通道处于被占用状态、且目的CPU核的ID为第二操作系统的CUP核的ID,源CPU核的ID非第二操作系统的CUP核的ID;在存在第二目标记录的情况下,将第二目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
也即,目标虚拟通道是所有的通道中满足以下三个条件的虚拟通道:一是通道结构体IpiHeader中的空闲标志Flag等于0xA5A5A5A5(也即,指示通道处于被占用状态);二是通道结构体中的TargetId等于当前CPU的ID(也即,指示目标数据的目的CUP是第二操作系统的CPU);三是通道结构体中的TargetId不等于SrcId(也即,指示目标数据不是第二操作系统的CPU发送的)。
需要说明的是,若使用1位表示空闲标Flag,0表示通道空,1表示通道非空,如果Flag原本是0,突变为1,则系统在读取Flag之后会认为通道非空,从而导致通信异常。而本实施例中,将空闲标Flag设置为多位特殊字符,例如,0xA5A5A5A5,由于多位同时突变为特殊字符该概率大大小于一位突变概率,可以防止存储介质位突变对Flag的值造成影响,从而提高了通信的安全性。
在一个示例性实施例中,元数据存储区存储有映射表,映射表中有多条记录,每条记录用于记录一个存储单元的被占用状态,第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道包括:确定目标数据待占用的存储单元的预设数量;从映射表的初始位置依次扫描每条记录;在扫描到连续的预设数量的目标记录的情况下,确定预设数量的目标记录指示的连续存储单元,其中,目标记录表征存储单元处于空闲状态;将连续存储单元确定为目标虚拟通道。
图7是本实施例的通信方法中映射表和存储单元的关系示意图,如图7所示,数据存储区即为动态分配内存块区,元数据存储区包括动态分配内存映射表区,其中,映射表区按照数据存储区划分存储单元的数量划分相同数量的记录,并将所有记录组合为映射表,映射表中所有记录与数据存储区的所有存储单元存在一一对应关系,每一记录中表示对应的存储单元的分配状态,也即存储单元是否被占用。
需要说明的是,为了便于数据的存储和提取,由于操作系统传递业务数据时需要占用内存中连续的存储单元,因此,首先需要确定内存申请指令中的存储单元的数量,由于每一存储单元的内存空间相同,因此可以通过所需内存的空间大小计算出需要的连续存储单元的预设数量,记作numb。
具体地,第一操作系统从映射表中的索引位置遍历记录,索引位置可以为映射表的起始位置,从映射表的起始位置开始,依次查询映射表的每条记录,判断是否存在连续的记录空闲内存页的大于等于numb的记录,在存在符合上述条件的记录的情况下,通过记录与内存页的对应关系,确定处理器中的连续存储单元,并将该连续存储单元确定为目标虚拟通道,以向目标虚拟通道写入数据。
在一个示例性实施例中,中断通知消息中包含连续存储单元的首地址和预设数量,第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道包括:从映射表的初始位置依次扫描每条记录;在扫描到记录有连续存储单元的首地址的情况下,将扫描到的地址指示的存储单元以及预设数量减一的连续存储单元确定为目标虚拟通道。
具体地,连续存储单元是指数量等于numb的连续存储单元,映射表中的每条记录还记录有对应存储单元的首地址,第二操作系统在映射表中扫描到数量等于numb的连续存储单的首地址的记录情况下,说明扫描到了目标虚拟通道的首地址,首地址指示的存储单元以及该存储单元之后的numb-1个连续存储单元构成目标虚拟通道,第二操作系统目标虚拟通道中获取数据,以完成和第一操作系统的数据交互。
在一个示例性实施例中,通过计数器对扫描到的连续的目标记录进行记录,在按照存储单元的数量从映射表的初始位置依次扫描每条记录的过程中,在当前扫描到目标记录的情况下,控制计数器加一,在当前扫描到非目标记录的情况下,控制计数器清零。
具体地,利用计数器的数值与所需存储单元数量的大小关系判断是否存在连续的预设数量的目标记录,也即是否存在预设数量的连续存储单元,具体的,将计数器的计数记作cntr,若扫描到的一个存储单元为空,则将cntr进行加1操作,若扫描到的存储单元不为空,则将累加的连续、处于空闲状态的存储单元的数量cntr清零,继续从该存储单元后一个地址处开始寻找连续、处于空闲状态的存储单元;直到cntr等于numb,表示已找到了满足内存需求的连续、处于空闲状态的存储单元;如果在扫描完整个映射表之后,不存在cntr大于等于numb,则表明本次动态申请内存失败,不存在预设数量的连续存储单元。
在一个示例性实施例中,在第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道之前,该方法还包括:第一操作系统发送内存申请指令,并对处理器的内存执行加锁操作,其中,内存申请指令用于申请使用处理器的内存;在对内存加锁成功的情况下,读取映射表中的记录。
具体地,内存申请指令是运行在处理器上的操作系统发出的申请使用处理器的内存的指令,需要说明的是,为防止多个操作系统同时申请使用处理器的内存时导致申请冲突,因此,在操作系统发送内存申请指令时,先对处理器的内存执行加锁操作,当加锁成功后才可以申请使用内存,加锁操作是指内存申请的排他操作,在当前操作系统加锁成功之后,若没有释放加锁,其他服务器没有申请使用处理器内存的权限。
在一个示例性实施例中,对处理器的内存执行加锁操作包括:判断内存当前是否处于被加锁状态,其中,被加锁状态表征内存处于被申请使用的状态;在内存当前未处于被加锁状态的情况下,对内存执行加锁操作;在内存当前处于被加锁状态的情况下,确定对内存的加锁失败,在预设时长后再次申请对处理器的内存进行加锁,直至对内存加锁成功,或者,直至申请加锁的次数大于预设次数。
在处理器运行之前,需要将处理器中的元数据存储区以及数据存储区进行初始化操作,具体的,将元数据存储区中的映射表存储的记录进行初始化,并将内存管理信息进行初始化操作。
在进行申请内存操作前,对内存管理信息进行如下配置:
typedef struct {
uint32_t MemReady;
uint32_t MemLock;
}MallocMemInfo_T;
其中,结构体MallocMemInfo_T的成员变量MemLock表示共享内存是否已初始化完成,变量MemReady为0xA5A5A5A5,表示初始化操作已完成,可以正常动态申请和释放内存;结构体MallocMemInfo_T的成员变量MemReady表征是否被加锁。
具体地,若读取到变量 MemLock为0,表示此时没有系统或任务在申请内存,也即内存当前未处于被加锁状态。若读取到变量MemLock为0xA5A5A5A5,表示有系统或任务正在申请内存,需要等此次申请完成后再申请,当前申请加锁失败。
在一个示例性实施例中,若对内存进行加锁操作时存在加锁失败的情况下,通过预设时长的等待后再次申请内存的加锁,直至加锁成功,例如,预设时长可以为100微秒。
在一个示例性实施例中,若申请加锁失败,并且重复申请的次数超出了预设次数,表明当前时长中处理器中的内存处于不可分配状态,则停止申请操作。例如,预设次数可以为3次,在申请加锁的次数大于3次的情况下,可以向发送申请的操作系统返回当前内存不可用的消息。
具体的,在处理器的内存空间中存在可供第一操作系统使用的目标虚拟通道后,第一操作系统将需要传输的目标数据存储到相应的目标虚拟通道,在一个示例性实施例中,根据第一操作系统的数据写入情况更新处理器的内存空间的占用状态,也即将目标连续内存空间由未占用状态变为被占用状态,同时,为了使得其他系统或任务可以申请内存,释放对内存的加锁。
在一个示例性实施例中,该方法还包括:在未扫描到连续的预设数量的目标记录的情况下,释放对内存的加锁。
具体的,在对映射表中的记录进行扫描后,检测不到预设数量的、连续、处于空闲状态的存储单元,表明处理器的内存中没有足够的空间内存页供第一操作系统使用,本次动态申请内存失败,释放对内存的加锁。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息包括:向处理器的预设寄存器中写入中断号和第二操作系统的CPU核的ID,并基于中断号和第二操作系统的CPU核的ID生成中断通知消息。
具体地,软中断是软件产生的中断,软件可以给执行自己的CPU核发送中断,也可以给其他的CPU核发送中断。预设寄存器可以为GICD_SGIR寄存器(产生软件中断的寄存器),可以通过软件向GICD_SGIR寄存器写入SGI(Software Generated Interrupts,软件中断)中断号、目的CPU ID,来产生一个软件中断,SGI中断号是为核间通信保留的软中断号。
图8是本实施例的通信方法中用于产生中断消息的预设寄存器的示意图,如图8所示,在GICD_SGIR寄存器的格式中,包含以下字段:TargetListFileter(软件中断的目标内核)、CPUTargetList(目标内核)、NSATT(安全相关的位)以及SGIINTID(中断信号ID)。
其中,TargetListFileter的值为0b00表示按照CPUTargetList的指定,来发送软中断;值为0b01,表示按照CPUTargetList的指定,来发送软中断,但是不能发送给自己;值为0b10,表示软中断只能发送给自己。
CPUTargetList用于填目标CPU核的编号,对于多CPU核的系统,会给每个CPU核一个编号,在嵌入式系统支持8个CPU核,因此CPU核的编号就是0-7, CPUTargetList8个bit和8个cpu相对应。第0bit,表示CPU核0,第7bit,表示CPU核7。若给CPU核1,CPU核2,CPU核7发送软中断,此时这个位域填入0x84。
NSATT用来支持安全扩展,这个bit用来表示发送的中断是安全中断还是非安全中断。这个bit只有CPU核处于安全状态的时候才能写,也即,只能发非安全的中断。
SGIINTID是指发送的软中断的中断号。
在多核异构操作系统中,为了最大程度的兼容当下的资源分配方式,使用8-15号(共8个中断)表征核间中断向量表,在第一操作系统为RTOS操作系统,第二操作系统为Linux操作系统的情况下,向量表的一种可行分配方案如表1所示:
表1
Figure SMS_1
在一个示例性实施例中,通过硬件中断的方式向第二操作系统发送中断通知消息。
具体地,硬件中断是指通过硬件设备产生的中断,可以为私有外设中断,也可以为共享外设中断,需要说明的是,硬中断是CPU外部的硬件引入的中断,具有随机性,软中断是CPU中运行的软件执行中断指令引入的中断,是预先设定的,本实施例不限定产生中断通知消息的方式。
在本实施例中还提供了一种可选的通信方法,本实施例解释双核双系统核间的通信方法,双核分别是CPU0和CPU1,操作系统分别是非实时操作系统和实时操作系统,CPU0上运行非实时操作系统,CPU1上运行的是实时操作系统。
图9是根据本申请实施例的可选的通信方法的流程图一,如图9所示,具体是非实时操作系统向实时操作系统发送数据的过程。
首先,非实时操作系统的应用层把需要发送的数据按照对应的格式填充好,然后在系统的/dev路径生成一个设备文件ipidev,应用层需要从驱动层读写数据的时候,可以先使用系统自带的open函数打开设备/dev/ipidev,使用写函数把需要发送的数据从非实时操作系统的应用层发送到驱动层,非实时操作系统的驱动层把数据放在共享内存中,然后触发软中断通知另一个核的实时操作系统去读取数据。
具体地,共享内存区域划分为多个内存通道,每个内存通道对应一个通道结构体(IpiHeader),结构体数据用于记录内存通道的相关信息。非实时操作系统的驱动层首先根据要发送数据的大小使用接口GetEmptyChannel在所有的通道中的寻找满足以下两个条件的内存通道:一是通道结构体IpiHeader中的空闲标志Flag不等于0xA5A5A5A5;二是通道结构体IpiHeader中的通道的大小ChannelSize大于要发送数据的大小,寻找满足要求的空闲通道后,把该该通道设置为非空,即设置通道结构体IpiHeader中的空闲标志Flag为0xA5A5A5A5,然后把需要发送的数据拷贝到空闲通道中,然后触发软中断通知另一个核的实时操作系统。
在一个示例性实施例中,实时操作系统收到中断,触发对应的中断处理函数,中断处理函数会发送任务通知唤醒对应的任务,该任务从共享内存中读取数据并解析。具体地,该任务首先使用接口GetNoEmptyChannel在所有的通道中寻找满足以下三个条件的通道:一是通道结构体IpiHeader中的空闲标志Flag等于0xA5A5A5A5;二是通道结构体中的TargetId等于当前CPU的ID;三是通道结构体中的TargetId不等于SrcId。寻找到满足要求的非空闲通道后,解析非空闲通道的数据,根据通道结构体IpiHeader中的NetFn和Cmd完成具体的功能,最后设置该通道为空,即设置通道结构体中的空闲标志Flag为0。
图10是根据本申请实施例的可选的通信方法的流程图二,如图10所示,具体是实时操作系统向非实时操作系统发送数据的过程。
首先,实时操作系统侧如果有需要发送的数据,从共享分内存中寻找空闲的通道,如果找到空闲通道,设置此通道为空,把需要发送的数据拷贝到寻找到的空闲通道,然后产生软中断,通知非实时操作系统侧,非实时操作系统侧调用对应的中断处理函数,中断处理函数会扫描所有的通道的结构体IpiHeader,根据结构体中的NetFn和Cmd字段判断发送信号给哪个应用层程序,同时把对应的通道ID发送给应用程序,需要说明的是,系统初始化的时候核间通信的应用层程序需要注册NetFn和Cmd以及应用层程序对应的PID到驱动程序,应用层收到信号后调用的对应的处理函数,打开设备/dev/ipidev读取数据,驱动程序根据通道ID在共享内存中找到对应的数据,返回给应用层数据和数据长度,设置此通道为空,即设置通道结构体中的空闲标志Flag为0。
本发明提供了一种本实施例的多核多操作系统的核间通信的方法,物理层交换数据采用共享内存的方式,同时增加了虚拟的通道对共享内存进行管理,当发送方的CPU核把需要发送的数据按照约定的协议格式放在共享内存中后,会触发一个软中断通知接收方的CPU核去读取数据,然后按照约定的协议格式解析数据,接收方的CPU核读取的数据后支持选择给发送方的CPU核回复应答或者不回复。核间通信采用共享内存、软中断的方式实现多核多操作系统的核间通信。使用虚拟通道管理共享内存的方法,以及虚拟通道结构体的格式。不使用额外的组件,使用开发简单,节省系统资源,同时只使用操作系统任务,信号量等通用功能,大大减弱了对操作系统的依懒性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种通信装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图11是根据本申请实施例的通信装置的结构框图,如图11所示,该装置包括:第一发送单元111、第二发送单元112和获取单元113。
具体地,第一发送单元111,用于通过第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,第一操作系统和第二操作系统在处理器上运行。
第二发送单元112,用于向第二操作系统发送中断通知消息。
获取单元113,用于通过第二操作系统响应中断通知消息,从内存中的目标虚拟通道获取目标数据。
在一个示例性实施例中,内存中包含数据存储区和元数据存储区,数据存储区被划分为多个存储单元,每个存储单元用于存储业务数据,元数据存储区用于存储数据存储区的各个存储单元的大小以及被占用状态。
在一个示例性实施例中,第一发送单元111包括第一确定模块,用于通过第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道;第一存储模块,用于将元数据存储区中目标虚拟通道对应的至少一个存储单元的状态设置为被占用状态,并将目标数据存储在目标虚拟通道。
在一个示例性实施例中,获取单元113包括:第二确定模块,用于通过第二操作系统读取元数据存储区中的记录,根据读取的记录确定目标虚拟通道;获取模块,用于从目标虚拟通道对应的至少一个存储单元获取目标数据,并将至少一个存储单元的状态设置为空闲状态。
在一个示例性实施例中,第一发送单元111包括:第三确定模块,用于第一操作系统的驱动层接收目标数据,在内存中确定处于空闲状态的虚拟通道,得到目标虚拟通道;第二存储模块,用于将目标虚拟通道的状态设置为被占用状态,并将目标数据存储至目标虚拟通道。
在一个示例性实施例中,在第一操作系统中包含应用层的情况下,应用层设置有人机交互接口,该装置还包括:封装模块,用于在第一操作系统的驱动层在内存中确定处于空闲状态的虚拟通道之前,采用第一操作系统的应用层通过人机交互接口接收用户输入的待发送数据,采用预设格式封装待发送数据,得到目标数据,并调用数据写入函数通过预设通信接口将目标数据传递至驱动层,其中,预设通信接口设置在驱动层上。
在一个示例性实施例中,第二发送单元112包括:中断处理模块,用于通过第二操作系统基于中断通知消息触发中断处理函数,通过中断处理函数从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
在一个示例性实施例中,中断处理模块用于通过中断处理函数调用目标任务,由目标任务从内存中确定目标虚拟通道,并从目标虚拟通道获取目标数据。
在一个示例性实施例中,在第二操作系统包含应用层的情况下,内存中存储有功能标识,功能标识指示目标功能,中断处理模块包括:第一确定子模块,用于通过中断处理函数从内存中确定功能标识和目标虚拟通道,并将目标虚拟通道的地址信息发送给功能标志匹配的目标应用程序,其中,目标应用程序为应用层中的目标应用程序;获取子模块,用于通过目标应用程序调用数据读取函数通过预设通信接口将地址信息传递至驱动层,驱动层从目标虚拟通道获取目标数据,并将目标数据传递至目标应用程序,其中,预设通信接口设置在驱动层,目标应用程序根据功能标识匹配的处理函数处理目标数据,以执行目标功能。
在一个示例性实施例中,数据存储区中包含多个内存通道,每个内存通道由一个或多个存储单元构成,元数据存储区存储有多条记录,每条记录用于记录一个内存通道的元数据,每个内存通道的元数据至少包含内存通道的通道ID、内存通道的大小、内存通道的被占用状态,第一确定模块包括:第一判断子模块,用于遍历元数据存储区存储的记录,判断是否存在指示内存通道处于空闲状态、且内存通道的大小大于等于目标数据的长度的第一目标记录;第二确定子模块,用于在存在第一目标记录的情况下,将第一目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
在一个示例性实施例中,在内存通道被占用的情况下,内存通道的元数据还包括目标数据的源CPU核的ID以及目标数据的目的CPU核的ID,第二确定模块包括:第二判断子模块,用于遍历元数据存储区存储的记录,判断是否存在第二目标记录,其中,第二目标记录指示内存通道处于被占用状态、且目的CPU核的ID为第二操作系统的CUP核的ID,源CPU核的ID非第二操作系统的CUP核的ID;第三确定子模块,用于在存在第二目标记录的情况下,将第二目标记录中记录的通道ID指示的内存通道确定为目标虚拟通道。
在一个示例性实施例中,元数据存储区存储有映射表,映射表中有多条记录,每条记录用于记录一个存储单元的被占用状态,第一操作系统读取元数据存储区中的记录,第一确定模块包括:第四确定子模块,用于确定目标数据待占用的存储单元的预设数量;从映射表的初始位置依次扫描每条记录;第五确定子模块,用于在扫描到连续的预设数量的目标记录的情况下,确定预设数量的目标记录指示的连续存储单元,其中,目标记录表征存储单元处于空闲状态;第六确定子模块,用于将连续存储单元确定为目标虚拟通道。
在一个示例性实施例中,中断通知消息中包含连续存储单元的首地址和预设数量,第二确定模块包括:扫描子模块,用于从映射表的初始位置依次扫描每条记录;第七确定子模块,用于在扫描到记录有连续存储单元的首地址的情况下,将扫描到的地址指示的存储单元以及预设数量减一的连续存储单元确定为目标虚拟通道。
在一个示例性实施例中,通过计数器对扫描到的连续的目标记录进行记录,在按照存储单元的数量从映射表的初始位置依次扫描每条记录的过程中,在当前扫描到目标记录的情况下,控制计数器加一,在当前扫描到非目标记录的情况下,控制计数器清零。
在一个示例性实施例中,该装置还包括:申请单元,用于在第一操作系统读取元数据存储区中的记录,根据读取的记录确定数据存储区中处于空闲状态、总空间大于等于目标数据的长度的至少一个存储单元,得到目标虚拟通道之前,通过第一操作系统发送内存申请指令,并对处理器的内存执行加锁操作,其中,内存申请指令用于申请使用处理器的内存;在对内存加锁成功的情况下,读取映射表中的记录。
在一个示例性实施例中,申请单元包括:判断模块,用于判断内存当前是否处于被加锁状态,其中,被加锁状态表征内存处于被申请使用的状态;执行模块,用于在内存当前未处于被加锁状态的情况下,对内存执行加锁操作;第三确定模块,用于在内存当前处于被加锁状态的情况下,确定对内存的加锁失败,在预设时长后再次申请对处理器的内存进行加锁,直至对内存加锁成功,或者,直至申请加锁的次数大于预设次数。
在一个示例性实施例中,该装置还包括:第一释放单元,用于在第一操作系统将目标数据发送至处理器内存中的目标虚拟通道之后,释放对内存的加锁。
在一个示例性实施例中,该装置还包括:第二释放单元,用于在未扫描到连续的预设数量的目标记录的情况下,释放对内存的加锁。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息。
在一个示例性实施例中,通过硬件中断的方式向第二操作系统发送中断通知消息。
在一个示例性实施例中,通过软件中断的方式向第二操作系统发送中断通知消息包括:向处理器的预设寄存器中写入中断号和第二操作系统的CPU核的ID,并基于中断号和第二操作系统的CPU核的ID生成中断通知消息。
需要说明的是,上述各个单元是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述单元均位于同一处理器中;或者,上述各个单元以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种芯片,其中,该芯片包括可编程逻辑电路以及可执行指令中的至少之一,该芯片在电子设备中运行,用于实现上述任一项方法实施例中的步骤。
本申请的实施例还提供了一种BMC芯片,其中,该BMC芯片可以包括:存储单元以及与存储单元连接的处理单元。存储单元用于存储程序,而处理单元用于运行该程序,以执行上述任一项方法实施例中的步骤。
本申请的实施例还提供了一种主板,其中,该主板包括:至少一个处理器;至少一个存储器,用于存储至少一个程序;当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现上述任一项方法实施例中的步骤。
本申请的实施例还提供了一种服务器,其中,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一项方法实施例中的步骤,以达到相同的技术效果。
上述服务器的通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。通信接口用于上述服务器与其他设备之间的通信。
存储器可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。上述的处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application SpecificIntegrated Circuit,专用集成电路)、FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
针对服务器而言,服务器至少具有可扩展性高和稳定性高的特性,其中,由于企业网络是不可能长久不变的,在网络信息化的今天,如果服务器没有一定的可扩展性,则是会导致影响到企业之后的发展,影响到企业的使用,因此可拓展性成为最为基本的特性,只有在拥有较高的可扩展性才能保证后期更好的利用,可扩展性除了硬件上的可扩展性上之外,还包含软件上的可扩展性,由于服务器的功能与计算机相比较而言还是十分复杂,因此不仅仅是在硬件配置方面,还有就是软件配置也是很重要的,想要实现更多的功能,没有全面软件支持也是没有办法想象的。
此外,由于服务器需要处理大量的数据用以支撑业务的持续性运行,因此服务器还有一个很重要的特征,即为稳定性高,如果服务器的数据传输不能稳定运行,则无疑会对业务开展造成极大的影响。
本申请的方案利用服务器可扩展性高的特点,引入多个操作系统,多个操作系统在运行过程中需要进行通信,由于服务器的处理器内存中设置有虚拟通道,多个操作系统能够通过内存中的虚拟通道执行数据读写实现通信。例如,第一操作系统将目标数据发送至目标虚拟通道,向第二操作系统发送中断通知消,第二操作系统响应中断通知消息,从目标虚拟通道获取目标数据,从而实现数据交互。同时,由于服务器具有稳定性高的特性,操作系统向虚拟通道读写数据、发送中断通知消息、响应中断通知消息的稳定性可以得到保证,多个操作系之间的通信的稳定性可以得到保证。综上所述,本申请的方案利用服务器可扩展性高和稳定性高的特定,可以解决核间通信过程浪费资源,对操作系统的依赖性强的问题,达到减少核间通信过程对资源的浪费,减少对操作系统的依赖的效果。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (29)

1.一种通信方法,其特征在于,包括:
第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,所述第一操作系统和第二操作系统在所述处理器上运行;
向所述第二操作系统发送中断通知消息;
所述第二操作系统响应所述中断通知消息,从所述内存中的所述目标虚拟通道获取所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述内存中包含数据存储区和元数据存储区,所述数据存储区被划分为多个存储单元,每个存储单元用于存储业务数据,所述元数据存储区用于存储所述数据存储区的各个存储单元的大小以及被占用状态。
3.根据权利要求2所述的方法,其特征在于,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:
所述第一操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述数据存储区中处于空闲状态、总空间大于等于所述目标数据的长度的至少一个存储单元,得到所述目标虚拟通道;
将所述元数据存储区中所述目标虚拟通道对应的至少一个存储单元的状态设置为被占用状态,并将所述目标数据存储在所述目标虚拟通道。
4.根据权利要求3所述的方法,其特征在于,所述第二操作系统响应所述中断通知消息,从所述内存中的所述目标虚拟通道获取所述目标数据包括:
所述第二操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述目标虚拟通道;
从所述目标虚拟通道对应的至少一个存储单元获取所述目标数据,并将所述至少一个存储单元的状态设置为空闲状态。
5.根据权利要求1所述的方法,其特征在于,第一操作系统将目标数据发送至处理器内存中的目标虚拟通道包括:
所述第一操作系统的驱动层接收所述目标数据,在所述内存中确定处于空闲状态的虚拟通道,得到所述目标虚拟通道;
将所述目标虚拟通道的状态设置为被占用状态,并将所述目标数据存储至所述目标虚拟通道。
6.根据权利要求5所述的方法,其特征在于,在所述第一操作系统中包含应用层的情况下,所述应用层设置有人机交互接口,在所述第一操作系统的驱动层在所述内存中确定处于空闲状态的虚拟通道之前,所述方法还包括:
所述第一操作系统的应用层通过所述人机交互接口接收用户输入的待发送数据,采用预设格式封装所述待发送数据,得到所述目标数据,并调用数据写入函数通过预设通信接口将所述目标数据传递至驱动层,其中,所述预设通信接口设置在所述驱动层上。
7.根据权利要求1所述的方法,其特征在于,所述第二操作系统响应所述中断通知消息,从所述内存中的所述目标虚拟通道获取所述目标数据包括:
所述第二操作系统基于所述中断通知消息触发中断处理函数,通过所述中断处理函数从所述内存中确定所述目标虚拟通道,并从所述目标虚拟通道获取所述目标数据。
8.根据权利要求7所述的方法,其特征在于,通过所述中断处理函数从所述内存中确定所述目标虚拟通道,并从所述目标虚拟通道获取所述目标数据包括:
通过所述中断处理函数调用目标任务,由所述目标任务从所述内存中确定所述目标虚拟通道,并从所述目标虚拟通道获取所述目标数据。
9.根据权利要求7所述的方法,其特征在于,在所述第二操作系统包含应用层的情况下,所述内存中存储有功能标识,所述功能标识指示目标功能,通过所述中断处理函数从所述内存中确定所述目标虚拟通道,并从所述目标虚拟通道获取所述目标数据包括:
通过所述中断处理函数从所述内存中确定所述功能标识和所述目标虚拟通道,并将所述目标虚拟通道的地址信息发送给所述功能标志匹配的目标应用程序,其中,所述目标应用程序为所述应用层中的目标应用程序;
所述目标应用程序调用数据读取函数通过预设通信接口将所述地址信息传递至驱动层,所述驱动层从所述目标虚拟通道获取所述目标数据,并将所述目标数据传递至所述目标应用程序,其中,所述预设通信接口设置在所述驱动层,所述目标应用程序根据所述功能标识匹配的处理函数处理所述目标数据,以执行所述目标功能。
10.根据权利要求4所述的方法,其特征在于,所述数据存储区中包含多个内存通道,每个内存通道由一个或多个存储单元构成,所述元数据存储区存储有多条记录,每条记录用于记录一个内存通道的元数据,每个内存通道的元数据至少包含内存通道的通道ID、内存通道的大小、内存通道的被占用状态,所述第一操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述数据存储区中处于空闲状态、总空间大于等于所述目标数据的长度的至少一个存储单元,得到所述目标虚拟通道包括:
遍历所述元数据存储区存储的记录,判断是否存在指示内存通道处于空闲状态、且内存通道的大小大于等于所述目标数据的长度的第一目标记录;
在存在所述第一目标记录的情况下,将所述第一目标记录中记录的通道ID指示的内存通道确定为所述目标虚拟通道。
11.根据权利要求10所述的方法,其特征在于,在内存通道被占用的情况下,所述内存通道的元数据还包括所述目标数据的源CPU核的ID以及所述目标数据的目的CPU核的ID,所述第二操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述目标虚拟通道包括:
遍历所述元数据存储区存储的记录,判断是否存在第二目标记录,其中,所述第二目标记录指示内存通道处于被占用状态、且目的CPU核的ID为所述第二操作系统的CUP核的ID,源CPU核的ID非所述第二操作系统的CUP核的ID;
在存在所述第二目标记录的情况下,将所述第二目标记录中记录的通道ID指示的内存通道确定为所述目标虚拟通道。
12.根据权利要求4所述的方法,其特征在于,所述元数据存储区存储有映射表,所述映射表中有多条记录,每条记录用于记录一个存储单元的被占用状态,所述第一操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述数据存储区中处于空闲状态、总空间大于等于所述目标数据的长度的至少一个存储单元,得到所述目标虚拟通道包括:
确定所述目标数据待占用的存储单元的预设数量;
从所述映射表的初始位置依次扫描每条记录;
在扫描到连续的所述预设数量的目标记录的情况下,确定所述预设数量的目标记录指示的连续存储单元,其中,所述目标记录表征存储单元处于空闲状态;
将所述连续存储单元确定为所述目标虚拟通道。
13.根据权利要求12所述的方法,其特征在于,所述中断通知消息中包含所述连续存储单元的首地址和所述预设数量,所述第二操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述目标虚拟通道包括:
从所述映射表的初始位置依次扫描每条记录;
在扫描到记录有所述连续存储单元的首地址的情况下,将扫描到的地址指示的存储单元以及所述预设数量减一的连续存储单元确定为所述目标虚拟通道。
14.根据权利要求12所述的方法,其特征在于,通过计数器对扫描到的连续的所述目标记录进行记录,在按照所述存储单元的数量从所述映射表的初始位置依次扫描每条记录的过程中,在当前扫描到所述目标记录的情况下,控制所述计数器加一,在当前扫描到非目标记录的情况下,控制所述计数器清零。
15.根据权利要求12所述的方法,其特征在于,在所述第一操作系统读取所述元数据存储区中的记录,根据读取的记录确定所述数据存储区中处于空闲状态、总空间大于等于所述目标数据的长度的至少一个存储单元,得到所述目标虚拟通道之前,所述方法还包括:
所述第一操作系统发送内存申请指令,并对所述处理器的内存执行加锁操作,其中,所述内存申请指令用于申请使用所述处理器的内存;
在对所述内存加锁成功的情况下,读取所述映射表中的记录。
16.根据权利要求15所述的方法,其特征在于,对所述处理器的内存执行加锁操作包括:
判断所述内存当前是否处于被加锁状态,其中,所述被加锁状态表征所述内存处于被申请使用的状态;
在所述内存当前未处于被加锁状态的情况下,对所述内存执行加锁操作;
在所述内存当前处于被加锁状态的情况下,确定对所述内存的加锁失败,在预设时长后再次申请对所述处理器的内存进行加锁,直至对所述内存加锁成功,或者,直至申请加锁的次数大于预设次数。
17.根据权利要求14所述的方法,其特征在于,在第一操作系统将目标数据发送至处理器内存中的目标虚拟通道之后,所述方法还包括:
释放对所述内存的加锁。
18.根据权利要求15所述的方法,其特征在于,所述方法还包括:
在未扫描到连续的所述预设数量的目标记录的情况下,释放对所述内存的加锁。
19.根据权利要求1所述的方法,其特征在于,通过软件中断的方式向所述第二操作系统发送中断通知消息。
20.根据权利要求1所述的方法,其特征在于,通过硬件中断的方式向所述第二操作系统发送中断通知消息。
21.根据权利要求20所述的方法,其特征在于,通过软件中断的方式向所述第二操作系统发送中断通知消息包括:
向所述处理器的预设寄存器中写入中断号和所述第二操作系统的CPU核的ID,并基于所述中断号和所述第二操作系统的CPU核的ID生成所述中断通知消息。
22.一种嵌入式系统,其特征在于,包括:芯片和至少两个操作系统,其中,所述芯片包括处理器,所述处理器的内存中设置有虚拟通道;
所述至少两个操作系统基于所述处理器运行,所述至少两个操作系统采用权利要求1至21中任意一项所述的通信方法进行通信。
23.一种通信装置,其特征在于,包括:
第一发送单元,用于通过第一操作系统将目标数据发送至处理器内存中的目标虚拟通道,其中,所述第一操作系统和第二操作系统在所述处理器上运行;
第二发送单元,用于向所述第二操作系统发送中断通知消息;
获取单元,用于通过所述第二操作系统响应所述中断通知消息,从所述内存中的所述目标虚拟通道获取所述目标数据。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至21任一项中所述的通信方法。
25.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至21任一项中所述的通信方法。
26.一种芯片,其特征在于,所述芯片包括可编程逻辑电路以及可执行指令中的至少之一,所述芯片在电子设备中运行,用于实现权利要求1至21中任意一项所述的通信方法。
27.一种BMC芯片,其特征在于,包括:存储单元以及与所述存储单元连接的处理单元,所述存储单元用于存储程序,所述处理单元用于运行所述程序,以执行如权利要求1至21中任意一项所述的通信方法。
28.一种主板,其特征在于,包括:至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1至21中任意一项所述的通信方法。
29.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1至21中任意一项所述的通信方法。
CN202310536661.5A 2023-05-12 2023-05-12 通信方法、装置、计算机可读存储介质以及电子设备 Active CN116243995B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310536661.5A CN116243995B (zh) 2023-05-12 2023-05-12 通信方法、装置、计算机可读存储介质以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310536661.5A CN116243995B (zh) 2023-05-12 2023-05-12 通信方法、装置、计算机可读存储介质以及电子设备

Publications (2)

Publication Number Publication Date
CN116243995A true CN116243995A (zh) 2023-06-09
CN116243995B CN116243995B (zh) 2023-08-04

Family

ID=86635336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310536661.5A Active CN116243995B (zh) 2023-05-12 2023-05-12 通信方法、装置、计算机可读存储介质以及电子设备

Country Status (1)

Country Link
CN (1) CN116243995B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116450564A (zh) * 2023-06-15 2023-07-18 支付宝(杭州)信息技术有限公司 一种多处理卡间的数据传输方法和系统
CN116541227A (zh) * 2023-07-05 2023-08-04 苏州浪潮智能科技有限公司 故障诊断方法、装置、存储介质、电子装置及bmc芯片
CN117149472A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 通信方法、装置、计算机可读存储介质以及电子设备
CN117472845A (zh) * 2023-12-27 2024-01-30 南京翼辉信息技术有限公司 一种多核网络共享系统及其控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216814A (zh) * 2007-12-26 2008-07-09 杭州华三通信技术有限公司 一种多核多操作系统之间的通信方法及系统
CN109976925A (zh) * 2019-03-27 2019-07-05 北京翼辉信息技术有限公司 一种基于混合多系统核间实时通信的方法和系统
CN114416387A (zh) * 2021-12-06 2022-04-29 合肥杰发科技有限公司 基于同构多核的多操作系统及通信方法、芯片

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216814A (zh) * 2007-12-26 2008-07-09 杭州华三通信技术有限公司 一种多核多操作系统之间的通信方法及系统
CN109976925A (zh) * 2019-03-27 2019-07-05 北京翼辉信息技术有限公司 一种基于混合多系统核间实时通信的方法和系统
CN114416387A (zh) * 2021-12-06 2022-04-29 合肥杰发科技有限公司 基于同构多核的多操作系统及通信方法、芯片

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116450564A (zh) * 2023-06-15 2023-07-18 支付宝(杭州)信息技术有限公司 一种多处理卡间的数据传输方法和系统
CN116450564B (zh) * 2023-06-15 2023-11-28 支付宝(杭州)信息技术有限公司 一种多处理卡间的数据传输方法和系统
CN116541227A (zh) * 2023-07-05 2023-08-04 苏州浪潮智能科技有限公司 故障诊断方法、装置、存储介质、电子装置及bmc芯片
CN116541227B (zh) * 2023-07-05 2023-09-22 苏州浪潮智能科技有限公司 故障诊断方法、装置、存储介质、电子装置及bmc芯片
CN117149472A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 通信方法、装置、计算机可读存储介质以及电子设备
CN117149472B (zh) * 2023-10-31 2024-02-09 苏州元脑智能科技有限公司 通信方法、装置、计算机可读存储介质以及电子设备
CN117472845A (zh) * 2023-12-27 2024-01-30 南京翼辉信息技术有限公司 一种多核网络共享系统及其控制方法
CN117472845B (zh) * 2023-12-27 2024-03-19 南京翼辉信息技术有限公司 一种多核网络共享系统及其控制方法

Also Published As

Publication number Publication date
CN116243995B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN116243995B (zh) 通信方法、装置、计算机可读存储介质以及电子设备
US4562535A (en) Self-configuring digital processor system with global system
CN116257364B (zh) 系统间的资源占用方法、装置、存储介质及电子装置
US9430411B2 (en) Method and system for communicating with non-volatile memory
CN116302617B (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
CN116541227B (zh) 故障诊断方法、装置、存储介质、电子装置及bmc芯片
JPH03126158A (ja) スケジユーリング方法及び装置
CN103019838B (zh) 一种基于多dsp处理器平台的分布式实时多任务操作系统
CN116244229B (zh) 硬件控制器的访问方法、装置、存储介质和电子设备
KR102285749B1 (ko) 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
CN116627520B (zh) 基板管理控制器的系统运行方法以及基板管理控制器
CN116830082A (zh) 嵌入式系统的启动控制方法和装置、存储介质和电子设备
CN114595186B (zh) 一种多核处理器的核间通信方法、通信装置
WO2023104194A1 (zh) 一种业务处理方法及装置
CN116868167A (zh) 操作系统的运行控制方法和装置,以及嵌入式系统和芯片
US10216664B2 (en) Remote resource access method and switching device
CN116302141B (zh) 串口切换方法、芯片及串口切换系统
CN116868170A (zh) 嵌入式系统的运行方法和装置、嵌入式系统及芯片
Bertolotti et al. Modular design of an open-source, networked embedded system
CN116848519A (zh) 硬件接口信号的生成方法、装置及电子设备
KR20050080704A (ko) 프로세서간 데이터 전송 장치 및 방법
US10713188B2 (en) Inter-process signaling system and method
JPS59762A (ja) デイジタル・プロセツサ・システム
CN113608861A (zh) 一种软件化载荷计算资源虚拟化分配方法及装置
CN117149472B (zh) 通信方法、装置、计算机可读存储介质以及电子设备

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