一种进程间通信的方法和装置的制造方法_6

文档序号:8339471阅读:来源:国知局

[0341]发送端a,还用于获取存储消息的内存对应的能力引用和能力引用偏移。
[0342]其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
[0343]本发明的实施例提供的进程间通信的系统,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
[0344]本发明的实施例提供一种进程间通信的系统,应用于多内核系统的内核间的零拷贝方案,参照图12所示,该系统包括:发送端c和接收端d,其中:
[0345]发送端C,用于建立与接收端的通信通道;通过系统调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表;将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区中。
[0346]接收端d,用于读取消息通知区中发送端c存储的消息的新虚拟地址和第一参数;根据新虚拟地址读取具有相应长度的消息;其中,消息通知区是通信通道建立过程中分配的。
[0347]进一步,发送端C,还用于从内存空间中获取一个页面大小的空间作为第二共享页表;将第二共享页表映射入发送端和接收端的页目录中。
[0348]第一参数包括:消息的虚拟地址和消息的长度。其中,消息所在内存页面的物理地址是根据消息的虚拟地址和消息的长度获得的。
[0349]具体的,发送端C,用于根据通信通道的通道号,获得接收端的第二共享页表;检查接收端的第二共享页表的页表项,获得能容纳消息的连续空闲页表项;将获得的消息所在内存页面的物理地址映射到第二共享页表的连续空闲页表项中,得到消息的新虚拟地址。
[0350]其中,第二共享页表为用于进行物理地址列表映射的页表,发送端的第二共享页表和接收端的第二共享页表在内核空间中共用同一物理内存页面。
[0351]本发明的实施例提供的进程间通信的系统,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
[0352]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0353]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0354]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0355]另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0356]以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
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所述的装置,其特征在于, 所述获取单元,还用于从内存中获取一个页面大小的空间作为共享页表; 所述处理单元,还用于将所述共享页表映射入所述发送端和所述接收端的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
【专利摘要】本发明的实施例提供一种进程间通信的方法和装置,涉及计算机技术领域,实现接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,节省了消息的响应时间,同时减少了对接收端高速缓存的扰动。该方法具体包括:发送端建立与接收端的通信通道;进入内核空间,将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;将消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区,以便接收端根据新虚拟地址读取消息。本发明应用于进程间通信中。
【IPC分类】G06F9-54
【公开号】CN104657224
【申请号】CN201310594639
【发明人】朱望斌, 刘潭义, 颜友亮
【申请人】华为技术有限公司
【公开日】2015年5月27日
【申请日】2013年11月21日
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1