[发明专利]一种调用函数的方法及系统无效

专利信息
申请号: 200710086918.2 申请日: 2007-03-20
公开(公告)号: CN101271402A 公开(公告)日: 2008-09-24
发明(设计)人: 张宇;李建斌;徐志贤 申请(专利权)人: 华为技术有限公司
主分类号: G06F9/46 分类号: G06F9/46
代理公司: 北京集佳知识产权代理有限公司 代理人: 马敬;逯长明
地址: 518129广东省*** 国省代码: 广东;44
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 调用 函数 方法 系统
【说明书】:

技术领域

发明涉及软件开发技术领域,特别涉及一种调用函数的方法及系统。

背景技术

目前大的项目开发中,通常做法是按功能模块分工开发,最后提供功能函数库给上层应用程序调用,形成一个完整的系统。

包含了很多函数和变量的目标代码的文件被称为“库”,库目前分为静态库和动态库。

静态库:其结构比较简单,是将所有目标代码放在一起,链接时链接程序根据每一份目标代码的符号表查找相应的符号(函数和变量的名字),若查找到则将该函数里面需要定位的符号进行定位,然后将整块函数代码放进可执行文件里,若找不到则报错退出。

使用静态库时,由于链接后产生的可执行文件包含了所有需要调用函数的代码,因此占用磁盘空间比较大;而且,如果有多个调用相同库函数的进程在内存中同时运行,则内存中就存在多份相同的库函数代码,因此占用内存空间比较多;静态库一经改动所有调用此静态库的函数模块都需重新编译。

动态库:其引入就是为了解决静态库的问题所产生的,其加载方式有下面两种:

a)静态绑定

使用静态绑定的程序在一开始载入内存时,主控程序就会把程序所有调用到的动态代码的地址算出、确定下来,也即启动时将所有可能用到的函数加载到内存。这种方式使得程序的初始化比较长,不过初始化成功后,程序的运行速度比较快。

b)动态绑定

使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,主控程序才计算动态代码的逻辑地址。

目前最常用的是使用动态库的动态绑定方式,因为其可以实现调用的灵活性。即在调用处用dlopen()函数开启动态库,并用dlsym()函数调出动态库中的函数符号进行使用,使用完毕后用dlclose()函数关闭动态库。下面以Unix环境下,需调用test()函数为例进行说明,参见图1,其是现有应用动态绑定的方式调用函数的流程示意图。

步骤101,加载主控程序。

步骤102,通过dlopen()函数获取调用libtest.so动态库的句柄A。

步骤103,根据句柄A和待调用的test()函数名,用dlsym()函数获取test()函数对应的句柄B。

步骤104,根据句柄B执行test()函数,执行完毕后调用dlclose()函数关闭此句柄。

至此,实现动态绑定方式下的test()函数的调用。

动态库的动态绑定技术虽然实现了动态库函数的灵活调用,但是在实现过程中,发明人发现至少存在如下问题:

1)对于用户来说函数的调用并不可控制,因为函数的调用都已经固化在主控程序的代码中不能更改。

2)由于在调用动态库函数时,需要调用dlopen(),dlSym()等函数获得动态库中的函数句柄,这在运行过程中都比较消耗性能,因此动态绑定使其运行期性能比较低。

3)无法支持用户的二次开发,这是因为,从上例可以看出test()函数所在动态库,以及函数的参数信息必须都是已知的,且已经固化在主控程序的代码中才能被调用,如果用户想在主控程序中调用其自己开发的newTest()函数,就必须要修改主控程序,并重新编译其主控程序的执行程序,并发布新版本,这对于开发商来说是不现实的。

发明内容

本发明实施例提供了一种调用函数的方法及系统,使得可以根据用户的需求来控制是否调用动态库函数,并提高运行期的性能。

本发明实施例的技术方案包括:

一种调用函数的方法,配置函数调用计划并保存,该方法还包括以下步骤:

将函数动态库中所有的函数加载到函数资源池;

获得所述函数调用计划,根据所述调用计划从所述函数资源池中调用函数并执行。

一种调用函数的系统,包括:

函数动态库,用于存储所有待调用的函数;

配置单元,用于配置函数调用计划并保存;

第一加载单元,用于将函数动态库中的所有函数加载到函数资源池;

函数资源池,用于保存被加载的函数;

主控单元,用于调用所述函数调用计划,根据所述调用计划从所述函数资源池中调用函数并执行。

应用本发明实施例,由于调用计划是由用户配置的,因而可以根据用户的需求来控制是否调用动态库函数,以及如何调用等等,再有,由于启动时将函数动态库中的所有函数都加载到函数资源池,避免了运行期内调用函数时动态开启函数动态库的性能开销,因而提高了运行期的性能。

附图说明

图1是现有应用动态绑定的方式调用函数的流程示意图;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710086918.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top