CN104657224A - 一种进程间通信的方法和装置 - Google Patents
一种进程间通信的方法和装置 Download PDFInfo
- Publication number
- CN104657224A CN104657224A CN201310594639.2A CN201310594639A CN104657224A CN 104657224 A CN104657224 A CN 104657224A CN 201310594639 A CN201310594639 A CN 201310594639A CN 104657224 A CN104657224 A CN 104657224A
- Authority
- CN
- China
- Prior art keywords
- receiving end
- message
- page table
- shared page
- shared
- 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 190
- 238000004891 communication Methods 0.000 title claims abstract description 178
- 238000013507 mapping Methods 0.000 claims abstract description 59
- 238000004886 process control Methods 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 5
- 230000007306 turnover Effects 0.000 description 15
- 238000012369 In process control Methods 0.000 description 14
- 238000010965 in-process control Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 241001539077 Hyperoglyphe perciformis Species 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的实施例提供一种进程间通信的方法和装置,涉及计算机技术领域,实现接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,节省了消息的响应时间,同时减少了对接收端高速缓存的扰动。该方法具体包括:发送端建立与接收端的通信通道;进入内核空间,将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;将消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区,以便接收端根据新虚拟地址读取消息。本发明应用于进程间通信中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程间通信的方法和装置。
背景技术
进程是计算机正在运行的程序实例,不同进程间由于相互协作而存在相应的通信需求。在操作***研究中,进程间通信(Interprocess Communication,简称IPC)是一个重要的研究课题,提高IPC的效率对整个操作***的性能尤为重要。常用的IPC方法有消息传输、共享内存、零拷贝等。传统操作***被划分为宏内核和微内核,近年,半导体制造工艺飞速发展,单处理器芯片的主频已逐渐逼近极限,单靠提升处理器芯片的主频已经无法使处理器的运算速度继续沿着摩尔定律不断提升。因此人们将多个处理器核集成在一个芯片上形成片上多处理器(Chip Multi-Processor,简称CMP)***。目前片上多处理器***已成为当前微处理器发展的主流。CMP又可以分为多核(Multi-Core)和众核(Many-Core),通常把8个Core以下的CMP称为多核,8个Core以上的CMP称为众核。随着众核的出现,同时出现了Barrelfish等新型操作***。Barrelfish操作***是一个微内核(micro kernel)操作***,同时也是多内核(multi-kernel)操作***,主要面向多核(Multi-core)、众核(Many-core)平台。
现有技术中的基于Barrelfish操作***的内核内和内核间零拷贝方案,为了将消息内存映射进自己的地址空间,接收端需要进出内核空间,这样会造成相应的时间开销;同时,接收端进出内核空间会造成接收端高速缓存的扰动。第二代微内核***的L4***中的内核内零拷贝方案,由于采用同步IPC,使得编程不够灵活;同时,接收端仍然需要进出内核空间,并且只适用于单内核***。
发明内容
本发明的实施例提供一种进程间通信的方法和装置,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种进程间通信的方法,包括:
发送端建立与接收端的通信通道;
通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;
根据所述通信通道的通道号,获得所述接收端的共享页表;
其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;
将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;
将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;
其中,所述消息通知区是所述通信通道建立过程中分配的。
在第一种可能的实现方式中,结合第一方面,所述第一参数包括:所述能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间之前,还包括:
获取存储所述消息的内存对应的能力引用和能力引用偏移。
在第二种可能的实现方式中,结合第一方面,所述根据所述通信通道的通道号,获得所述接收端的共享页表,包括:
根据所述通信通道的通道号,获取所述接收端对应的进程控制块;
根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。
在第三种可能的实现方式中,结合第二种可能的实现方式,所述根据所述通信通道的通道号,获取接收端对应的进程控制块,包括:
根据所述通信通道的通道号,获得接收端;
根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;
其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
在第四种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址,包括:
检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
在第五种可能的实现方式中,结合第一方面,
所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
在第六种可能的实现方式中,结合第一方面或第四种可能的实现方式,
所述共享页表为第一共享页表;
其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
在第七种可能的实现方式中,结合第一方面或第四种可能的实现方式,
所述共享页表为第二共享页表;
其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
在第八种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述方法还包括:
从内存空间中获取一个页面大小的空间作为共享页表;
将所述共享页表映射入所述发送端和所述接收端的的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
第二方面,提供一种进程间通信的装置,包括:
创建单元,用于建立与接收端通信的通信通道;
处理单元,用于通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;
获取单元,用于根据所述通信通道的通道号,获得所述接收端的共享页表;
其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;
所述处理单元,还用于将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;
存储单元,用于将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;
其中,所述消息通知区是所述通信通道建立过程中分配的。
在第一种可能的实现方式中,结合第二方面,所述第一参数包括:能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,
所述获取单元,还用于获取存储所述消息的内存对应的能力引用和能力引用偏移。
在第二种可能的实现方式中,结合第二方面,所述获取单元包括:
第一获取模块,用于根据所述通信通道的通道号,获取所述接收端对应的进程控制块;
第二获取模块,用于根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。
在第三种可能的实现方式中,结合第一种可能的实现方式,所述第一获取模块具体用于:
根据所述通信通道的通道号,获得接收端;
根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;
其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
在第四种可能的实现方式中,结合第二方面或第一种可能的实现方式,所述处理单元包括:
检测模块,用于检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
第三获取模块,用于将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
在第五种可能的实现方式中,结合第二方面,
所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
在第六种可能的实现方式中,结合第二方面或第四种可能的实现方式,
所述共享页表为第一共享页表;
其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
在第七种可能的实现方式中,结合第二方面或第四种可能的实现方式,
所述共享页表为第二共享页表;
其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
在第八种可能的实现方式中,结合第二方面或第一种可能的实现方式,
所述获取单元,还用于从内存中获取一个页面大小的空间作为共享页表;
所述处理单元,还用于将所述共享页表映射入所述发送端和所述接收端的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
第三方面,提供一种进程间通信的装置,包括:至少一个处理器、存储器、通信接口和总线,所述至少一个处理器、存储器和通信接口通过总线连接并完成相互间的通信,所述存储器用于存储程序代码,其中:
所述处理器,用于调用存储器中的程序代码,用以执行以下操作:
发送端建立与接收端的通信通道;
通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;
根据所述通信通道的通道号,获得所述接收端的共享页表;
其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;
将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;
将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;
其中,所述消息通知区是所述通信通道建立过程中分配的。
在第一种可能的实现方式中,结合第三方面,所述第一参数包括:所述能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述处理器还用于执行以下操作:
获取存储所述消息的内存对应的能力引用和能力引用偏移。
在第二种可能的实现方式中,结合第三方面,所述处理器具体用于执行以下步骤:
根据所述通信通道的通道号,获取所述接收端对应的进程控制块;
根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。
在第三种可能的实现方式中,结合第二种可能的实现方式,所述处理器具体用于执行以下步骤:
根据所述通信通道的通道号,获得接收端;
根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;
其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
在第四种可能的实现方式中,结合第三方面或第一种可能的实现方式,所述处理器具体用于执行以下步骤:
检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
在第五种可能的实现方式中,结合第三方面,
所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
在第六种可能的实现方式中,结合第三方面或第四种可能的实现方式,
所述共享页表为第一共享页表;
其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
在第七种可能的实现方式中,结合第一方面或第四种可能的实现方式,
所述共享页表为第二共享页表;
其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
在第八种可能的实现方式中,结合第三方面或第一种可能的实现方式,所述处理器还用于执行以下步骤:
从内存空间中获取一个页面大小的空间作为共享页表;
将所述共享页表映射入所述发送端和所述接收端的的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
本发明的实施例提供的进程间通信的方法和装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的一种进程间通信的方法的流程示意图;
图2为本发明的实施例提供的另一种进程间通信的方法的流程示意图;
图3为本发明的实施例提供的又一种进程间通信的方法的流程示意图;
图4为本发明的实施例提供的再一种进程间通信的方法的流程示意图;
图5为本发明的另一实施例提供的一种进程间通信的方法的流程示意图;
图6为本发明的另一实施例提供的另一种进程间通信的方法的流程示意图;
图7为本发明的实施例提供的一种进程间通信的装置的结构示意图;
图8为本发明的实施例提供的另一种进程间通信的装置的结构示意图;
图9为本发明的实施例提供的又一种进程间通信的装置的结构示意图;
图10为本发明的实施例提供的再一种进程间通信的装置的结构示意图;
图11为本发明的实施例提供的一种进程间通信的***的结构示意图;
图12为本发明的实施例提供的另一种进程间通信的***的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供的进程间通信的方法,可以应用于进程间通信的零拷贝方案中,现有的单内核和多内核操作***的零拷贝的方案主要是应用Barrefish***的内核内、内核间的零拷贝方案,第二代微内核***中的L4***的零拷贝的方案,这两种方案在实现上接收端进程Py都需要进出内核空间,会造成相应的时间开销,造成接收端高速缓存的扰动,同时在使用上不够灵活。本发明的实施例提供一种零拷贝的方案,这种方案接收端不用进出内核空间,就可以实现发送端与接收端之间的通信,该实现零拷贝的方案的实施过程在后台是通过软件编程来实现的。
本发明的实施例提供一种进程间通信的方法,参照图1所示,该方法包括以下步骤:
101、发送端建立与接收端的通信通道。
具体的,发送端可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。
其中,通信通道的建立过程中可以在内存中为发送端分配消息通知区Mx和为接收端分配消息通知区My,消息通知区可以是基于数组或者环形链表等方式实现的。
102、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
具体的,在发送端通过***调用进入内核空间的同时,发送端中携带通信通道的通道号和第一参数并将该第一参数写入内核空间。
103、发送端根据通信通道的通道号,获得接收端的共享页表。
具体的,发送端根据通信通道的通道号,获得接收端的共享页表可以为:发送端可以根据通信通道的通道号找到与该发送端通信的接收端,然后在内核空间中查找与该接收端对应的进程控制块,之后根据进程控制块中的接收端的页目录地址,得到接收端的共享页表。
或者,发送端根据通信通道的通道号,获得接收端的共享页表。
其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表。
104、发送端将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址。
具体的,可以先从共享页表中获得连续空闲的页表项,然后将获得到消息的物理地址映射到该共享页表的连续空闲的页表项中。
105、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的方法,该方法应用于单内核或者多内核***的内核内零拷贝方案中,第一共享页表是页目录中原来的页目录项对应的页表,参照图2所示,发送端和接收端可以是同一***中的不同的进程,该方法包括以下步骤:
201、发送端建立与接收端的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
202、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
其中,第一参数包括:消息的虚拟地址和消息的长度。
203,发送端根据消息的虚拟地址和消息的长度,获得消息的物理地址。
具体的,该步骤可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核根据消息的虚拟地址找到进程Px中的对应页表,然后在该页表中获得包含消息的物理页面的地址列表,获得消息的物理地址。其中,消息物理页面地址列表的长度可以为K。
204、发送端根据通信通道的通道号,获得接收端。
205、发送端根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
步骤204和步骤205可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核可以根据通信通道的通道号获得与发送端进程Px通信的接收端进程Py。并在预先存储在内核空间中的进程与进程控制块之间的关系映射表,查找到接收端进程Py对应的进程控制块。
其中,进程控制块中包含页目录地址。
206、发送端根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
具体的,该步骤可以是发送端的内核实现的。发送端内核通过在接收端的进程控制块中查找到接收端的页目录地址,在页目录的页表中根据页表项中的标识信息,选取页目录下具有连续空闲页表项的页表作为第一共享页表。
207、发送端检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项。
208、发送端将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
步骤207和步骤208可以是发送端的内核实现的,发送端的内核在第一共享页表的页表项中,查找连续空闲的长度为K的页表项。并将之前获得的消息的物理地址映射到得到的连续空闲长度为K的页表项中,从而得到消息的新虚拟地址。
209、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
该步骤具体可以是发送端的内核实现的。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。接收端可以不需要进出内核空间,只要发送端将消息的虚拟地址记录在接收端的消息通知区中,接收端直接访问自己的消息通知区即可获得消息的地址,从而在对应的内存中读取消息,避免了时间开销、减少了对高速缓存的扰动。进而,接收端的工作效率得到有效的提高。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的方法,该方法应用于单内核或者多内核***的内核内零拷贝方案中,第一共享页表是新增的页目录项对应的页表,参照图3所示,发送端和接收端可以是同一***中的不同的进程,该方法包括以下步骤:
301、发送端建立与接收端的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
302、发送端从内存空间中获取一个页面大小的空间作为第一共享页表。
303、发送端将第一共享页表映射入接收端的页目录中。
具体的,发送端预先在内存空间中申请一个页面大小的空间作为第一共享页表,并将第一共享页表映射到接收端的页目录中,用于零拷贝过程中存储消息的物理地址。或者,可选的,接收端预先在内存空间中申请一个页面大小的空间作为第一共享页表,并将该第一共享页表映射到接收端的页目录中。
其中,本实施例中步骤301和步骤302~303之间在执行上没有先后顺序之分,也就是说在实际的运行中,步骤301可以是和步骤302~303同时进行的,即发送端建立与接收端的通信通道的过程中,从内存空间中获取一个页面大小的空间作为第一共享页表。并将该第一共享页表映射入接收端的页目录中。
304、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
其中,第一参数包括:消息的虚拟地址和消息的长度。
其中,步骤301~304可以是发送端的内核实现的。
305,发送端根据消息的虚拟地址和消息的长度,获得消息的物理地址。
具体的,该步骤可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核根据消息的虚拟地址找到进程Px中的对应页表,然后在该页表中获得包含消息的物理页面的地址列表,获得消息的物理地址。其中,消息物理页面地址列表的长度可以为K。
306、发送端根据通信通道的通道号,获得接收端。
307、发送端根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
步骤306和步骤307可以是发送端的内核实现的。
其中,进程控制块中包含页目录地址。
308、发送端根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
其中,第一共享页表为新增的页目录项对应的用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
具体的,该步骤可以是发送端的内核实现的。发送端内核通过在接收端的进程控制块中查找到接收端的页目录地址,在页目录的页表中根据页表项中的标识信息,选取页目录下具有连续空闲页表项的页表作为第一共享页表。
309、发送端检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项。
310、发送端将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
步骤309和步骤310可以是发送端的内核实现的。
311、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
该步骤具体可以是发送端的内核实现的。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。接收端可以不需要进出内核空间,只要发送端将消息的虚拟地址记录在接收端的消息通知区中,接收端直接访问自己的消息通知区即可获得消息的地址,从而在对应的内存中读取消息,避免了时间开销、减少了对高速缓存的扰动。进而,接收端的工作效率得到有效的提高。
具体的,对本实施例中与上述实施例中相同步骤的解释可以参照上述实施例中的解释,此处不再赘述。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的方法,该方法应用于多内核***的内核间零拷贝方案中,参照图4所示,发送端和接收端可以是同一***中的不同的进程,该方法包括以下步骤:
401、发送端建立与接收端的通信通道。
402、发送端从内存空间中获取一个页面大小的空间作为第二共享页表。
403、发送端将第二共享页表映射入发送端和接收端的页目录中。
具体的,发送端预先在内存空间中申请一个页面大小的空间作为第二共享页表,并将第二共享页表映射到发送端的页目录中,同时发送端通知接收端将该第二共享页表映射入接收端的页目录中,用于零拷贝过程中存储消息的物理地址。
第二共享页表为用于进行物理地址列表映射的页表,发送端的第二共享页表和接收端的第二共享页表在内核空间中共用同一物理内存页面。发送端可以对接收端的第二共享页表进行操作,接收端可以对发送端的第二共享页表进行操作。其中,发送端的第二共享页表所在的页目录项的位置与接收端的第二共享页表所在的页目录项的位置相同。
其中,本实施例中步骤401和步骤402~403之间在执行上没有先后顺序之分,也就是说在实际的运行中,步骤401可以是和步骤402~403同时进行的,即发送端建立与接收端的通信通道的过程中,从内存空间中获取一个页面大小的空间作为第二共享页表。并将该第二共享页表映射入发送端和接收端的页目录中。
404、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
其中,第一参数包括:消息的虚拟地址和消息的长度。
405、发送端根据消息的虚拟地址和消息的长度,获得消息所在内存页面的物理地址。
具体的,该步骤可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核根据消息的虚拟地址找到进程Px中的对应页表,然后在该页表中获得包含消息的物理页面的地址列表,获得消息的物理地址。其中,消息物理页面地址列表的长度可以为K。
406、发送端根据通信通道的通道号,获得接收端的第二共享页表。
其中,第二共享页表为新增的页目录项对应的用于进行物理地址映射的页表。
具体的,发送端为进程Px,接收端为进程Py,发送端根据通信通道的通道号,获得接收端的第二共享页表可以为:进程Px根据通信通道的通道号,在进程Px的页目录中找到与进程Py相关联的第二共享页表。由于第二共享页表是通信通道建立过程中建立的发送端和接收端均可以互相操作的共享页表,因此,进程Px可以直接在进程Py的第二共享页表中进行将消息的物理地址映射到该第二共享页表的连续空闲的页表项中的操作。
407、发送端检查接收端的第二共享页表的页表项,获得能容纳消息的连续空闲页表项。
408、发送端将获得的消息所在内存页面的物理地址映射到第二共享页表的连续空闲页表项中,得到消息的新虚拟地址。
409、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
具体的,步骤405~409可以是发送端的内核实现的。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。
对本实施例中与上述实施例中相同步骤的解释可以参照上述实施例中的解释,此处不再赘述。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的方法,该方法应用于基于Capability模型的单内核或者多内核***的内核内零拷贝方案中,第一共享页表是页目录中原来的页目录项对应的页表,参照图5所示,发送端和接收端可以是同一***中的不同的进程,该方法包括以下步骤:
501、发送端建立与接收端的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
502、发送端获取存储消息的内存对应的能力引用(CapabilityReference,简称capref)和能力引用capref偏移。
发送端可以在用户空间的内部数据结构中查询存储消息的内存对应的能力引用和能力引用偏移。
503、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
其中第一参数包括:能力引用、能力引用偏移、消息页内偏移和消息的长度。
504、发送端根据通信通道的通道号,获得接收端。
505、发送端根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
可选的,发送端将能力引用capref对应的能力Capability存入接收端的能力空间(Capability Space,简称CSpace)中,以便于接收端需要转发消息至不同于发送端的另一进程时,可以读取消息的物理内存区域,进行消息的转发。
其中,能力引用对应的能力中包含了消息的物理内存区域。
506、发送端根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
507、发送端检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项。
508、发送端将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
具体的,连续空闲页表项的长度由消息页内偏移和消息长度共同来决定。
509、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
具体的,步骤504~509可以是发送端的内核实现的。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址、接收端的能力引用、接收端的能力引用偏移、消息页内偏移和消息长度,并根据消息的新虚拟地址、消息长度、接收端的能力引用、接收端的能力引用偏移在内部数据结构中保存页面虚拟地址与接收端的能力引用之间的对应关系和页面虚拟地址与接收端的能力引用偏移之间的对应关系,用以维护数据结构的完整性。同时,根据消息的新虚拟地址在对应的内存的中读取具有相应长度的消息。其中,页面虚拟地址是根据消息新虚拟地址获得的。
本实施例中发送端不需要通过消息的虚拟地址和消息的长度来获取消息的物理地址,而是通过读取capref对应的capability来获取消息的物理地址,更提高了工作效率。
对本实施例中与上述实施例中相同步骤的解释可以参照上述实施例中的解释,此处不再赘述。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的方法,该方法应用于基于Capability模型的单内核或者多内核***的内核内零拷贝方案中,第一共享页表是新增的页目录项对应的页表,参照图6所示,发送端和接收端可以是同一***中的不同的进程,该方法包括以下步骤:
601、发送端建立与接收端的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
602、发送端从内存空间中获取一个页面大小的空间作为第一共享页表。
603、发送端将第一共享页表映射入接收端的页目录中。
其中,本实施例中步骤601和步骤602~603之间在执行上没有先后顺序之分,也就是说在实际的运行中,步骤601可以是和步骤602~603同时进行的,即发送端建立与接收端的通信通道的过程中,从内存空间中获取一个页面大小的空间作为第一共享页表。并将该第一共享页表映射入接收端的页目录中。
604、发送端获取存储消息的内存对应的能力引用(CapabilityReference,简称capref)和能力引用capref偏移。
605、发送端通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
其中第一参数包括:能力引用、能力引用偏移、消息页内偏移和消息的长度。
606、发送端根据通信通道的通道号,获得接收端。
607、发送端根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
可选的,发送端将能力引用capref对应的能力Capability存入接收端的能力空间(Capability Space,简称CSpace)中,以便于接收端需要转发消息至不同于发送端的另一进程时,可以读取消息的物理内存区域,进行消息的转发。
其中,能力引用对应的能力中包含了消息的物理内存区域。
608、发送端根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
其中,第一共享页表为新增的页目录项对应的用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
609、发送端检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项。
其中,该连续空闲页表项的长度与消息的长度相同。
610、发送端将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
具体的,连续空闲页表项的长度由消息页内偏移和消息长度共同来决定。
611、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
具体的,步骤606~611可以是发送端的内核实现的。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址、接收端的能力引用、接收端的能力引用偏移、消息页内偏移和消息长度,并根据消息的新虚拟地址、消息长度、接收端的能力引用、接收端的能力引用偏移在内部数据结构中保存页面虚拟地址与接收端的能力引用之间的对应关系和页面虚拟地址与接收端的能力引用偏移之间的对应关系,用以维护数据结构的完整性。同时,根据消息的新虚拟地址在对应的内存的中读取具有相应长度的消息。其中,页面虚拟地址是根据消息新虚拟地址获得的。
本实施例中发送端不需要通过消息的虚拟地址和消息的长度来获取消息的物理地址,而是通过读取capref对应的capability来获取消息的物理地址,更提高了工作效率。
对本实施例中与上述实施例中相同步骤的解释可以参照上述实施例中的解释,此处不再赘述。
本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
基于上述实施例,本发明还可以基于下面的方法来实现接收端读取发送端发送的消息,该方法应用于基于Capability模型的多内核***的核间零拷贝方案中,该方法具体可以为:a、进程Px与Py建立通道。b、进程Px从内存中申请一个页面大小的空间,进程Px的内核将该页面映射到进程Px的页目录中,作为进程Px的第二共享页表,同时,进程Py的内核将该页面映射到进程Py的页目录中,作为进程Py的第二共享页表;c、进程Px在用户空间的内部数据结构中查询存储消息的内存对应的能力引用和能力引用偏移;d、进程Px通过***调用,进入内核空间并将通信通道的通道号和第一参数写入内核空间。其中第一参数包括:能力引用、能力引用偏移、消息页内偏移和消息的长度。e、进程Px的内核根据通道号,在进程Px页目录中找到与进程Py相关联的第二共享页表。f、进程Px的内核通过检查第二共享页表中的页表项,获得长度为k的连续空闲页表项,连续空闲页表项的长度k可以根据消息页内偏移和消息长度确定。g、进程Px的内核根据能力引用在进程Px的能力空间中查找对应的能力,该能力包含了消息所在内存区域的物理地址信息。进程Px的内核将消息内存的物理页面地址列表映射到该第二共享页表的连续空闲的页表项中。h、进程Px的内核通过进程Px与进程Py建立的通道,将映射获得的新的消息虚拟地址、消息长度、capref偏移,以及能力引用capref对应的capability发送给进程Py所在的内核,进程Py所在内核将该Capability放入进程Py的CSpace中,并将消息的新虚拟地址、消息长度、指向进程Py的capref和capref偏移写入进程Py的消息通知区My中的空闲槽位。i、进程Py从消息通知区My获得消息的新虚拟地址、消息长度、capref和capref偏移。并根据消息虚拟地址、消息长度、capref以及capref偏移,在内部数据结构中保存页面虚拟地址与capref或capref偏移的对应关系,用于维护内部数据结构的完整性;同时,从内存中读取对应长度的消息。
本发明的实施例提供一种进程间通信的装置7,该装置7用于实现图1~图6中的任一对应的方法实施例所提供的进程间通信的方法,参照图7所示,该装置7包括:创建单元71、处理单元72、获取单元73和存储单元74,其中:
创建单元71,用于建立与接收端通信的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
处理单元72,用于通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
获取单元73,用于根据处理单元72得到通信通道的通道号,获得接收端的共享页表。
其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表。
处理单元72,还用于将获取的消息所在内存页面的物理地址映射到获取单元73获得到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址。
存储单元74,用于将处理单元72得到的消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
本发明的实施例提供的进程间通信的装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时开销,同时减少了对接收端高速缓存的扰动。
进一步,第一参数包括:发送端的能力引用、发送端的能力引用偏移、消息页内偏移和消息的长度,
获取单元73,还用于获取存储消息的内存对应的能力引用和能力引用偏移。
可选的,存储单元74,还用于将能力引用capref对应的能力Capability存入接收端的能力空间CSpace中,以便于接收端需要转发消息至不同于发送端的另一进程时,可以读取消息的物理内存区域,进行消息的转发。
其中,能力引用对应的能力中包含了消息的物理内存区域。
具体的,参照图8所示,获取单元73包括:第一获取模块731、第二获取模块732,其中:
第一获取模块731,用于根据通信通道的通道号,获取接收端对应的进程控制块。
第二获取模块732,用于根据第一获取模块731获得的进程控制块中的接收端的页目录地址,获得接收端的共享页表。
具体的,第一获取模块具体用于执行以下步骤:
根据通信通道的通道号,获得接收端。
根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
具体的,参照图9所示,处理单元72包括:检测模块721和第三获取模块722,其中:
检测模块721,用于检查接收端的共享页表的页表项,获得能容纳消息的连续空闲页表项。
第三获取模块722,用于将获得的消息的物理地址映射到检测模块721获得的共享页表的连续空闲页表项中,得到消息的新虚拟地址。
可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核可以根据通信通道的通道号获得与发送端进程Px通信的接收端进程Py。并在预先存储在内核中的进程与进程控制块之间的关系映射表,查找到接收端进程Py对应的进程控制块。
其中,进程控制块中包含页目录地址。
其中,第一参数包括:消息的虚拟地址和消息的长度,消息的物理地址是根据消息的虚拟地址和消息的长度获得的。
共享页表为第一共享页表。
其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
或,共享页表为第二共享页表。
其中,第二共享页表为用于进行物理地址列表映射的页表,发送端的第二共享页表和所述接收端的第二共享页表在内核空间中共用同一物理内存页面。
进一步,获取单元73,还用于从内存中获取一个页面大小的空间作为共享页表。
处理单元72,还用于将共享页表映射入发送端和接收端的页目录中。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。接收端可以不需要进出内核空间,只要发送端将消息的虚拟地址记录在接收端的消息通知区中,接收端直接访问自己的消息通知区即可获得消息的地址,从而在对应的内存中读取消息,避免了时间开销、减少了对高速缓存的扰动。进而,接收端的工作效率得到有效的提高。
需要说明的是,本实施例中的进程间通信的装置中的各单元的实现方式和交互过程可以参考相应方法实施例中的相关描述。
本发明的实施例提供的进程间通信的装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的装置8,该装置用于实现图1~图6中的任一对应的方法实施例所提供的进程间通信的方法,参照图10所示,该装置包括:至少一个处理器801、存储器802、通信接口803和总线804,至少一个处理器801、存储器802和通信接口803通过总线804连接并完成相互间的通信,存储器801用于存储程序代码,其中:
该总线804可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral ComponentInterconnect,简称为PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,简称为EISA)总线等。该总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中:
存储器802用于存储程序代码,该程序代码包括操作指令。存储器802可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器801可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific IntegratedCircuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口803,主要用于实现本实施例中的装置之间的通信。
处理器801,还用于调用存储器802中的程序代码,用以执行以下操作:
发送端建立与接收端的通信通道。
具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
根据通信通道的通道号,获得接收端的共享页表。
其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表。
将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址。
将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
其中,消息通知区是通信通道建立过程中分配的。
本发明的实施例提供的进程间通信的装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时开销,同时减少了对接收端高速缓存的扰动。
进一步,第一参数包括:能力引用、能力引用偏移、消息页内偏移和消息的长度,处理器801还用于执行以下步骤:
获取存储消息的内存对应的能力引用和能力引用偏移。
可选的,处理器801,还用于将能力引用capref对应的能力Capability存入接收端的能力空间CSpace中,以便于接收端需要转发消息至不同于发送端的另一进程时,可以读取消息的物理内存区域,进行消息的转发。
其中,能力引用对应的能力中包含了消息的物理内存区域。
具体的,处理器801还用于执行以下步骤:
根据通信通道的通道号,获取接收端对应的进程控制块。
根据进程控制块中的接收端的页目录地址,获得接收端的共享页表。
进一步,处理器801还用于执行以下步骤:
根据通信通道的通道号,获得接收端。
根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
进一步具体的,处理器801还用于执行以下步骤:
检查接收端的共享页表的页表项,获得能容纳消息的连续空闲页表项。
将获得的消息所在内存页面的物理地址映射到共享页表的连续空闲页表项中,得到消息的新虚拟地址。
其中,第一参数包括:消息的虚拟地址和消息的长度,消息所在内存页面的物理地址是根据消息的虚拟地址和消息的长度获得的。
共享页表为第一共享页表。
其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
或者,共享页表为第二共享页表。
其中,第二共享页表为用于进行物理地址列表映射的页表,发送端的第二共享页表和接收端的第二共享页表在内核空间中共用同一物理内存页面。
进一步,处理器801还用于执行以下步骤:
从内存空间中获取一个页面大小的空间作为共享页表。
将共享页表映射入发送端和接收端的的页目录中。
具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。接收端可以不需要进出内核空间,只要发送端将消息的虚拟地址记录在接收端的消息通知区中,接收端直接访问自己的消息通知区即可获得消息的地址,从而在对应的内存中读取消息,避免了时间开销、减少了对高速缓存的扰动。进而,接收端的工作效率得到有效的提高。
需要说明的是,本实施例中的进程间通信的装置中的各个器件之间的实现方式和交互过程可以参考相应方法实施例中的相关描述。
本发明的实施例提供的进程间通信的装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的***,应用于单内核***或者多内核***的内核内零拷贝方案,参照图11所示,该***包括:发送端a和接收端b,其中:
发送端a,用于建立与接收端的通信通道;通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表;将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区中。
接收端b,用于读取消息通知区中发送端a存储的消息的新虚拟地址和第一参数;根据新虚拟地址读取具有相应长度的消息;其中,消息通知区是通信通道建立过程中分配的。
第一参数包括:消息的虚拟地址和消息的长度。其中,消息所在内存页面的物理地址是根据消息的虚拟地址和消息的长度获得的。
或,第一参数包括能力引用、能力引用偏移、消息页内偏移和消息的长度。
具体可选的,发送端a,还用于根据通信通道的通道号,获得接收端;根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块;其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
具体的,发送端a,还用于检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项;将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
若该***应用于基于Capability模型的单内核或者多内核***的内核内零拷贝方案中,第一参数包括:能力引用、能力引用偏移、消息页内偏移和消息的长度,可选的:
发送端a,还用于获取存储消息的内存对应的能力引用和能力引用偏移。
其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
本发明的实施例提供的进程间通信的***,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
本发明的实施例提供一种进程间通信的***,应用于多内核***的内核间的零拷贝方案,参照图12所示,该***包括:发送端c和接收端d,其中:
发送端c,用于建立与接收端的通信通道;通过***调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表;将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区中。
接收端d,用于读取消息通知区中发送端c存储的消息的新虚拟地址和第一参数;根据新虚拟地址读取具有相应长度的消息;其中,消息通知区是通信通道建立过程中分配的。
进一步,发送端c,还用于从内存空间中获取一个页面大小的空间作为第二共享页表;将第二共享页表映射入发送端和接收端的页目录中。
第一参数包括:消息的虚拟地址和消息的长度。其中,消息所在内存页面的物理地址是根据消息的虚拟地址和消息的长度获得的。
具体的,发送端c,用于根据通信通道的通道号,获得接收端的第二共享页表;检查接收端的第二共享页表的页表项,获得能容纳消息的连续空闲页表项;将获得的消息所在内存页面的物理地址映射到第二共享页表的连续空闲页表项中,得到消息的新虚拟地址。
其中,第二共享页表为用于进行物理地址列表映射的页表,发送端的第二共享页表和接收端的第二共享页表在内核空间中共用同一物理内存页面。
本发明的实施例提供的进程间通信的***,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种进程间通信的方法,其特征在于,包括:
发送端建立与接收端的通信通道;
通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;
根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;
将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;
将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。
2.根据权利要求1所述的方法,其特征在于,所述第一参数包括:所述能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间之前,还包括:
获取存储所述消息的内存对应的能力引用和能力引用偏移。
3.根据权利要求1所述的方法,其特征在于,所述根据所述通信通道的通道号,获得所述接收端的共享页表,包括:
根据所述通信通道的通道号,获取所述接收端对应的进程控制块;
根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。
4.根据权利要求3所述的方法,其特征在于,所述根据所述通信通道的通道号,获取接收端对应的进程控制块,包括:
根据所述通信通道的通道号,获得接收端;
根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
5.根据权利要求1或2所述的方法,其特征在于,所述将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址,包括:
检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
6.根据权利要求1所述的方法,其特征在于,
所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
7.根据权利要求1或5所述的方法,其特征在于,
所述共享页表为第一共享页表;其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
8.根据权利要求1或5所述的方法,其特征在于,
所述共享页表为第二共享页表;其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
9.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
从内存空间中获取一个页面大小的空间作为共享页表;
将所述共享页表映射入所述发送端和所述接收端的的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
10.一种进程间通信的装置,其特征在于,包括:
创建单元,用于建立与接收端通信的通信通道;
处理单元,用于通过***调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;
获取单元,用于根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;
所述处理单元,还用于将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;
存储单元,用于将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。
11.根据权利要求10所述的装置,其特征在于,所述第一参数包括:能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,
所述获取单元,还用于获取存储所述消息的内存对应的能力引用和能力引用偏移。
12.根据权利要求10所述的装置,其特征在于,所述获取单元包括:
第一获取模块,用于根据所述通信通道的通道号,获取所述接收端对应的进程控制块;
第二获取模块,用于根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。
13.根据权利要求12所述的装置,其特征在于,所述第一获取模块具体用于:
根据所述通信通道的通道号,获得接收端;
根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
14.根据权利要求10或11所述的装置,其特征在于,所述处理单元包括:
检测模块,用于检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
第三获取模块,用于将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
15.根据权利要求10所述的装置,其特征在于,
所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
16.根据权利要求10或14所述的装置,其特征在于,
所述共享页表为第一共享页表;其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
17.根据权利要求10或14所述的装置,其特征在于,
所述共享页表为第二共享页表;其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
18.根据权利要求10或11所述的装置,其特征在于,
所述获取单元,还用于从内存中获取一个页面大小的空间作为共享页表;
所述处理单元,还用于将所述共享页表映射入所述发送端和所述接收端的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310594639.2A CN104657224B (zh) | 2013-11-21 | 2013-11-21 | 一种进程间通信的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310594639.2A CN104657224B (zh) | 2013-11-21 | 2013-11-21 | 一种进程间通信的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657224A true CN104657224A (zh) | 2015-05-27 |
CN104657224B CN104657224B (zh) | 2017-12-15 |
Family
ID=53248397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310594639.2A Expired - Fee Related CN104657224B (zh) | 2013-11-21 | 2013-11-21 | 一种进程间通信的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657224B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095694A (zh) * | 2016-06-15 | 2016-11-09 | 华为技术有限公司 | 数据存储方法及装置 |
CN106557448A (zh) * | 2015-09-24 | 2017-04-05 | 龙芯中科技术有限公司 | 多节点***的内核代码读取方法及*** |
CN107656826A (zh) * | 2017-09-19 | 2018-02-02 | 光科技股份有限公司 | 一种基于ipc动态维护技术的面向对象用电信息采集终端 |
CN109086146A (zh) * | 2018-07-26 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于Boost的相对可靠的进程间通信方法 |
CN109669784A (zh) * | 2017-10-13 | 2019-04-23 | 华为技术有限公司 | 一种进程间通信的方法及*** |
CN112131019A (zh) * | 2020-09-17 | 2020-12-25 | 国网宁夏电力有限公司营销服务中心(国网宁夏电力有限公司计量中心) | 微内核操作***进程间快速通信方法 |
WO2022021896A1 (zh) * | 2020-07-30 | 2022-02-03 | 华为技术有限公司 | 一种进程间通信的方法及装置 |
CN115934581A (zh) * | 2023-03-08 | 2023-04-07 | 北京微步在线科技有限公司 | 一种跨进程内存的处理方法及*** |
WO2024088194A1 (zh) * | 2022-10-28 | 2024-05-02 | 华为技术有限公司 | 一种通信方法、装置和智能驾驶设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020062401A1 (en) * | 1998-06-16 | 2002-05-23 | Marc Alan Auslander | Technique for efficiently transferring moderate amounts of data across address space boundary |
CN101114272A (zh) * | 2007-01-22 | 2008-01-30 | 北京中星微电子有限公司 | 一种可实现芯片内多核间通信的芯片及通信方法 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作***之间的通信方法及*** |
CN102244682A (zh) * | 2011-07-19 | 2011-11-16 | 中国科学院软件研究所 | 一种云计算环境下的隐蔽通信方法 |
CN103077153A (zh) * | 2013-02-01 | 2013-05-01 | 北京航空航天大学 | 基于授权拷贝的虚拟机域间通信通道*** |
-
2013
- 2013-11-21 CN CN201310594639.2A patent/CN104657224B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020062401A1 (en) * | 1998-06-16 | 2002-05-23 | Marc Alan Auslander | Technique for efficiently transferring moderate amounts of data across address space boundary |
CN101114272A (zh) * | 2007-01-22 | 2008-01-30 | 北京中星微电子有限公司 | 一种可实现芯片内多核间通信的芯片及通信方法 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作***之间的通信方法及*** |
CN102244682A (zh) * | 2011-07-19 | 2011-11-16 | 中国科学院软件研究所 | 一种云计算环境下的隐蔽通信方法 |
CN103077153A (zh) * | 2013-02-01 | 2013-05-01 | 北京航空航天大学 | 基于授权拷贝的虚拟机域间通信通道*** |
Non-Patent Citations (3)
Title |
---|
ANDREAS WEIGAND: "Generalized-Mapping IPC for L4", 《DIPLOMA THESIS, CHAIR FOR OPERATING SYSTEMS》 * |
刘福岩: "一种提高微内核效率的有效方法", 《上海交通大学学报》 * |
王宽卿: "微内核进程间通信的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557448A (zh) * | 2015-09-24 | 2017-04-05 | 龙芯中科技术有限公司 | 多节点***的内核代码读取方法及*** |
CN106557448B (zh) * | 2015-09-24 | 2019-06-18 | 龙芯中科技术有限公司 | 多节点***的内核代码读取方法及*** |
CN106095694A (zh) * | 2016-06-15 | 2016-11-09 | 华为技术有限公司 | 数据存储方法及装置 |
CN107656826A (zh) * | 2017-09-19 | 2018-02-02 | 光科技股份有限公司 | 一种基于ipc动态维护技术的面向对象用电信息采集终端 |
CN107656826B (zh) * | 2017-09-19 | 2020-06-26 | 光一科技股份有限公司 | 一种基于ipc动态维护技术的面向对象用电信息采集终端 |
US11892953B2 (en) | 2017-10-13 | 2024-02-06 | Huawei Technologies Co., Ltd. | Interprocess communication method and interprocess communications system |
CN109669784A (zh) * | 2017-10-13 | 2019-04-23 | 华为技术有限公司 | 一种进程间通信的方法及*** |
CN109086146A (zh) * | 2018-07-26 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于Boost的相对可靠的进程间通信方法 |
WO2022021896A1 (zh) * | 2020-07-30 | 2022-02-03 | 华为技术有限公司 | 一种进程间通信的方法及装置 |
CN112131019A (zh) * | 2020-09-17 | 2020-12-25 | 国网宁夏电力有限公司营销服务中心(国网宁夏电力有限公司计量中心) | 微内核操作***进程间快速通信方法 |
WO2024088194A1 (zh) * | 2022-10-28 | 2024-05-02 | 华为技术有限公司 | 一种通信方法、装置和智能驾驶设备 |
CN115934581A (zh) * | 2023-03-08 | 2023-04-07 | 北京微步在线科技有限公司 | 一种跨进程内存的处理方法及*** |
CN115934581B (zh) * | 2023-03-08 | 2023-05-05 | 北京微步在线科技有限公司 | 一种跨进程内存的处理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104657224B (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657224A (zh) | 一种进程间通信的方法和装置 | |
US8381230B2 (en) | Message passing with queues and channels | |
CN108572818A (zh) | 一种用户界面渲染方法及装置 | |
US8788787B2 (en) | Systems, methods and architecture for facilitating software access to acceleration technology | |
CN105335309B (zh) | 一种数据传输方法及计算机 | |
US20170329618A1 (en) | Modification of write-protected memory using code patching | |
US10645051B2 (en) | Memory-mapped input/output (I/O) channel | |
US10048886B2 (en) | Method and system providing file system for an electronic device comprising a composite memory device | |
CN111190854B (zh) | 通信数据处理方法、装置、设备、***和存储介质 | |
US9588923B2 (en) | Flow pinning in a server on a chip | |
US20190187897A1 (en) | Efficient sharing of non-volatile memory | |
US10790862B2 (en) | Cache index mapping | |
WO2022032990A1 (zh) | 一种命令信息传输方法、***、装置及可读存储介质 | |
US20170018050A1 (en) | Communication between integrated graphics processing units | |
CN115794437A (zh) | 微服务的调用方法、装置、计算机设备及存储介质 | |
US20110246582A1 (en) | Message Passing with Queues and Channels | |
CN112506676B (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
US10915470B2 (en) | Memory system | |
CN109144853B (zh) | 一种软件定义无线电SoC芯片调试*** | |
CN104156316A (zh) | 一种Hadoop集群批处理作业的方法及*** | |
CN116610354A (zh) | 参数校验方法、装置、计算机设备及存储介质 | |
CN112988604B (zh) | 对象测试方法、测试***、电子设备及可读存储介质 | |
CN112073505B (zh) | 在云服务器上进行卸载的方法、控制装置、存储介质 | |
KR101614920B1 (ko) | 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 | |
CN116745754A (zh) | 一种访问远端资源的***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171215 |