CN115437811A - 进程间通信方法、装置、设备及存储介质 - Google Patents
进程间通信方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115437811A CN115437811A CN202211145860.5A CN202211145860A CN115437811A CN 115437811 A CN115437811 A CN 115437811A CN 202211145860 A CN202211145860 A CN 202211145860A CN 115437811 A CN115437811 A CN 115437811A
- Authority
- CN
- China
- Prior art keywords
- client
- data
- sent
- communication
- processes
- 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.)
- Pending
Links
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种进程间通信方法、装置、设备及存储介质。该方法包括:获取N个客户端进程的待发送数据的虚拟地址,所述N为大于或等于1的整数。将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上。根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程,所述M为大于或等于1的整数。本申请的方法,提高了进程间通信的效率,降低了服务端进程的负载。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种进程间通信方法、装置、设备及存储介质。
背景技术
运行操作系统时,处理器可以通过多进程协作的方式执行程序。进程间存在进程隔离,即,不能够在一个进程中直接访问另一个进程的资源,但是,不同的进程之间需要进行信息的交互和状态的传递,才既能够实现多进程协作。因此,目前需要通过进程间通信(Inter-Process Communication,IPC)的方式实现进程间的进行信息的交互和状态的传递,从而实现多进程协作。
现有技术中,对于大于256字节(bytes)的数据,运行QNX Neutrino实时操作系统(Real Time Operating System,RTOS)的终端设备的操作系统通过一次虚拟地址映射和一次数据拷贝完成数据同步IPC。在同步IPC过程中,客户端进程需要等待服务端进程的数据接收准备完成后,才进行虚拟地址映射,以及,数据拷贝的过程。当存在多个客户端进程与至少一个服务端进程之间进行同步IPC时,存在效率较低的问题。
发明内容
本申请提供一种进程间通信方法、装置、设备及存储介质,用以解决现有技术中进程间通信效率较低的问题。
第一方面,本申请提供一种进程间通信方法,应用于处理器,包括:
获取N个客户端进程的待发送数据的虚拟地址,所述N为大于或等于1的整数。
将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上。
根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程;所述M为大于或等于1的整数。
可选地,所述将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上,包括:
针对每个所述客户端进程,并行执行如下操作:
获取所述客户端进程的待发送数据的虚拟地址。
根据所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址。
将所述客户端进程的待发送数据的物理地址,映射到所述内核空间的所述内核虚拟地址。
可选地,所述根据所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址,包括:
获取所述客户端进程的页表,所述页表中包括所述客户端进程的虚拟地址,与,所述客户端进程的物理地址的映射关系。
根据所述客户端进程的页表,以及,所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址。
可选地,在将所述客户端进程的待发送数据的物理地址,映射到所述内核空间的所述内核虚拟地址后,还包括:
将连续的内核虚拟地址合并,得到至少一个内核虚拟地址段。
可选地,所述N个客户端进程的通信顺序是根据所述N个客户端进程的同步完成时间确定的;所述根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,包括:
针对任一客户端进程与对应的服务端进程,执行如下操作:
建立所述客户端进程与所述服务端进程之间的通信连接。
向所述客户端进程发送所述服务端进程的接收消息;所述接收消息用于指示所述客户端进程发送通信信息;所述通信信息包括所述内核虚拟地址的指针。
根据所述接收消息,通过所述客户端进程向所述服务端进程发送所述通信信息。
通过所述服务端进程根据所述通信信息,以及,数据拷贝函数,将所述待发送数据拷贝到所述服务端进程的预设虚拟地址对应的存储空间。
可选地,所述根据所述接收消息,通过所述客户端进程向所述服务端进程发送所述通信信息,包括:
根据所述接收消息,激活所述客户端进程的发送状态,所述发送状态用于表征所述客户端进程能够发送所述通信信息。
通过所述客户端进程完成所述通信信息发送后,向所述服务端进程发送消息。所述发送消息表征所述客户端进程已完成所有所述通信信息的发送。
根据所述发送消息,激活所述服务端进程的接收状态,所述接收状态用于表征所述服务端进程能够接收所述通信信息。
可选地,在通过所述服务端进程根据所述通信信息,以及,数据拷贝函数,将所述待发送数据拷贝到所述服务端进程的预设虚拟地址对应的存储空间后,还包括:
通过所述服务端进程完成所述待发送数据的拷贝后,向所述客户端进程发送反馈消息,所述反馈消息用于表征所述服务端进程已完成此次进程间通信。
通过所述客户端进程接收到所述反馈消息后,断开所述客户端进程与所述服务端进程的通信连接。
第二方面,本申请提供一种进程间通信装置,包括:
获取模块,获取N个客户端进程的待发送数据的虚拟地址,所述N为大于或等于1的整数。
映射模块,将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上。
同步模块,根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程;所述M为大于或等于1的整数。
第三方面,本申请提供一种进程间通信设备,包括:处理器,以及与所述处理器通信连接的存储器。
所述存储器存储计算机执行指令。
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中任一项所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中任一项所述的进程间通信方法。
第五方面,本申请提供一种计算机程序产品,包括:计算机程序,该计算机程序被处理器执行时实现如第一方面中任一项该的方法。
本申请提供的进程间通信方法、装置、设备及存储介质,通过将待发送数据的虚拟地址映射过程转移到客户端进程与服务端进程建立通信连接之前,使待发送数据的虚拟地址从客户端进程映射到内核空间中,以使多个客户端进程能够并行地将待发送数据的虚拟地址,映射到内核空间中的内核虚拟地址上,然后再利用上述内核虚拟地址,进行多个客户端进程与服务端进程的进程间通信,从而通过并行映射的方式,有效降低虚拟地址映射过程所耗费的时间,提高多个客户端进程与服务端进程之间通信的效率,通过将虚拟地址映射过程由服务端进程与每个客户端进程之间依次执行,变为每个客户端进程直接映射到内核空间中,去除了服务端进程执行虚拟地址映射过程的步骤,从而降低服务端进程的负载。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种操作系统架构的示意图;
图2为本申请实施例提供的一种进程间通信方法的流程示意图;
图3为本申请实施例提供的一种映射方法的流程示意图;
图4为本申请实施例提供的一种虚拟地址到物理地址映射的示例示意图;
图5为本申请实施例提供的另一种进程间通信的流程示意图;
图6为本申请实施例提供的一种客户端进程与服务端进程之间的通信连接构造图;
图7为本申请实施例提供的一种虚拟地址映射方法的示意图;
图8为本申请实施例提供的一种进程间通信方法示例的流程示意图;
图9为本申请实施例提供的一种进程间通信装置的结构示意图;
图10为本申请实施例提供的一种进程间通信设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
微内核架构:在微内核架构中,运行操作系统的处理器的功能被分为内核态(某些语境下也可以简称为内核)和用户态,内核态只负责部分关键业务功能,大部分操作系统功能放在用户态,这样可以确保内核态的“微型”化,同时把不同功能模块分开管理,以不同的进程运行,一个模块的问题不会影响到其他模块,实现更好的安全性和可靠性。典型的微内核架构操作系统有SeL4,QNX,MINIX,Fuchsia等。
进程:进程就是正在运行的程序,它会占用对应的内存区域,由操作系统进行执行与计算。进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个进程不可以直接访问其他进程的地址空间。多个进程可以在单个中央处理器(central processing unit,操作系统)上并发执行,多个进程之间不会互相影响。
进程间通信:指在系统中,多个进程之间通常需要通过传输数据、交换信息来完成系统任务或用户任务。但,由于不同的进程之间是相互独立的,在没有经过进程本身允许的情况下,一个进程不可以直接访问其他进程的地址空间,因此需要通过进程间通信来完成多个进程之间传输数据、交换信息的功能。
虚拟地址:为了保护进程不受其他进程的影响,需要实现进程与进程之间的进程隔离,因此需要通过虚拟地址的方式,保证进程中的虚拟地址无论如何偏移,都只能在该进程的虚拟地址空间中,从而使得其虚拟地址映射后的物理地址也无法影响到其他进程的虚拟地址映射后的物理地址。
内存物理地址:操作系统访问内存时要给出内存单元的地址(内存地址),每个内存单元都有一个唯一的地址,称之为物理地址。每个线程可以通过其虚拟地址空间中的虚拟地址,与内存物理地址的映射关系,根据虚拟地址寻址到对应的内存物理地址,从而从该内存物理地址中读取数据。
地址映射:指为了保证操作系统执行指令时可正确访问存储单元,需将用户程序中的虚拟地址转换为运行时由机器直接寻址的物理地址的过程。
页表:存放在物理内存中,可以用于表征进程的虚拟地址空间,并存储有该进程的虚拟地址与内存物理地址之间的映射关系,用于将虚拟地址转换为内存物理地址。
图1为本申请实施例提供的一种操作系统架构的示意图。如图1所示,该架构包括:
用户态:指操作系统的用户模式,是操作系统的一种工作状态,用户态不允许程序进行处理器中要求特权模式的操作,以避免操作系统崩溃。每个进程都在各自的虚拟地址空间中运行,而不允许访问他进程的虚拟地址空间。在用户态中,可以存在包括进程1、进程2在内的多个进程。后续实施例以这些进程间的通信过程为例进行说明。
内核态:内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。内核态指操作系统的特权模式,是操作系统的一种工作状态,它影响操作系统对不同指令的执行结果。操作系统通过跟操作系统配合,设置特权模式和用户模式,来防止应用程序进行越权的操作。内核所在的地址空间称作内核空间。上述所说的内核及内核空间均包括在内核态中。其中,对于不同的进程,均可以访问内核空间中的地址与数据。
由于每个进程在用户空间中有各自不同的虚拟地址空间,无法访问其他进程的虚拟地址空间,且对于不同的进程,均可以访问内核空间中的地址与数据。因此,进程之间要交换数据必须通过内核空间,在内核空间中开辟一块缓冲区,进程1把数据从用户空间拷到内核空间缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信机制。
目前,在QNX Neutrino RTOS中,运行该操作系统的终端设备的操作系统执行进程间通信的方式可以根据待发送数据的大小分为以下两种:
第一种:待发送数据大于256bytes。在该情况下,操作系统通过进行一次虚拟地址映射,以及,一次数据拷贝完成同步进程间通信。
第二种:待发送数据小于256bytes。在该情况下,操作系统无需进行虚拟地址映射过程,通过进行两次数据拷贝完成同步进程间通信。
其中,本申请的具体的应用场景仅针对上述操作系统通过进行一次虚拟地址映射,以及,一次数据拷贝完成同步进程间通信的情况。当存在多个客户端进程(即发送待发送数据的进程),以及,至少一个服务端进程(即接收待发送数据的进程)时,对于QNXNeutrino RTOS操作系统中,待发送数据大于256bytes时,操作系统执行进程间通信的具体流程如下:
S101、获取多个客户端进程与第一个服务端进程的通信顺序。基于该通信顺序,每个客户端进程需要等待上一个客户端进程与第一个服务端进程完成进程间通信之后,才能与第一个服务端进程进行进程间通信。
上述所说的通信顺序为多个客户端进程等待在第一个服务端进程的channel(即管道,或者称为通道)上的顺序。这里所说的channel用于进程间通信,客户端进程可以借助channel向服务端进程传输信息。其中,多个客户端进程以队列的形式等待在channel上,按照先进先出的方式与服务端进程进行信息传输。上述通信顺序可以是以链表的形式存储在内存中的,操作系统可以通过读取内存中的该链表,对多个客户端进程的通信顺序进行调度。
S102、根据通信顺序,建立第一个客户端进程与第一个服务端进程的通信连接。
操作系统在需要进行进程间通信的服务端进程上建立channel,多个服务端进程可以共享同一个channel。操作系统再根据实际需要,将需要进行进程间通信的客户端进程连接到上述channel上,并且暂时禁止所有客户端进程与所有服务端进程的通信。当轮到第一个客户端进程与第一个服务端进程通信时,操作系统控制该客户端进程允许与该服务端进程进行通信。
S103、将第一个客户端进程的待发送数据的虚拟地址列表对应的内存物理地址列表映射到第一个服务端进程中。
具体操作为,第一个服务端进程获取第一个客户端进程的待发送数据的虚拟地址列表。其中,操作系统通过页表,将第一个客户端进程的待发送数据的虚拟地址列表映射到内核虚拟地址列表,上述页表中包括第一个客户端进程的每个数据对应的虚拟地址,和,内存物理地址之间的映射关系。第一个服务端进程可以直接读取上述待发送数据的内核虚拟地址列表,获取该内核虚拟地址列表中的内核虚拟地址。
S104、根据上述映射关系,将第一个客户端进程的待发送数据拷贝到第一个服务端进程中。
第一个服务端进程根据上述待发送数据的内核虚拟地址,获取存储在该内核虚拟地址对应的内存物理地址对应的存储空间中的数据,并将这些数据拷贝到第一个服务端进程预先准备好的存储空间中。
S105、断开第一个客户端进程与第一个服务端进程的通信连接,结束第一个客户端进程与第一个服务端进程之间的通信。
由此可见,现有技术中,对于QNX Neutrino rtos操作系统中同步数据大于256bytes的情况,操作系统执行进程间通信的方式需要每个客户端进程与服务端进程一一进行一次虚拟地址映射过程,以及,一次数据拷贝操作。示例性的,若存在10个客户端进程,1个服务端进程,则完成10个客户端进程与1个服务端进程的进程间通信任务,需要耗费10次虚拟地址映射所需的时间,以及,10次数据拷贝操作所需的时间。以该种方式执行进程间通信任务,存在耗费的时间较长,通信效率较低的问题。此外,虚拟地址映射操作,以及,数据拷贝操作都处于服务端进程侧,当需要进行进程间通信的进程较多时,服务端进程侧存在负载较重的问题。
有鉴于此,本申请提供了一种进程间通信方法,通过将待发送数据的虚拟地址映射过程转移到客户端进程与服务端进程建立通信连接之前,使待发送数据的虚拟地址从客户端进程映射到内核空间中,以使多个客户端进程能够并行地将待发送数据的虚拟地址,映射到内核空间中的内核虚拟地址上,然后再利用上述内核虚拟地址,进行多个客户端进程与服务端进程的进程间通信,从而通过并行映射的方式,有效降低虚拟地址映射过程所耗费的时间,提高多个客户端进程与服务端进程之间通信的效率,通过将虚拟地址映射过程由服务端进程与每个客户端进程之间依次执行,变为每个客户端进程直接映射到内核空间中,去除了服务端进程执行虚拟地址映射过程的步骤,从而降低服务端进程的负载。
本申请的执行主体可以为运行SeL4,QNX,MINIX,Fuchsia等微内核架构操作系统的终端设备的处理芯片运行的操作系统。该终端设备例如可以包括可穿戴设备、智能家居设备、车载终端、航天类终端等。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的一种进程间通信方法的流程示意图。如图2所示,该方法包括:
S201、获取N个客户端进程的待发送数据的虚拟地址,N为大于或等于1的整数。
其中,上述客户端进程为发出待发送数据的进程,该待发送数据是待从客户端进程同步给服务端进程的数据,待发送数据的虚拟地址为这些待发送数据在上述客户端进程中对应的虚拟地址组成的虚拟地址。操作系统获取该虚拟地址的方法例如可以是,通过上述客户端进程的缓冲寄存器(buffer)获取该待发送数据的虚拟地址。然后,可以通过页表,根据该待发送数据的虚拟地址,获取上述客户端进程的待发送数据的内存物理地址。示例性的,客户端进程的页表例如可以如下表1所示:
表1
待发送数据 | 虚拟地址 | 内存物理地址 |
数据1 | 虚拟地址1 | 物理地址1 |
数据2 | 虚拟地址2 | 物理地址2 |
数据3 | 虚拟地址3 | 物理地址3 |
数据4 | 虚拟地址4 | 物理地址4 |
以数据1为例,数据1是存储在内存中的物理地址1中的数据,上述客户端进程中数据1对应的虚拟地址为该客户端进程的虚拟地址空间中的虚拟地址1,操作系统可以根据获取该数据1的虚拟地址,以及,上述虚拟地址空间中的虚拟地址与内存物理地址之间的映射关系,从而寻址到该物理地址1,从物理地址1中获取数据1。
S202、将上述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上。
由于此时还未确定N个客户端进程与M个服务端进程的通信顺序,即无法直接将客户端进程的待发送数据的虚拟地址直接映射到服务端进程的页表中。操作系统需要控制N个客户端进程先将待发送数据的虚拟地址映射到内核空间中的内核虚拟地址上,以便于后续确定通信顺序后,服务端进程能够直接通过访问内核空间中的虚拟地址,拷贝待发送数据。
其中,可以同时进行N个客户端进程的待发送数据的虚拟地址的映射任务,分别将每个客户端进程的待发送数据的虚拟地址映射到内核空间中的不同的内核虚拟地址上。当客户端进程N的个数相较服务端进程M的个数越大时,该方法提升通信效率的效果越好。
一种可能的实施方式,获得客户端进程的待发送数据的虚拟地址对应的内存物理地址,获取方式例如可以是通过该客户端进程的页表中的映射关系获得的,该页表如上述表1所示,此处不再赘述。然后,再根据待发送数据的虚拟地址对应的内存物理地址,将上述待发送数据映射到内核空间中的内核虚拟地址段上。
另一种可能的实施方式,建立客户端进程的待发送数据的虚拟地址段与内核空间中的内核虚拟地址段的映射关系,通过该映射关系将客户端进程的待发送数据的虚拟地址段映射到对应的内核空间中的内核虚拟地址段。
S203、根据上述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行上述N个客户端进程与上述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程,M为大于或等于1的整数。
其中,该N个客户端进程的通信顺序例如可以是该N个客户端进程的映射任务完成的先后顺序;也可以是根据需求,实际调度的通信顺序等,例如,根据预设的通信顺序进行通信,通信顺序靠前的客户端进程尚未完成映射任务,即使通信顺序靠后的客户端进程已经完成映射任务,也无法马上与服务端进程进行进程间通信,需要先等待通信顺序靠前的客户端进程完成映射任务,以及,进程间通信。本申请对该N个客户端进程通信顺序、M个服务端进程的通信顺序的具体设定不作限制。
上述N个客户端进程与上述M个服务端进程之间的通信的方式可以是,N个客户端进程按照其通信顺序,依次与每个客户端进程所需要进行通信的服务端进程进行通信。当每个客户端进程对应的服务端进程完成通信后,断开该客户端进程与该服务端进程之间的通信连接。
上述将客户端进程的待发送数据同步至服务端进程例如可以是通过上述步骤S202中待发送数据的虚拟地址,以及,内核空间中的内核虚拟地址的映射关系。服务端进程通过获取内核空间中的内核虚拟地址,根据页表查找该内核虚拟地址对应的物理地址,从而获取待发送数据的物理地址与虚拟地址,从上述物理地址中读取待发送数据,并将该待发送数据拷贝至服务端进程对应的物理地址中。
对于将客户端进程的待发送数据同步至服务端进程,例如可以通过以下方式实现:
使用服务端进程调用数据拷贝函数,获取待发送数据对应的内核空间中的内核虚拟地址段,根据获取的内核虚拟地址段,拷贝待发送数据,并在服务端进程中定义接收待发送数据的虚拟地址段,将该待发送数据拷贝至服务端进程中定义接收待发送数据的虚拟地址段下。上述在服务端进程中定义接收待发送数据的虚拟地址段,例如可以是在服务端进程中的虚拟地址空间中,选择用于存储待发送数据的虚拟地址段。
本申请实施例提供的进程间通信方法,通过将N个客户端进程的待发送数据的虚拟地址段并行映射到内核空间中的内核虚拟地址段上,根据该内核虚拟地址段,服务端进程可以将待发送数据拷贝至服务端进程中用于接收该待发送数据的虚拟地址段上。根据N个客户端进程并行进行映射过程,使得现有技术中需要依次进行的映射过程,能够同时执行,从而降低了N个客户端进程与M个服务端进程通信过程中的映射所需时间,提高了进程间通信的效率。
下面将详细描述如何将所述N个客户端进程的待发送数据的虚拟地址段并行映射到内核空间中的内核虚拟地址段上。
图3为本申请实施例提供的一种映射方法的流程示意图。如图3所示,上述步骤S202还可以包括:
针对每个上述客户端进程,并行执行如下操作:
S301、获取该客户端进程的待发送数据的虚拟地址。
操作系统获取该客户端进程的待发送数据的虚拟地址的方式与上述步骤S201相同,此处不再赘述。
图4为本申请实施例提供的一种虚拟地址到物理地址映射的示例示意图,如图4所示,包括:
虚拟地址:该虚拟地址中包括4个对应存储空间的大小为4k的虚拟地址,这4个虚拟地址之间是连续的。由上述4个虚拟地址组成的存储空间为16k的虚拟地址段为一个待发送数据对应的虚拟地址段。该虚拟地址段可以是客户端进程通过动态内存分配函数malloc分配的。
物理地址:即上述虚拟地址对应的内存物理地址,待发送数据是实际存储在内存中的物理地址中的,操作系统在接收到上述虚拟地址后,可以跟据上述的虚拟地址,以及,虚拟地址与该内存物理地址的映射关系,寻址到虚拟地址对应的内存物理地址,从而从内存物理地址中获取上述待发送数据。
其中,上述4个虚拟地址对应的4个物理地址可以是连续的,也可以是不连续的。虚拟地址与该内存物理地址的映射关系是存储在该客户端进程的页表中的,操作系统可以通过软件查询页表的方式,获取每个虚拟地址对应的存储空间大小为4k的物理地址。
示例性的,后续实施例以待发送数据的虚拟地址为客户端进程通过动态内存分配函数malloc分配的16k的虚拟地址段siov(sender I/O vector)为例,假定每个虚拟地址的最大大小为4k,则该虚拟地址段siov包括连续的4个虚拟地址。
S302、根据该客户端进程的待发送数据的虚拟地址,获取该客户端进程的待发送数据的物理地址。
一种可能的实施方式,获取该客户端进程的页表,该页表中包括该客户端进程的虚拟地址,与,该客户端进程的物理地址的映射关系。该页表,以及该页表中该客户端进程的虚拟地址,与,该客户端进程的物理地址的映射关系如上述表1。操作系统从内存中获取该页表,读取该页表中的数据,从而获得该客户端进程的虚拟地址,与,该客户端进程的物理地址的映射关系。
根据该客户端进程的页表,以及,该客户端进程的待发送数据的虚拟地址,获取该客户端进程的待发送数据的物理地址。
示例性的,上述虚拟地址siov包括的连续的4个虚拟地址对应的客户端进程的物理地址可以是连续的,也可以是不连续的。该客户端进程将该虚拟地址段siov包括的4个虚拟地址中的每个虚拟地址,通过查询页表的方式获得对应的4k的物理地址,获取对应的4个客户端进程的物理地址。
应理解,也可以采用其他任意能够实现的方式,根据该客户端进程的待发送数据的虚拟地址,获取对应的物理地址,本申请对于如何根据待发送数据的虚拟地址获取对应的物理地址的方式不做限制。
S303、将该客户端进程的待发送数据的物理地址,映射到内核空间的内核虚拟地址。
其中,可以通过客户端进程对应的物理地址所在的地址段,和,内核空间的内核虚拟地址所在的地址段之间的偏移关系,将客户端进程的待发送数据的物理地址,通过地址偏移的方式映射到上述内核空间的内核虚拟地址上。该偏移关系例如可以是内核空间虚拟地址和物理地址之间的固定偏移量确定的,该固定偏移量由内核初始化确定,本申请对此不做限制。根据该偏移关系,将该客户端进程的每个待发送数据的虚拟地址对应的物理地址,或,物理地址段,映射到内核空间中对应的内核虚拟地址,或,内核虚拟地址段中。
示例性的,通过将上述4个大小为4k的客户端进程的物理地址,通过上述的偏移关系,得到内核空间的4个大小为4k的内核虚拟地址。此时,该4个内核虚拟地址为4段内核虚拟地址段,可以用miov(map I/O vector)来表示内核虚拟地址段。该4个内核虚拟地址可以是连续的,也可以是不连续的。
可选地,在将客户端进程的待发送数据的物理地址,映射到内核空间的内核虚拟地址后,将连续的内核虚拟地址合并,得到至少一个内核虚拟地址段。
上述内核空间的内核虚拟地址是用于指示服务端进程拷贝待发送数据的位置,以及,待发送数据的大小。继续以上述每一个内核虚拟地址为4k大小为例,每个内核虚拟地址可以存储4k大小的待发送数据。当将连续的内核虚拟地址合并,得到内核虚拟地址段后,每段内核虚拟地址段由多个4k大小的内核虚拟地址合并而成,能够存储的待发送数据的大小更大。因此,可以通过更少段数的内核虚拟地址段,传输更大的待发送数据,从而避免因系统对于地址段的同时传输数量的限制而造成的通信效率较低的问题。因此,当上述内核虚拟地址中,存在至少两个连续的内核虚拟地址时,可以选择将连续的内核虚拟地址合并为一个内核虚拟地址段,该内核虚拟地址段可以使用该内核虚拟地址段的基地址,以及,地址长度表示。即,以上述基地址为起点,以该基地址加上上述地址长度后的地址位置为终点的地址段,即可以表示该内核虚拟地址段。从而讲至少两个连续的内核虚拟地址,变为一个内核虚拟地址段,以减少待发送数据对应的内核虚拟地址段的段数。通过这种方式,可以进一步提高进程间通信的效率。
示例性的,若4段内核虚拟地址段miov中的第一段内核虚拟地址段与,第二段内核虚拟地址段是连续的,则将二者合并为新的内核虚拟地址段,此时则仅存在3段内核虚拟地址段miov。后续服务端进程可以通过拷贝上述3段内核虚拟地址段miov对应的待发送数据,来完成与上述客户端进程的进程间通信任务。
本申请实施例提供的方法,通过获取客户端进程的待发送数据的虚拟地址,根据该虚拟地址获取对应的客户端进程中的内存物理地址,进一步获取内核空间中对应的内核虚拟地址,获得该客户端进程的待发送数据对应的内核虚拟地址,从而使得服务端进程能够直接通过访问内核空间中的该内核虚拟地址拷贝待发送数据,提高进程间通信的效率。
对于根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,图5是本申请实施例提供的另一种进程间通信的流程示意图,如图5所示,上述步骤S203还包括:
针对任一客户端进程与对应的服务端进程,执行如下操作:
S501、建立该客户端进程与该服务端进程之间的通信连接。
图6是本申请实施例提供的客户端进程与服务端进程之间的通信连接构造图。如图6所示,该构造包括:三个客户端进程,两个服务端进程,每个客户端进程可以通过建立通信连接接口connection,与两个服务端进程共用的管道(channel)进行通信连接。
在该客户端进程可以在完成上述的映射过程后,可以将该客户端进程等待在服务端进程的管道(channel)上,并通过客户端进程通信连接接口,与服务端进程的管道进行消息传递。该传递的消息例如可以是接收消息,发送消息,反馈消息等,其中,该消息例如可以是信号量(semaphore),该消息的具体类型与内容,只要能够达到本申请中消息的效果即可,本申请对该消息的具体形式不做限制。
S502、向该客户端进程发送该服务端进程的接收消息;该接收消息用于指示该客户端进程发送通信信息;该通信信息包括上述内核虚拟地址的指针。
相应地,该客户端进程接收该服务端进程发送的接收消息。
当该服务端进程准备好可以开始同步该客户端进程的待发送数据时,该该服务端进程发送上述接收消息至该客户端进程中,以表征该服务端进程处于接收消息的未决(pending)状态,即等待该客户端进程发送通信信息的状态。该通信信息中可以包括上述待发送数据对应的内核虚拟地址的指针,也可以直接包括上述待发送数据对应的内核虚拟地址,用于将待发送数据对应的内核虚拟地址同步给该服务端进程。
可选地,若该内核虚拟地址进行过合并,存在至少一个合并后的内核虚拟地址段,该通信信息中还可以包括待发送数据对应的内核虚拟地址的段数,用于该服务端进程在拷贝待发送数据时,判断是否已完成与该客户端进程之间的通信。例如,可以根据当前已完成拷贝的内核虚拟地址的段数,与,待发送数据对应的内核虚拟地址的段数是否一致,判断是否完成进程间通信。
S503、根据该接收消息,通过该客户端进程向该服务端进程发送上述通信信息。
相应地,该服务端进程接收该客户端进程发送的通信信息。
客户端进程接收到该接收消息后,表征该客户端进程已获得该服务端进程已经做好接收客户端进程发送通信信息的准备,因此,该客户端进程可以开始发送上述通信信息。
一种可能的实施方式,根据该接收消息,激活该客户端进程的发送状态,该发送状态用于表征该客户端进程能够发送上述通信信息,通过该客户端进程完成该通信信息的发送后,向该服务端进程发送消息。根据该发送消息,激活该服务端进程的接收状态,该接收状态用于表征所述服务端进程能够接收所述通信信息。即,在该实施方式下,该客户端进程与该服务端进程在每完成一项步骤后,都需要进入未决状态,并通过发送相应的完成消息,提示对方可以执行下一个步骤的操作。上述未决状态例如可以是,上述客户端进程准备好发送通信信息时的待发送状态、完成所有通信信息的发送后的已完成发送的状态、上述客户端进程准备好接收通信信息时的待接收状态等。
S504、通过所述服务端进程根据所述通信信息,以及,数据拷贝函数,将所述待发送数据拷贝到所述服务端进程的预设虚拟地址对应的存储空间。
其中,数据拷贝函数例如可以为msg_copy(riov,rparts,miov,mparts),此处的riov(receive I/O vector)可以是该服务端进程定义的用于接收待发送数据的该服务端进程中的虚拟地址,或,虚拟地址段,rparts为接收待发送数据的该服务端进程中为虚拟地址,或,虚拟地址段对应的段数;miov为待发送数据对应的内核虚拟地址,或,内核虚拟地址段,mparts为接收待发送数据对应的内核虚拟地址,或,虚拟地址段对应的段数。该服务端进程将每段待发送数据对应的内核虚拟地址,或,内核虚拟地址段中的待发送数据,拷贝到该服务端进程中为虚拟地址,或,虚拟地址段中。再通过判断rparts与mparts中保存的数据长度是否完成拷贝,确认是否完成待发送数据的拷贝。
可选地,在通过该服务端进程根据该通信信息,以及,数据拷贝函数,将该待发送数据拷贝到该服务端进程的预设虚拟地址对应的存储空间后,向该客户端进程发送反馈消息,该反馈消息用于表征该服务端进程已完成此次进程间通信。该客户端进程接收到所述反馈消息后,断开该客户端进程与该服务端进程的通信连接。
即,在该服务端进程完成上述的数据拷贝任务后,进入拷贝已完成的未决状态,并通过如上述实施例中的消息传递的方式,指示该客户端进程,此次进程间通信已完成,进一步指示该客户端进程可以断开与该服务端进程的通信连接。
下面,以一个客户端进程与一个服务端进程的进程间通信为例,对本申请提供的方法进行示例说明。
图7为本申请实施例提供的一种虚拟地址映射方法的示意图。如图7所示,该方法包括:
在该场景下,客户端进程需要向服务端进程同步的待发送数据分别存储在3段siov虚拟地址段上,通过上述步骤S302-S304的过程,将待发送数据对应的3段siov虚拟地址段映射到内核空间中的3段miov虚拟地址段上。在该客户端进程与该服务端进程建立通信连接后,该服务端进程通过数据拷贝函数,访问上述内核空间中的3段miov虚拟地址段,并根据miov与siov之间的映射关系,寻址到存储有待发送数据,与siov对应的内存物理地址的存储空间,并从该存储空间内读取待发送数据,复制到服务端进程中riov虚拟地址对应的内存物理地址的存储空间中。
图8为本申请实施例提供的一种进程间通信方法示例的流程示意图。如图8所示,该方法包括:
S801、客户端进程将待发送数据对应的多段siov虚拟地址映射到内核虚拟地址miov,并记录miov中的内核虚拟地址段的段数mparts。客户端进程进入未决(pending)状态,等待服务端进程发送接收消息。
S802、服务端进程获取客户端进程的通信顺序,向客户端进程发送接收消息,以指示客户端进程执行发送任务。
S803、客户端进程在获取到接收消息后,向服务端进程发送内核虚拟地址miov,及对应的内核虚拟地址段的段数mparts。
S804、客户端进程完成发送任务后,向服务端进程发送完成消息,以使服务端进程执行接收操作。客户端进程进入未决(pending)状态,等待服务端进程发送反馈消息。
S805、服务端进程获取到发送信号量后,由未决(pending)状态转变为执行(running)状态,调用数据拷贝函数,将miov对应的数据拷贝至riov中。
S806、服务端进程完成数据拷贝后,向客户端进程发送反馈消息,通知客户端进程本次进程间通信结束。
S807、客户端进程接收到反馈消息后,由未决(pending)状态转变为执行(running)状态,断开与服务端进程的通信连接。
本申请实施例提供的方法,通过建立客户端进程与服务端进程之间的通信连接,利用该通信连接进行消息传递,以保证客户端进程与服务端进程之间按照预设的步骤进行通信间连接,降低了待发送数据的同步不完整的可能,从而保证了进程间通信的稳定性。
图9为本申请实施例提供的一种进程间通信装置的结构示意图。如图9所示,该进程间通信装置包括:获取模块11,映射模块12,同步模块13。在一种可能的实施方式中,还包括:合并模块14,反馈模块15。
获取模块11,用于获取N个客户端进程的待发送数据的虚拟地址,该N为大于或等于1的整数。
映射模块12,用于将该N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上。
同步模块13,用于根据该N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行该N个客户端进程与该M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程,该M为大于或等于1的整数。
一种可能的实施方式,映射模块12,具体用于针对每个该客户端进程,并行执行如下操作:获取该客户端进程的待发送数据的虚拟地址。根据该客户端进程的待发送数据的虚拟地址,获取该客户端进程的待发送数据的物理地址。将该客户端进程的待发送数据的物理地址,映射到该内核空间的内核虚拟地址。
在该实施方式下,映射模块12,具体用于获取该客户端进程的页表,该页表中包括该客户端进程的虚拟地址,与,该客户端进程的物理地址的映射关系。根据该客户端进程的页表,以及,该客户端进程的待发送数据的虚拟地址,获取该客户端进程的待发送数据的物理地址。
一种可能的实施方式,映射模块12在将该客户端进程的待发送数据的物理地址,映射到该内核空间的内核虚拟地址后,合并模块14,用于将连续的内核虚拟地址合并,得到至少一个内核虚拟地址段。
一种可能的实施方式,该N个客户端进程的通信顺序是根据该N个客户端进程的同步完成时间确定的。同步模块13,具体用于针对任一客户端进程与对应的服务端进程,执行如下操作:建立该客户端进程与该服务端进程之间的通信连接。向该客户端进程发送该服务端进程的接收消息;该接收消息用于指示该客户端进程发送通信信息;该通信信息包括该内核虚拟地址的指针。根据该接收消息,通过该客户端进程向该服务端进程发送该通信信息。通过该服务端进程根据该通信信息,以及,数据拷贝函数,将该待发送数据拷贝到该服务端进程的预设虚拟地址对应的存储空间。
一种可能的实施方式,同步模块13,具体用于根据该接收消息,激活该客户端进程的发送状态,该发送状态用于表征该客户端进程能够发送该通信信息。通过该客户端进程完成该通信信息发送后,向该服务端进程发送消息;该发送消息表征该客户端进程已完成所有该通信信息的发送。根据该发送消息,激活该服务端进程的接收状态,该接收状态用于表征该服务端进程能够接收该通信信息。
一种可能的实施方式,同步模块13在通过该服务端进程根据该通信信息,以及,数据拷贝函数,将该待发送数据拷贝到该服务端进程的预设虚拟地址对应的存储空间后,反馈模块15,用于通过该服务端进程完成该待发送数据的拷贝后,向该客户端进程发送反馈消息。通过该客户端进程接收到该反馈消息后,断开该客户端进程与该服务端进程的通信连接。该反馈消息用于表征该服务端进程已完成此次进程间通信。
本申请实施例提供的进程间通信装置,可以执行上述方法实施例中的进程间通信方法,其实现原理和技术效果类似,在此不再赘述。
图10为本申请实施例提供的一种进程间通信设备的结构示意图。其中,该进程间通信设备用于执行前述所说的进程间通信方法,例如可以是前述所说的运行微内核架构操作系统的终端设备。如图10所示,该进程间通信设备1000可以包括:至少一个处理器1001、存储器1002。
存储器1002,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器1002例如可以是高速RAM存储器。
处理器1001用于执行存储器1002存储的计算机执行指令,以实现前述方法实施例所描述的方法。其中,处理器1001可能是一个操作系统,或者是特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
在具体实现上,如果存储器1002以及处理器1001独立实现,则存储器1002以及处理器1001可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1002和处理器1001集成在一块芯片上实现,则存储器1002和处理器1001可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括随机存取存储器(RAM,Random Access Memory)、高速RAM存储器等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。进程间通信设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得进程间通信设备实施上述各种实施方式提供的进程间通信方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种进程间通信方法,其特征在于,应用于处理器,所述方法包括:
获取N个客户端进程的待发送数据的虚拟地址,所述N为大于或等于1的整数;
将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上;
根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程;所述M为大于或等于1的整数。
2.根据权利要求1所述的方法,其特征在于,所述将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上,包括:
针对每个所述客户端进程,并行执行如下操作:
获取所述客户端进程的待发送数据的虚拟地址;
根据所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址;
将所述客户端进程的待发送数据的物理地址,映射到所述内核空间的所述内核虚拟地址。
3.根据权利要求2所述的方法,其特征在于,所述根据所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址,包括:
获取所述客户端进程的页表,所述页表中包括所述客户端进程的虚拟地址,与,所述客户端进程的物理地址的映射关系;
根据所述客户端进程的页表,以及,所述客户端进程的待发送数据的虚拟地址,获取所述客户端进程的待发送数据的物理地址。
4.根据权利要求2或3所述的方法,其特征在于,在将所述客户端进程的待发送数据的物理地址,映射到所述内核空间的所述内核虚拟地址后,还包括:
将连续的内核虚拟地址合并,得到至少一个内核虚拟地址段。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述N个客户端进程的通信顺序是根据所述N个客户端进程的同步完成时间确定的;所述根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,包括:
针对任一客户端进程与对应的服务端进程,执行如下操作:
建立所述客户端进程与所述服务端进程之间的通信连接;
向所述客户端进程发送所述服务端进程的接收消息;所述接收消息用于指示所述客户端进程发送通信信息;所述通信信息包括所述内核虚拟地址的指针;
根据所述接收消息,通过所述客户端进程向所述服务端进程发送所述通信信息;
通过所述服务端进程根据所述通信信息,以及,数据拷贝函数,将所述待发送数据拷贝到所述服务端进程的预设虚拟地址对应的存储空间。
6.根据权利要求5所述的方法,其特征在于,所述根据所述接收消息,通过所述客户端进程向所述服务端进程发送所述通信信息,包括:
根据所述接收消息,激活所述客户端进程的发送状态,所述发送状态用于表征所述客户端进程能够发送所述通信信息;
通过所述客户端进程完成所述通信信息发送后,向所述服务端进程发送消息;所述发送消息表征所述客户端进程已完成所有所述通信信息的发送;
根据所述发送消息,激活所述服务端进程的接收状态,所述接收状态用于表征所述服务端进程能够接收所述通信信息。
7.根据权利要求6所述的方法,其特征在于,在通过所述服务端进程根据所述通信信息,以及,数据拷贝函数,将所述待发送数据拷贝到所述服务端进程的预设虚拟地址对应的存储空间后,还包括:
通过所述服务端进程完成所述待发送数据的拷贝后,向所述客户端进程发送反馈消息,所述反馈消息用于表征所述服务端进程已完成此次进程间通信;
通过所述客户端进程接收到所述反馈消息后,断开所述客户端进程与所述服务端进程的通信连接。
8.一种进程间通信装置,其特征在于,所述装置包括:
获取模块,获取N个客户端进程的待发送数据的虚拟地址,所述N为大于或等于1的整数;
映射模块,将所述N个客户端进程的待发送数据的虚拟地址并行映射到内核空间中的内核虚拟地址上;
同步模块,根据所述N个客户端进程的通信顺序,以及,M个服务端进程的通信顺序,进行所述N个客户端进程与所述M个服务端进程之间的通信,以将客户端进程的待发送数据同步至服务端进程;所述M为大于或等于1的整数。
9.一种进程间通信设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的进程间通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145860.5A CN115437811A (zh) | 2022-09-20 | 2022-09-20 | 进程间通信方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145860.5A CN115437811A (zh) | 2022-09-20 | 2022-09-20 | 进程间通信方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437811A true CN115437811A (zh) | 2022-12-06 |
Family
ID=84249635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211145860.5A Pending CN115437811A (zh) | 2022-09-20 | 2022-09-20 | 进程间通信方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437811A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024198564A1 (zh) * | 2023-03-27 | 2024-10-03 | 华为云计算技术有限公司 | 云服务控制系统、方法、装置、设备集群、介质及产品 |
-
2022
- 2022-09-20 CN CN202211145860.5A patent/CN115437811A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024198564A1 (zh) * | 2023-03-27 | 2024-10-03 | 华为云计算技术有限公司 | 云服务控制系统、方法、装置、设备集群、介质及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
EP4187386A1 (en) | Interprocess communication method and apparatus | |
CN115437811A (zh) | 进程间通信方法、装置、设备及存储介质 | |
CN102291298A (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
CN115174673A (zh) | 具备低延迟处理器的数据处理装置、数据处理方法及设备 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
WO2017166997A1 (zh) | 智能网卡侧的异常处理方法和装置 | |
CN113535611A (zh) | 数据处理方法及装置、异构系统 | |
CN112822299B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN115766044A (zh) | 一种基于用户态协议栈的通信方法及相应装置 | |
CN117370046A (zh) | 进程间通信方法、系统、设备和存储介质 | |
CN114579319B (zh) | 显存管理方法、显存管理模块、soc及电子设备 | |
CN109101439A (zh) | 一种报文处理的方法及装置 | |
CN111427806A (zh) | 一种双核amp系统共用串口的方法、存储介质及智能终端 | |
CN108563492B (zh) | 数据获取方法、虚拟机以及电子设备 | |
KR20050080704A (ko) | 프로세서간 데이터 전송 장치 및 방법 | |
US20160162199A1 (en) | Multi-processor communication system sharing physical memory and communication method thereof | |
CN109992560B (zh) | 一种通信方法及通信系统 | |
CN111427816A (zh) | 一种amp系统核间通讯方法、计算机设备及存储介质 | |
CN111427815A (zh) | 一种基于spi接口的核间通讯方法、终端及存储介质 | |
CN111427817A (zh) | 一种amp系统双核共用i2c接口的方法、存储介质及智能终端 | |
KR100978083B1 (ko) | 공유 메모리형 멀티 프로세서에 있어서의 절차 호출 방법 및 절차 호출 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체 |
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 |