操作系统中共享对象的处理方法及处理装置与流程

文档序号:33935960发布日期:2023-04-22 15:24阅读:82来源:国知局
本公开涉及嵌入式操作系统,特别涉及一种操作系统中共享对象的处理方法及处理装置、电子设备、计算机可读介质。
背景技术
::1、在操作系统中,应用程序可表示为可重定位(relocatable,rel)文件,rel文件通常包含地址未确定的代码、数据和重定位信息,根据rel文件中重定位信息可将rel文件动态加载到任何地址处运行。rel文件加载到内存中并对rel文件中代码和数据重定位后,rel文件中代码和数据将有确定的地址。在操作系统中通过rel文件可以轻松拓展已发布的操作系统固件。2、操作系统中rel文件主要有静态链接和动态链接两种,当rel文件由中间目标文件和静态库静态链接而成时,多个rel文件中将会有重复的代码,这无疑会增加磁盘和内存的消耗。此外,静态链接不利于应用程序所依赖的模块或库(如内存相关、网络相关的模块或库等)的更新,如果一个应用程序所依赖的模块或库需要更新(如网络库中一个函数需要改变)时,那么所有的应用程序都需要用最新的模块或库再一次编译链接,生成最终的应用程序,因此当部分代码修改时需要重新链接整个rel文件,使得应用程序版本升级较繁琐;使用动态链接可将rel文件和共享对象(共享库)分割开,在运行rel文件时加载共享对象,这样磁盘和内存中将只有一份共享对象代码,并且可在不修改rel文件情况下升级共享对象。3、在相关技术中,nuttx是一个实时嵌入式操作系统(embedded rtos),是市面上主流嵌入式操作系统之一,但其对固件拓展的支持仅为静态链接的rel文件,并不支持动态链接,因此想要拓展操作系统固件时只能使用静态链接的rel文件,这无疑增加了磁盘和内存空间的消耗。技术实现思路1、本公开提供一种操作系统中共享对象的处理方法及处理装置、电子设备、计算机可读介质。2、第一方面,本公开实施例提供一种操作系统中共享对象的处理方法,包括:3、生成共享对象和当前应用镜像;4、从生成的多个共享对象中获取所述当前应用镜像所依赖的共享对象,以生成所述当前应用镜像对应的依赖文件;5、根据所述多个共享对象、所述当前应用镜像和所述依赖文件生成文件系统,并在操作系统启动时将所述文件系统挂载到操作系统节点上;6、在运行所述当前应用镜像之前,解析所述依赖文件,并依次将所述依赖文件中记录的共享对象安装至所述当前应用镜像所在内存;7、在所述当前应用镜像运行结束之后,从所述内存中卸载所述依赖文件中记录的共享对象。8、在一些实施例中,所述共享对象的格式为可执行与可链接格式,所述共享对象的类型为可重定位类型,所述当前应用镜像的格式为可重定位格式。9、在一些实施例中,所述共享对象包含符号数组和初始化函数,所述符号数组包含至少一个符号;生成共享对象的步骤,包括:10、将待处理源码中多个源码文件分别编译成第一目标文件,并将多个源码文件分别对应的第一目标文件进行链接,得到初始共享对象;11、从所述初始共享对象中提取符号,并将所述初始共享对象中的符号写入预设符号文件中的符号数组,所述符号数组用于记录所述初始共享对象中的符号;12、根据所述符号数组及所述符号数组中的符号数量生成所述初始共享对象对应的初始化函数;13、将所述符号数组和所述初始化函数分别编译成各自对应的第二目标文件;14、将所述符号数组对应的第二目标文件和所述初始化函数对应的第二目标文件与所述初始共享对象进行链接,生成所述共享对象。15、在一些实施例中,从生成的多个共享对象中获取所述当前应用镜像所依赖的共享对象,以生成所述当前应用镜像对应的依赖文件的步骤,包括:16、提取所述当前应用镜像中未定义的符号;17、将所述未定义的符号与每个共享对象中的符号进行比对;18、将比对结果为匹配的共享对象的名称记录在所述当前应用镜像对应的依赖文件中。19、在一些实施例中,在解析所述依赖文件的步骤之前,所述处理方法还包括:将所述当前应用镜像加载到所述内存中;20、在依次将所述依赖文件中记录的共享对象安装至所述当前应用镜像所在内存的步骤之后,所述处理方法还包括:21、对所述内存中的所述当前应用镜像进行重定位;22、在重定位结束后创建所述当前应用镜像的任务,并运行所述当前应用镜像。23、在一些实施例中,在所述当前应用镜像运行结束之后,在从所述内存中卸载所述依赖文件中记录的共享对象之前,所述处理方法还包括:24、判断所述依赖文件中记录的共享对象当前是否被其他应用镜像使用;25、若所述依赖文件中记录的共享对象当前未被其他应用镜像使用,则执行从所述内存中卸载所述依赖文件中记录的共享对象的步骤。26、第二方面,本公开实施例提供一种操作系统中共享对象的处理装置,包括:27、生成单元,被配置为生成共享对象和当前应用镜像;28、记录单元,被配置为从生成的多个共享对象中获取所述当前应用镜像所依赖的共享对象,以生成所述当前应用镜像对应的依赖文件;29、挂载单元,被配置为根据所述多个共享对象、所述当前应用镜像和所述依赖文件生成文件系统,并在操作系统启动时将所述文件系统挂载到操作系统节点上;30、安装单元,被配置为在运行所述当前应用镜像之前,解析所述依赖文件,并依次将所述依赖文件中记录的共享对象安装至所述当前应用镜像所在内存;31、卸载单元,被配置为在所述当前应用镜像运行结束之后,从所述内存中卸载所述依赖文件中记录的共享对象。32、在一些实施例中,所述记录单元被配置为:33、提取所述当前应用镜像中未定义的符号;34、将所述未定义的符号与每个共享对象中的符号进行比对;35、将比对结果为匹配的共享对象的名称记录在所述当前应用镜像对应的依赖文件中。36、在一些实施例中,所述处理装置还包括判断单元,所述判断单元被配置为在所述当前应用镜像运行结束之后,判断所述依赖文件中记录的共享对象当前是否被其他应用镜像使用;37、所述卸载单元被配置为若所述依赖文件中记录的共享对象当前未被其他应用镜像使用,则从所述内存中卸载所述依赖文件中记录的共享对象。38、第三方面,本公开实施例提供一种电子设备,包括:39、至少一个处理器;以及40、与所述至少一个处理器通信连接的存储器;其中,41、所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的处理方法。42、第四方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如第一方面所述的处理方法。43、本公开实施例中,操作系统中共享对象的处理方法用于实现对操作系统中共享对象进行管理,在编译应用程序时通过依赖文件记录应用镜像所依赖的共享对象,从而能够根据应用镜像对共享对象的使用情况自动安装和卸载共享对象,无需编码人员主动安装,使共享对象的使用更加简单、灵活,以便于操作系统固件的拓展,使拓展操作系统固件更加简单、灵活,并能够有效降低操作系统内存的消耗,节省操作系统内存空间。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1