CN113961378A - 基于共享内存的进程间通信方法、装置及电子设备 - Google Patents
基于共享内存的进程间通信方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113961378A CN113961378A CN202111353841.7A CN202111353841A CN113961378A CN 113961378 A CN113961378 A CN 113961378A CN 202111353841 A CN202111353841 A CN 202111353841A CN 113961378 A CN113961378 A CN 113961378A
- Authority
- CN
- China
- Prior art keywords
- message queue
- interface
- queue interval
- interval
- reference count
- 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
- 238000000034 method Methods 0.000 title claims abstract description 473
- 230000006854 communication Effects 0.000 title claims abstract description 38
- 238000004891 communication Methods 0.000 title claims abstract description 37
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 12
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000002618 waking effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000002699 waste material Substances 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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 Security & Cryptography (AREA)
- Multi Processors (AREA)
Abstract
本申请提供的基于共享内存的进程间通信方法、装置及电子设备,该方法包括:提供的第一接口响应于第一进程的第一调用请求,执行:若不满足所述第一调用请求中的写判断条件,则对第一引用计数加1处理、解锁,对第一信号量执行P操作,进入写等待状态;等待时,若基于第一信号量判断消息队列区间的可写入的可用量大于0,且满足第一调用请求中的写判断条件,则退出;提供第二接口,第二接口响应于第二进程的第二调用请求,执行:基于第一引用计数的取值对第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒。因此,处于等待的进程释放系统资源,之后通过第一信号量的V操作,唤醒等待进程,提高了系统的通信效率。
Description
技术领域
本申请涉及通信领域,尤其涉及一种基于共享内存的进程间通信方法、装置及电子设备。
背景技术
目前,当不同进程之间需要通信时,若一个进程对应的消息队列的存储空间已满时,则此时需要向该进程发送消息的其余进程则无法成功的发送消息。
相关技术中,其余进程可以循环判断需要进行通信的进程的存储空间的状态,直到存储存储空间不满时,则此时其余进程可以向该进程发送通知。
然而,上述不断循环判断会占用较多的系统资源,系统通信效率较低。
发明内容
本申请提供一种基于共享内存的进程间通信方法、装置及电子设备,用以解决相关技术中进程通信时占用系统资源较多,系统通信效率较低的问题。
第一方面,本申请提供一种基于共享内存的进程间通信方法,所述共享内存包括进程对应的内存单元,每一内存单元包括消息队列空间以及存储空间;所述方法包括:
提供第一接口,所述第一接口响应于第一进程的第一调用请求,所述第一调用请求包括写判断条件,执行以下处理:判断若不满足所述第一调用请求中的写判断条件,则对所述第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对所述第一进程访问的消息队列区间解锁,并对所述消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在所述写等待状态下,若基于当前所述消息队列区间的第一信号量判断所述消息队列区间的可写入的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第一调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第一信号量表征消息队列区间的可写入的可用量,所述写判断条件为所述第二进程的消息队列区间未满;
提供第二接口,所述第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对所述第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒,所述第一引用计数用于表征写入所述消息队列区间的进程,且处于等待状态的进程数量。
在一些实施例中,所述第二接口还执行以下处理:当所述第一引用计数等于0时,则退出调用;当所述第一引用计数大于0时,对第一引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第一调用请求中的写判断条件,则直接退出调用。
在一些实施例中,所述方法还包括:
提供第一接口,所述第一接口响应于第三进程的第三调用请求,所述第三调用请求包括读判断条件,执行以下处理:判断若不满足所述第三调用请求中的读判断条件,则对所述第三进程的消息队列区间的第二引用计数加1处理、对所述第三进程的消息队列区间解锁,并对所述消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在所述读等待状态下,若基于当前所述消息队列区间的第二信号量判断所述消息队列区间的可读的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第三调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第二信号量表征所述消息队列区间的可读的可用量,所述读判断条件为所述第三进程的消息队列区间未空;
提供第二接口,所述第二接口响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对所述第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,所述第二引用计数用于表征读所述消息队列区间的进程,且处于读等待状态的进程数量。
在一些实施例中,所述第二接口还执行以下处理:当所述第二引用计数等于0时,则退出调用;当所述第二引用计数大于0时,对第二引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第三调用请求中的读判断条件,则直接退出调用。
在一些实施例中,所述第一调用请求为所述第一进程向所述第二进程的消息队列区间写消息时,对所述第二进程的消息队列区间加锁后发送的;所述第二调用请求为所述第二进程读取第二进程的消息队列区间后发送的。
在一些实施例中,所述第三调用请求为所述第三进程检测到所述第三进程的消息队列区间为空时,对所述第三进程的消息队列区间加锁后发送的;所述第四调用请求为所述第四进程写入第三进程的消息队列区间后发送的。
在一些实施例中,所述内存单元还包括管理模块;所述方法还包括:
在所述第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入所述第一进程对应的内存单元的管理模块中;其中,所述管理模块中的任务量每完成一个数据发送任务减1;
若所述管理模块当前存储的任务量等于0,则清空所述第一进程对应的内存模块的存储空间。
在一些实施例中,进程的消息队列包括其它进程向该进程发送数据时写入的通知消息,所述通知消息包括所述其它进程的标识以及发送的数据在所述其它进程对应的内存单元的存储空间中的存储位置。
第二方面,本申请提供一种基于共享内存的进程间通信装置,所述共享内存包括进程对应的内存单元,每一内存单元包括消息队列空间以及存储空间;所述装置包括:
第一组件,用于提供第一接口,所述第一接口响应于第一进程的第一调用请求,所述第一调用请求包括写判断条件,执行以下处理:判断若不满足所述第一调用请求中的写判断条件,则对所述第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对所述第一进程访问的消息队列区间解锁,并对所述消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在所述写等待状态下,若基于当前所述消息队列区间的第一信号量判断所述消息队列区间的可写入的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第一调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第一信号量表征消息队列区间的可写入的可用量,所述写判断条件为所述第二进程的消息队列区间未满;
第二组件,用于提供第二接口,所述第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对所述第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒,所述第一引用计数用于表征写入所述消息队列区间的进程,且处于等待状态的进程数量。
在一些实施例中,所述第二组件提供的第二接口还用于执行以下处理:当所述第一引用计数等于0时,则退出调用;当所述第一引用计数大于0时,对第一引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第一调用请求中的写判断条件,则直接退出调用。
在一些实施例中,第一组件,用于提供第一接口,所述第一接口还响应于第三进程的第三调用请求,所述第三调用请求包括读判断条件,执行以下处理:判断若不满足所述第三调用请求中的读判断条件,则对所述第三进程的消息队列区间的第二引用计数加1处理、对所述第三进程的消息队列区间解锁,并对所述消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在所述读等待状态下,若基于当前所述消息队列区间的第二信号量判断所述消息队列区间的可读的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第三调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第二信号量表征所述消息队列区间的可读的可用量,所述读判断条件为所述第三进程的消息队列区间未空;
第二组件,用于提供第二接口,所述第二接口还响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对所述第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,所述第二引用计数用于表征读所述消息队列区间的进程,且处于读等待状态的进程数量。
在一些实施例中,所述第二接口还执行以下处理:当所述第二引用计数等于0时,则退出调用;当所述第二引用计数大于0时,对第二引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第三调用请求中的读判断条件,则直接退出调用。
在一些实施例中,所述第一调用请求为所述第一进程向所述第二进程的消息队列区间写消息时,对所述第二进程的消息队列区间加锁后发送的;所述第二调用请求为所述第二进程读取第二进程的消息队列区间后发送的。
在一些实施例中,所述第三调用请求为所述第三进程读所述第三进程的消息队列区间时,对所述第三进程的消息队列区间加锁后发送的;所述第四调用请求为所述第四进程写入第三进程的消息队列区间后发送的。
在一些实施例中,所述内存单元还包括管理模块;所述装置还包括:
统计单元,用于在所述第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入所述第一进程对应的内存单元的管理模块中;其中,所述管理模块中的任务量每完成一个数据发送任务减1;
处理单元,用于若所述管理模块当前存储的任务量等于0,则清空所述第一进程对应的内存模块的存储空间。
在一些实施例中,进程的消息队列包括其它进程向该进程发送数据时写入的通知消息,所述通知消息包括所述其它进程的标识以及发送的数据在所述其它进程对应的内存单元的存储空间中的存储位置。
第三方面,本申请提供一种电子设备,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于根据所述可执行指令执行如第一方面任一项所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的方法。
第五方面,本申请一种计算机程序产品,所述计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现第一方面中任一项所述的方法。
本申请提供的基于共享内存的进程间通信方法、装置及电子设备,该方法包括:提供的第一接口响应于第一进程的第一调用请求,执行以下处理:判断若不满足所述第一调用请求中的写判断条件,则对第一进程访问的消息队列区间的第一引用计数加1处理、对该消息队列区间解锁,对该消息队列空间的第一信号量执行P操作,进入写等待状态;在等待时,若基于当前消息队列区间的第一信号量判断消息队列区间的可写入的可用量大于0,并且判断满足第一调用请求中的写判断条件,则退出对第一接口的调用;提供第二接口,第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒。进而,处于写等待的进程可以释放系统资源,并且之后通过第一信号量的V操作,唤醒处于写等待的进程,提高了系统进程间的通信效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种基于共享内存的进程间通信方法的示意图;
图2为本申请实施例提供的一种进程通信的流程示意图;
图3为本申请实施例提供的第二种进程通信的流程示意图;
图4为本申请实施例提供的第三种进程通信的流程示意图;
图5为本申请实施例提供的一种共享内存的结构示意图;
图6为本申请实施例提供的一种存储空间的划分方式的示意图;
图7为本申请实施例提供的一种存储空间占用的结构图;
图8为本申请实施例提供一种基于共享内存的进程间通信装置的结构示意图;
图9为本申请实施例中提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与本申请的一些方面相一致的装置和方法的例子。
目前,当不同进程之间需要通信时,若一个进程对应的消息队列的存储空间已满时,则此时需要向该进程发送消息的其余进程则无法成功的发送消息。一种可能的实现方式中,其余进程可以循环判断需要进行通信的进程的存储空间的状态,直到存储存储空间不满时,则此时其余进程可以向该进程发送通知。然而,上述不断循环判断会占用较多的系统资源,系统通信效率较低。
本申请提供的基于共享内存的进程间通信方法、装置及电子设备,用以解决上述技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
首先进行名词解释:
对信号量执行P操作:包括以下步骤①信号量减1;若信号量减1后仍大于或等于0,则进程继续执行;③若信号量减1后小于0,则该进程被阻塞后放入等待该信号量的等待队列中。
对信号量执行V操作:包括以下步骤①信号量加1;②若相加后结果大于0,则进程继续执行;③若相加后结果小于或等于0,则从该信号的等待队列中释放一个等待进程。
图1为本申请实施例提供的一种基于共享内存的进程间通信方法的示意图。在不同进程之间进行通信时,可以基于共享内存实现进程间的通信。在本申请实施例中的共享内存中,包括多个内存单元,每一内存单元对应一个内存单元。并且,在每一内存单元还包括消息队列空间以及存储空间。其中,消息队列空间可用于存储其余进程发送的消息通知,存储空间中可用于存储进程需要共享的数据。例如,图2为本申请实施例提供的一种进程通信的流程示意图。在共享内存中可以包括有进程A对应的内存单元1以及进程B对应的内存单元2。当进程A需要向进程B共享数据时,此时,进程A可以将待共享的数据存储至内存单元1中的存储空间中,并且向进程B对应的消息队列空间中发送通知消息,在进程B从内存单元2中的消息队列空间中获取到进程A发送的消息通知后,去访问进程A的内存单元1中的存储单元,获取该存储单元中的存储数据。
在上述基于共享内存的进程通信间的过程中,为了解决在进程间发送消息通知时,某进程待写入消息队列区间已满时,本申请实施例提供了两个接口,第一接口和第二接口。
S101、提供第一接口,第一接口响应于第一进程的第一调用请求,第一调用请求包括写判断条件,执行以下处理:判断若不满足第一调用请求中的写判断条件,则对第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对第一进程访问的消息队列区间解锁,并对消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在写等待状态下,若基于当前消息队列区间的第一信号量判断消息队列区间的可写入的可用量大于0,则对消息队列区间加锁,并判断若满足第一调用请求中的写判断条件,则退出对第一接口的调用;其中,第一信号量表征消息队列区间的可写入的可用量,写判断条件为第二进程的消息队列区间未满;
S102、提供第二接口,第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对第二进程的消息队列区间的第一信号量进行V操作,以使处于写等待状态的其它进程唤醒,第一引用计数用于表征写入消息队列区间的进程,且处于等待状态的进程数量。
示例性地,在第一进程向第二进程的消息队列区间写入消息时,此时,本实施例提供了第一接口。一些实施例中,当第一进程需要向第二进程写入消息时,此时,首先对第二进程对应的消息队列区间加锁,以使当前第二进程的消息队列区间仅可被第一进程访问。在第一进程对第二进程的消息队列区间加锁之后,调用第一接口,第一接口会响应于第一进程的第一调用请求,即,第一进程调用第一接口,并向第一接口中传入第一调用请求中所包含的写判断条件,此时的写判断条件为第二进程的消息队列区间不满。当第一接口:判断出当前消息队列为满时,不满足写判断条件,则进入等待状态。若等待状态中,确定出第二进程的消息队列区间的不满,也就是第一接口在确定出满足第一调用请求中的写判断条件时,此时,退出对第一接口的调用。
具体地,为每一进程的消息队列区间设置有第一引用计数以及第一信号量。其中,第一引用计数可以用于表征当前需要向该消息队列区间写入数据,并且还处于等待状态的进程的数量。第一信号量可用于表征该消息队列区间当前写入的可用量。在接收到第一进程的第一调用请求时,首先第一接口对第一进程访问的第二进程的消息队列解锁,以使其余进程可以访问该第二进程的消息队列。同时,调用第一接口时,若确定不满足写判断条件还会对该第二进程对应的消息队列区间的第一引用计数进行加1处理,即表征等待写入该消息队列区间的进程数量加1。之后,第一接口对第一信号量进行P操作,以使第一进程进入写等待状态,当第一进程进入写等待状态时,此时,第一进程不占用系统的运行资源。之后,第一进程一直处于等待状态,一直到有其余进程将第二进程的消息队列区间中的消息读取之后,此时该消息队列区间的第一信号量会执行加1操作即V操作,使得原本处于等待状态的第一进程的由于第一信号量的增加,使得第一接口基于该第一信号量确定出当前存在可写入该消息队列区间的可用量,之后,第一接口对该消息队列区间加锁后,确定第一接口确定当前消息队列区间若满足消息队列不满,则此时退出对第一接口的调用,之后第一进程将消息写入第二进程对应的消息队列中;若消息队列仍为满,则继续执行第一引用计数加1、解锁等操作。
此外,在第一进程要写数据并调用第一接口时,若在第一接口中判断出当前消息队列区间满足写判断条件,则直接退出第一接口调用,第一进程执行写消息的操作。
并且,在第二进程读取写入第二进程对应的消息队列区间中的消息之后,第二进程会调用第二接口,此时第二接口响应于第二进程的第二调用请求,第二接口开始执行以下处理过程:首先基于第二进程对应的消息队列区间的第一引用计数的取值,确定当前需要向该第二进程对应的消息队列区间的数量,若确定存在需要向该消息队列区间写入消息的其余进程,则将该消息队列区间的第一信号量加1,即进行V操作后,使得处于等待状态的其余进程可以通过第一信号量加1后的取值确定出当前存在写入的可用量,则其余进程会从等待状态唤醒。
图3为本申请实施例提供的第二种进程通信的流程示意图。图中,进程A在向进程B写入消息时,若进程A调用第一接口,若确定进程B的消息队列区间已满,则进程A处于等待状态。之后,当进程B从消息队列中读取出消息时,此时,进程B调用第二接口,以使第二接口执行对第一信号量的V操作,进而唤醒处于等待状态的进程A,之后,进程A成功的将消息写入进程B的消息队列区间。
在一些示例中,第二接口还执行以下处理:当第一引用计数等于0时,则退出调用;当第一引用计数大于0时,对第一引用计数进行减1操作。
示例性地,在第二进程从第二进程对应的消息队列中读取消息之后,在第二进程调用第二接口时,第二接口还用于执行以下操作,当确定第二进程对应的消息队列区间的第一引用计数大于0时,则此时,则直接退出第二接口的调用。若是确定出第一引用计数的数量大于0,则表明此时存在等待向第二进程的消息队列写入消息的进程,则此时,将第一信号量的取值加1,并同时对第一引用计数减1,用于表征当前第二进程对应的消息队列区间中存在可写入的可用量,并且可以唤醒一个处于等待写的进程,进而将该第一引用计数进行减1操作。
在本实施例中,提供有第一接口以及第二接口,在第一进程向第二进程的消息队列发送消息,可以通过调用该第一接口确定当前消息队列区间是否为满,若满则该第一进程处于等待状态,直到有其余进程对该消息队列区间的第一信号量进行加1处理之后使得该第一进程从等待状态中被唤醒,进而在第一接口对该消息队列加锁之后,进一步确定该消息队列区间是否为不满的状态,若不满,则直接退出该第一接口的调用,使得第一进程向该消息队列区间中写入。并且,在第二进程对第二进程对应的消息队列区间进行读取操作之后,该第二进程还会调用第二接口,并通过该第二接口对该消息队列区间的第一信号量进行V操作,使得处于等待写入该消息队列区间的其余进程唤醒。即,本实施例中,可以通过对消息队列区间的第一信号量的加1处理,唤醒处于等待写入该消息队列区间的,并且,在等待状态中,无需占用系统的运行资源,提高系统进程间的通信效率。
在一些实施例中,第一接口不仅可以被需要进行写操作的进程调用,还可以被用于读的进程所调用。当被需要读的进程所调用时,此时,可参见以下步骤。
提供第一接口,第一接口响应于第三进程的第三调用请求,第三调用请求包括读判断条件,执行以下处理:判断若不满足第三调用请求中的读判断条件,则对第三进程的消息队列区间的第二引用计数加1处理、对第三进程的消息队列区间解锁,并对消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在读等待状态下,若基于当前消息队列区间的第二信号量判断消息队列区间的可读的可用量大于0,则对消息队列区间加锁,并判断若满足第三调用请求中的写判断条件,则退出对第一接口的调用;其中,第二信号量表征消息队列区间的可读的可用量,读判断条件为第三进程的消息队列区间未空;
提供第二接口,第二接口响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,第二引用计数用于表征读消息队列区间的进程,且处于读等待状态的进程数量。
示例性地,在第三进程需要读取该消息队列区间中的消息时,也可以调用第一接口。一个示例中,当第三进程读取其对应的消息队列区间时,首先对第三进程对应的消息队列区间加锁,以使当前第三进程的消息队列区间仅可被第三进程访问。在第三进程对第三进程的消息队列区间加锁之后,第三进程调用第一接口,若第一接口检测到该消息队列区间为空时,即第一接口会响应于第三进程的第三调用请求,判断出不满足向第一接口中传入第三调用请求中所包含的读判断条件时(此时的读判断条件为第三进程的消息队列区间不空),进入等待状态。若第一接口确定满足读判断条件,也就是第一接口在确定出满足第三调用请求中的读判断条件时,此时,直接退出对第一接口的调用。
具体地,为每一进程的消息队列区间设置有第二引用计数以及第二信号量。其中,第二引用计数可以用于表征当前需要向读取该消息队列区间,并且还处于等待状态的进程的数量。第二信号量可用于表征该消息队列区间当前可读取的可用量。在接收到第三进程的第三调用请求时,首先第一接口确定不满足读判断条件,则第一接口对该消息队列区间解锁,以使其余进程可以访问该消息队列区间。同时,第一接口还会对该消息队列区间的第二引用计数进行加1处理,即表征等待读取该消息队列区间的进程数量加1。之后,第一接口对第二信号量进行P操作,以使第三进程进入读等待状态,当第三进程进入读等待状态时,此时,第三进程不占用系统的运行资源。之后,第三进程一直处于等待状态,一直到有其余进程向第三进程的消息队列区间中写入消息之后,此时该消息队列区间的第二信号量会执行加1操作即V操作,使得原本处于等待状态的第三进程的由于第二信号量的增加而被唤醒,之后以及读判断条件确定当前存在可读取该消息队列区间的可用量,之后,第一接口对该消息队列区间加锁后,确定第一接口确定当前消息队列区间若满足消息队列不空,则此时退出对第一接口的调用,之后第三进程将读取该消息队列中的消息;若在等待状态的第三进程的由于第二信号量的增加被唤醒后,读判断条件仍不满足,则继续执行不满足读判断条件的步骤。
并且,在第四进程向第三进程对应的消息队列区间中写入消息之后,第四进程会调用第二接口,此时第二接口响应于第四进程的第四调用请求,第二接口开始执行以下处理过程:首先基于第三进程对应的消息队列区间的第二引用计数的取值,确定当前需要向该第二进程对应的消息队列区间的数量,若确定存在等待读取该消息队列区间的其余进程时,则将该消息队列区间的第二信号量加1,即进行V操作后,使得处于等待状态的其余进程可以通过第二信号量加1后的取值确定出当前存在可读取的可用量,则其余进程会从等待状态唤醒。
图4为本申请实施例提供的第三种进程通信的流程示意图。图中,进程C在读取进程C对应的消息队列区间的消息时,进程C调用第一接口,若第一接口确定不满足读判断条件,则处于等待状态。之后,当进程D向进程C对应的消息队列区间中写入D写入消息时,此时,进程D调用第二接口,以使第二接口执行对第一信号量的V操作,进而唤醒处于等待状态的进程C,之后,进程C退出确定消息队列为不空时,此时退出第一接口的调用,从该消息队列区间中读取消息。
一个示例中,在图4所示的流程图的基础上,在进程C读取其对应的消息队列中的消息后,进程C进一步调用第二接口,以使第二接口对第一信号量进行V操作,进而使得处于等待向进程C的消息队列中写入消息的且处于等待的进程被唤醒。
在一些示例中,第二接口还执行以下处理:当第二引用计数等于0时,则退出调用;当第二引用计数大于0时,对第二引用计数进行减1操作。
示例性地,在第四进程向第三进程对应的消息队列中写入消息之后,在第四进程调用第二接口时,第二接口还用于执行以下操作,当确定第三进程对应的消息队列区间的第二引用计数大于0时,则此时,则直接退出第二接口的调用。若是确定出第二引用计数的数量大于0,则表明此时存在等待读取第三进程的消息队列消息的进程,则此时,将第二信号量的取值加1,并同时对第二引用计数减1,用于表征当前第三进程对应的消息队列区间中存在可读的可用量,并且可以唤醒一个处于等待读的进程,进而将该第二引用计数进行减1操作。
在一些示例中,在对消息队列加锁时,也可以基于信号量实现。具体的,创建锁时,将第三信号量的初始值设置为1,之后调用系统的接口int sem_wait(sem_t*sem),可以实现锁,调用系统接口int sem_post(sem_t*sem),进而实现解锁功能,此处可参见相关技术中的原理,此处不再赘述。
图5为本申请实施例提供的一种共享内存的结构示意图。图中共享内存中,包括有2个内存单元,内存单元1与内存单元2,每个内存单元对应一个进程,此处内存单元的数量仅为举例说明,不做具体限制。
在一些示例中,在共享内存中还包括有第一标识单元,该单元中包括有该共享内存的初始化标识。当该标识为第一值时,此时该共享内存可以被进程访问。当该标识为第二值时,此时该共享内存不可以被进程访问。
在一些示例中,在共享内存中还包括有第二标识单元,该单元中记录引用此共享内存的进程个数。当引用此共享内存的一个进程启动时,该第二标识单元中的计数会加1;当该进程退出引用该共享内存时,该第二标识单元中的计数会减1,若减至0,则当前进程负责释放该共享内存。
在一些示例中,共享内存中的内存单元中除了包括有消息队列空间以及存储空间,还设置有标记区间,该标记区间可以设置有标记符号,用于表征当前的内存单元是否被进程占用。并且每一个内存单元的标记区间的标记符号对于每一进程都是可见的,之后进程可以依据每一内存单元中的标记符号确定当前的内存单元是否被占用,从而在未占用的内存单元中选择与自己关联的内存单元。
在一些示例中,共享内存中的内存单元中还设置有管理模块,在第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入第一进程对应的内存单元的管理模块中;其中,管理模块中的任务量每完成一个数据发送任务减1;
若管理模块当前存储的任务量等于0,则清空第一进程对应的内存模块的存储空间。
示例性地,在第一进程执行的数据发送任务包括向第一进程对应的存储区间中写入待共享的数据,之后向待共享数据的其余进程对应的消息队列区间中发送消息通知,之后其余进程获取到消息通知之后,去第一进程对应的存储空间中读取待共享的数据。第一进程的管理模块中可以将第一进程本次数据发送任务的任务量累计计入管理模块中,其中本次数据发送的任务量即第一进程需要共享数据的其余进程的数量。并且,该第一进程每完成一个数据发送任务,则管理模块中的任务量执行减一操作。一个示例中,当其余进程从第一进程的存储区间中读取共享的数据之后,会将管理模块中的任务量减1。当管理模块中所存储的任务量被减至0时,此时,可以清空该第一进程中存储区间中的数据。
在一些示例中,进程的消息队列区间中包括其它进程向该进程发送数据时(即其它进程需要向本进程共享数据时)写入的通知消息,通知消息包括其它进程的标识以及发送的数据在其它进程对应的内存单元的存储空间中的存储位置。
在一些示例中,通知消息中的存储位置可以包括共享数据存储时,在存储区间中的偏移量以及共享数据的大小。
在一些示例中,在确定共享数据在存储空间中的偏移量时,可以基于满二叉树的数据结构以及伙伴算法确定共享数据在向存储空间存放时的偏移量。如图6所示,图6为本申请实施例提供的一种存储空间的划分方式的示意图。图中,每一层树结构代表一种存储空间的划分方式,例如,树的高度为0时,此时还未对存储空间划分。在树高度为1时,即将存储空间划分为2个。之后,基于满二叉树结构,得到一个高度为11的树结构,即12种划分方式。图中,每一层节点对应的规格为该节点对应的存储量的大小。即,树的高度为0时,该根节点对应的存储空间为16M。在树高度为1时,即将存储空间划分为2个,每一个存储空间(即每一节点)对应的规格为8M。满二叉树中的节点存储的是当前节点在满二叉树中的高度值。
在分配存储空间时,需要满足以下规定:在当前节点的所有子节点的缓存块都已被申请或当前节点已被申请时,以及当节点的值大于11(即节点值等于12)时,则表明当前缓存块不可用;当当前节点的一个子点被申请时,当前节点的值修改为其子节点所在二叉树的高度。
具体地,在确定共享数据在存储空间中地偏移量时,将实际共享数据转换为最接近的规格大小,并获取此规格大小在二叉树中的深度depth和在数组中的起始索引。(例如,若共享数据的大小为7K,则直接在二叉树中查找大小为8K的子节点,并确定出8K的子节点对应的深度为11,以及深度为11时,该层子节点的索引的起始值为2048)。从二叉树的根节点开始往下寻找,直至找到节点值大于等于depth且节点在数组的索引Index大于等于起始索引的节点,选中节点后将此节点的值置为12(不可用状态),然后依据规定1,递归更新此节点的父节点的值,将其父节点的值更新为该父节点的值中的较小值。该节点的偏移量,可以将该节点在当前层的索引和该层起始节点的差值与该节点所处的层的规格相乘计算得到。
例如,如图7所示,图7为本申请实施例提供的一种存储空间占用的结构图。若初始时,该存储空间未被分配,并且,需要查找8K的存储空间时,则从树的根节点一直往下寻找,直到找到深度为11的第一个8K的子节点,由于该节点被选中分配,则将该节点的值置为设置为12,之后以此更新其父节点的值,将其父节点更新为11,表征该父节点下仅包括一个8K的存储空间,依次向上更新。
后续在清除数据值,将二叉树节点中的值恢复至初始状态。
本实施例中,通过满二叉树的内存分配方式,可以实现对存储区间的快速分配,并且使得存储区间的分配更加合理,避免造成资源浪费。
图8本申请实施例提供一种基于共享内存的进程间通信装置的结构示意图,共享内存包括进程对应的内存单元,每一内存单元包括消息队列空间以及存储空间;装置包括:
第一组件,用于提供第一接口,第一接口响应于第一进程的第一调用请求,第一调用请求包括写判断条件,执行以下处理:判断若不满足第一调用请求中的写判断条件,则对第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对第一进程访问的消息队列区间解锁,并对消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在写等待状态下,若基于当前消息队列区间的第一信号量判断消息队列区间的可写入的可用量大于0,则对消息队列区间加锁,并判断若满足第一调用请求中的写判断条件,则退出对第一接口的调用;其中,第一信号量表征消息队列区间的可写入的可用量,写判断条件为第二进程的消息队列区间未满;
第二组件,用于提供第二接口,第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒,第一引用计数用于表征写入消息队列区间的进程,且处于等待状态的进程数量。
在一些实施例中,第二组件提供的第二接口还用于执行以下处理:当第一引用计数等于0时,则退出调用;当第一引用计数大于0时,对第一引用计数进行减1操作;第一接口还执行以下处理:判断若满足第一调用请求中的写判断条件,则直接退出调用。
在一些实施例中,第一组件,用于提供第一接口,第一接口还响应于第三进程的第三调用请求,第三调用请求包括读判断条件,执行以下处理:判断若不满足第三调用请求中的读判断条件,则对第三进程的消息队列区间的第二引用计数加1处理、对第三进程的消息队列区间解锁,并对消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在读等待状态下,若基于当前消息队列区间的第二信号量判断消息队列区间的可读的可用量大于0,则对消息队列区间加锁,并判断若满足第三调用请求中的写判断条件,则退出对第一接口的调用;其中,第二信号量表征消息队列区间的可读的可用量,读判断条件为第三进程的消息队列区间未空;
第二组件,用于提供第二接口,第二接口还响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,第二引用计数用于表征读消息队列区间的进程,且处于读等待状态的进程数量。
在一些实施例中,第二接口还执行以下处理:当第二引用计数等于0时,则退出调用;当第二引用计数大于0时,对第二引用计数进行减1操作;第一接口还执行以下处理:判断若满足第三调用请求中的读判断条件,则直接退出调用。
在一些实施例中,第一调用请求为第一进程向第二进程的消息队列区间写消息时,对第二进程的消息队列区间加锁后发送的;第二调用请求为第二进程读取第二进程的消息队列区间后发送的。
在一些实施例中,第三调用请求为第三进程读第三进程的消息队列区间时,对第三进程的消息队列区间加锁后发送的;第四调用请求为第四进程写入第三进程的消息队列区间后发送的。
在一些实施例中,内存单元还包括管理模块;装置还包括:
统计单元,用于在第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入第一进程对应的内存单元的管理模块中;其中,管理模块中的任务量每完成一个数据发送任务减1;
处理单元,用于若管理模块当前存储的任务量等于0,则清空第一进程对应的内存模块的存储空间。
在一些实施例中,进程的消息队列包括其它进程向该进程发送数据时写入的通知消息,通知消息包括其它进程的标识以及发送的数据在其它进程对应的内存单元的存储空间中的存储位置。
本申请提供一种电子设备,包括:存储器,处理器;
存储器;用于存储处理器可执行指令的存储器;
其中,处理器,用于根据可执行指令执行方法。
图9为本申请实施例中提供的一种电子设备的结构示意图,如图9所示,该电子设备包括:
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器294中的逻辑指令,以执行上述实施例的方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现任一项的方法。
本申请一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现任一项的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (19)
1.一种基于共享内存的进程间通信方法,其特征在于,所述共享内存包括进程对应的内存单元,每一内存单元包括消息队列空间以及存储空间;所述方法包括:
提供第一接口,所述第一接口响应于第一进程的第一调用请求,所述第一调用请求包括写判断条件,执行以下处理:判断若不满足所述第一调用请求中的写判断条件,则对所述第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对所述第一进程访问的消息队列区间解锁,并对所述消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在所述写等待状态下,若基于当前所述消息队列区间的第一信号量判断所述消息队列区间的可写入的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第一调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第一信号量表征消息队列区间的可写入的可用量,所述写判断条件为所述第二进程的消息队列区间未满;
提供第二接口,所述第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对所述第二进程的消息队列区间的第一信号量进行V操作,以使处于写等待状态的其它进程唤醒,所述第一引用计数用于表征写入所述消息队列区间的进程,且处于等待状态的进程数量。
2.根据权利要求1所述的方法,其特征在于,所述第二接口还执行以下处理:当所述第一引用计数等于0时,则退出调用;当所述第一引用计数大于0时,对第一引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第一调用请求中的写判断条件,则直接退出调用。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
提供第一接口,所述第一接口响应于第三进程的第三调用请求,所述第三调用请求包括读判断条件,执行以下处理:判断若不满足所述第三调用请求中的读判断条件,则对所述第三进程的消息队列区间的第二引用计数加1处理、对所述第三进程的消息队列区间解锁,并对所述消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在所述读等待状态下,若基于当前所述消息队列区间的第二信号量判断所述消息队列区间的可读的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第三调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第二信号量表征所述消息队列区间的可读的可用量,所述读判断条件为所述第三进程的消息队列区间未空;
提供第二接口,所述第二接口响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对所述第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,所述第二引用计数用于表征读所述消息队列区间的进程,且处于读等待状态的进程数量。
4.根据权利要求3所述的方法,其特征在于,所述第二接口还执行以下处理:当所述第二引用计数等于0时,则退出调用;当所述第二引用计数大于0时,对第二引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第三调用请求中的读判断条件,则直接退出调用。
5.根据权利要求1所述的方法,其特征在于,所述第一调用请求为所述第一进程向所述第二进程的消息队列区间写消息时,对所述第二进程的消息队列区间加锁后发送的;所述第二调用请求为所述第二进程读取第二进程的消息队列区间后发送的。
6.根据权利要求3所述的方法,其特征在于,所述第三调用请求为所述第三进程读所述第三进程的消息队列区间时,对所述第三进程的消息队列区间加锁后发送的;所述第四调用请求为所述第四进程写入第三进程的消息队列区间后发送的。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述内存单元还包括管理模块;所述方法还包括:
在所述第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入所述第一进程对应的内存单元的管理模块中;其中,所述管理模块中的任务量每完成一个数据发送任务减1;
若所述管理模块当前存储的任务量等于0,则清空所述第一进程对应的内存模块的存储空间。
8.根据权利要求7所述的方法,其特征在于,进程的消息队列包括其它进程向该进程发送数据时写入的通知消息,所述通知消息包括所述其它进程的标识以及发送的数据在所述其它进程对应的内存单元的存储空间中的存储位置。
9.一种基于共享内存的进程间通信装置,其特征在于,所述共享内存包括进程对应的内存单元,每一内存单元包括消息队列空间以及存储空间;所述装置包括:
第一组件,用于提供第一接口,所述第一接口响应于第一进程的第一调用请求,所述第一调用请求包括写判断条件,执行以下处理:判断若不满足所述第一调用请求中的写判断条件,则对所述第一进程访问的第二进程的消息队列区间的第一引用计数加1处理、对所述第一进程访问的消息队列区间解锁,并对所述消息队列空间的第一信号量执行P操作,以进入写等待状态;以及,在所述写等待状态下,若基于当前所述消息队列区间的第一信号量判断所述消息队列区间的可写入的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第一调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第一信号量表征消息队列区间的可写入的可用量,所述写判断条件为所述第二进程的消息队列区间未满;
第二组件,用于提供第二接口,所述第二接口响应于第二进程的第二调用请求,执行以下处理:基于第一引用计数的取值对所述第二进程的消息队列区间的第一信号量进行V操作,以使处于等待状态的其它进程唤醒,所述第一引用计数用于表征写入所述消息队列区间的进程,且处于等待状态的进程数量。
10.根据权利要求9所述的装置,其特征在于,所述第二组件提供的第二接口还用于执行以下处理:当所述第一引用计数等于0时,则退出调用;当所述第一引用计数大于0时,对第一引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第一调用请求中的写判断条件,则直接退出调用。
11.根据权利要求9所述的装置,其特征在于,
第一组件,用于提供第一接口,所述第一接口还响应于第三进程的第三调用请求,所述第三调用请求包括读判断条件,执行以下处理:判断若不满足所述第三调用请求中的读判断条件,则对所述第三进程的消息队列区间的第二引用计数加1处理、对所述第三进程的消息队列区间解锁,并对所述消息队列空间的第二信号量执行P操作,以进入读等待状态;以及,在所述读等待状态下,若基于当前所述消息队列区间的第二信号量判断所述消息队列区间的可读的可用量大于0,则对所述消息队列区间加锁,并判断若满足所述第三调用请求中的写判断条件,则退出对所述第一接口的调用;其中,所述第二信号量表征所述消息队列区间的可读的可用量,所述读判断条件为所述第三进程的消息队列区间未空;
第二组件,用于提供第二接口,所述第二接口还响应于第四进程的第四调用请求,执行以下处理:基于第二引用计数的取值对所述第三进程的消息队列区间的第二信号量进行V操作,以使处于读等待状态的其它进程唤醒,所述第二引用计数用于表征读所述消息队列区间的进程,且处于读等待状态的进程数量。
12.根据权利要求11所述的装置,其特征在于,所述第二接口还执行以下处理:当所述第二引用计数等于0时,则退出调用;当所述第二引用计数大于0时,对第二引用计数进行减1操作;所述第一接口还执行以下处理:判断若满足所述第三调用请求中的读判断条件,则直接退出调用。
13.根据权利要求9所述的装置,其特征在于,所述第一调用请求为所述第一进程向所述第二进程的消息队列区间写消息时,对所述第二进程的消息队列区间加锁后发送的;所述第二调用请求为所述第二进程读取第二进程的消息队列区间后发送的。
14.根据权利要求11所述的装置,其特征在于,所述第三调用请求为所述第三进程读所述第三进程的消息队列区间时,对所述第三进程的消息队列区间加锁后发送的;所述第四调用请求为所述第四进程写入第三进程的消息队列区间后发送的。
15.根据权利要求9-14任一项所述的装置,其特征在于,所述内存单元还包括管理模块;所述装置还包括:
统计单元,用于在所述第一进程执行数据发送任务时,将本次数据发送任务的任务量累计计入所述第一进程对应的内存单元的管理模块中;其中,所述管理模块中的任务量每完成一个数据发送任务减1;
处理单元,用于若所述管理模块当前存储的任务量等于0,则清空所述第一进程对应的内存模块的存储空间。
16.根据权利要求15所述的装置,其特征在于,进程的消息队列包括其它进程向该进程发送数据时写入的通知消息,所述通知消息包括所述其它进程的标识以及发送的数据在所述其它进程对应的内存单元的存储空间中的存储位置。
17.一种电子设备,其特征在于,包括:存储器,处理器;
存储器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器,用于根据所述可执行指令执行如权利要求1-8任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8任一项所述的方法。
19.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111353841.7A CN113961378B (zh) | 2021-11-16 | 2021-11-16 | 基于共享内存的进程间通信方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111353841.7A CN113961378B (zh) | 2021-11-16 | 2021-11-16 | 基于共享内存的进程间通信方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961378A true CN113961378A (zh) | 2022-01-21 |
CN113961378B CN113961378B (zh) | 2024-03-26 |
Family
ID=79470678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111353841.7A Active CN113961378B (zh) | 2021-11-16 | 2021-11-16 | 基于共享内存的进程间通信方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961378B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242898A (zh) * | 2022-06-06 | 2022-10-25 | 浪潮通信技术有限公司 | 协议栈与物理层进程间的通信方法及装置 |
CN117290074A (zh) * | 2023-11-23 | 2023-12-26 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987554A (en) * | 1997-05-13 | 1999-11-16 | Micron Electronics, Inc. | Method of controlling the transfer of information across an interface between two buses |
CN103425538A (zh) * | 2012-05-24 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 进程通讯方法及系统 |
WO2015014170A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN107085542A (zh) * | 2017-05-05 | 2017-08-22 | 深圳慧昱教育科技有限公司 | Ipc通信方法和服务器 |
CN109525512A (zh) * | 2019-01-22 | 2019-03-26 | 新华三技术有限公司 | 一种bgp邻居的建立方法及装置 |
CN110704214A (zh) * | 2019-10-14 | 2020-01-17 | 北京京东乾石科技有限公司 | 进程间通信方法和装置 |
-
2021
- 2021-11-16 CN CN202111353841.7A patent/CN113961378B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987554A (en) * | 1997-05-13 | 1999-11-16 | Micron Electronics, Inc. | Method of controlling the transfer of information across an interface between two buses |
CN103425538A (zh) * | 2012-05-24 | 2013-12-04 | 深圳市腾讯计算机系统有限公司 | 进程通讯方法及系统 |
WO2015014170A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN107085542A (zh) * | 2017-05-05 | 2017-08-22 | 深圳慧昱教育科技有限公司 | Ipc通信方法和服务器 |
CN109525512A (zh) * | 2019-01-22 | 2019-03-26 | 新华三技术有限公司 | 一种bgp邻居的建立方法及装置 |
CN110704214A (zh) * | 2019-10-14 | 2020-01-17 | 北京京东乾石科技有限公司 | 进程间通信方法和装置 |
Non-Patent Citations (1)
Title |
---|
梁洪波;朱卫国;姚益平;刘步权;慕晓冬;李猛;: "基于分布式共享内存的RTI通信机制研究", 系统仿真学报, no. 07, pages 1484 - 1488 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242898A (zh) * | 2022-06-06 | 2022-10-25 | 浪潮通信技术有限公司 | 协议栈与物理层进程间的通信方法及装置 |
CN115242898B (zh) * | 2022-06-06 | 2024-04-19 | 浪潮通信技术有限公司 | 协议栈与物理层进程间的通信方法及装置 |
CN117290074A (zh) * | 2023-11-23 | 2023-12-26 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
CN117290074B (zh) * | 2023-11-23 | 2024-02-02 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113961378B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113961378B (zh) | 基于共享内存的进程间通信方法、装置及电子设备 | |
US8892827B2 (en) | Cooperative memory management | |
CN110941481A (zh) | 资源调度方法、装置及系统 | |
CN102063338A (zh) | 一种请求独占资源的方法及装置 | |
CN109815007A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
CN111309644B (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡系统 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN109992415B (zh) | 一种容器调度方法及调度系统 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN116627356B (zh) | 一种大容量存储数据的分布控制方法及系统 | |
CN113342554A (zh) | Io多路复用方法、介质、设备和操作系统 | |
JP2690435B2 (ja) | 処理をプロセッサにディスパッチするためのマイクロプログラム手段を有するマルチプロセッサシステム | |
JPH11120014A (ja) | マルチプロセッサ装置 | |
CN114327862B (zh) | 一种内存分配方法、装置、电子设备及存储介质 | |
CN115658295A (zh) | 资源调度方法、装置、电子设备和存储介质 | |
CN111813564B (zh) | 集群资源管理方法、装置及容器集群管理系统 | |
CN114157717A (zh) | 一种微服务动态限流的系统及方法 | |
CN116450328A (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
CN112346879A (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
CN115168057B (zh) | 基于k8s集群的资源调度方法及装置 | |
CN115951844B (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
CN117519953B (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 |