[发明专利]进程通讯方法及系统有效
申请号: | 201210164179.5 | 申请日: | 2012-05-24 |
公开(公告)号: | CN103425538A | 公开(公告)日: | 2013-12-04 |
发明(设计)人: | 黄明生;田诗源 | 申请(专利权)人: | 深圳市腾讯计算机系统有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F12/10 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;曾旻辉 |
地址: | 518057 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 通讯 方法 系统 | ||
【技术领域】
本发明涉及网络应用技术,特别是涉及一种进程通讯方法及系统。
【背景技术】
随着网络服务器中各种应用程序逐渐增多以及性能的提升,进程之间的通讯越来越频繁,通讯过程中交互的数据量也越来越庞大,使得进程之间的通讯存在着诸多缺陷。传统的进程通讯包括Apache的进程通讯模型和内存共享的进程通讯方式。Apache是广泛应用的网络服务器软件,通过维护进程池来实现主进程和进程池中多个进程之间的数据交互,例如,进程池中的进程用于执行网络服务器中的程序,即CGI(Common Gateway Interface,基于浏览器的输入、在Web服务器上运行的程序)之类的重操作程序,主进程与执行CGI程序的进程通过建立UNIX Domain Socket这一进程间通讯机制进行通讯。但是,Apache的进程通讯模型中建立的每一UNIX Domain Socket只能被主进程和进程池中的一个进程使用,在主进程与进程池中多个进程通讯时必须进行数据的大量复制,缺乏灵活性。
内存共享的进程通讯方式是直接通过共享内存实现数据共享,由一个进程将共享内存区域中划分成若干单元,其它进程按照事先的约定共享地访问共享内存区域中的数据。但是,预先划定的共享内存区域是静态的,无法预期进程通讯时的实际数据长度,往往会出现共享内存区域不足,或者空间浪费的情况,也存在着不够灵活的缺陷。
【发明内容】
基于此,有必要提供一种能提高数据共享的灵活性的进程通讯方法。
此外,还有必要提供一种能提高数据共享的灵活性的进程通讯系统。
一种进程通讯方法,包括如下步骤:
根据进程通讯请求分配内存空间;
将通讯数据存入所述内存空间;
将所述内存空间的逻辑地址写入消息队列;
通过从所述消息队列中读取的逻辑地址访问所述通讯数据。
优选的,所述根据进程通讯请求分配内存空间的步骤为:
根据所述进程通讯请求分配内存空间,并获取所述内存空间的逻辑地址;
向所述通讯请求进程传递所述内存空间的逻辑地址。
优选的,所述根据所述进程通讯请求分配内存空间,并获取所述内存空间的逻辑地址的步骤为:
获取通讯数据对应的数据长度;
选定与所述数据长度相匹配的内存长度区间;
根据所述选定的内存长度区间得到对应的内存空间以及逻辑地址。
优选的,所述根据所述选定的内存长度区间得到对应的内存空间以及逻辑地址的步骤之后还包括:
判断所述选定的内存长度区间是否大于数据长度,若是,则
根据所述数据长度分裂所述得到内存空间;
更新与所述分裂得到的内存空间相关联的内存长度区间;
根据更新的内存长度区间以及数据长度向通讯请求进程分配所述分裂得到的内存空间以及逻辑地址。
优选的,所述通过从所述消息队列中读取的逻辑地址访问所述通讯数据的步骤之后还包括:
获取空间释放请求,并释放所述空间释放请求对应的内存空间;
判断是否存在与所述释放的内存空间形成连续区域的空闲内存空间,若是,则将所述判断得到的空闲内存空间与释放的内存空间合并;
更新对应的内存长度区间。
优选的,所述将通讯数据存入内存空间的步骤为:
将接收得到的逻辑地址转换为物理地址;
按照所述物理地址将所述通讯数据存入相应的内存空间。
优选的,所述将所述内存空间的逻辑地址写入消息队列的步骤之后还包括:
判断写入消息队列的逻辑地址是否为唯一消息,若是,则向所述消息队列中的命名管道写入数据。
优选的,所述通过从所述消息队列中读取的逻辑地址访问所述通讯数据的步骤为:
数据访问进程通过监控到所述命名管道中写入的数据触发消息队列的读取,得到逻辑地址;
将所述逻辑地址转换为物理地址,并根据所述转换得到的物理地址访问通讯数据。
一种进程通讯系统,包括:
资源管理器模块,用于根据进程通讯请求分配内存空间;
通讯请求进程模块,用于将所述通讯数据存入所述内存空间,并将所述内存空间的逻辑地址写入消息队列;
数据访问进程模块,用于通过所述消息队列中读取的逻辑地址访问所述通讯数据。
优选的,所述资源管理器模块包括:
分配模块,用于根据所述进程通讯请求分配内存空间,并获取所述内存空间的逻辑地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市腾讯计算机系统有限公司,未经深圳市腾讯计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210164179.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:谐振峰抑制的浮筏隔振系统
- 下一篇:一种减震器防尘罩