[发明专利]共享库升级方法及装置有效
申请号: | 201710127929.4 | 申请日: | 2017-03-06 |
公开(公告)号: | CN107085514B | 公开(公告)日: | 2021-02-19 |
发明(设计)人: | 付国振 | 申请(专利权)人: | 北京安博通科技股份有限公司 |
主分类号: | G06F8/60 | 分类号: | G06F8/60;G06F9/4401 |
代理公司: | 北京弘权知识产权代理事务所(普通合伙) 11363 | 代理人: | 逯长明;许伟群 |
地址: | 100120 北京市西城*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 共享 升级 方法 装置 | ||
本申请公开了一种共享库升级方法及装置,其中,所述方法包括:当检测到目标共享库覆盖原共享库的操作时,将所述目标共享库加载到系统内存;确定当前正在使用的所述原共享库中的函数;从所述目标共享库中读取所述函数的存储地址;使用所述存储地址替换预设置的所述函数对应的地址;当替换完成全部所述函数的地址时,将所述原共享库从所述系统内存中删除。本发明实施例的技术方案,能够在不影响程序运行的状态下,删除原共享库,以实现共享库在系统内存中的动态替换,从而能够避免设备重启,进而不仅能够节省共享库升级的时间,还能够保持当前所有的业务进程持续执行,提高业务进程的执行效率。
技术领域
本申请涉及操作系统领域,尤其涉及一种共享库升级方法及装置。
背景技术
Linux操作系统的可执行程序包括静态链接的可执行程序和动态链接的可执行程序,其中,静态链接的可执行程序包含执行所需的所有函数,而动态链接的可执行程序不包含执行所需的函数,在运行时,需要从维护执行所需的函数的共享库中读取相应函数。其中,基于Linux操作系统运行的应用软件的程序即为动态链接的可执行程序。
具体的,共享库作为应用软件运行的“函数工具箱”,存储有多个应用软件程序运行所需的函数,相应的,各个应用软件也预先维护有待调用函数的函数标识。当检测到应用软件需要调用某函数时,通常操作系统读取该函数的函数标识,并建立函数标识与其在共享库中存储地址的对应关系,然后,操作系统触发应用软件通过对应关系确定该函数的存储地址,进而,应用软件从该存储地址中读取该函数,并调用该函数执行程序。
现有技术中,如果操作系统出现问题,通常通过修改共享库中的函数,或者在共享库中添加调制信息的方式修复。由于共享库的内容被修改了,其中函数的存储地址发生了改变,所以,应当将修改后的共享库作为函数调用的基础。然而,由于程序运行的需要,操作系统无法立即使用修改后的共享库替换修改前的共享库,因此,当操作系统建立函数标识与其存储地址的对应关系时,能够查找到两个存储地址,从而会导致程序混乱,无法执行。
有鉴于此,现有技术中,当生成修改后的共享库之后,通常通过重启设备的方式,强制删除修改前的共享库,从而使得操作系统在建立函数标识与其存储地址的对应关系时,能够得到唯一对应的存储地址。然而,重启设备不仅浪费时间,而且还会切断当前所有业务的进程,降低业务进程的执行效率。
发明内容
本申请提供了一种共享库升级方法及装置,以解决现有技术浪费时间,切断当前业务进程的问题。
第一方面,本申请提供了一种共享库升级方法,所述方法包括:
当检测到目标共享库覆盖原共享库的操作时,将所述目标共享库加载到系统内存;
确定当前正在使用的所述原共享库中的函数;
从所述目标共享库中读取所述函数的存储地址;
使用所述存储地址替换预设置的所述函数对应的地址;
当替换完成全部所述函数的地址时,将所述原共享库从所述系统内存中删除。
可选的,所述将所述目标共享库加载到系统内存包括:
调用监控进程将所述目标共享库由硬盘加载到系统内存;
或者,
调用当前空闲的运行进程将所述目标共享库由硬盘加载到系统内存。
可选的,所述从所述目标共享库中读取所述函数的存储地址,包括:
确定调用所述函数的应用软件;
调用所述应用软件的目标进程遍历所述目标共享库,其中,所述目标进程是使用所述函数执行操作的进程;
当查找到所述函数时,读取所述函数在所述目标共享库中对应的地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京安博通科技股份有限公司,未经北京安博通科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710127929.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:球形砂再生自磨装置及其系统
- 下一篇:个性化页面生成方法及装置