[发明专利]一种进程间通信方法有效
申请号: | 201310008347.6 | 申请日: | 2013-01-09 |
公开(公告)号: | CN103064749B | 公开(公告)日: | 2017-05-24 |
发明(设计)人: | 张晓冰 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良 |
地址: | 201616 上海市松*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进程 通信 方法 | ||
技术领域
本发明涉及进程通信机制技术领域,尤其涉及一种进程间通信方法。
背景技术
网关设备由于其功能较为复杂,各功能模块间交互较为频繁,在已开发的网关设备中,存在这样一个管理程序:它既要处理来自网络侧的网络连接请求,同时又要与各种程序间进行基于消息队列的进程间通信,达到一个总体管理程序的功能。由于基于套接字(socket)的网络连接使用的是描述符,因而可以很容易的使用select/poll函数,而消息队列由各自的标识符标识,这就意味着不能在消息队列上直接使用select/poll函数。
对于上述问题,现有的解决方法:让服务端先创建一个管道,然后派生一个子进程,由子进程阻塞在msgrcv调用中。当有一个消息准备好被处理时,返回msgrcv函数,子进程接着从所指定的队列中读出该消息,并把该消息写入管道。服务端父进程当时可能在该管道以及一些网络连接上select。但是这种方法中,消息被处理了三次:一次是在子进程使用msgrcv读出时,一次是在子进程写入管道时,最后一次是在父进程从该管道中读出时。当然,对于这些额外的处理,同时增加了额外的系统开销,效率也更低下。对应的解决方法是:创建一个匿名共享内存区,派生一个子进程,让该子进程阻塞在msgrcv调用中,以将消息读入到该匿名共享内存区中,父进程再创建两个管道,其中一个管道由子进程用来向父进程通知已在共享内存区中准备好一个消息,另一个管道则由父进程用来向子进程通知共享内存区已可用。这就允许父进程对前一个管道的读出端select可读条件,同时对它想要选择的其他描述符select读写条件。然而,即使是这种解决方法,同样还是较为繁琐,额外增加系统开销,也大大增加编码量。
发明内容
根据现有技术中存在的缺陷,现提供一种进程间通信方法的技术方案,具体包括:
一种进程间通信方法,适用于系统中的进程相互通信,其中,包括调用装置、缓存装置、第一存储装置和第二存储装置,所述调用装置分别连接所述缓存装置、所述第一存储装置和所述第二存储装置;所述第一存储装置用于存放所述进程间通信所需的消息队列;所述第二存储装置用于存放所述系统中的文件对象;所述调用装置调取和写入内容自所述第一存储装 置和所述第二存储装置,并将调取的内容暂时存放在所述缓存装置中;
所述第一存储装置中包括多个独立的第一存储空间,每个所述第一存储空间中存放有一个消息队列;所述第二存储装置中包括多个独立的第二存储空间,每个所述第二存储空间中存放有一个独立的文件对象;
所述第一存储装置中还包括第一索引部件,所述第一索引部件分别连接多个所述第一存储空间;所述第一索引部件中包括多个独立的第三存储空间,每个所述第三存储空间中存放有一个索引节点,每个所述索引节点分别对应并唯一标识一个所述第一存储空间中的消息队列;每个所述索引节点中包括所述消息队列的操作函数;
所述第二存储装置中还包括第二索引部件,所述第二索引部件分别连接多个所述第二存储空间,所述第二索引部件包括多个独立的第四存储空间,每个所述第四存储空间中存放有一个描述符,每个所述描述符分别对应并唯一标识一个所述第二存储空间中的文件对象;每个所述描述符中包括所述文件对象的操作函数;
所述进程间通信方法具体包括:
步骤a,通过所述调用装置在所述第一存储装置的所述第一存储空间中调取一个所述消息队列并保存在所述缓存装置中;
步骤b,通过所述调用装置在所述第一索引部件的所述第三存储空间中调取对应所述消息队列的所述索引节点并保存在所述缓存装置中;
步骤c,通过所述调用装置在所述第二索引部件的所述第四存储空间中调取一个所述描述符并保存在缓存装置中;
步骤d,通过所述调用装置在所述第二存储装置的所述第二存储空间中调取对应所述描述符的所述文件对象并保存在缓存装置中;在储存于所述缓存装置中的所述消息队列和所述文件对象之间建立对应关系;
步骤e,初始化所述缓存装置中的所述索引节点和所述文件对象;
步骤f,所述调用装置根据所述缓存装置中的所述消息队列,采用预设的方法重写所述缓存装置中的所述文件对象;
步骤g,将重写过的所述文件对象重新安装回所述第二存储装置的对应所述第二存储空间中;将所述描述符重新安装回所述第二索引部件的对应所述第四存储空间中;
步骤h,返回所述缓存装置中的所述描述符。
优选的,该进程间通信方法,其中,每个所述第一存储空间内包括独立的第一存储块,所述第一存储块内存放有对应所述消息队列的参数值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310008347.6/2.html,转载请声明来源钻瓜专利网。