CN104572313B - 一种进程间的通信方法及装置 - Google Patents
一种进程间的通信方法及装置 Download PDFInfo
- Publication number
- CN104572313B CN104572313B CN201310500027.2A CN201310500027A CN104572313B CN 104572313 B CN104572313 B CN 104572313B CN 201310500027 A CN201310500027 A CN 201310500027A CN 104572313 B CN104572313 B CN 104572313B
- Authority
- CN
- China
- Prior art keywords
- address
- mapping relations
- tlb
- shared drive
- preserved
- 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.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种进程间的通信方法及装置,该方法包括:建立共享内存地址与第一进程的预设地址间的第一映射关系,共享内存由第一进程申请获得;将第一映射关系保存至TLB以及第一进程对应的第一页表,并锁定TLB保存的第一映射关系;控制第一进程将包括有共享内存地址的映射信息发送给第二进程,以建立共享内存地址与第二进程的预设地址间的第二映射关系,第二进程的预设地址与第一进程的预设地址相同,并将第二映射关系保存至TLB以及第二进程对应的第二页表,锁定TLB保存的第二映射关系。如此,在操作系统内核切换进程上下文后,仍可利用这一锁定的映射关系正确的将虚拟地址翻译为物理地址,进行通信,以此提高进程间的通信性能。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种进程间的通信方法及装置。
背景技术
在虚拟内存技术中,页表被存储在主存储器中,查询页表时付出的代价较大,为了解决这一问题,虚拟内存方案中还使用了一个特殊的高速缓存,即转换检测缓冲器TLB(Translation lookaside buffer),TLB中保存有页表的部分条目。在给定一个虚拟地址之后,处理器先查询TLB,如果TLB中保存有该虚拟地址对应的页表项(称为TLB命中),则可直接从TLB中获得虚拟地址对应的内存物理地址,进而可以根据物理地址到内存中读取对应的页面;如果TLB中未保存虚拟地址对应的页表项(称为TLB缺失),则要访问内存,查询页表,并根据页表查询结果进行区别处理。由此可知,在出现TLB缺失时,处理器需要访问主存,仍需要付出较大的代价。
由上文可知,TLB中保存的条目是与页表中的条目相关联的,而页表又与进程一一对应,因此TLB中的条目也是与进程相对应的,这就使得同一内核上运行的不同进程之间相互通信时,会存在以下问题:
在同一内核上运行的进程之间通信时,要由操作系统内核调度完成,而在进程调度时需要切换进程上下文,重新设置CR3寄存器保存的页表信息,如此之后,CR3寄存器保存的页表为切换后进程对应的页表,而TLB保存的却是切换前的进程对应的页表的部分条目。相对切换后的进程来说,TLB保存的条目已全部失效,这就导致切换后的进程在运行初期的TLB缺失率很高,需要多次访问主存页表,加大了进程间通信的开销,降低了进程间通信的效率。
发明内容
本发明实施例的进程间的通信方法及装置,用以提高同一内核上运行的进程间的通信性能。
为此,本发明实施例提供如下技术方案:
第一方面,本发明实施例提供了一种第一进程侧的进程间的通信方法,所述方法包括:
建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得;
将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表,并锁定所述TLB保存的所述第一映射关系;
控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
在第一方面的第一种可能的实现方式中,所述预设地址为用户空间中划分出的固定大小的地址;或者,所述预设地址为根据共享内存的大小从用户空间中划分出的可变大小的地址。
在第一方面的第二种可能的实现方式中,所述建立共享内存地址与第一进程的预设地址间的映射关系,包括:
通过对等映射的方式建立所述共享内存地址与所述第一进程的预设地址间的映射关系。
在第一方面的第三种可能的实现方式中,所述锁定所述TLB保存的所述第一映射关系,包括:
将所述TLB保存的所述第一映射关系标识为禁止刷新。
第二方面,本发明实施例提供了一种第二进程侧的进程间的通信方法,所述方法包括:
解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得;
根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同;
将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表,并锁定所述TLB保存的所述第二映射关系。
在第二方面的第一种可能的实现方式中,所述建立所述共享内存地址与所述第二进程的预设地址间的映射关系,包括:
通过对等映射的方式建立所述共享内存地址与所述第二进程的预设地址间的映射关系。
在第二方面的第二种可能的实现方式中,所述锁定所述TLB保存的所述第二映射关系,包括:
将所述TLB保存的所述第二映射关系标识为禁止刷新。
第三方面,本发明实施例提供了一种第一进程侧的进程间的通信装置,所述装置包括:
映射建立单元,用于建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得;
保存单元,用于将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表;
锁定单元,用于锁定所述TLB保存的所述第一映射关系;
控制单元,用于控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
在第三方面的第一种可能的实现方式中,所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第一进程的预设地址间的映射关系。
在第三方面的第二种可能的实现方式中,所述锁定单元,具体用于将所述TLB保存的所述第一映射关系标识为禁止刷新。
第四方面,本发明实施例提供了一种第二进程侧的进程间的通信装置,所述装置包括:
解析单元,用于解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得;
映射建立单元,用于根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同;
保存单元,用于将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表;
锁定单元,用于锁定所述TLB保存的所述第二映射关系。
在第四方面的第一种可能的实现方式中,所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第二进程的预设地址间的映射关系。
在第四方面的第二种可能的实现方式中,所述锁定单元,具体用于将所述TLB的所述第二映射关系标识为禁止刷新。
本发明实施例的进程间的通信方法及装置,锁定TLB中针对共享内存的映射关系的条目,这样操作系统内核切换进程上下文之后就不会刷新该条目,保证该条目的有效性。同时,为了使相互通信的不同进程均可利用这一锁定的映射关系正确的将虚拟地址翻译为物理地址,要使相互通信的各进程都采用相同的预设地址与这一共享内存建立映射关系。如此就可提高本发明方案进程间的通信性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1是本发明实施例中第一进程对应的进程间的通信方法的流程图;
图2是本发明实施例中共享内存的映射关系的示意图;
图3是本发明实施例中第二进程对应的进程间的通信方法的流程图;
图4是本发明实施例中第一进程对应的进程间的通信装置的示意图;
图5是本发明实施例中第二进程对应的进程间的通信装置的示意图;
图6是本发明实施例中第一进程对应的通信装置的硬件构成示意图;
图7是本发明实施例中第二进程对应的通信装置的硬件构成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
下面先对本发明实施例的应用场景进行解释说明。
计算机中运行的程序均需经由主存来执行,若执行的程序占用主存较大,则会导致主存消耗殆尽。为了让更多的程序共享使用容量有限的主存,现有技术提出了虚拟内存技术,在主存、高速缓冲存储器Cache等物理存储器外建立一个虚拟存储器,并将程序分成若干程序块后存储在作为辅存的虚拟存储器上。在程序运行时,要先将待用程序块从辅存调入主存,对此于此,可用该程序对应的页表来表示(主要是页表中的“存在位”表项),如果存在位已置位(如该位标识为1),则表示该程序块已调入主存,可以从主存调用并运行;如果存在位未置位(如该位标识为0),则表示该程序块未调入主存,需要到辅存读取,并装入主存,然后才可调用并运行该程序块。
由上述介绍可知,单次虚拟内存的访问可能会涉及到两次物理内存的访问:一次是到主存中读取程序对应的页表,一次是到内存中读取需要的数据(即已装入的程序块),这就导致主存访问时间过长。为了解决这一问题,现有技术中提出了转换检测缓冲器TLB(Translation lookaside buffer),使TLB保存页表的部分条目,并由操作系统维护使页表与TLB中的条目相关联。这样,在接收到一个虚拟地址之后,不再先访问主存进行页表查找,而是先检查TLB,判断TLB中是否保存有虚拟地址对应的页表项,处理过程可简述如下:
当一个虚拟地址(程序中使用的都是虚拟地址)被送到内存管理单元MMU(MemoryManagementUnit)翻译时,处理器先将其与TLB中所有的条目进行并行比较,如果虚拟地址的页号存在于TLB中(即TLB Hit,TLB命中),则依据页号检索对应的页框号,进而根据页框号得到物理地址;如果虚拟地址的页号不存于TLB中(即TLB Miss,TLB缺失),则处理器访问主存,继续用页号检索程序对应的页表,具体有以下两种检索结果:
(1)页表中的“存在位”已置位,则表示需要的页(即程序块)在主存中,处理器可从页表项中检索获得页号对应的页框号,进而得到物理地址;同时,处理器还会更新TLB,添加入这个新的条目,这样在下一次访问过程中,即可实现TLB命中;
(2)页表中的“存在位”未置位,则表示需要的页不在主存中,此时可产生一个缺页中断(page fault),并调用操作系统,由操作系统从辅存中将需要的页调入主存,并更新页表信息以及TLB。
需要说明的是,页表与TLB中还可包含“保护码”表项,在TLB命中之后,可继续判断当前指令是否符合保护码的要求,如果符合,则可搜索页框号并获取物理地址;如果不符合,则产生缺页中断,与上文直接访问页表的过程相同。例如,当前指令试图写入一个只读的页面,则可认为指令不符合保护码的要求,产生缺页中断。
当虚拟内存技术应用于同一内核上的不同进程间的通信过程时,每个进程都对应有各自的页表和TLB信息,在操作系统内核调度进程之间通信时,会切换进程上下文,此时要重新设置CR3寄存器(用于分页机制,含有存放页目录表页面的物理地址),并由CR3刷新TLB。在进程切换初期,TLB中保存的是切换前进程的页表的部分条目,这些条目对于切换后的进程来说,均为失效条目,这种情况下,就出现TLB缺失,处理器只能访问主存并重新开始页表扫描,如此势必会提高代价、增大通信开销、降低通信效率。
特别是,根据局部性原理,相互通信的进程在一定时间范围内都会访问共享内存,或者相互通信的进程之间需要频繁的进行信息交互等情况下,都会导致操作系统内存频繁的调度互相通信的进程,频繁的进行上下文切换,这显然会严重影响进程间通信的性能。本发明实施例即是为了解决这一问题而提出,下面进行解释说明。
参见图1,示出了本发明实施例进程间的通信方法的流程图,可包括:
步骤101,建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得。
本发明方案是为了解决同一内核上的进程间通信时出现的性能下降问题,如图2所示,每个进程的地址空间可被划分为用户空间和内核空间,以32位的内核地址空间为例,其中的0~3G为用户空间,3~4G为内核空间。一般情况下,进程之间是互相独立,且不能互相访问的,唯一例外的是可通过共享内存区实现进程间的交互。共享内存通常由一个进程申请创建,其余进程可对这块内存区进行读写,以此实现进程间的关联通信。
基于共享内存,同一内核上运行的进程间的通信过程可体现为:
首先第一进程申请分配一块共享内存;然后由需要访问这个共享内存的其它进程将这个共享内存绑定到自己的地址空间中。如此之后,操作系统内核就可调度不同的进程来运行,实现进程间的消息通信。
本步骤中,首先由第一进程申请获得一块共享内存,然后再将该共享内存映射到第一进程的地址空间中。根据体系结构的不同,内核被分为微内核(microkernel)与宏内核(macrokernel),申请共享内存的过程可体现为:如果是宏内核,则第一进程可向操作系统申请获得共享内存;如果是微内核,则该权限被下放到用户管理模块中,此时第一进程可向用户管理模块申请获得共享内存。对于第一进程申请共享内存的过程本发明可不做限定。
在第一进程申请获得共享内存之后,即会将该共享内存映射到自己的地址空间中,本发明为了解决进程间通信时TLB条目失效导致的通信性能下降问题,不再针对一块共享内存使不同进程建立不同的映射关系,而是控制使相互通信的进程均采用相同的地址与同一共享内存建立映射关系,如此处理之后,相互通信的不同进程对该共享内存来说具有相同的映射关系。为了实现这一目的,要先确定出用于绑定共享内存的预设地址,然后使相互通信的各个进程都利用该预设地址与共享内存建立映射关系,就能保证这些进程的映射关系具有相同的内容。
本发明实施例中,提供了两种确定预设地址的方式,下面进行解释说明。
第一种,所述预设地址为用户空间中划分出的固定大小的地址。
为了简化本发明方案,便于后续进程间通信时准确迅速的识别出本发明实施例中锁定的映射关系(此处暂不详述),可直接从用户空间中划分出一个固定大小的地址空间作为预设地址。仍以上述32位的内核地址空间为例,0~3G被划分为用户空间,作为一种示例我们可以将其中的2~3G作为预设地址使用。
第二种,所述预设地址为根据共享内存的大小从用户空间中划分出的可变大小的地址。
为了增强本发明实施例的灵活性,预设地址还可是根据共享内存大小划分出的,使预设地址与共享内存相匹配,还可避免对用户空间地址的浪费。
当然,为了方便后续准确迅速的识别出本发明实施例中锁定的映射关系,还可结合第一种和第二种方案确定预设地址,也就是说,可以根据共享内存的大小来确定预设地址,但是预设地址最好不要超过预先划分出的地址空间,这样,只要判断地址属于这一预划地址空间时,即可认为其对应的映射关系为不可刷新的锁定状态。
另外,需要说明的是,为了提高本发明方案的处理速度,简化处理过程,优选采用对等映射(OFFSET)的方式建立共享内存地址与预设地址间的映射关系,此时,从用户空间划分出的地址空间可称为对等映射的地址空间,具体可参见图2。当然,还可采用诸如hash算法、bitmap算法等映射函数建立上述映射关系,本发明对此可不做限定。
步骤102,将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表。
步骤103,锁定所述TLB保存的所述第一映射关系。
在虚拟内存技术中,每个进程都被分为若干页面,每个进程都要维护一个反映内存地址到虚拟页面映射关系的页表,页表中至少包含“存在位”、页号”、“页框号”等表项。
其中,“存在位”用于表示页面是否已装入主存,如果已装入,则可根据页号和页框号获得物理地址,并从主存中调用页面;如果未装入,则产生缺页中断去虚拟存储器中调用页面并装入到主存。
“页号”相当于页面的身份编号,一页的大小为4KB,对于一个进程来说,页号与页框号是一一对应的,在接收到虚拟地址之后,可通过页号查找到页框号。
“页框号”相当于物理块的身份编号,用于描述物理内存空间,根据页号找到页框号之后,即可确定出虚拟地址对应的物理地址。
为了减少进程运行过程中访问主存的次数,可将页表的部分条目(一个条目对应一个页面)存入TLB中。对应地,在步骤101建立了共享内存地址与预设地址间的第一映射关系之后,即可将这一关系保存至TLB中,同时还要锁定TLB中对应这一映射关系的条目,避免在进程间通信时因刷新TLB导致的TLB中第一进程的所有条目失效。
本发明实施例提供了两种锁定TLB中关于共享内存的映射关系的方式,下面进行解释说明。
第一种方式,将所述TLB保存的共享内存的映射关系标识为禁止刷新。即,通过设置标识位的方式进行锁定,对应于此,TLB保存的页面信息中还应增加一个“标识位”表项,例如针对要锁定的条目,将标识位置为“SG”,具体可参见下表所示示例。
页号 | 页框号 | 保护码 | 标识位 | 存在位 | …… |
7 | 16 | RW | —— | 1 | …… |
19 | 56 | RX | SG | 1 | …… |
第二种方式,将TLB划分为可刷新部分和不可刷新部分,对于进程普通的虚拟地址与物理地址间的映射关系可存入可刷新部分,对于进程针对共享内存的映射关系则存入不可刷新部分,在进程间通信过程中刷新TLB时,只刷新可刷新部分保存的条目,如此也可实现针对共享内存映射关系这一条目的锁定。
步骤104,控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
如上文在步骤101处所述,在第一进程申请到共享内存,并将其绑定到自己的地址空间之后,第一进程还会向需要访问这个共享内存的其它进程(即要与第一进程进行进程间通信的进程)发送包含共享内存地址的映射信息,以使接收到映射信息的进程可以将这个共享内存绑定到自己的地址空间中。
与现有技术不同的是,本发明实施例要锁定TLB中针对共享内存的映射关系的条目,这样在进程间通信过程中就不会刷新这一条目,保证该条目的有效性。同时,为了保证不同进程均可利用这一锁定的映射关系正确的将虚拟地址翻译为物理地址,本发明实施例中相互通信的所有进程都采用相同的预设地址与该共享内存建立映射关系,也即使这些进程具有相同的针对这一共享内存的映射关系。
图1示出的是申请共享内存的第一进程的处理过程,下面再结合图3,对要与第一进程进行进程间通信的第二进程的处理过程进行解释说明,其中,第一进程与第二进程在同一内核上运行。
第二进程的进程间的通信方法可包括:
步骤201,解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得。
同一内核上的两个进程进行进程间通信时,首先由第一进程申请获得一块共享内存,然后建立预设地址与该共享内存的地址之间的映射关系,并进行映射关系的保存与锁定等处理之后,可将包括有共享内存地址的映射信息发送给第二进程,如此之后,第二进程侧即可根据映射信息解析获得预设地址以及共享内存地址这两方面信息,并据此将共享内存绑定到第二进程的地址空间中。
步骤202,根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同。
为了保证进程间通信刷新TLB之后,第一进程和第二进程均可正确根据共享内存的映射关系将虚拟地址翻译为物理地址,应使相互通信的各进程都使用相同的预设地址与同一共享内存的地址建立映射关系,即使相互通信的各进程具有内容相同的映射关系。这样,进程调度切换上下文之后,亦可根据这一映射关系访问共享内存。
需要说明的是,在建立共享内存的地址与第二进程的预设地址间的第二映射关系时,可采用与第一进程相同的映射方式,也可采用不同的映射方式(需要说明的是,要保证各进程对于共享内存的虚拟地址的映射对应关系是相同的,即虚拟地址与共享内存的物理地址的对应关系相同)。当然,为了简化本发明方案的处理过程,优选使各进程采用相同的映射方式建立映射关系。如均采用对等映射(OFFSET)的方式建立共享内存与预设地址间的映射关系。
另外,对于本步骤中根据映射信息确定第二进程的预设地址的过程,本发明提供了两种具体实现方式:
一种是,映射信息具体可包括共享内存地址和预设地址,此时,在第二进程接收到映射信息之后,可直接从中读取获得预设地址。
一种是,映射信息具体可包括共享内存地址和对等映射的映射关系,此时,在第二进程接收到映射信息之后,可根据共享内存地址和映射关系计算获得预设地址。
步骤203,将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表。
步骤204,锁定所述TLB保存的所述第二映射关系。
本实施例中的步骤203、204与图1所示实施例中的步骤102、103相同,在建立了共享内存与预设地址间的映射关系之后,即可将这一关系保存至第二进程对应的第二页表和TLB中,同时还要锁定TLB中对应共享内存的映射关系的条目,避免在进程间通信时因刷新TLB导致的TLB中第二进程的所有条目失效。
对于锁定TLB中对应共享内存映射关系的条目的方式,与上文介绍的锁定TLB中映射关系的方式相同,此处不再赘述。
下面再结合图2所示示意图,对本发明实施例的进程间的通信过程进行解释说明。
参见图2,对于同一内核上运行的用户进程和服务进程来说,二者都拥有自己独立的进程空间来保护进程的独立运行,下面以对等映射方式为例,对二者绑定共享内存的过程进行解释说明。
1.从进程的用户空间中划分出一段用于对等映射的地址空间(即上文中的预设地址),并利用OFFSET建立该对等映射的地址空间与用户进程申请到的共享内存的地址之间的映射关系。
2.使互相通信的不同进程(在本示例中即为服务进程),都采用相同的OFFSET建立各自的对等映射地址空间到共享内存的映射,从而使不同进程的页表中对于共享内存具有相同的页表条目:虚拟地址(VA)和物理地址(PA)的关联关系。
3.进程运行读写共享内存时,操作系统内核将对应于共享内存的页表项的TLB条目标识为SG,从而在操作系统内核进行进程调度,切换进程上下文时,可以锁定TLB中对于共享内存的映射条目。这样,切换后的进程(如从用户进程切换到服务进程,服务进程就是切换后的进程)同样可以通过共享内存的映射条目正确进行虚拟地址到物理地址的解析,避免进程切换后出现TLB Miss,如此就可解决现有技术进程切换后,因出现TLB Miss而访问主存导致的代价高开销大、以及进程间通信效率低等一系列问题。
对应于图1所示方法实施例,本发明还提供了一种第一进程对应的进程间的通信装置,具体可参见图4,所述装置可包括:
映射建立单元301,用于建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得;
保存单元302,用于将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表;
锁定单元303,用于锁定所述TLB保存的所述第一映射关系;
控制单元304,用于控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
作为本发明实施例的一种优选方案,所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第一进程的预设地址间的映射关系。当然,还可采用其它映射方式建立上述映射关系,本发明对此可不做限定。
作为本发明实施例的一种优选方案,所述锁定单元,具体用于将所述TLB保存的所述第一映射关系标识为禁止刷新。当然,锁定单元亦可按照上文方法实施例处介绍的方式,将TLB划分为可刷新部分和不可刷新部分,通过将针对共享内存映射关系的条目保存到不可刷新部分的方式实现该条目的锁定。
对应于图3所示方法实施例,本发明还提供了一种第二进程对应的进程间的通信装置,具体可参见图5,所述装置可包括:
解析单元401,用于解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得;
映射建立单元402,用于根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同;
保存单元403,用于将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表;
锁定单元404,用于锁定所述TLB保存的所述第二映射关系。
作为本发明实施例的一种优选方案,所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第二进程的预设地址间的映射关系。当然,还可采用其它映射方式建立上述映射关系,且可与第一进程采用相同的方式建立映射关系,也可采用不同的方式建立映射关系,本发明对此可不做限定。
作为本发明实施例的一种优选方案,所述锁定单元,具体用于将所述TLB保存的所述第二映射关系标识为禁止刷新。当然,锁定单元亦可按照上文方法实施例处介绍的方式,将TLB划分为可刷新部分和不可刷新部分,通过将针对共享内存映射关系的条目保存到不可刷新部分的方式实现该条目的锁定。
进一步地,本发明实施例还提供了通信装置的硬件构成。可包括至少一个处理器(例如CPU),至少一个网络接口或者其它通信接口,存储器,和至少一个通信总线,用于实现这些装置之间的连接通信。处理器用于执行存储器中存储的可执行模块,例如计算机程序。存储器可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口(可以是有线或者无线)实现该系统网关与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
参见图6,在一些实施方式中,存储器中存储了程序指令,程序指令可以被处理器执行,其中,程序指令包括映射建立单元301、保存单元302、锁定单元303、控制单元304,各单元的具体实现可参见图4所揭示的相应单元。
参见图7,在一些实施方式中,存储器中存储了程序指令,程序指令可以被处理器执行,其中,程序指令包括解析单元401、映射建立单元402、保存单元403、锁定单元404,各单元的具体实现可参见图5所揭示的相应单元。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种进程间的通信方法,其特征在于,所述方法包括:
建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得;
将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表,并锁定所述TLB保存的所述第一映射关系;
控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
2.根据权利要求1所述的方法,其特征在于,
所述预设地址为用户空间中划分出的固定大小的地址;或者,
所述预设地址为根据共享内存的大小从用户空间中划分出的可变大小的地址。
3.根据权利要求1所述的方法,其特征在于,所述建立共享内存地址与第一进程的预设地址间的映射关系,包括:
通过对等映射的方式建立所述共享内存地址与所述第一进程的预设地址间的映射关系。
4.根据权利要求1所述的方法,其特征在于,所述锁定所述TLB保存的所述第一映射关系,包括:
将所述TLB保存的所述第一映射关系标识为禁止刷新。
5.一种进程间的通信方法,其特征在于,所述方法包括:
解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得;
根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同;
将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表,并锁定所述TLB保存的所述第二映射关系。
6.根据权利要求5所述的方法,其特征在于,所述建立所述共享内存地址与所述第二进程的预设地址间的映射关系,包括:
通过对等映射的方式建立所述共享内存地址与所述第二进程的预设地址间的映射关系。
7.根据权利要求5所述的方法,其特征在于,所述锁定所述TLB保存的所述第二映射关系,包括:
将所述TLB保存的所述第二映射关系标识为禁止刷新。
8.一种进程间的通信装置,其特征在于,所述装置包括:
映射建立单元,用于建立共享内存地址与第一进程的预设地址间的第一映射关系,所述共享内存由所述第一进程申请获得;
保存单元,用于将所述第一映射关系保存至转换检测缓冲器TLB以及所述第一进程对应的第一页表;
锁定单元,用于锁定所述TLB保存的所述第一映射关系;
控制单元,用于控制所述第一进程将包括有所述共享内存地址的映射信息发送给第二进程,以建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同,并将所述第二映射关系保存至所述TLB以及所述第二进程对应的第二页表,锁定所述TLB保存的所述第二映射关系。
9.根据权利要求8所述的装置,其特征在于,
所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第一进程的预设地址间的映射关系。
10.根据权利要求8所述的装置,其特征在于,
所述锁定单元,具体用于将所述TLB保存的所述第一映射关系标识为禁止刷新。
11.一种进程间的通信装置,其特征在于,所述装置包括:
解析单元,用于解析第二进程接收的包括有共享内存地址的映射信息,所述映射信息由第一进程发送,且所述共享内存由所述第一进程申请获得;
映射建立单元,用于根据所述映射信息确定所述第二进程的预设地址,并建立所述共享内存地址与所述第二进程的预设地址间的第二映射关系,所述第二进程的预设地址与所述第一进程的预设地址相同;
保存单元,用于将所述第二映射关系保存至转换检测缓冲器TLB以及所述第二进程对应的第二页表;
锁定单元,用于锁定所述TLB保存的所述第二映射关系。
12.根据权利要求11所述的装置,其特征在于,
所述映射建立单元,具体用于通过对等映射的方式建立所述共享内存地址与所述第二进程的预设地址间的映射关系。
13.根据权利要求11所述的装置,其特征在于,
所述锁定单元,具体用于将所述TLB的所述第二映射关系标识为禁止刷新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310500027.2A CN104572313B (zh) | 2013-10-22 | 2013-10-22 | 一种进程间的通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310500027.2A CN104572313B (zh) | 2013-10-22 | 2013-10-22 | 一种进程间的通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572313A CN104572313A (zh) | 2015-04-29 |
CN104572313B true CN104572313B (zh) | 2018-03-13 |
Family
ID=53088457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310500027.2A Active CN104572313B (zh) | 2013-10-22 | 2013-10-22 | 一种进程间的通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572313B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326150B (zh) * | 2015-06-26 | 2020-09-15 | 中兴通讯股份有限公司 | 内存访问处理方法及装置 |
CN105159838B (zh) * | 2015-08-27 | 2018-06-26 | 华为技术有限公司 | 访问内存的方法及计算机系统 |
CN105787360B (zh) * | 2016-03-02 | 2019-01-04 | 杭州字节信息技术有限公司 | 一种嵌入式系统内存安全访问控制的技术实现方法 |
CN107577539B (zh) * | 2016-07-05 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 用于内核态和用户态通讯的共享内存结构及其应用 |
CN106354687B (zh) * | 2016-08-29 | 2020-01-03 | 珠海市魅族科技有限公司 | 一种数据传输方法及系统 |
CN108062252B (zh) * | 2016-11-08 | 2022-02-01 | 斑马智行网络(香港)有限公司 | 一种信息交互方法、对象管理方法及装置和系统 |
CN107729159B (zh) * | 2017-09-29 | 2021-01-15 | 华为技术有限公司 | 一种共享内存的地址映射方法及装置 |
CN108710584B (zh) * | 2018-05-22 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
CN111316244A (zh) * | 2018-12-28 | 2020-06-19 | 深圳市大疆创新科技有限公司 | 多进程间的通信方法和系统 |
CN109766199B (zh) * | 2018-12-29 | 2024-01-30 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN109933441B (zh) * | 2019-02-28 | 2020-11-17 | 上海交通大学 | 微内核进程间通讯方法和系统 |
CN111949415A (zh) * | 2019-05-17 | 2020-11-17 | 阿里巴巴集团控股有限公司 | 应用间数据状态的同步方法、装置及计算机存储介质 |
CN110928646B (zh) * | 2019-11-22 | 2023-02-17 | 海光信息技术股份有限公司 | 一种访问共享内存的方法、装置、处理器和计算机系统 |
CN113939805A (zh) * | 2020-04-29 | 2022-01-14 | 华为技术有限公司 | 一种进程间通信的方法及系统 |
CN111813595A (zh) * | 2020-05-20 | 2020-10-23 | 北京元心科技有限公司 | 操作系统修复方法、系统及相应设备、存储介质 |
CN113849428A (zh) * | 2020-06-28 | 2021-12-28 | 华为技术有限公司 | 共享内存权限配置方法,内存单元和系统 |
CN114327632A (zh) * | 2020-09-30 | 2022-04-12 | 上海商汤智能科技有限公司 | 指令处理设备以及指令处理方法 |
CN112256460A (zh) * | 2020-11-24 | 2021-01-22 | 北京元心科技有限公司 | 进程间通信方法、装置、电子设备及计算机可读存储介质 |
CN112650603B (zh) * | 2020-12-28 | 2024-02-06 | 北京天融信网络安全技术有限公司 | 内存管理方法、装置、电子设备及存储介质 |
CN115878210A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 一种系统配置处理方法及相关设备 |
CN113886105B (zh) * | 2021-09-30 | 2023-07-21 | 抖音视界有限公司 | 跨进程的调用方法、装置、存储介质及电子设备 |
CN117955654A (zh) * | 2022-10-28 | 2024-04-30 | 华为技术有限公司 | 一种通信方法、装置和智能驾驶设备 |
CN116225745B (zh) * | 2023-05-04 | 2023-07-21 | 北京万维盈创科技发展有限公司 | 一种基于Linux的多进程间通信方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030135A (zh) * | 2006-02-28 | 2007-09-05 | 华为技术有限公司 | 一种在共享内存中存储c++对象的方法及装置 |
CN103077120A (zh) * | 2012-12-31 | 2013-05-01 | 东软集团股份有限公司 | 程序共享内存的地址转换方法和装置 |
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829762B2 (en) * | 2002-10-10 | 2004-12-07 | International Business Machnies Corporation | Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system |
-
2013
- 2013-10-22 CN CN201310500027.2A patent/CN104572313B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030135A (zh) * | 2006-02-28 | 2007-09-05 | 华为技术有限公司 | 一种在共享内存中存储c++对象的方法及装置 |
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
CN103077120A (zh) * | 2012-12-31 | 2013-05-01 | 东软集团股份有限公司 | 程序共享内存的地址转换方法和装置 |
Non-Patent Citations (1)
Title |
---|
《Xen虚拟机间通信优化研究与实现》;张建;《中国优秀硕士学位论文全文数据库》;20091231;第34—45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104572313A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572313B (zh) | 一种进程间的通信方法及装置 | |
US11481384B2 (en) | Apparatus and method for performing operations on capability metadata | |
CN109858288B (zh) | 实现虚拟机安全隔离的方法与装置 | |
US9665534B2 (en) | Memory deduplication support for remote direct memory access (RDMA) | |
US7623134B1 (en) | System and method for hardware-based GPU paging to system memory | |
CN104239238B (zh) | 用于管理转换旁视缓冲的方法和装置 | |
CN104813295B (zh) | 安全区域内的日志记录 | |
US9772962B2 (en) | Memory sharing for direct memory access by a device assigned to a guest operating system | |
US20160170902A1 (en) | Low overhead paged memory runtime protection | |
CN109947666B (zh) | 可信执行环境缓存隔离方法及装置、电子设备和存储介质 | |
US10019583B2 (en) | Method and apparatus for performing protected walk-based shadow paging using multiple stages of page tables | |
JP7128206B2 (ja) | 機能の使用を管理するための装置および方法 | |
US11474956B2 (en) | Memory protection unit using memory protection table stored in memory system | |
CN110196757A (zh) | 虚拟机的tlb填写方法、装置及存储介质 | |
US20130238859A1 (en) | Cache with scratch pad memory structure and processor including the cache | |
EP3163451A1 (en) | Memory management method and device, and memory controller | |
EP3274896B1 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US7734873B2 (en) | Caching of microcode emulation memory | |
US9411979B2 (en) | Embedding secret data in code | |
US7904693B2 (en) | Full virtualization of resources across an IP interconnect using page frame table | |
US20150150145A1 (en) | Method and system for fast permission changes for virtual addresses | |
EP3408749A1 (en) | Memory address translation management | |
US20150347042A1 (en) | Apparatus and method for controlling memory | |
US11573911B2 (en) | Memory access control | |
US10489304B2 (en) | Memory address translation |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210420 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |