多级存储的重部署方法及装置制造方法及图纸

技术编号:8105769 阅读:147 留言:0更新日期:2012-12-21 04:36
本发明专利技术的实施例公开了一种多级存储的重部署方法及装置,涉及信息技术领域,可以无需修改源代码实现对重定向文件符号的重部署。本发明专利技术的实施方法包括:从重定向文件中获取待重部署的符号的当前位置信息;根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。本发明专利技术的实施例主要用于多级存储的重部署过程中。

【技术实现步骤摘要】

本专利技术涉及信息
,尤其涉及一种多级存储的重部署方法及装置
技术介绍
在软件代码开发中,存在大量第三方以库形式提供的重定向文件,采用多级存储的方式将重定向文件中的代码部署到不同级别的内存上,在软件代码开发中可以直接使用这些重定向文件提高代码开发效率,由于软件开发目的不同,对重定向文件中提供的符号使用的频率也会不同,直接使用第三方提供的重定向文件,会造成各级内存不能得到高效 利用。因此,通常需要重新部署重定向文件中各代码的存储位置,从而充分发挥各级内存在速度、容量、成本方面的优势,达到最优性价比。为了提高多级存储的性价比,需要调整重定向文件中各符号的存储位置,现有技术提供的多级存储的重部署方法为首先,在源代码编译时为每个符号指定节区属性,多个符号可以共用一个节区属性,再通过编译器编译成可重定向文件,将节区与内存块的映射关系写入链接脚本,然后生成镜像文件,完成符号的部署。然后,通过修改链接脚本中节区与内存块的映射关系,重新生成镜像文件,完成符号重部署。在实现上述多级存储的重部署方法时,专利技术人发现现有技术至少存在如下问题由于所述重定向文件中符号与节区已绑定,修改链接脚本中节区与内存块的映射关系只能在节区ー级做调整,无法对单个符号进行重部署。在编译时为每个符号指定ー个不同的节区属性,可以修改单个符号的存储位置,但是需要获取到源代码,并且对源代码的编译需要花费大量人工成本。
技术实现思路
本专利技术的实施例提供一种多级存储的重部署方法及装置,可以无需修改源代码实现对重定向文件符号的重部署。为达到上述目的,本专利技术的实施例采用如下技术方案一方面,本专利技术实施例提供一种多级存储的重部署方法,包括从重定向文件中获取待重部署的符号的当前位置信息;根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。另ー方面,本专利技术实施例提供一种多级存储的重部署装置,包括第一获取单元,用于从重定向文件中获取待重部署的符号的当前位置信息;重部署単元,用于根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。本专利技术实施例提供的多级存储的重部署方法及装置,通过从重定向文件中获取待重部署的符号的当前位置信息,根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署,与现有技术中只能在节区ー级进行重部署的方法相比,在重定向文件中只剪裁了需要重部署的符号,不需要通过修改源代码删除指定的符号,即可将多级存储重部署的实施对象粒度到符号级别,降低成本。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本专利技术实施例一种多级存储的重部署方法流程图;图2为本专利技术实施例一种多级存储的重部署方法流程图;图3为本专利技术实施例一种多级存储的流程示意图;图4为本专利技术实施例一种重定向文件的组成示意 图5为本专利技术实施例一种重定向文件中符号部署的示意图;图6为本专利技术实施例一种链接脚本的示意图;图7为本专利技术实施例一种重定向文件中符号的重部署示意8为本专利技术实施例另ー种多级存储的重部署方法流程图;图9为本专利技术实施例另ー种多级存储的重部署方法流程图;图10为本专利技术实施例另ー种重定向文件的组成示意图;图11为本专利技术实施例一种多级存储的重部署装置组成示意图;图12为本专利技术实施例另ー种多级存储的重部署装置组成示意图;图13为本专利技术实施例再一种多级存储的重部署装置组成示意图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术的实施例提供一种多级存储的重部署方法,如图I所示,包括101、从重定向文件中获取待重部署的符号的当前位置信息。其中,所述重定向文件是ー种ニ进制的目标文件,由源代码编译后生成,用干与其他目标文件链接,创建可执行文件或者共享目标文件的代码或数据,任ー种多级存储方法,编写源码之后对源代码进行编译,都会生成重定向文件,所述重定向文件可以由提供重定向文件的第三方提供。所述符号可以为源代码中的变量或函数等,在重部署之前可以预先确定待重部署的特定符号,例如提供待重部署的符号对应的符号名。通过所述重定向文件按获取待部署的符号的当前位置信息,可以将已存入电脑硬盘中的重定向文件打开,将所述重定向文件读入内存中,并从所述重定向文件中获取到需要重部署的符号的当前位置信o102、根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。其中,当所述重定向文件中的符号在生成的程序中没有使用到的时候,或是需要将所述待重部署的符号从当前的存储位置移动到其他存储位置,都可以根据所述待重部署的符号的当前位置信息修改所述待重部署的符号在重定向文件中的存储位置信息,实现对所述待重部署的符号的重部署。可以理解的是,若在重定向文件中有符号在生成的程序中没有使用到,则可以将所述没有使用到的符号作为待重部署的符号,通过删除所述待重部署的符号实现对所述待重部署的符号的重部署,则在链接之后,所述待重部署的符号就不会被加载到内存中占用内存空间,节约了内存空间。本专利技术实施例提供的多级存储的重部署方法,通过解析重定向文件,从重定向文件中获取待重部署的符号的当前位置信息,井根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。与现有技术中重新修改源代码中符号的归属节区相比,通过解析重定向文件,可直接获取到待重部署的符号的当前位置信息,并且只将需要重部署的符号改变存储位置,对不需要重部署的符号不改变存储位置,不仅能将多级存储的重部署的实施对象粒度到符号级别,而且不需要修改源代码,从而降低了重部署的成本。 本专利技术的实施例提供另ー种多级存储的重部署方法,如图2所示,包括201、根据待重部署的符号的符号名,查询所述重定向文件中的符号表,获取所述待重部署的符号的起始地址和符号长度。其中,所述待重部署的符号名是需要裁剪或改变存储位置的变量或函数的名称,所述待重部署的符号是在编写源代码时定义的。本实施例的重定向文件以可执行链接文件格式(Executable and Linkable Format, ELF)为例说明多级存储的重部署方法。但所述重定向文件不仅限用于ELF文件,对于通用对象文件格式(Common Object File Format,COFF)及可执行文件格式(Portable Execute, PE)的重定向文件也都可以采用本方法实现多级存储的重部署。多级存储一般采用如图3 Ca)所示的方式实现首先按照软件功能在代码开发平台上生成源代码,如图3 (b)所示为按照功能完成的源代码,其中根据功能需要定义了符号,例如图中int a定义了名为a的变量,int funa ()定义了名为funa的函数等。如图3 (C)所示为定义节区,图中定义的_attribute_((section(〃. I l.data")))的作用是将符号放入本文档来自技高网...

【技术保护点】
一种多级存储的重部署方法,其特征在于,包括:从重定向文件中获取待重部署的符号的当前位置信息;根据所述待重部署的符号的当前位置信息对所述待重部署的符号进行重部署。

【技术特征摘要】

【专利技术属性】
技术研发人员:周巍
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1