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

文档序号:8339471阅读:来源:国知局
系映射表,获得所述接收端对应的进程控制块;
[0085]其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
[0086]在第四种可能的实现方式中,结合第三方面或第一种可能的实现方式,所述处理器具体用于执行以下步骤:
[0087]检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;
[0088]将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。
[0089]在第五种可能的实现方式中,结合第三方面,
[0090]所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。
[0091]在第六种可能的实现方式中,结合第三方面或第四种可能的实现方式,
[0092]所述共享页表为第一共享页表;
[0093]其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。
[0094]在第七种可能的实现方式中,结合第一方面或第四种可能的实现方式,
[0095]所述共享页表为第二共享页表;
[0096]其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。
[0097]在第八种可能的实现方式中,结合第三方面或第一种可能的实现方式,所述处理器还用于执行以下步骤:
[0098]从内存空间中获取一个页面大小的空间作为共享页表;
[0099]将所述共享页表映射入所述发送端和所述接收端的的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。
[0100]本发明的实施例提供的进程间通信的方法和装置,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
【附图说明】
[0101]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0102]图1为本发明的实施例提供的一种进程间通信的方法的流程示意图;
[0103]图2为本发明的实施例提供的另一种进程间通信的方法的流程示意图;
[0104]图3为本发明的实施例提供的又一种进程间通信的方法的流程示意图;
[0105]图4为本发明的实施例提供的再一种进程间通信的方法的流程示意图;
[0106]图5为本发明的另一实施例提供的一种进程间通信的方法的流程示意图;
[0107]图6为本发明的另一实施例提供的另一种进程间通信的方法的流程示意图;
[0108]图7为本发明的实施例提供的一种进程间通信的装置的结构示意图;
[0109]图8为本发明的实施例提供的另一种进程间通信的装置的结构示意图;
[0110]图9为本发明的实施例提供的又一种进程间通信的装置的结构示意图;
[0111]图10为本发明的实施例提供的再一种进程间通信的装置的结构示意图;
[0112]图11为本发明的实施例提供的一种进程间通信的系统的结构示意图;
[0113]图12为本发明的实施例提供的另一种进程间通信的系统的结构示意图。
【具体实施方式】
[0114]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0115]本发明的实施例提供的进程间通信的方法,可以应用于进程间通信的零拷贝方案中,现有的单内核和多内核操作系统的零拷贝的方案主要是应用Barref ish系统的内核内、内核间的零拷贝方案,第二代微内核系统中的L4系统的零拷贝的方案,这两种方案在实现上接收端进程Py都需要进出内核空间,会造成相应的时间开销,造成接收端高速缓存的扰动,同时在使用上不够灵活。本发明的实施例提供一种零拷贝的方案,这种方案接收端不用进出内核空间,就可以实现发送端与接收端之间的通信,该实现零拷贝的方案的实施过程在后台是通过软件编程来实现的。
[0116]本发明的实施例提供一种进程间通信的方法,参照图1所示,该方法包括以下步骤:
[0117]101、发送端建立与接收端的通信通道。
[0118]具体的,发送端可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。
[0119]其中,通信通道的建立过程中可以在内存中为发送端分配消息通知区Mx和为接收端分配消息通知区My,消息通知区可以是基于数组或者环形链表等方式实现的。
[0120]102、发送端通过系统调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
[0121]具体的,在发送端通过系统调用进入内核空间的同时,发送端中携带通信通道的通道号和第一参数并将该第一参数写入内核空间。
[0122]103、发送端根据通信通道的通道号,获得接收端的共享页表。
[0123]具体的,发送端根据通信通道的通道号,获得接收端的共享页表可以为:发送端可以根据通信通道的通道号找到与该发送端通信的接收端,然后在内核空间中查找与该接收端对应的进程控制块,之后根据进程控制块中的接收端的页目录地址,得到接收端的共享页表。
[0124]或者,发送端根据通信通道的通道号,获得接收端的共享页表。
[0125]其中,共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表。
[0126]104、发送端将获取的消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址。
[0127]具体的,可以先从共享页表中获得连续空闲的页表项,然后将获得到消息的物理地址映射到该共享页表的连续空闲的页表项中。
[0128]105、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
[0129]其中,消息通知区是通信通道建立过程中分配的。
[0130]本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
[0131]本发明的实施例提供一种进程间通信的方法,该方法应用于单内核或者多内核系统的内核内零拷贝方案中,第一共享页表是页目录中原来的页目录项对应的页表,参照图2所示,发送端和接收端可以是同一系统中的不同的进程,该方法包括以下步骤:
[0132]201、发送端建立与接收端的通信通道。
[0133]具体的,可以基于消息传输或者共享内存的方案等技术实现通信通道的建立。通信通道的建立过程中,同时为发送端分配消息通知区Mx,为接收端分配消息通知区My。其中,消息通知区可以是基于数组或者环形链表等方式来实现的。消息通知区中有多个槽位,每个槽位可以保存相应的内容。其中,发送端将接收端的消息通知区映射到自己的地址空间,接收端将发送端的消息通知区映射到自己的地址空间,实现发送端可以访问接收端的消息通知区,接收端可以访问发送端的消息通知区。
[0134]202、发送端通过系统调用进入内核空间,并将通信通道的通道号和第一参数写入内核空间。
[0135]其中,第一参数包括:消息的虚拟地址和消息的长度。
[0136]203,发送端根据消息的虚拟地址和消息的长度,获得消息的物理地址。
[0137]具体的,该步骤可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核根据消息的虚拟地址找到进程Px中的对应页表,然后在该页表中获得包含消息的物理页面的地址列表,获得消息的物理地址。其中,消息物理页面地址列表的长度可以为K。
[0138]204、发送端根据通信通道的通道号,获得接收端。
[0139]205、发送端根据接收端对应的进程与进程控制块之间的关系映射表,获得接收端对应的进程控制块。
[0140]其中,接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。
[0141]步骤204和步骤205可以是发送端的内核实现的,若发送端可以为进程Px,则进程Px的内核可以根据通信通道的通道号获得与发送端进程Px通信的接收端进程Py。并在预先存储在内核空间中的进程与进程控制块之间的关系映射表,查找到接收端进程Py对应的进程控制块。
[0142]其中,进程控制块中包含页目录地址。
[0143]206、发送端根据进程控制块中的接收端的页目录地址,获得接收端的第一共享页表。
[0144]其中,第一共享页表为用于进行物理地址列表映射的页表,发送端的第一共享页表和接收端的第一共享页表在内核空间中共用同一物理内存页面或者不同物理内存页面。
[0145]具体的,该步骤可以是发送端的内核实现的。发送端内核通过在接收端的进程控制块中查找到接收端的页目录地址,在页目录的页表中根据页表项中的标识信息,选取页目录下具有连续空闲页表项的页表作为第一共享页表。
[0146]207、发送端检查接收端的第一共享页表的页表项,获得能容纳消息的连续空闲页表项。
[0147]208、发送端将获得的消息所在内存页面的物理地址映射到第一共享页表的连续空闲页表项中,得到消息的新虚拟地址。
[0148]步骤207和步骤208可以是发送端的内核实现的,发送端的内核在第一共享页表的页表项中,查找连续空闲的长度为K的页表项。并将之前获得的消息的物理地址映射到得到的连续空闲长度为K的页表项中,从而得到消息的新虚拟地址。
[0149]209、发送端将消息的新虚拟地址和第一参数存入接收端的消息通知区中,以便于接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息。
[0150]其中,消息通知区是通信通道建立过程中分配的。
[0151 ] 该步骤具体可以是发送端的内核实现的。
[0152]具体的,接收端读取消息通知区获得消息的新虚拟地址和第一参数,并根据新虚拟地址读取具有相应长度的消息的一种可能的实现方式为:接收端在接收端的消息通知区中,获取消息的新虚拟地址和消息的长度,根据信息的新虚拟地址在对应的内存的中读取具有相应长度的消息。接收端可以不需要进出内核空间,只要发送端将消息的虚拟地址记录在接收端的消息通知区中,接收端直接访问自己的消息通知区即可获得消息的地址,从而在对应的内存中读取消息,避免了时间开销、减少了对高速缓存的扰动。进而,接收端的工作效率得到有效的提高。
[0153]本发明的实施例提供的进程间通信的方法,通过发送端将消息的物理地址映射到获得的接收端的共享页表的连续空闲页表项页中,得到该消息的新虚拟地址,并将新虚拟地址存入接收端的消息通知区中,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。
[0154]本发明的实施例提供一种进程间通信的方法,该方法应用于单内核或者多内核系统的内核内零拷贝方案中,第一共享页表是新增的页目录项对应的页表,参照图3所示,发送端和接收端可以是同一系统中的不同的进程,该方法包括以下步骤:<
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1