一种进程间通信方法技术

技术编号:8625967 阅读:144 留言:0更新日期:2013-04-25 23:02
本发明专利技术公开了一种进程间通信方法,其属于进程通信机制技术领域,包括调用装置、缓存装置、第一存储装置和第二存储装置,步骤包括:调取一个消息队列及对应的索引节点、一个文件对象及对应的描述符并保存在缓存装置中;在该消息队列和文件对象之间建立对应关系;初始化缓存装置中的索引节点和文件对象;调用装置根据缓存装置中的消息队列,重写缓存装置中的文件对象;将重写过的文件对象重新安装回第二存储装置的对应第二存储空间中;将描述符重新安装回第二索引部件的对应第四存储空间中;返回缓存装置中的描述符;上述技术方案的有益效果是:可以同时处理网络连接和基于消息队列的通信,并解决进程间通信效率低下的问题。

【技术实现步骤摘要】
一种进程间通信方法
本专利技术涉及进程通信机制
,尤其涉及一种进程间通信方法。
技术介绍
网关设备由于其功能较为复杂,各功能模块间交互较为频繁,在已开发的网关设备中,存在这样一个管理程序:它既要处理来自网络侧的网络连接请求,同时又要与各种程序间进行基于消息队列的进程间通信,达到一个总体管理程序的功能。由于基于套接字(socket)的网络连接使用的是描述符,因而可以很容易的使用select/poll函数,而消息队列由各自的标识符标识,这就意味着不能在消息队列上直接使用select/poll函数。对于上述问题,现有的解决方法:让服务端先创建一个管道,然后派生一个子进程,由子进程阻塞在msgrcv调用中。当有一个消息准备好被处理时,返回msgrcv函数,子进程接着从所指定的队列中读出该消息,并把该消息写入管道。服务端父进程当时可能在该管道以及一些网络连接上select。但是这种方法中,消息被处理了三次:一次是在子进程使用msgrcv读出时,一次是在子进程写入管道时,最后一次是在父进程从该管道中读出时。当然,对于这些额外的处理,同时增加了额外的系统开销,效率也更低下。对应的解决方法是:创建一个匿名共享内存区,派生一个子进程,让该子进程阻塞在msgrcv调用中,以将消息读入到该匿名共享内存区中,父进程再创建两个管道,其中一个管道由子进程用来向父进程通知已在共享内存区中准备好一个消息,另一个管道则由父进程用来向子进程通知共享内存区已可用。这就允许父进程对前一个管道的读出端select可读条件,同时对它想要选择的其他描述符select读写条件。然而,即使是这种解决方法,同样还是较为繁琐,额外增加系统开销,也大大增加编码量。
技术实现思路
根据现有技术中存在的缺陷,现提供一种进程间通信方法的技术方案,具体包括:一种进程间通信方法,适用于系统中的进程相互通信,其中,包括调用装置、缓存装置、第一存储装置和第二存储装置,所述调用装置分别连接所述缓存装置、所述第一存储装置和所述第二存储装置;所述第一存储装置用于存放所述进程间通信所需的消息队列;所述第二存储装置用于存放所述系统中的文件对象;所述调用装置调取和写入内容自所述第一存储装置和所述第二存储装置,并将调取的内容暂时存放在所述缓存装置中;所述第一存储装置中包括多个独立的第一存储空间,每个所述第一存储空间中存放有一个消息队列;所述第二存储装置中包括多个独立的第二存储空间,每个所述第二存储空间中存放有一个独立的文件对象;所述第一存储装置中还包括第一索引部件,所述第一索引部件分别连接多个所述第一存储空间;所述第一索引部件中包括多个独立的第三存储空间,每个所述第三存储空间中存放有一个索引节点,每个所述索引节点分别对应并唯一标识一个所述第一存储空间中的消息队列;每个所述索引节点中包括所述消息队列的操作函数;所述第二存储装置中还包括第二索引部件,所述第二索引部件分别连接多个所述第二存储空间,所述第二索引部件包括多个独立的第四存储空间,每个所述第四存储空间中存放有一个描述符,每个所述描述符分别对应并唯一标识一个所述第二存储空间中的文件对象;每个所述描述符中包括所述文件对象的操作函数;所述进程间通信方法具体包括:步骤a,通过所述调用装置在所述第一存储装置的所述第一存储空间中调取一个所述消息队列并保存在所述缓存装置中;步骤b,通过所述调用装置在所述第一索引部件的所述第三存储空间中调取对应所述消息队列的所述索引节点并保存在所述缓存装置中;步骤c,通过所述调用装置在所述第二索引部件的所述第四存储空间中调取一个所述描述符并保存在缓存装置中;步骤d,通过所述调用装置在所述第二存储装置的所述第二存储空间中调取对应所述描述符的所述文件对象并保存在缓存装置中;在储存于所述缓存装置中的所述消息队列和所述文件对象之间建立对应关系;步骤e,初始化所述缓存装置中的所述索引节点和所述文件对象;步骤f,所述调用装置根据所述缓存装置中的所述消息队列,采用预设的方法重写所述缓存装置中的所述文件对象;步骤g,将重写过的所述文件对象重新安装回所述第二存储装置的对应所述第二存储空间中;将所述描述符重新安装回所述第二索引部件的对应所述第四存储空间中;步骤h,返回所述缓存装置中的所述描述符。优选的,该进程间通信方法,其中,每个所述第一存储空间内包括独立的第一存储块,所述第一存储块内存放有对应所述消息队列的参数值。优选的,该进程间通信方法,其中,每个所述第二存储空间内包括独立的第二存储块,所述第二存储块内存放有对应所述文件对象的参数值。优选的,该进程间通信方法,其中,所述步骤f中,所述预设的方法为:将所述缓存装置中的所述消息队列的参数值写入所述缓存装置中的所述文件对象中以代替所述文件对象的参数值;将所述缓存装置中的所述文件对象的操作函数设置为所述缓存装置中的所述消息队列的操作函数;将重写过的所述文件对象重新安装回所述第二存储装置中的对应所述第二存储空间中。上述技术方案的有益效果是:可以同时处理网络连接和基于消息队列的通信,并解决进程间通信效率低下的问题;为消息队列中添加文件描述符标识,从而可以使其支持select/poll,进而更高效地处理网络连接和进程间通信的需求。附图说明图1是本专利技术的实施例中对进程间通信的基础结构示意图;图2是本专利技术的实施例中进程间通信方法的流程示意图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步说明,但不作为本专利技术的限定。如图1所示,进程间通信方法依赖于基础结构包括:调用装置、缓存装置、第一存储装置和第二存储装置,调用装置分别连接缓存装置、第一存储装置和第二存储装置;第一存储装置用于存放进程间通信所需的消息队列;第二存储装置用于存放系统中的文件对象;调用装置调取和写入内容自第一存储装置和第二存储装置,并将调取的内容暂时存放在缓存装置中。第一存储装置中包括多个独立的第一存储空间(图中只示出其中一个),每个第一存储空间中存放有一个消息队列;第二存储装置中包括多个独立的第二存储空间(图中只示出其中一个),每个第二存储空间中存放有一个独立的文件对象。第一存储装置中还包括第一索引部件,第一索引部件分别连接多个第一存储空间;第一索引部件中包括多个独立的第三存储空间(图中只示出其中一个),每个第三存储空间中存放有一个索引节点,每个索引节点分别对应并唯一标识一个第一存储空间中的消息队列。第二存储装置中还包括第二索引部件,第二索引部件分别连接多个第二存储空间,第二索引部件中包括多个独立的第四存储空间(图中只示出其中一个),每个第四存储空间中存放有一个描述符,每个描述符分别对应并唯一标识一个第二存储空间中的文件对象。每个第一存储空间内包括独立的第一存储块,第一存储块内存放有对应消息队列的参数值。每个第二存储空间内包括独立的第二存储块,第二存储块内存放有对应文件对象的参数值。为了编写一个能同时处理网络连接和基于消息队列通信的服务器程序,需要在消息队列中添加文件描述符标识,从而使其支持select/poll函数,进而更高效地同时处理网络连接以及进程间通信的需求。要使消息队列支持select/poll函数,就有必要先弄清楚select函数的工作模式:select函数是依赖于文件描述符来工作的,而这个文件描述符是定本文档来自技高网
...
一种进程间通信方法

【技术保护点】
一种进程间通信方法,适用于系统中的进程相互通信,其特征在于,包括调用装置、缓存装置、第一存储装置和第二存储装置,所述调用装置分别连接所述缓存装置、所述第一存储装置和所述第二存储装置;所述第一存储装置用于存放所述进程间通信所需的消息队列;所述第二存储装置用于存放所述系统中的文件对象;所述调用装置调取和写入内容至所述第一存储装置和所述第二存储装置,并将调取的内容暂时存放在所述缓存装置中;所述第一存储装置中包括多个独立的第一存储空间,每个所述第一存储空间中存放有一个消息队列;所述第二存储装置中包括多个独立的第二存储空间,每个所述第二存储空间中存放有一个独立的文件对象;所述第一存储装置中还包括第一索引部件,所述第一索引部件分别连接多个所述第一存储空间;所述第一索引部件中包括多个独立的第三存储空间,每个所述第三存储空间中存放有一个索引节点,每个所述索引节点分别对应并唯一标识一个所述第一存储空间中的消息队列;每个所述索引节点中包括所述消息队列的操作函数;所述第二存储装置中还包括第二索引部件,所述第二索引部件分别连接多个所述第二存储空间,每个所述第二索引部件包括多个独立的第四存储空间,每个所述第四存储空间中存放有一个描述符,每个所述描述符分别对应并唯一标识一个所述第二存储空间中的文件对象;每个所述描述符中包括所述文件对象的操作函数;所述进程间通信方法具体包括:步骤a,通过所述调用装置在所述第一存储装置的所述第一存储空间中调取一个所述消息队列并保存在所述缓存装置中;步骤b,通过所述调用装置在所述第一索引部件的所述第三存储空间中调取对应所述消息队列的所述索引节点并保存在所述缓存装置中;步骤c,通过所述调用装置在所述第二索引部件的所述第四存储空间中调取一个所述描述符并保存在缓存装置中;步骤d,通过所述调用装置在所述第二存储装置的所述第二存储空间中调取对应所述描述符的所述文件对象并保存在缓存装置中;在储存于所述缓 存装置中的所述消息队列和所述文件对象之间建立对应关系;步骤e,初始化所述缓存装置中的所述索引节点和所述文件对象;步骤f,所述调用装置根据所述缓存装置中的所述消息队列,采用预设的方法重写所述缓存装置中的所述文件对象;步骤g,将重写过的所述文件对象重新安装回所述第二存储装置的对应所述第二存储空间中;将所述描述符重新安装回所述第二索引部件的对应所述第四存储空间中;步骤h,返回所述缓存装置中的所述描述符。...

【技术特征摘要】
1.一种进程间通信方法,适用于系统中的进程相互通信,其特征在于,包括调用装置、缓存装置、第一存储装置和第二存储装置,所述调用装置分别连接所述缓存装置、所述第一存储装置和所述第二存储装置;所述第一存储装置用于存放所述进程间通信所需的消息队列;所述第二存储装置用于存放所述系统中的文件对象;所述调用装置调取和写入内容自所述第一存储装置和所述第二存储装置,并将调取的内容暂时存放在所述缓存装置中;所述第一存储装置中包括多个独立的第一存储空间,每个所述第一存储空间中存放有一个消息队列;所述第二存储装置中包括多个独立的第二存储空间,每个所述第二存储空间中存放有一个独立的文件对象;所述第一存储装置中还包括第一索引部件,所述第一索引部件分别连接多个所述第一存储空间;所述第一索引部件中包括多个独立的第三存储空间,每个所述第三存储空间中存放有一个索引节点,每个所述索引节点分别对应并唯一标识一个所述第一存储空间中的消息队列;每个所述索引节点中包括所述消息队列的操作函数;所述第二存储装置中还包括第二索引部件,所述第二索引部件分别连接多个所述第二存储空间,所述第二索引部件包括多个独立的第四存储空间,每个所述第四存储空间中存放有一个描述符,每个所述描述符分别对应并唯一标识一个所述第二存储空间中的文件对象;每个所述描述符中包括所述文件对象的操作函数;所述进程间通信方法具体包括:步骤a,通过所述调用装置在所述第一存储装置的所述第一存储空间中调取一个所述消息队列并保存在所述缓存装置中;步骤b,通过所述调用装置在所述第一索引部件的所述第三存...

【专利技术属性】
技术研发人员:张晓冰
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:

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

1