一种进程间通信的方法和装置制造方法及图纸

技术编号:11529395 阅读:72 留言:0更新日期:2015-05-31 18:09
本发明专利技术的实施例提供一种进程间通信的方法和装置,涉及计算机技术领域,实现接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,节省了消息的响应时间,同时减少了对接收端高速缓存的扰动。该方法具体包括:发送端建立与接收端的通信通道;进入内核空间,将通信通道的通道号和第一参数写入内核空间;根据通信通道的通道号,获得接收端的共享页表;将消息所在内存页面的物理地址映射到接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将消息的新虚拟地址和第一参数存入接收端的消息通知区,以便接收端根据新虚拟地址读取消息。本发明专利技术应用于进程间通信中。

【技术实现步骤摘要】
一种进程间通信的方法和装置
本专利技术涉及计算机
,尤其涉及一种进程间通信的方法和装置。
技术介绍
进程是计算机正在运行的程序实例,不同进程间由于相互协作而存在相应的通信需求。在操作系统研究中,进程间通信(InterprocessCommunication,简称IPC)是一个重要的研究课题,提高IPC的效率对整个操作系统的性能尤为重要。常用的IPC方法有消息传输、共享内存、零拷贝等。传统操作系统被划分为宏内核和微内核,近年,半导体制造工艺飞速发展,单处理器芯片的主频已逐渐逼近极限,单靠提升处理器芯片的主频已经无法使处理器的运算速度继续沿着摩尔定律不断提升。因此人们将多个处理器核集成在一个芯片上形成片上多处理器(ChipMulti-Processor,简称CMP)系统。目前片上多处理器系统已成为当前微处理器发展的主流。CMP又可以分为多核(Multi-Core)和众核(Many-Core),通常把8个Core以下的CMP称为多核,8个Core以上的CMP称为众核。随着众核的出现,同时出现了Barrelfish等新型操作系统。Barrelfish操作系统是一个微内核(microkernel)操作系统,同时也是多内核(multi-kernel)操作系统,主要面向多核(Multi-core)、众核(Many-core)平台。现有技术中的基于Barrelfish操作系统的内核内和内核间零拷贝方案,为了将消息内存映射进自己的地址空间,接收端需要进出内核空间,这样会造成相应的时间开销;同时,接收端进出内核空间会造成接收端高速缓存的扰动。第二代微内核系统的L4系统中的内核内零拷贝方案,由于采用同步IPC,使得编程不够灵活;同时,接收端仍然需要进出内核空间,并且只适用于单内核系统。
技术实现思路
本专利技术的实施例提供一种进程间通信的方法和装置,实现了在零拷贝方案中接收端不用进出内核空间便可对消息进行读取,避免了接收端进出内核空间的时间开销,同时减少了对接收端高速缓存的扰动。为达到上述目的,本专利技术的实施例采用如下技术方案:第一方面,提供一种进程间通信的方法,包括:发送端建立与接收端的通信通道;通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。在第一种可能的实现方式中,结合第一方面,所述第一参数包括:所述能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间之前,还包括:获取存储所述消息的内存对应的能力引用和能力引用偏移。在第二种可能的实现方式中,结合第一方面,所述根据所述通信通道的通道号,获得所述接收端的共享页表,包括:根据所述通信通道的通道号,获取所述接收端对应的进程控制块;根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。在第三种可能的实现方式中,结合第二种可能的实现方式,所述根据所述通信通道的通道号,获取接收端对应的进程控制块,包括:根据所述通信通道的通道号,获得接收端;根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。在第四种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址,包括:检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。在第五种可能的实现方式中,结合第一方面,所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。在第六种可能的实现方式中,结合第一方面或第四种可能的实现方式,所述共享页表为第一共享页表;其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。在第七种可能的实现方式中,结合第一方面或第四种可能的实现方式,所述共享页表为第二共享页表;其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。在第八种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述方法还包括:从内存空间中获取一个页面大小的空间作为共享页表;将所述共享页表映射入所述发送端和所述接收端的的页目录中,或,将所述共享页表映射入所述接收端的的页目录中。第二方面,提供一种进程间通信的装置,包括:创建单元,用于建立与接收端通信的通信通道;处理单元,用于通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;获取单元,用于根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;所述处理单元,还用于将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;存储单元,用于将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。在第一种可能的实现方式中,结合第二方面,所述第一参数包括:能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述获取单元,还用于获取存储所述消息的内存对应的能力引用和能力引用偏移。在第二种可能的实现方式中,结合第二方面,所述获取单元包括:第一获取模块,用于根据所述通信通道的通道号,获取所述接收端对应的进程控制块;第二获取模块,用于根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。在第三种可能的实现方式中,结合第一种可能的实现方式,所述第一获取模块具体用于:根据所述通信通道的通道号,获得接收端;根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。在第四种可能的实现方式中,结合第二方面或第一种可能的实现方式,所述处理单元包括:检测模块,用于检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;第三获本文档来自技高网
...
一种进程间通信的方法和装置

【技术保护点】
一种进程间通信的方法,其特征在于,包括:发送端建立与接收端的通信通道;通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为所述页目录对应的页表中用于映射所述消息所在内存页面的物理地址的页表;将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。

【技术特征摘要】
1.一种进程间通信的方法,其特征在于,包括:发送端建立与接收端的通信通道;通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间;根据所述通信通道的通道号,获得所述接收端的共享页表;其中,所述共享页表为页目录对应的页表中用于映射消息所在内存页面的物理地址的页表;将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址;将所述消息的新虚拟地址和所述第一参数存入所述接收端的消息通知区中,以便于所述接收端读取所述消息通知区获得所述消息的新虚拟地址和所述第一参数,并根据所述新虚拟地址读取具有相应长度的所述消息;其中,所述消息通知区是所述通信通道建立过程中分配的。2.根据权利要求1所述的方法,其特征在于,所述第一参数包括:能力引用、能力引用偏移、所述消息页内偏移和所述消息的长度,所述通过系统调用进入内核空间,并将所述通信通道的通道号和第一参数写入所述内核空间之前,还包括:获取存储所述消息的内存对应的能力引用和能力引用偏移。3.根据权利要求1所述的方法,其特征在于,所述根据所述通信通道的通道号,获得所述接收端的共享页表,包括:根据所述通信通道的通道号,获取所述接收端对应的进程控制块;根据所述进程控制块中的所述接收端的页目录地址,获得所述接收端的第一共享页表。4.根据权利要求3所述的方法,其特征在于,所述根据所述通信通道的通道号,获取接收端对应的进程控制块,包括:根据所述通信通道的通道号,获得接收端;根据所述接收端对应的进程与进程控制块之间的关系映射表,获得所述接收端对应的进程控制块;其中,所述接收端对应的进程与进程控制块之间的关系映射表是预先存储在内核空间中的。5.根据权利要求1所述的方法,其特征在于,所述将获取的所述消息所在内存页面的物理地址映射到所述接收端的共享页表的连续空闲页表项中,得到消息的新虚拟地址,包括:检查所述接收端的共享页表的页表项,获得能容纳所述消息的连续空闲页表项;将获得的所述消息所在内存页面的物理地址映射到所述共享页表的连续空闲页表项中,得到消息的新虚拟地址。6.根据权利要求1所述的方法,其特征在于,所述第一参数包括:所述消息的虚拟地址和所述消息的长度,所述消息所在内存页面的物理地址是根据所述消息的虚拟地址和所述消息的长度获得的。7.根据权利要求1或5所述的方法,其特征在于,所述共享页表为第一共享页表;其中,所述第一共享页表为用于进行物理地址列表映射的页表,所述发送端的第一共享页表和所述接收端的第一共享页表在所述内核空间中共用同一物理内存页面或者不同物理内存页面。8.根据权利要求1或5所述的方法,其特征在于,所述共享页表为第二共享页表;其中,所述第二共享页表为用于进行物理地址列表映射的页表,所述发送端的第二共享页表和所述接收端的第二共享页表在所述内核空间中共用同一物理内存页面。9.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:从内存空间中获取一个页面大小的空间作为共享页表;将所述共享页表映射入所述发送端和所述接收端的页目录中,或,将所述共享...

【专利技术属性】
技术研发人员:朱望斌刘潭义颜友亮
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1