一种基于静态链接的库操作系统动态更新方法
- 国知局
- 2024-07-31 22:48:46
本发明属于计算机,具体涉及一种基于静态链接的库操作系统动态更新方法。
背景技术:
1、随着云计算的快速发展和广泛应用,大量云服务只提供特定的服务,这些特定的单用途服务只需要很少的操作系统功能模块支持就能运行。传统虚拟机“大而全”的通用操作系统设计应用于此类服务存在资源开销大、启动速度慢、攻击面大等问题。
2、库操作系统(libos)是一种拥有新型架构的操作系统,它仅保留运行特定应用程序所需的必要系统库,减少了自身的大小和系统的攻击面。同时,libos具有单地址空间特性,并以函数调用的形式向上层应用程序提供系统调用,从而避免了与系统调用相关的高开销。libos具有的小型、快速、安全的优势,让其成为当今虚拟化技术的重要组成部分,并在云计算场景中展现出巨大的潜力。
3、库操作系统镜像由提供不同功能的微库编译链接而来。在生产环境中,用于构建库操作系统镜像的微库需要进行版本变更,可能是版本迭代、安全更新以及运行优化等。部分库操作系统还需要通过增添或移除微库以实现功能扩缩。因此,库操作系统需要进行微库级别的动态更新,以确保满足最新的功能性、安全性和性能需求。
4、由于库操作系统的静态设计,对内核微库的任何修改都需要重新编译映像并重新启动。这个过程不仅需要人工操作,还会导致代价高昂的服务停机。因此,如何在库操作系统运行时进行动态更新成为了需要解决的问题。
5、现有的库操作系统动态更新实现方案是基于动态链接实现的,该方案将新版本的微库编译成可进行动态链接的共享目标文件,并在运行时映射到动态段中的虚拟地址,加载时,微库依赖的库作为新库按依赖顺序加载进来,微库中所有未被解析的符号重新定位到新映射库中的正确地址。但该方案的运行时性能不佳,且仅适用于小部分更新场景,不支持更新依赖于库操作系统镜像本身的微库。
技术实现思路
1、目前,当库操作系统需要在运行时进行更新和功能扩缩时,只能停掉运行中的系统,并重新编译部署新的镜像。而停机并重新编译部署镜像将带来巨大的损失。因此,如何在库操作系统运行时进行动态更新成为了亟待解决的技术问题。库操作系统作为应用程序运行的基础需要维持高性能,保持库操作系统更新前后的高性能则是另一个待解决的问题。新版本的代码往往依赖库操作系统镜像中提供的接口,如何解决新版本代码对镜像中接口的依赖关系,从而保证更新后能正常提供服务也是一个需要解决的问题。
2、为解决上述技术问题,本发明采用的技术方案是:
3、一种基于静态链接的库操作系统动态更新方法包括以下步骤:
4、步骤1:扩展qemu接口,动态更新操作的执行通过虚拟中断触发所述接口;
5、步骤2:增强编译链接并启动libos镜像,实现将镜像的符号表编译进数据段,以供运行中的libos获取;
6、步骤3:编译生成可重定位目标文件格式的新版本微库;
7、步骤4:注入虚拟中断到运行中的libos;
8、步骤5:加载、解析并基于静态链接处理微库;
9、步骤6:初始化新版本微库。
10、与现有技术相比,本发明的有益效果是:本发明实现了在库操作系统运行时进行微库级别的动态更新,通过虚拟中断注入的方式触发更新操作,最大限度降低动态更新的开销;使用微库可被加载入任意可用内存段的设计,让动态更新更加灵活;将载入内存中的微库与内核静态链接,维持库操作系统的高运行时性能。该方法具有强兼容性、高灵活性、高可用性,并维持了高性能。
技术特征:1.一种基于静态链接的库操作系统动态更新方法,其特征在于该方法包括以下步骤:
2.根据权利要求1所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:步骤1具体是:
3.根据权利要求1所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:步骤2具体是:
4. 根据权利要求3所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:step 3中存储在全局变量中的符号值与uk temp debug镜像中的实际的符号值部分不一致,再执行一次step 2,剥离uk temp debug的符号表,编译生成symbols2.o以修正符号地址。
5.根据权利要求1所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:在步骤3后还包括使用strip命令剔除debug段。
6.根据权利要求1所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:步骤5具体是:
7.根据权利要求6所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:所述的重定位是指对库文件指令中每一处对外部符号的引用进行地址修正;所述的重定位表是指在可重定位elf格式的库文件中,包含0个或多个以.rel开头的段;重定位表记录了重定位信息,包括需要修改的指令的位置以及指令的哪一部分需要被修改。
8.根据权利要求1至7中任一项所述的一种基于静态链接的库操作系统动态更新方法,其特征在于:还包括步骤7:卸载旧版本微库。
技术总结本发明公开了一种基于静态链接的库操作系统动态更新方法。本发明首先扩展QEMU接口,动态更新操作的执行通过虚拟中断触发接口;其次增强编译链接并启动LibOS镜像,实现将镜像的符号表编译进数据段,以供运行中的LibOS获取;编译生成可重定位目标文件格式的新版本微库;然后注入虚拟中断到运行中的LibOS;加载、解析并基于静态链接处理微库;最后初始化新版本微库。本发明实现了在库操作系统运行时进行微库级别的动态更新,通过虚拟中断注入的方式触发更新操作,最大限度降低动态更新的开销;使用微库可被加载入任意可用内存段的设计,让动态更新更加灵活;将载入内存中的微库与内核静态链接,维持库操作系统的高运行时性能。技术研发人员:赵新奎,汪富慧,占羽淳,杨牧宇,尹建伟,邓水光受保护的技术使用者:浙江大学技术研发日:技术公布日:2024/7/29本文地址:https://www.jishuxx.com/zhuanli/20240730/194752.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表