[发明专利]一种动态链接库的加载方法及装置有效
申请号: | 202010077751.9 | 申请日: | 2020-01-31 |
公开(公告)号: | CN113204377B | 公开(公告)日: | 2022-12-06 |
发明(设计)人: | 王涛;孙文涌 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 赵玲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 链接 加载 方法 装置 | ||
一种动态链接库的加载方法及装置,涉及计算机技术领域。其中,该方法应用于电子设备,包括:响应于加载第一动态链接库的请求,判断第一动态链接库的标识是否在已加载动态链接库列表中;若不在,则为第一动态链接库分配句柄,并将第一动态链接库的标识以及分配的句柄添加到已加载动态库列表中;判断第一动态链接库是否为整合动态链接库;若是,则将M被整合的动态链接库的标识以及分配的句柄添加到已加载动态链接库列表中,第一动态链接库是编译器对M个被整合的动态链接库的源码编译得到的;根据为第一动态链接库分配的句柄,将第一动态链接库加载到电子设备的运行内存中。这种技术方案有助于降低运行内存空间的浪费和时间开销。
技术领域
本申请涉及计算机技术领域,特别涉及一种动态链接库的加载方法及装置。
背景技术
电子设备中,不同应用程序的运行可以通过动态链接库(dynamic link library,DLL)实现代码、或变量等的共享,有助于节省磁盘和运行内存空间的开销。其中,动态静态库是以段(section)进行组织的,每个段以页(例如4KB)对齐。然而,在段的实际大小不足页的大小的情况下,容易造成运行内存空间的浪费。尤其当电子设备中的动态链接库的个数较多时,运行内存空间的浪费可能会越严重。以200个动态链接库,每个动态链接库包括代码段、数据段和BSS段,每个段以4KB对齐为例,如果每个段平均浪费2KB内存空间,200个动态链接库大概浪费1200KB运行内存空间。
此外,应用程序在根据某一动态链接库运行的情况下,针对该动态链接库,需要先重定位,进行符号解析和绑定,才能使用该动态链接库。而且该动态链接库还可能依赖其他动态链接库。因此,应用程序不但需要对该动态链接库重定位,也需要对该动态链接库依赖的其它动态链接库重定位,才能实现正常运行,这样容易导致时间开销较大。
发明内容
本申请提供了一种动态链接库的加载方法及装置,有助于降低运行内存空间的浪费、以及节省应用程序运行的时间开销。
第一方面,本申请实施例提供了一种动态链接库的加载方法,应用于电子设备,具体包括:响应于应用程序加载第一动态链接库的请求,判断第一动态链接库的标识是否在已加载动态链接库列表中;当第一动态链接库的标识不在已加载动态链接库列表中时,执行步骤A~C,步骤A,为第一动态链接库分配句柄,并将第一动态链接库的标识以及为第一动态链接库分配的句柄添加到已加载动态库列表中;步骤B,判断第一动态链接库是否为整合动态链接库;当第一动态链接库为整合动态链接库时,执行步骤1和步骤2,并在执行步骤2之后执行步骤C。步骤2,将M被整合的动态链接库的标识以及为第一动态链接库分配的句柄添加到已加载动态链接库列表中,第一动态链接库是编译器对M个被整合的动态链接库的源码编译得到的;M为大于1的正整数;步骤2,根据为第一动态链接库分配的句柄对第一动态链接库重定位,并将第一动态链接库加载到电子设备的运行内存中。步骤C,向所述应用程序返回为所述第一动态链接库分配的句柄。
本申请实施例中由于电子设备可以响应于应用程序加载第一动态链接库的请求,判断当第一动态链接库的标识不在已加载动态链接库列表时,不但可以为第一动态链接库分配句柄,并将第一动态链接库的标识以及分配的句柄添加到已加载动态链接库列表中,还可以判断第一动态链接库是否为整合动态链接库,而整合动态链接库是通过对多个被整合的动态链接库的源码编译得到的,因而有助于降低运行内存空间的浪费。此外,当第一动态链接库为整合动态链接库时,电子设备还将被整合的动态链接库的标识以及为第一动态链接库分配的句柄添加到已加载动态链接库中,有助于避免电子设备的重复加载,还有助于减少应用程序对动态链接库重定位的次数,从而降低时间开销。
在一种可能的设计中,第一动态链接库为整合动态链接库时,该第一动态链接库包括虚拟库列表段和N个二进制段,其中,虚拟库列表段包括M个被整合的动态链接库的标识,N个二进制段中的任意一个二进制段包括M个被整合的动态链接库中对应的二进制段的内容;N为大于或等于1的正整数。通过在整合动态链接库中增加虚拟库列表段,可以使得电子设备识别出整合动态链接库是通过对哪些动态链接库的源码编译得到的,有助于便于应用程序的调用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010077751.9/2.html,转载请声明来源钻瓜专利网。