[发明专利]进程运行方法及装置有效
申请号: | 201210055242.1 | 申请日: | 2012-03-05 |
公开(公告)号: | CN103294561A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 游晶;彭勇;邹代柱 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/445 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;曾旻辉 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 运行 方法 装置 | ||
【技术领域】
本发明涉及通信技术,特别是涉及一种进程运行方法及装置。
【背景技术】
应用程序模块采用的通信方式通常都是预先指定的。对于加载于进程内的应用程序模块,可以直接调用进程内其它应用程序模块中的函数;对于加载于进程外的应用程序模块,则需要通过进程间通信机制(Interprocess Communications,简称IPC)实现,以保证应用程序模块之间较好的隔离性,例如,在使用共享内存进行进程之间应用程序模块的通信时,创建、打开共享内存区域,以保证应用程序模块之间运行的稳定性。
在传统的多进程架构中,应用程序模块在进程中的分布关系是预先确定的,因此应用程序模块所采用的通信方式可以预先指定。但是,在应用程序模块可进行动态调度和加载的场景下,应用程度模块中进程内外的关系并不确定,预先为应用程序模块指定通信方式已经无法满足动态调度和加载的场景,进而使得进程的运行过程中缺乏调度灵活性。
【发明内容】
基于此,有必要提供一种能提高调度灵活性的进程运行方法。
此外,还有必要提供一种能提高调度灵活性的进程运行装置。
一种进程运行方法,包括如下步骤:
根据调用请求加载应用程序模块;
获取所述应用程序模块与所述请求调用的进程之间的分布关系;
根据所述分布关系获取所述应用程序模块的通信代理;
通过所述调用请求中目标应用程序模块所对应的通信代理,调用所述目标应用程序模块。
优选地,所述根据所述分布关系获取所述应用程序模块的通信代理的步骤为:
根据所述分布关系判断所述应用程序模块是否加载至请求调用的进程;
若是,则触发中心进程创建本地通信代理,并将所述本地通信代理与所述应用程序模块建立映射关系,
若否,则触发所述中心进程获取远程通信代理,并建立所述远程通信代理与所述应用程序模块之间的映射关系
优选地,所述通过所述调用请求中目标应用程序模块所对应的通信代理,调用所述目标应用程序模块包括:
根据所述调用请求判断发起请求的应用程序模块和目标应用程序模块是否处于同一进程;
若是,则根据所述调用请求在所述中心进程中查找与目标应用程序模块对应的本地通信代理;
通过所述本地通信代理进行所述发起请求的应用程序模块和目标应用程序模块的通信。
优选地,所述通过所述调用请求中目标应用程序模块所对应的通信代理,调用所述目标应用程序模块还包括:
当根据所述调用请求判断到发起请求的应用程序模块和目标应用程序模块未处于同一进程,则根据所述调用请求在所述中心进程中查找与目标应用程序模块对应的远程通信代理;
通过所述远程通信代理进行所述发起请求的应用程序模块和目标应用程序模块的通信。
优选地,所述根据所述调用请求在所述中心进程中查找与目标应用程序模块对应的本地通信代理的步骤之前还包括:
根据所述调用请求从堆上分配内存;
所述根据所述调用请求在所述中心进程中查找与目标应用程序模块对应的远程通信代理的步骤之前还包括:
通过转调远程进程调用模块从共享内存中分配内存;
在所述分配的内存中通过Hook系统函数GetMessage将通信的数据以自定义消息的形式传递到消息线程,进而使用回调函数进行处理通信的数据。
一种进程运行装置,包括:
模块加载单元,用于根据调用请求加载应用程序模块;
关系获取单元,用于获取所述应用程序模块与所述请求调用的进程之间的分布关系;
代理获取单元,用于根据所述分布关系获取所述应用程序模块的通信代理;
模块调用单元,用于通过所述调用请求中目标应用程序模块所对应的通信代理,调用所述目标应用程序模块。
优选地,所述代理获取单元包括:
加载判断单元,用于判断所述应用程序模块是否加载至请求调用的进程,若是,则通知本地通信处理单元,若否,则通知远程通信处理单元;
所述本地通信处理单元用于触发中心进程创建本地通信代理,并将所述本地通信代理与所述应用程序模块建立映射关系;
所述远程通信处理单元用于触发所述中心进程获取远程通信代理,并建立所述远程通信代理与所述应用程序模块之间的映射关系。
优选地,所述模块调用单元包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210055242.1/2.html,转载请声明来源钻瓜专利网。