动态库加载方法、核部署的调整方法及相关装置制造方法及图纸

技术编号:33510313 阅读:20 留言:0更新日期:2022-05-19 01:19
本申请公开了一种动态库加载方法、核部署的调整方法及相关装置,该方法包括:当在目标内核加载第一应用时,从文件系统中获得目标内核对应的所有待加载的动态库的可执行文件;所有待加载的动态库的可执行文件中的第一平台动态库版本关联的动态库的可执行文件为支持第一应用加载的平台的最新动态库版本;对所有待加载的动态库的可执行文件分别预链接后存储,然后获取每个待加载的动态库预链接后的可执行文件,并将每个待加载的动态库预链接后的可执行文件加载到目标内核。如此,在后续每次需要在目标内核上切换加载第一应用时,可以直接从文件系统获得与平台的最新动态库版本兼容匹配的预链接后的可执行文件,避免了动态库加载失败的问题。加载失败的问题。加载失败的问题。

【技术实现步骤摘要】
动态库加载方法、核部署的调整方法及相关装置


[0001]本申请涉及计算机
,尤其涉及一种动态库加载方法、核部署的调整方法及相关装置。

技术介绍

[0002]多内核的处理器可以同时支持多种应用并发。作为示例,在基站中多内核的处理器支持4G的LTE制式和5G的NR制式,4G用户有100个,分布在3个小区;5G用户有50个,分布在3个小区。处理器的内核1、内核2和内核3负责4G用户的资源分配,处理器的内核4和内核5负责5G用户的资源分配。实际应用中,随着人员的流动或5G普及使用等原因,4G用户与5G用户数量可能发生变化,例如4G用户下降至50个,5G用户上升至100个。此时,由于5G用户数量的激增,内核4和内核5已经不足以支持所有5G用户,为此,需要对4G LTE制式和5G NR制式的核部署进行实时、快速的调整,例如将内核3调整部署为负责5G用户的资源分配。此时,涉及到将内核3的4G应用相关的动态库切换为5G应用相关的动态库,期间涉及动态库的加载和卸载。为了提升用户的使用体验,以动态库加载为例,现有技术中可在代码编译阶段对相关的动态库预链接以进行重定位。这样节约了动态库加载时重定位消耗的时间,提升动态库加载速度。
[0003]但是由于预链接过程是在编译阶段进行的,如果支持业务应用运行的平台发生动态库版本更新,此前预链接得到的动态库的可执行文件的版本与平台实际最新的动态库版本并不兼容,导致动态库加载失败的问题时有发生。如何在提升动态库加载速度的基础上保证动态库成功加载,已经成为本领域急需解决的技术问题。
>
技术实现思路

[0004]本申请提供了一种动态库加载方法、核部署的调整方法及相关装置,以提核部署发生调整时动态库的加载速度,并解决动态库加载失败的问题。
[0005]本申请实施例提供了一种动态库加载方法,包括:
[0006]当在目标内核加载第一应用时,从文件系统中获得所述目标内核对应的所有待加载的动态库的可执行文件;所述所有待加载的动态库的可执行文件包括:第一业务动态库版本关联的动态库的可执行文件和第一平台动态库版本关联的动态库的可执行文件,其中,所述第一平台动态库版本为支持所述第一应用加载的平台的最新动态库版本;
[0007]对所述所有待加载的动态库的可执行文件分别预链接,获得所述所有待加载的动态库中每个待加载的动态库预链接后的可执行文件,并将每个待加载的动态库预链接后的可执行文件存入所述文件系统中;
[0008]从所述文件系统获取每个待加载的动态库预链接后的可执行文件,并将每个待加载的动态库预链接后的可执行文件加载到所述目标内核。
[0009]可选地,在所述从文件系统中获得所有待加载的动态库的可执行文件之前,还包括:
[0010]接收动态库加载请求;所述动态库加载请求指示了所有待加载的动态库和所述目标内核。
[0011]可选地,在所述将每个待加载的动态库预链接后的可执行文件加载到处理器的目标内核时,所述方法还包括:
[0012]以预先编排的存储地址,将每个待加载的动态库预链接后的可执行文件存入内存中所述目标内核对应的存储空间中。
[0013]可选地,在所述对所述所有待加载的动态库的可执行文件分别预链接时,所述方法还包括:
[0014]根据所述内存的存储粒度和每个待加载的动态库的可执行文件的段大小,对每个待加载的动态库预链接后的可执行文件的存储地址进行编排。
[0015]可选地,所述根据所述内存的存储粒度和每个待加载的动态库的可执行文件的段大小,对每个待加载的动态库预链接后的可执行文件的存储地址进行编排,具体包括:
[0016]根据所述内存的存储粒度和最新编排好存储地址的动态库的可执行文件的段大小,确定所述最新编排好存储地址的动态库的可执行文件的剩余存储空间;
[0017]确定出加载顺序靠前的n个存储地址未编排的动态库,并确定所述n个存储地址未编排的动态库的可执行文件的段大小;所述n为正整数;
[0018]从所述n个存储地址未编排的动态库中确定出可存入所述剩余存储空间且可执行文件的段大小与所述剩余存储空间最接近的一个动态库,对该动态库预链接后的可执行文件的存储地址编排至所述剩余存储空间的地址范围内。
[0019]可选地,所述动态库的可执行文件的段大小包括:所述动态库的可执行文件中代码段的大小和数据段的大小。
[0020]可选地,所述文件系统包括:至少一个动态库版本容器;
[0021]所述至少一个动态库版本容器包括:动态库版本第一容器;所述动态库版本第一容器中包括与所述第一应用加载相关的所有动态库的可执行文件;所述与所述第一应用加载相关的所有动态库的可执行文件包括:目标内核对应的所有待加载的动态库的可执行文件;
[0022]所述从文件系统中获得目标内核对应的所有待加载的动态库的可执行文件,具体包括:
[0023]从所述动态库版本第一容器中获得所述目标内核对应的所有待加载的动态库的可执行文件。
[0024]可选地,所述文件系统还包括:与每个动态库版本容器对应的动态库预链接版本容器,其中包括与所述动态库版本第一容器对应的动态库预链接版本第一容器;
[0025]所述将每个待加载的动态库预链接后的可执行文件存入所述文件系统中,具体包括:
[0026]将每个待加载的动态库预链接后的可执行文件存入所述动态库预链接版本第一容器;
[0027]所述从所述文件系统获取每个待加载的动态库预链接后的可执行文件,具体包括:
[0028]从所述动态库预链接版本第一容器获取每个待加载的动态库预链接后的可执行
文件。
[0029]可选地,还包括:当再次在所述目标内核加载所述第一应用时,从所述文件系统直接获取所述目标内核对应的所有待加载的动态库预链接后的可执行文件,将其中每个待加载的动态库预链接后的可执行文件加载到所述目标内核。
[0030]本申请实施例还提供了一种核部署的调整方法,包括:
[0031]接收核部署调整请求;所述核部署调整请求指示了目标内核对应的所有待卸载的动态库和所述目标内核对应的所有待加载的动态库;
[0032]根据所述核部署调整请求,将所述所有待卸载的动态库从所述目标内核上卸载,并从文件系统中获得所述所有待加载的动态库预链接后的可执行文件,将所述所有待加载的动态库预链接后的可执行文件加载到所述目标内核;
[0033]所述所有待加载的动态库预链接后的可执行文件为依据所有待加载的动态库的可执行文件预链接后获得的;所述所有待加载的动态库的可执行文件,包括:第一业务动态库版本关联的动态库的可执行文件和第一平台动态库版本关联的动态库的可执行文件,其中,所述第一平台动态库版本为支持所述第一应用加载的平台的最新动态库版本。
[0034]本申请实施例还提供了一种动态库加载装置,包括:
[0035]获取模块用于,当在目标内核加载第一应用时,从文件系统中获得所述目标内核对应的所有待加载的动态库的可执行文件;本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种动态库加载方法,其特征在于,包括:当在目标内核加载第一应用时,从文件系统中获得所述目标内核对应的所有待加载的动态库的可执行文件;所述所有待加载的动态库的可执行文件包括:第一业务动态库版本关联的动态库的可执行文件和第一平台动态库版本关联的动态库的可执行文件,其中,所述第一平台动态库版本为支持所述第一应用加载的平台的最新动态库版本;对所述所有待加载的动态库的可执行文件分别预链接,获得所述所有待加载的动态库中每个待加载的动态库预链接后的可执行文件,并将每个待加载的动态库预链接后的可执行文件存入所述文件系统中;从所述文件系统获取每个待加载的动态库预链接后的可执行文件,并将每个待加载的动态库预链接后的可执行文件加载到所述目标内核。2.根据权利要求1所述的动态库加载方法,其特征在于,在所述从文件系统中获得所有待加载的动态库的可执行文件之前,还包括:接收动态库加载请求;所述动态库加载请求指示了所有待加载的动态库和所述目标内核。3.根据权利要求1所述的动态库加载方法,其特征在于,在所述将每个待加载的动态库预链接后的可执行文件加载到处理器的目标内核时,所述方法还包括:以预先编排的存储地址,将每个待加载的动态库预链接后的可执行文件存入内存中所述目标内核对应的存储空间中。4.根据权利要求3所述的动态库加载方法,其特征在于,在所述对所述所有待加载的动态库的可执行文件分别预链接时,所述方法还包括:根据所述内存的存储粒度和每个待加载的动态库的可执行文件的段大小,对每个待加载的动态库预链接后的可执行文件的存储地址进行编排。5.根据权利要求4所述的动态库加载方法,其特征在于,所述根据所述内存的存储粒度和每个待加载的动态库的可执行文件的段大小,对每个待加载的动态库预链接后的可执行文件的存储地址进行编排,具体包括:根据所述内存的存储粒度和最新编排好存储地址的动态库的可执行文件的段大小,确定所述最新编排好存储地址的动态库的可执行文件的剩余存储空间;确定出加载顺序靠前的n个存储地址未编排的动态库,并确定所述n个存储地址未编排的动态库的可执行文件的段大小;所述n为正整数;从所述n个存储地址未编排的动态库中确定出可存入所述剩余存储空间且可执行文件的段大小与所述剩余存储空间最接近的一个动态库,对该动态库预链接后的可执行文件的存储地址编排至所述剩余存储空间的地址范围内。6.根据权利要求3或4所述的动态库加载方法,其特征在于,所述动态库的可执行文件的段大小包括:所述动态库的可执行文件中代码段的大小和数据段的大小。7.根据权利要求1-5任一项所述的动态库加载方法,其特征在于,所述文件系统包括:至少一个动态库版本容器;所述至少一个动态库版本容器包括:动态库版本第一容器;所述动态库版本第一容器中包括与所述第一应用加载相关的所有动态库的可执行文件;所述与所述第一应用加载相关的所有动态库的可执行文件包括:目标内核对应的所有待加载的动态库的可执行文件;
所述从文件系统中获得目标内核对应的所有待加载的动态库的可执行文件,具体包括:从所述动态库版本第一容器中获得所述目标内核对应的所有待加载的动态库的可执行文件。8.根据权利要求7所述的动态库加载方法,其特征在于,所述文件系统还包括:与每个动态库版...

【专利技术属性】
技术研发人员:欧炜陈计亮江维财徐高峰
申请(专利权)人:上海华为技术有限公司
类型:发明
国别省市:

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

1