CN101228509B - 生成执行二进制图像的装置及方法 - Google Patents

生成执行二进制图像的装置及方法 Download PDF

Info

Publication number
CN101228509B
CN101228509B CN200680027056XA CN200680027056A CN101228509B CN 101228509 B CN101228509 B CN 101228509B CN 200680027056X A CN200680027056X A CN 200680027056XA CN 200680027056 A CN200680027056 A CN 200680027056A CN 101228509 B CN101228509 B CN 101228509B
Authority
CN
China
Prior art keywords
mentioned
mentioned execution
execution binary
binary program
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200680027056XA
Other languages
English (en)
Other versions
CN101228509A (zh
Inventor
加藤一臣
广田照人
山本哲士
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Patent Trust Inc
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN101228509A publication Critical patent/CN101228509A/zh
Application granted granted Critical
Publication of CN101228509B publication Critical patent/CN101228509B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种信息处理系统及方法、进行执行二进制图像的生成以及执行的装置、方法、程序及记录该程序的可由计算机读取的记录介质,来削减执行二进制图像的数据量。执行二进制读取部(1),读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;可删除区域检测部(2),获取执行二进制程序的结构信息,解析执行时地址解决所使用的信息,当不进行地址解决时,检测出执行二进制程序之中可删除的区域,执行二进制重写部(3),向执行二进制程序中的可删除区域重写特定的数据,执行二进制图像生成部(4),削减执行二进制程序所包含的特定的数据的数据量,将执行二进制程序转换为在计算机上可识别的格式的执行二进制图像。

Description

生成执行二进制图像的装置及方法
技术领域
本发明涉及一种生成在计算机上执行的各种执行二进制图像的信息处理系统、信息处理方法、执行二进制图像生成装置、执行二进制图像生成方法、执行二进制图像生成程序、记录执行二进制图像生成程序的可由计算机读取的记录介质、执行二进制图像执行装置、执行二进制图像执行方法、执行二进制图像执行程序和记录执行二进制图像执行程序的计算机可读取的记录介质。
背景技术
在搭载Linux(注册商标)或Windows(注册商标)等多任务(multitask)型OS(操作系统,Operating System)的设备或计算机中,多数情况下采用动态加载系统(dynamic loading system)。这是在执行二进制程序执行时才开始决定其程序主体及所使用的共享库(shared library)的地址的系统,它需要进行再配置处理(relocatingprocessing)、使用符号(symbol)的地址解决(address resolution)。因此,在执行二进制程序的信息中,包含再配置信息和符号信息。由于一旦执行程序,动态加载就使用这些再配置信息和符号信息来确定函数或变量的地址,所以这些信息就动态加载系统的执行二进制程序而言是必须的。因此,需要将这些再配置信息和符号信息,与作为执行二进制程序的执行代码的文本信息和数据信息等一起,包含到执行二进制图像中。
在上述背景下,作为削减ROM(只读存储器)大小的以往技术,公开有这样一种技术,即用内置的加载程序执行一次程序后,将共享库的地址解决所需的结构,保存在有别于ROM的存储装置中,并从执行二进制程序中删除该结构,当第二次执行时,使用保存于存储装置中的地址解决所需的信息,再配置指针(poiner)进行地址解决(例如,参照日本专利公开公报特开平10-228381号)。
然而,上述以往技术,就共享库的地址解决所需的结构存储在外部或其它存储装置中这一点而言,虽然减小了载入ROM中的执行二进制程序的数据大小,却需要另外的保存结构数据的存储容量。因此,结果还是存在使用额外存储区域的问题。
此外,还存在的问题是,为了在动态加载系统上运行,执行二进制程序所具有的再配置信息和符号信息中,在什么条件下、哪些部分真的可以删除并不十分明了。
另外,除上述问题外,对执行二进制程序的信息进行部分编辑或删除,可能会使执行二进制程序的内部结构发生变化,使作为执行代码主体的文本信息或数据信息的配置地址发生变化。此时,有必要在所有的执行二进制程序中,检测出原本为使用发生变化后的执行二进制程序而指其位置的部分,按变化的量对地址进行修正。不进行该修正,执行二进制程序就无法作为程序运行。然而,存在的问题是,执行二进制程序要检测出变化后的地址位置非常困难,无法简单地删除执行二进制程序具有的再配置信息和符号信息。
发明内容
本发明为解决上述问题,其目的在于提供一种可以削减执行二进制图像的数据量的信息处理系统、信息处理方法、执行二进制图像生成装置、执行二进制图像生成方法、执行二进制图像生成程序、记录执行二进制图像生成程序的可由计算机读取的记录介质、执行二进制图像的执行装置、执行二进制图像的执行方法、执行二进制图像的执行程序及记录执行二进制图像的执行程序的可由计算机可读取的记录介质。
本发明提供的信息处理系统,包括:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制程序读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;执行二进制图像存储部,存储由上述执行二进制图像转换部转换后的上述执行二进制图像;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的信息处理方法,包括:执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测步骤,获取在上述执行二进制读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写步骤,向由上述区域检测步骤中检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;执行二进制图像存储步骤,将在上述执行二进制图像转换步骤中转换的上述执行二进制图像存储到执行二进制图像存储部中;执行步骤,在虚拟地址空间展开并执行在上述执行二进制图像存储步骤中存储于上述执行二进制图像存储部中的上述执行二进制图像。
根据上述结构,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息。然后,获取所读取的执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出执行二进制程序中可进行数据重写的区域。接着,向由检测出的执行二进制程序中的可进行数据重写的区域重写特定的数据。随后,削减重写后的执行二进制程序所包含的特定的数据的数据量,将执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。将转换后的执行二进制图像存储到执行二进制图像存储部中,在虚拟地址空间展开并执行存储于执行二进制图像存储部中的执行二进制图像。
本发明提供的执行二进制图像生成装置,包括:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制程序读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的执行二进制图像生成方法,包括:执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测步骤,获取在上述执行二进制读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写步骤,向由上述区域检测步骤中检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的执行二进制图像生成程序,其使计算机作为以下的部而发挥其功能:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的记录介质,记录执行二进制图像生成程序并且可由计算机读取,上述执行二进制图像生成程序使计算机作为以下的部而发挥其功能:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
采用上述结构,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息。然后,获取所读取的执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出执行二进制程序中可进行数据重写的区域。接着,向检测出的执行二进制程序的可进行数据重写的区域重写特定的数据。随后,削减重写后的执行二进制程序所包含的特定的数据的数据量,将执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。将转换后的执行二进制图像存储到执行二进制图像存储部中,在虚拟地址空间展开并执行存储于执行二进制图像存储部中的执行二进制图像。
本发明提供的执行二进制图像执行装置,包括:执行二进制图像存储部,存储执行二进制图像,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的执行二进制图像执行方法,包括:执行二进制图像存储步骤,将执行二进制图像存储到执行二进制图像存储部中,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行步骤,在虚拟地址空间展开并执行在上述执行二进制图像存储步骤中存储于上述执行二进制图像存储部中的上述执行二进制图像。
本发明提供的执行二进制图像执行程序,其使计算机作为以下的部而发挥其功能:执行二进制图像存储部,存储执行二进制图像,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的记录介质,记录执行二进制图像执行程序并且可由计算机读取,上述执行二进制图像执行程序使计算机作为以下的部而发挥其功能:执行二进制图像存储部,存储执行二进制图像,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
采用上述结构,在计算机上执行的执行二进制程序的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并被转换为可在计算机上识别的格式的执行二进制图像被存储到执行二进制图像存储部中。然后,在虚拟地址空间展开并执行执行二进制图像存储部中所存储的执行二进制图像。
采用本发明,由于从执行二进制程序中检测出再配置信息和符号信息等可进行数据重写的区域,向检测出的可进行数据重写的区域重写特定的数据,削减特定的数据的数据量,故无需变化执行二进制程序中包含的文本信息或数据信息等执行代码主体的设置地址,即可削减执行二进制图像的数据量。
本发明的目的、特征以及优点,通过以下的详细说明和附图将更为明显。
附图说明
图1是表示本实施例的执行二进制图像生成装置的结构的方框图。
图2是表示执行二进制程序的内部结构的一个例子的图。
图3是用于说明执行二进制程序的代表性的节(section)的说明图。
图4是表示执行二进制读取部所管理的执行二进制程序的信息的内部管理结构的一个例子的图。
图5是用于说明符号的地址解决处理流程的模式图。
图6是用于说明完成地址解决的执行二进制程序的函数调用(function call)的模式图。
图7是表示“.rel”系列节、“.dynsym”节和“.dynstr”节的关系的图。
图8是表示符号信息的内部管理结构的一个例子的图。
图9是用于说明执行二进制程序的多个符号共享字符串(character string)时的运行的模式图。
图10是表示生成符号信息的内部管理结构的处理过程的一个例子的第1流程图。
图11是表示生成符号信息的内部管理结构的处理过程的一个例子的第2流程图。
图12是用于说明不集中被执行二进制重写部重写为特定数据的区域时的运行的模式图。
图13是用于说明集中被执行二进制重写部重写为特定数据的区域时的运行的模式图。
图14是用于说明在整个执行二进制程序中集中被执行二进制重写部重写为特定数据的区域时的运行的模式图。
图15(A)是表示由2个执行二进制程序构成的普通的执行二进制图像的一个例子的图,(B)是表示使用共享页面的执行二进制图像的一个例子的图。
图16是用于说明使用共享页面的执行二进制图像和执行二进制程序执行时地址空间的关系的模式图。
图17是表示本实施例的信息处理系统的结构的图。
图18是表示本实施例的信息处理系统的另一结构的图。
具体实施方式
下面,参照附图对本发明的实施例进行说明。
图1是表示本实施例的执行二进制图像生成装置的结构的方框图。本实施例的执行二进制图像生成装置,包括:执行二进制读取部1,以在计算机上执行的执行二进制程序作为输入,读取表示执行二进制程序的内部结构的结构信息;可删除区域检测部2,获取由执行二进制读取部1所读取的执行二进制程序的结构信息,解析执行时地址解决所使用的信息,检测出执行二进制程序中可删除的区域;执行二进制重写部3,将由可删除区域检测部2检测出的执行二进制程序的可删除区域重写为特定的数据,重组(reconstruct)执行二进制程序;执行二进制图像生成部4,将从执行二进制程序重写部3接收到的至少1个执行二进制程序转换为在计算机上可识别执行的格式。
本说明书中的执行二进制程序,包含二进制格式的执行代码和执行数据。此外,本实施例中,执行二进制读取部1相当于执行二进制读取部的一个例子,可删除区域检测部2相当于可删除区域检测部的一个例子,执行二进制重写部3相当于执行二进制重写部的一个例子,执行二进制图像生成部4相当于执行二进制图像转换部的一个例子。另外,本实施例中,执行二进制图像生成程序例如存储于ROM(只读存储器)中,执行二进制图像生成程序,使CPU(中央处理器)作为执行二进制读取部1、可删除区域检测部2、执行二进制重写部3和执行二进制图像生成部4而发挥其功能。
以下对如上构成的执行二进制图像生成装置的具体结构和运行进行叙述。首先,执行二进制程序读取部1,将在计算机上运行的执行二进制程序,即执行格式的文件作为输入。先就该执行二进制程序的格式进行如下说明。
目前,存在多种执行格式。代表性的执行格式,例如有ELF(Executable and LinkingFormat)格式、a.out格式、COEF(Common Object File Format)格式、ECOEF(Extended COFF)格式和PE(Portable Executable)格式等。为便于对本实施例的说明,以在Unix(注册商标)及Linux(注册商标)中使用的代表性执行格式ELF格式的执行二进制程序为例进行说明,但本实施例并不局限于ELF格式的执行二进制程序,同样可应用于其它执行格式。
以ELF格式的结构为例,用图2说明执行二进制程序的内部结构。图2是表示执行二进制程序的内部结构的一个例子的图。执行二进制程序的前端,有管理执行二进制程序整体的信息的ELF头(header)101。该ELF头中,存有区分是应用程序还是共享库的信息、或后续的程序头102或节头104的偏移量(off set)信息以及有关其它与执行二进制程序整体相关的信息。
后续的程序头102中,存有管理多个被称为段(segment)的区域的信息。该各段,分别具有1个或多个节。作为执行二进制程序的实际数据(real data)的节103,根据其作用的不同而存在从节1到节N的多个节,并有用于管理这些各节的节头104。
在此,对作为执行二进制程序的实际数据的代表性的各节进行说明。图3是用于说明作为执行二进制程序的实际数据的代表性的各节的图。图3的节名111,表示各节的名称。节的概要112,说明与各节名111对应的各节的功能。动态加载系统,是在程序执行时才决定使用的作为执行二进制程序的共享库的地址的系统。因此,在动态加载系统中,需要进行再配置处理、使用符号的地址解决。图3所示的多个节,被用于该再配置处理或符号的地址解决。
例如,举其中具有代表性的节为例进行说明,“.dynstr”节保存执行二进制程序中用于动态链接的符号的字符串本身。“.dynsym”节,针对各符号,管理执行二进制程序中有关与动态链接相关的符号信息,并且指存在于“.dynstr”节中的字符串,而且也保存其它的符号信息(值或大小信息)等。以“.rel”为后缀的一系列节,是管理再配置信息的再配置节,指执行二进制程序中需要再配置的区域,或为而且为确定作为再配置对象的符号,而指“.dynsym”节的特定入口(entry)。此外,其它有关与符号信息相关的节,还包括用于检索符号的“.hash”节、或表示各符号的版本类型(version type)的“.gnu.version”系列节等。
另外,虽以ELF格式的执行格式为例进行了说明,但是,其它执行格式也可采用相同的结构,由具有相同作用的节构成。
执行二进制读取部1,一旦有具有上述结构的执行二进制程序,就根据执行格式读取执行二进制程序的信息,并在内部管理其结构。据此,易于对执行二进制程序进行解析或重构。图4是表示执行二进制程序读取部1所管理的执行二进制程序的信息的内部管理结构的一个例子的图。
如图4所示,执行二进制读取部1,分别读取执行二进制程序中唯一的ELF头或程序头的信息,管理有关执行二进制程序整体的信息。此外,针对多个节,执行二进制读取部1,利用按每个节生成的节管理结构121对各节进行管理。该节管理结构121,由独自节管理信息122、节头123和节数据管理部124构成。节数据管理部124,管理保存节的实际数据的节数据部125。独自节管理信息122,管理节数据管理部124以及包含节数据部125和节头123在内的有关节的信息。
另外,此处所例举的执行二进制程序的内部管理结构,不过是一个例子,只要是能够管理有关执行二进制程序整体的信息及各节的结构,采用其它的结构也无妨。
执行二进制读取部1,一旦有执行二进制程序输入就读取执行二进制程序的内部结构信息,图4所例示,构筑执行二进制程序的内部信息的内部管理结构,并传送给可删除区域检测部2。通过该内部管理结构,可删除区域检测部2可以获取并解析各节的信息。
可删除区域检测部2,从执行二进制读取部1接收执行二进制程序的内部结构信息(内部管理结构),解析用于符号的地址解决的再配置信息或符号信息,从中检测出可删除的区域,并与执行二进制程序的内部结构信息一起,将检测为可删除的信息传送给执行二进制程序重写部3。
通常,在一般的动态加载系统中,在执行二进制程序执行时,才决定其程序主体及所使用的共享库的地址,进行符号的地址解决。由于在进行符号的地址解决时,会使用再配置信息或符号信息,通常若删除上述信息,可能会导致程序无法正常运行。
用图5对符号的地址解决的处理流程进行说明。图5是用于说明符号的地址解决的处理流程的模式图。某程序A调用共享库A中的liba_func函数134时,至程序A被执行为止,共享库A在地址空间上的位置是不确定的。程序A被执行,共享库A的位置确定后,liba_func函数134的位置才开始确定。程序A中调用liba_func函数的区域131由程序A的再配置信息或符号信息132所确定,而且,共享库A中liba_func函数的位置由共享库A的再配置信息或符号信息133所决定。而且,被设定成可以正确地从程序A跳转到liba_func函数。
在如上所述的符号地址未解决的执行二进制程序中,有可能在程序执行时使用再配置信息或符号信息。但在本实施例的执行二进制读取部1中,可用已完成符号的地址解决的执行二进制程序作为输入。
此外,执行二进制读取部1,当执行二进制程序被输入时,确认该执行二进制程序是否已完成地址解决,并将表示地址解决完成与否的地址解决信息传送给可删除区域检测部2。可删除区域检测部2,判断由执行二进制读取部1读取的地址解决信息是否为地址解决已完成的地址解决信息,如果判断为执行二进制程序还未完成地址解决,不将该执行二进制程序的再配置信息或符号信息作为可删除区域检测出。
下面对此类执行二进制程序的函数调用的例子进行说明。图6是用于说明完成地址解决的执行二进制程序的函数调用的模式图。图6的程序B中,原本具有调用共享库B的libb_func函数144的区域141。然而,在程序B或共享库B执行前,预先决定共享库B在地址空间上的位置。因此,在程序B的函数调用区域141中,执行前就直接写有用于向libb_func函数跳转的地址(在图6中为“0x????????”)。因此,此时,不使用在图5中的地址解决所使用的程序B的再配置信息或符号信息142、以及共享库B的再配置信息或符号信息143。
因此,即使执行二进制读取部1中输入已完成符号的地址解决的执行二进制程序,可删除区域检测部2将符号的地址解决所需的再配置信息或符号信息的一部分作为可删除区域检测出来,传送给执行二进制程序重写部3,执行二进制程序重写部3也能输出可以正常运行的执行二进制程序。
另外,本实施例中,虽列举有关函数调用的例子进行了说明,但是,用于参照变量的地址解决或其它地址解决等也可采用与函数调用相同的方法来进行。
已完成符号的地址解决的执行二进制程序,可利用原本为动态加载系统而生成的执行二进制程序来生成。以下为生成已完成符号的地址解决的执行二进制程序的方法的一个例子。
首先,需要预先确定所有共享库的地址空间不发生重复。这是因为,共享库有可能被多个应用程序或其它共享库所参照,共享库在地址空间上的位置,有必要在整个系统中被确定为是唯一的。若多个共享库的地址空间发生重复,则当使用它们的应用程序指特定的地址空间时,将无法判别指的是哪一个共享库,需要重新定位共享库的地址。
当然,当所有的应用程序都指特定的地址空间时,只要共享库可以唯一确定,一部分共享库的地址空间重复也无妨。
此外,除设定成所有共享库的地址空间不发生重复外,还可设定成应用程序的地址空间不发生重复,反之,也可以设定成应用程序的地址空间重复。
由于一旦所有共享库的地址空间被设定,则共享库中的符号等的地址也就全部确定,因此,可以事先进行所有执行二进制程序(应用程序和共享库)的符号的地址解决。
例举实施方法的一个例子,先在地址空间上加载应用程序,还将该应用程序所使用的共享库加载到地址空间上。然后,利用应用程序实际上具有的再配置信息或符号信息以及所加载的共享库的再配置信息或符号信息,按事先设定的地址进行符号的地址解决。将地址解决的结果写回执行二进制程序的信息中即可。对所有应用程序进行这样的操作,将地址解决的结果写回所有的执行二进制程序的信息中即可。根据上述方法,可得到图6所示的已完成符号的地址解决的执行二进制程序。
可删除区域检测部2,从执行二进制读取部1获取执行二进制程序的内部结构信息,首先解析再配置信息或符号信息,对照可删除与否的判断条件来检测出可删除的区域。
可删除与否的判断,基本上基于是否为用于符号的地址解决的再配置信息或符号信息来进行。在图7中表示作为再配置信息的以“.rel”为后缀的节即“.rel”系列节、管理符号信息的“.dynsym”节和持有作为符号名的字符串的“.dynstr”节的关系的例子,对可删除与否的判断条件进行说明。图7是表示“.rel”系列节、“.dynsym”节和“.dynstr”节的关系的图。
在图7的例子中,“.rel”系列节中有3个入口151,分别指不同的“.dynsym”节的入口。此外,“.dynsym”节的入口,指用于确定符号的字符串的“.dynstr”节的字符串。
在图7的例子中,“.rel”系列节的入口152指“.dynsym”节的入口153,“.dynsym”节的入口153指“.dynstr”节的字符串“XYZ”。
可删除区域检测部2,将用于符号的地址解决的再配置信息即“.rel”系列节的所有入口作为可删除区域检测出来。而且,还将可由该“.rel”系列节追溯到的“.dynsym”节的所有入口也作为可删除区域检测出来。进一步,还将检测为可删除的“.dynsym”节所指的“.dynstr”节的字符串也作为可删除区域检测出来。
在图7的例子中,由3个入口构成的“.rel”系列节151、由其指的“.dynsym”节的3个入口153、154、155及由它们指的“.dynstr”节的3个字符串“ABC”、“XYZ”、“DEF”,作为可删除区域而被检测出。
可删除区域检测部2,如上所述从“.rel”系列节开始追溯,参照“.dynstr”节的字符串,当该字符串为以非字母起首的字符串时,也可以让其具备,不将该字符串及该字符串所指的节视为是可删除区域的判断条件。这是由于,象以下划线“_”这样的非字母起首的字符串是用于内部生成的,可能与符号的地址解决无关。与字符串的可删除区域的检测相关的非删除对象的标准,今后同样可在考虑字符串删除时实施。
此外,可删除区域检测部2除了从上述再配置信息即“.rel”系列节追溯而得到的符号信息外,进一步将未被“.rel”系列节指向而被由“.dynsym”节直接指向的“.dynstr”节的字符串和指向其的“.dynsym”节的入口作为可删除区域检测的判断条件出来。
此时,“.dynsym”节的入口注册有可将执行二进制程序自身具有的函数使用于外部其它执行二进制程序而导出(export)的符号。该符号成为由其它执行二进制程序进行符号的地址解决时被检索的对象。从而,作为用于地址解决的符号信息,如上所述,视为可删除由“.dynsym”节直接指向的字符串和该“.dynsym”节。
但是,“.dynsym”节中也存在执行二进制程序中固有的与地址解决无关的符号信息。因此,在采用由“.dynsym”节直接所指的字符串和将该“.dynsym”节作为可删除区域的判断条件时,将与地址解决无关的符号信息排除在删除对象以外即可。例如,可考虑将符号的类型属性为“NOTYPE”的符号排除在删除对象以外的方法。此外,也可仅将符号的类型属性为数据对象(data object)或代码对象(code object)的符号信息作为可删除区域检测出来。
另外,例如,也可将为全局范围(global scope)的符号或相关联的节为“.text”、“.rodata”、“.data”和“.bss”中的任一个节等作为可删除的判断条件。
此外,可删除区域检测部2,为使上述符号信息是否为可删除区域的判断易于进行,也可以对执行二进制程序的符号信息进行解析和管理。
为删除符号信息,若管理针对1个符号的信息,则可以容易进行符号是否可删除的判断或容易管理针对符号信息的操作。此外,当有该符号信息的内部管理结构时,执行二进制重写部3,可以重写执行二进制程序而容易进行重构。
图8是表示符号信息的内部管理结构的一个例子的图。图8所示的符号信息的内部管理结构,是用于管理针对某符号的符号信息的结构,具有指向下一符号信息的内部管理结构的指针166,可通过链接结构连接而追溯各符号信息的内部管理结构。
图8的符号信息的内部管理结构中,有符号可删除与否的可否信息161。根据符号信息可删除与否的判断条件,可以更新并管理所管理的符号信息可删除与否的可否信息161。
此外,在符号信息的内部管理结构中,为了辨别是针对什么符号进行管理,有朝向符号字符串的指针162。而且具有与参照符号的节相关的信息163和在该节的节内的位置信息164。根据这些信息,可以管理目前所管理的符号为哪个节所参照以及从节的哪个位置被参照。
在该符号信息的内部管理结构中,还可包括用于判断字符串与其它符号共享的信息。这是由于,存在多个符号共享执行二进制程序的“.dynstr”节中的字符串的可能性。图9是用于说明执行二进制程序的多个符号共享字符串时的运行的模式图。
在图9中,在保存执行二进制程序的符号的字符串本身的“.dynstr”节中有叫做“unsetenv”的字符串。而且,在该执行二进制程序中,有叫做“setenv”的符号172和叫做“unsetenv”的符号173。此时,叫做“setenv”的符号172与叫做“unsetenv”的符号173的末尾部分的字符串一致。如此,有执行二进制程序中共享符号字符串的情况。
在共享字符串时,如图9所示,叫做“unsetenv”的符号173,如通常一样,指向执行二进制程序的符号字符串“unsetenv”的头部171,而叫做“setenv”的符号172则指向符号字符串“unsetenv”中的“setenv”的头部174。
如上所述,当多个符号共享执行二进制程序中的字符串时,即使一方的符号被判断为可删除,只要另一方的符号没有被判断为可删除,就不能删除执行二进制程序中的符号的字符串以及相关的符号信息。例如,在图9的例子中,叫做“unsetenv”的符号173被判断为可删除,而删除掉执行二进制程序的符号字符串“unsetenv”的话,则会引发共享该字符串的符号“setenv”所指向的字符串消失的问题。
为解决上述问题,符号信息的内部管理结构,具有用于判断字符串与其它符号共享的共享信息165。例如,可以记录共享该字符串的符号的个数,也可以管理是指向字符串的头部还是指向字符串的中间。可删除区域检测部2,在判定可删除与否时,参照符号信息的内部管理结构中的该字符串的共享信息165,当共享字符串的所有符号都被判断为可删除时,才将上述符号信息检测为可删除。此外,也有可以当判断为整个共享字符串中的一部分的局部字符串可删除时,将该局部的字符串及与其相关的符号信息作为可删除区域检测出来。
在此,对可删除区域检测部2,从执行二进制读取部1接收执行二进制程序的内部结构信息,生成符号信息的内部管理结构的处理进行说明。图10和图11是表示生成符号信息的内部管理结构的处理过程的一个例子的流程图。
首先,可删除区域检测部2,从执行二进制读取部1获取执行二进制程序的结构信息(步骤S1)。然后,可删除区域检测部2,解析“.dynstr”节,以字符串为单位生成符号信息的内部管理结构(步骤S2)。据此,生成针对执行二进制程序所保有的各字符串的符号信息的内部管理结构。
接着,可删除区域检测部2,为了通过符号信息的内部管理结构来管理参照符号的节信息,与从各节访问的符号名进行对照。
首先,可删除区域检测部2,解析“.dynsym”节,在符号信息的内部管理结构中检索解析所得到的符号名(步骤S3)。然后,可删除区域检测部2,判断符号信息的内部管理结构中是否有与从“.dynsym”节访问的符号名完全一致的字符串(步骤S4)。当有与符号名完全一致的字符串时(在步骤S4中为是),可删除区域检测部2,为使符号信息能够删除,在管理一致字符串的符号信息的内部管理结构中,记录表示有来自“.dynsym”节的参照的参照信息和表示参照源的位置的位置信息(步骤S5)。
另一方面,当没有与符号名完全一致的字符串而局部一致时(在步骤S4中为否),可视为该符号与其它符号共享字符串。在此,可删除区域检测部2,为字符串中的局部一致的符号,生成新的内部管理结构(步骤S6)。然后,可删除区域检测部2,在局部一致的符号双方的内部管理结构中,记录来自“.dynsym”节的参照信息及参照位置和与共享相关的信息(步骤S7)。
另外,可删除区域检测部2,对“.rel”系列节也进行与对“.dynsym”节进行的从步骤S4到步骤S7的处理同样的处理。即,可删除区域检测部2,首先,解析“.rel”系列节,在符号信息的内部管理结构中检索解析所得到的符号名(步骤S8)。
然后,可删除区域检测部2,判断符号信息的内部管理结构中是否有与从“.rel”系列节经由“.dynsym”节访问到的符号名完全一致的字符串(步骤S9)。当有与符号名完全一致的字符串时(在步骤S9中为是),可删除区域检测部2,为使符号信息能够删除,在管理一致字符串的符号信息的内部管理结构中,记录表示有来自“.rel”系列节的参照的参照信息和表示参照源的位置的位置信息(步骤S10)。如有必要,可删除区域检测部2,还记录访问时所经由的“.dynsym”节的信息。
另一方面,当没有与符号名完全一致的字符串而局部一致时(在步骤S9中为否),可视为该符号与其它符号共享字符串。在此,可删除区域检测部2,为字符串中的局部一致的符号,生成新的内部管理结构(步骤S11)。然后,可删除区域检测部2,在局部一致的符号双方的内部管理结构中,记录来自“.rel”系列节的参照信息及参照位置和与共享相关的信息(步骤S12)。如有必要,可删除区域检测部2,还记录访问时所经由的有关“.dynsym”节的信息。
最后,可删除区域检测部2,根据可删除与否的判断条件,在符号信息的内部管理结构中记录可删除与否的可否信息(步骤S13)。
另外,根据可删除与否的判定条件,只进行图10所示的有关“.dynsym”节的从步骤S3到步骤S7的一系列处理,或图11所示的有关“.rel”系列节的从步骤S8到步骤S12的一系列处理其中一方的处理也无妨。
例如,可删除与否的判断条件若为可从“.rel”系列节追溯到的符号信息且所共享的符号全部可删除的条件,也可不进行图10的处理中有关“.dydynsym”节的从步骤S3到步骤S7的一系列的处理。此外,反之对其它节,也可在图11所示的步骤S13的处理前追加与图10的有关“.dynsym”节的从步骤S3到步骤S7的一系列处理同样的处理。
即,对程序执行时访问符号的其它节,追加同样的一系列处理,将来自该节的参照信息记录在符号信息的内部管理结构中是有效的。这是因为,此类节与符号的地址解决无关地在程序执行时访问符号信息。因此,该符号信息若仅因例如为被“.rel”系列节所参照这样的理由而被删除,则程序执行时可能由于符号不存在而无法运行之虞。这样的节具体可例举出,管理各种动态链接信息的“.dynamic”节、管理符号版本的“.gnu.version”系列节或保存库信息的“.gnu.liblist”节等。
可删除区域检测部2,作为可删除与否的判断条件,可采用将被如上所述的节所参照的符号信息排除在删除对象以外的条件,更加精确地进行符号信息的删除。
可删除区域检测部2,作为可删除与否的判定条件,还可将被其它执行二进制程序所参照的符号信息排除在删除对象以外。例如,事先有使用符号信息的执行二进制程序的列表(list),执行二进制读取部1读取该列表中的执行二进制程序。可删除区域检测部2,接收该执行二进制程序的符号信息并加以解析,检测出所参照的其它执行二进制程序的符号信息,排除到删除对象以外。
可删除区域检测部2,可以采用如上所述的各种判断条件,在满足所设定的判断条件的符号信息的内部管理结构中,记录该符号可删除,将该符号信息的内部管理结构传送给执行二进制重写部3。
另外,虽为使可删除区域检测部2中的执行二进制程序的符号信息的解析容易而对上述符号信息的内部管理结构进行了说明,但只要可以追溯再配置信息或符号信息进行解析即可,即使采用其它方法,就本发明的实施而言不成问题。
执行二进制重写部3,从可删除区域检测部2获取此前解析所得的执行二进制程序的信息和作为可删除区域检测出来的信息。执行二进制重写部3,作为可删除区域的信息,例如接收此前所说明的符号信息的内部管理结构和其中所记录的可删除与否的可否信息。
执行二进制重写部3,根据所接收的执行二进制程序的信息和可删除区域的信息,可以确定可删除的再配置信息或符号信息。例如,执行二进制重写部3,一个要素一个要素地获取执行二进制程序的各节和作为各节内的可删除区域的符号信息的内部管理结构,确认可删除与否的可否信息。若对该符号信息来说是可删除的信息,则追溯符号信息的内部管理结构中所记录的指向参照节的信息或符号字符串的指针,可以确定执行二进制程序中应该删除的区域。若对符号信息的内部管理结构的所有要素进行上述操作,则可确定一个执行二进制程序中的所有可删除区域。
但是,若在执行二进制程序中删除了可删除区域的实际数据本身,则执行二进制程序的内部结构发生变化,有使作为执行二进制程序的代码主体的文本信息或数据信息的设置地址发生变化的可能性。某执行二进制程序的文本信息或数据信息,有可能为其它多个执行二进制程序所参照。从而,有必要在所有的执行二进制程序中,检测出参照设置地址发生了变化的执行二进制程序的区域,需要按变化的量对所参照的地址进行修正。不进行该修正,执行二进制程序就无法作为程序运行。然而,存在的问题是,要从执行二进制程序的代码中,检测出是否参照了其它执行二进制程序的特定地址非常困难。
如例举不希望发生此类设置地址的变化的节,代表性的有节属性为“PROGBITS”的节,或者如无此类信息,则形成执行二进制程序的实际数据的“.plt”、“.text”、“.fini”、“.rodata”、“.data”、“.ctors”、“.dtors”、“.got”和“.bss”等节。
为处理上述问题,执行二进制重写部3,对作为可删除区域检测出的再配置信息和符号信息,不是删除实际数据本身,而是将其重写为特定数据。
例如,执行二进制重写部3,只要能获取作为可删除而检测出的符号信息的内部管理结构,从中获取所参照的节、表示参照源的位置和符号字符串的位置,即可用特定数据重写执行二进制程序中的该区域。在此,特定数据可以是某相同的数据,例如0或0xFF等。此外,特定数据也可以是基于某一定规则的数据。
执行二进制重写部3,通过不删除执行二进制程序中的实际数据本身,而是将其重写为特定数据,执行二进制程序的文本信息或数据信息的设置地址不发生变化,因此,可以回避上述问题。
此外,最终执行二进制图像生成部4,将由执行二进制重写部3重写后的执行二进制程序转换为在设备或系统上可识别的执行二进制图像。若用压缩技术生成该执行二进制图像,则由于重写为特定数据例如相同数据的区域,一般较之其它数据压缩率更高,故可削减执行二进制图像的数据大小。
此外,执行二进制重写部3,将执行二进制程序的可删除区域用特定数据予以重写,重新构造执行二进制读取部1所读取的执行二进制程序的内部结构即ELF头、程序头或各节的结构,以执行二进制程序的格式输出。
一个个执行二进制程序被输入到执行二进制读取部1中,再配置信息和符号信息成为可删除的状态从执行二进制重写部3输出。接着,执行二进制图像生成部4生成执行二进制图像,以使上述执行二进制程序成为可在设备或系统上运行的状态。例如,导入文件系统等,生成该文件系统的执行二进制图像。
在生成该执行二进制图像时,如采用压缩技术,则如上所述,重写为特定数据的区域压缩率提高,可以削减执行二进制图像的数据大小。例如,可考虑导入可以压缩执行二进制程序的文件系统。文件系统可使用FAT(File Allocation Table)、VFAT(Virtual FAT)、FAT32、NTFS(NF File System)、HFS(High-performance File System)、ext2、ext3、ReiserFS、JFS(Journaling File System)、XFS、JFFS(Journaling Flash FileSystem)2、CRAMFS等。此外,也可使用独创的压缩技术或独创的文件系统。
以上,对执行二进制重写部3将执行二进制程序的可删除区域重写为特定数据的方式进行了说明,不仅如此,还可将执行二进制程序的可删除区域即重写为特定数据的区域在节内予以集中。通过集中重写为特定数据的区域,借助压缩技术可以获得更高的压缩率,可以获得削减执行二进制图像的大小的效果。就集中重写区域的例子,用图12和图13的例子予以说明。
图12是用于说明执行二进制重写部3未集中重写为特定数据的区域时的运行的模式图。图13是用于说明执行二进制重写部3集中重写为特定数据的区域时的运行的模式图。
图12中,“.rel”系列节的3个入口181,分别与“.dynsym”节的3个入口182、183、184相对应。“.dynsym”节的入口182,指向“.dynstr”节的字符串“XYZ”,入口183指向字符串“ABC”,入口184指向字符串“DEF”。在图12中,执行二进制重写部3,根据表示符号信息可删除的可否信息,将“.dynsym”节的入口182、183、184和“.dynstr”节的3个字符串重写为特定数据。此时,特定数据分散在“.dynsym”节和“.dynstr”节内的多个区域中。
然后,如图13所示,执行二进制重写部3将重写为特定数据的“.dynsym”节的3个入口185、186、187集中在一处。此外,执行二进制重写部3,还将“.dynstr”节的3个字符串集中在一处。另外,虽在图13的例子中,将重写区域集中在各节的末尾,但只要集中在一处,位于节内的什么位置并无影响。此外,重写为特定数据以及重写区域的集中,两者的处理顺序无关紧要。执行二进制重写部3将重写为特定数据的区域集中在一处,可能会导致节内的剩余数据也发生位置变化。故执行二进制重写部3,在剩余数据的位置发生变化时,对与其相关的节所参照的部分(referee section)进行修正。
首先,集中“.dynstr”节内的重写区域时,执行二进制程序的剩余字符串的位置发生变化,随之对参照该字符串的节的各入口的位置进行修正。该处理,只要从自可删除区域检测部2获取的符号信息的内部管理结构中,获取参照该符号字符串的节的信息,变更各节的位置即可。
例如,若对“.dynstr”节的重写区域进行集中,字符串的位置发生变更,则执行二进制重写部3,对参照字符串的“.dynsym”节或“.rel”系列节的各入口位置进行修正。此外,执行二进制重写部3,还在管理动态链接信息的“.dynamic”节、管理符号版本的“.gnu.version”系列节、保存库信息的“.gnu.liblist”节以及管理用于检索符号字符串的哈希(散列,hash)结构的“.hash”节等中,对参照字符串的区域的位置进行修正。
进一步,执行二进制重写部3,除了在节内之外,还可以在整个执行二进制程序内集中执行二进制程序的可删除区域,即重写为特定数据的区域。通过在整个执行二进制程序中集中重写为特定数据的区域,较之以节单位集中,可以更大程度地集中。而且,当对在整个执行二进制程序中被集中的重写区域的执行二进制图像进行压缩时,较之以节单位集中的执行二进制图像的压缩,可以更一步削减执行二进制图像的数据大小。在此,用图14说明在整个执行二进制程序中集中重写区域的例子。
图14是用于说明执行二进制重写部在整个执行二进制程序中集中重写为特定数据的区域时的运行的模式图。在图14中,作为将可删除区域重写为特定数据的节,例举了“.dynsym”节、“.dynstr”节和“.gnu.version”系列节。若在这3个节中,将执行二进制重写部3重写为特定数据的部分分别设为区域191、192、193,在整个执行二进制程序中对上述区域进行集中,则被集中在区域194中。但此时,关于执行二进制程序中的文本信息或数据信息,不让使设置地址发生变化。
作为在整个执行二进制程序中集中特定数据的重写部分的方法,例如,可修正对象节的位置,以紧接上一节的末尾(节中非特定数据部分的末尾)设置下一节,此时,将因节的移动而被覆盖的特定数据的部分(可删除区域),集中特定数据的数据大小后写在移动后的节的末尾即可。执行二进制重写部3,对所有节进行该操作即可。节的位置修正,只要更改例如节头等中的节的位置信息即可。另外,这里所举的方法是一个例子,只要能实现在整个执行二进制程序中集中特定数据的图14所示的运行,采用其它方法也无妨。
执行二进制重写部3在整个执行二进制程序中集中重写区域时,各节的位置可能会发生变化。因此,执行二进制重写部3,需要根据节的位置变化,对执行二进制程序整体的信息进行修正。
例如,由于节头中有节的设置地址和偏移量,执行二进制重写部3,需要根据节的位置变化对其进行修正。此外,如有必要,还可针对程序头,求取属于该程序头的节大小的合计值,基于求得的合计值对包含在程序头中的文件大小和内存大小进行修正。
另外,执行二进制重写部3,在从可删除区域检测部2获取的可删除区域的信息表示某节可整个删除时,可删除节本身。此时同样,对上述整个执行二进制程序如有信息修正的需要就进行修正。此外,由于各节中有表示参照其它节的信息,执行二进制重写部3如有需要就对该信息进行修正。另外,由于ELF头管理着所存在的节数,因此,执行二进制重写部3需要对节数信息予以修正。
以上,对通过执行二进制重写部3将可删除区域重写为特定数据,从而提高压缩率,削减执行二进制图像的数据大小的方法进行了说明。除此方法外,执行二进制图像生成部4,还可在某执行二进制程序中或所有的执行二进制程序中共享重写为特定数据的一定的内存区域单位(页面单位)。此时,可以进一步削减执行二进制图像的大小。用图15的例子就该方法进行说明。
图15是用于说明在所有的执行二进制程序中共享重写为特定数据的页面的运行的模式图。图15(A)是表示由2个执行二进制程序构成的普通的执行二进制图像的一个例子的图,图15(B)是表示使用共享页面的执行二进制图像的一个例子的图。在图15(A)中,举了由执行二进制程序A和执行二进制程序B两个执行二进制程序构成的普通的执行二进制图像的例子。执行二进制程序的文件数据,以页面为单位管理。执行二进制程序A和执行二进制程序B均在图15(A)中具有被重写为用“0”表示的特定数据的页面201。通常,执行二进制图像,由包含用该“0”表示的页面201的指定大小的文件数据202、203构成。
但在本实施例中,执行二进制图像生成部4,如图15(B)所示,可生成使用共享页面的执行二进制图像。执行二进制图像生成部4,生成用于以页面为单位管理执行二进制程序的文件数据的页面管理信息204,使各执行二进制程序分别具有所生成的页面管理信息204。执行二进制图像生成部4,将页面管理信息204设定成,重写为特定数据的页面(在图15(A)中表示为“0”的页面)指向一个执行二进制程序的多个区域共享的一个共享页面206,或者将页面管理信息204设定成,从其它执行二进制程序根据页面管理信息204也指向同一共享页面206,从而生成执行二进制图像。
在此,页面管理信息204,不仅以页面为单位,只要根据某些物理内存的管理单位予以管理即可。此外,未必需要分别对各个重写为特定数据的页面(图15(A)中表示为“0”的页面)进行指向共享页面的指针的管理。例如,在文件数据中,就分配给共享页面的区域,可根据自文件的头部的地址的偏移值来指定范围,也可以根据绝对地址值来指定范围。
通过如上设定,以往包含5个页面大小的文件数据202、203的执行二进制图像,仅包含2个页面大小的文件数据205、207和1个页面大小的共享页面206即可,可以削减执行二进制图像的大小。
当执行程序时,设备或系统需识别按如上方式生成的执行二进制图像。典型的为,由操作系统(OS)或称为基本软件(basic software)的软件,读取并解析存储在存储介质中的执行二进制图像,识别用于执行的执行二进制程序,准备执行环境。
图16是用于说明使用共享页面的执行二进制图像与执行二进制程序被执行时的地址空间之间的关系的模式图。图16的执行二进制程序A一启动,OS从执行二进制图像所具有的管理信息、例如图16的inode211,来确定执行二进制程序A的信息或实际状态。页面管理信息212,如前所述,包含示出执行二进制程序的实际状态的管理信息,或用于确定使用共享页面213的区域的信息。
OS读取页面管理信息212,将执行二进制图像的物理区域分配到执行程序的地址空间。在此,在程序的地址空间上,为了不改变执行二进制程序的“.text”节等的位置,由虚拟存储管理机构214生成虚拟的地址空间。即,虚拟存储管理机构214,识别执行二进制程序中的重写为特定数据的页面区域和未重写的页面区域,在虚拟的地址空间上实现原执行二进制程序的实际状态设置。
在此,用图16说明具体的例子。当在虚拟的地址空间展开执行二进制程序A时,OS将虚拟存储管理机构214设定成,将文件数据218的起始页面分配到程序的虚拟地址空间的起始位置215上。随后,OS参照页面管理信息212,识别出后续3个页面使用共享页面213。OS将虚拟存储管理机构214设定成,分别将共享页面213分配到虚拟地址空间的第2到第4的位置217上。随后,OS将虚拟存储管理机构214设定成,将文件数据218的最后一个页面分配到虚拟地址空间最后的位置216上。执行程序A,在虚拟存储管理机构214所管理的虚拟地址空间上运行。
同样,在虚拟地址空间展开执行二进制程序B时,OS参照页面管理信息212,识别出第1和第2页面使用共享页面213。OS将虚拟存储管理机构214设定成,分别将共享页面213分配到虚拟地址空间的第1到第2的位置219上。接着,OS将虚拟存储管理机构3设定成,将文件数据223的起始页面分配到程序的虚拟地址空间的第3的位置220上。随后,OS参照页面管理信息212,识别出后续的第4页面使用着共享页面213。OS将虚拟存储管理机构214设定成,将共享页面213分配到虚拟地址空间的第4的位置221上。随后,OS将虚拟存储管理机构214设定成,将文件数据223的最后一个页面分配到虚拟地址空间的最后的位置222上。执行程序B,在虚拟存储管理机构214所管理的虚拟地址空间上运行。
通过以上的运行,例如,执行二进制程序中的执行代码主体即文本信息或数据信息被设置到图16的虚拟地址空间的位置216上,故无需变化地址空间上的设置地址即可设置文本信息或数据信息,也可从其它执行代码进行访问。
另外,在图16的例子中,虚拟存储管理机构214,虽将物理上的执行二进制图像的共享页面213分配到虚拟地址空间的位置217上,但是,当预知完全不访问共享页面时,即使不将虚拟地址空间上的位置217分配给共享页面的物理区域也不会影响运行。此外,当已知没有程序访问重写为特定的数据的页面区域时,也可进一步从执行二进制图像中删除共享页面。
本实施例的执行二进制图像生成装置,适用于在信息设备、AV设备、通信设备和家电设备等各种设备中所搭载的计算机上执行的执行二进制程序,输出用于计算机识别的执行二进制图像。
图17是表示本实施例的信息处理系统的结构的图。图17所示的信息处理系统10,包括执行二进制图像生成装置11和计算机12。执行二进制图像生成装置11的结构,与图1所示的执行二进制图像生成装置相同。计算机12,包括存储部21和程序执行部22。
存储部21,例如由ROM等构成,存储由执行二进制图像生成装置11生成的执行二进制图像。程序执行部22,例如由CPU等构成,在虚拟地址空间展开并执行存储部21中所存储的执行二进制图像。另外,在本实施例中,存储部21相当于执行二进制图像存储部的一个例子,程序执行部22相当于执行部的一个例子。此外,在本实施例中,执行二进制图像执行程序例如存储于ROM中,执行二进制图像执行程序使CPU和EEPROM作为存储部21和程序执行部22而发挥其功能。
如图17所示,执行二进制图像生成装置11位于计算机12的外部,可在计算机12上识别并运行从执行二进制图像生成装置11输出的执行二进制图像。
此外,作为其另一方法,也可在执行执行二进制程序的计算机中,发挥与执行二进制图像生成装置相同的功能。图18是表示本实施例的信息处理系统的另一结构的图。图18所示的计算机12’,具有执行二进制图像生成处理部11’、存储部21、程序执行部22和通信部23。信息处理系统10’,包括执行二进制图像生成处理部11’、存储部21和程序执行部22。在图18所示的信息处理系统10’中,与图17所示的信息处理系统10相同的结构付与相同的符号,省略其说明。
通信部23,例如通过因特网等网络接收执行二进制程序,将所接收的执行二进制程序输出给执行二进制图像生成处理部11’的执行二进制读取部1。执行二进制图像生成处理部11’和程序执行部22,例如由CPU等构成,存储部21,例如由EEPROM(ElectricallyErasable Programmable Read Only Memory)等构成。执行二进制图像生成处理部11’的结构,与图1所示的执行二进制图像生成装置的结构相同。
这样,由于通过网络接收执行二进制程序,在计算机内生成执行二进制图像,故可更新(update)执行二进制图像。
另外,虽然在本实施例中通过网络接收执行二进制程序生成执行二进制图像,但本发明并不特别限定于此,也可从CD-ROM等计算机可读取的记录介质中读出执行二进制程序生成执行二进制图像。此时,计算机12’,包括驱动记录介质的记录介质驱动部。记录介质驱动部,从记录介质中读出执行二进制程序,将所读出的执行二进制程序输出给执行二进制图像生成处理部11’的执行二进制读取部1。
以上,在本实施例中,作为执行二进制程序的格式虽以ELF格式为代表例进行了说明,但实施范围并不仅限于ELF格式的执行二进制程序,采用其它执行二进制程序的格式时,也同样具备以上说明的再配置信息和符号信息,同样可以按照上述说明加以实施。
此外,在本实施例中,虽以执行二进制图像生成装置为中心进行了说明,对信息处理系统、信息处理方法、、执行二进制图像生成方法、执行二进制图像生成程序、记录执行二进制图像生成程序的计算机可读取的记录介质、执行二进制图像执行装置、执行二进制图像执行方法、执行二进制图像执行程序和记录执行二进制图像执行程序的计算机可读取的记录介质,也可同样实施。
另外,上述说明的任何一点都不过是本发明的示例,并非是对其范围的限定。毋庸置疑,在不脱离本发明的范围内,可以进行各种改良及变形。
此外,例如,执行二进制读取部1、可删除区域检测部2、执行二进制重写部3和执行二进制图像生成部4中的至少一个,可包含于芯片化的LSI(大规模集成电路)中。通过将执行二进制读取部1、可删除区域检测部2、执行二进制重写部3和执行二进制图像生成部4中的至少一个包含于LSI中,可以使执行二进制图像生成装置的制造工序变得容易。
上述的具体实施例中,主要包含有具有以下结构的发明。
本发明提供的信息处理系统,包括:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;执行二进制图像存储部,存储由上述执行二进制图像转换部转换的上述执行二进制图像;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的信息处理方法,包括:执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测步骤,获取在上述执行二进制读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写步骤,向由上述区域检测步骤中检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;执行二进制图像存储步骤,将在上述执行二进制图像转换步骤中转换的上述执行二进制图像存储到执行二进制图像存储部中;执行步骤,在虚拟地址空间展开并执行在上述执行二进制图像存储步骤中存储于上述执行二进制图像存储部中的上述执行二进制图像。
采用上述结构,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息。然后,获取所读取的执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出执行二进制程序中可进行数据重写的区域。接着,向检测出的执行二进制程序中的可进行数据重写的区域重写特定的数据。随后,削减重写后的执行二进制程序所包含的特定的数据的数据量,将执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。将转换后的执行二进制图像存储到执行二进制图像存储部中,在虚拟地址空间展开并执行存储于执行二进制图像存储部中的执行二进制图像。
因此,由于从执行二进制程序中检测出再配置信息和符号信息等可进行数据重写的区域,向检测出的可进行数据重写的区域重写特定的数据,削减特定的数据的数据量,故无需变化执行二进制程序中包含的文本信息或数据信息等执行代码主体的设置地址,即可削减执行二进制图像的数据量。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制读取部读取已完成符号的地址解决的上述执行二进制程序。
根据此结构,由于所读取的是已完成符号的地址解决的执行二进制程序,故可删除有关符号的符号信息以及用于符号的地址解决的再配置信息。
此外,在上述信息处理系统中,较为理想的是,上述特定的数据,是压缩率高于上述执行二进制程序内的其它数据的数据,上述执行二进制图像转换部,在将上述执行二进制程序转换为上述执行二进制图像时,对由上述执行二进制重写部重写后的上述执行二进制程序进行压缩。
根据此结构,由于在将执行二进制程序转换为执行二进制图像时,对可进行数据重写的区域被重写为特定的数据的执行二进制程序进行压缩,故在执行二进制程序中的特定的数据的压缩率高于其它数据,可以削减执行二进制图像的数据量。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制程序,以节为单位被分割,上述可进行数据重写的区域,是上述节内的指定区域,上述执行二进制重写部,以上述执行二进制程序的节为单位集中上述重写为特定的数据的区域。
根据此结构,由于执行二进制程序,以节为单位被分割,可进行数据重写的区域,是节内的指定区域,重写为特定的数据的区域以执行二进制程序的节为单位予以集中,对执行二进制程序进行压缩,故执行二进制程序中被集中的特定的数据的压缩率高于其它数据,可以进一步削减执行二进制图像的数据量。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制程序,以节为单位被分割,上述可进行数据重写的区域是上述节,上述执行二进制重写部,在整个上述执行二进制程序集中上述重写为特定的数据的区域。
根据此结构,由于执行二进制程序,以节为单位被分割,可进行数据重写的区域是节,在整个执行二进制程序集中重写为特定的数据的区域,对执行二进制程序进行压缩,故执行二进制程序中被集中的特定的数据的压缩率高于其它数据,可以进一步削减执行二进制图像的数据量。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制图像转换部,将上述执行二进制程序转换为上述执行二进制图像,删除由上述执行二进制重写部重写了特定的数据的区域,生成存储了在上述执行二进制程序内共享的上述特定的数据的共享区域,并生成将所删除的上述区域在上述执行二进制程序内的位置和上述共享区域关联起来进行管理的管理信息。
根据此结构,在将执行二进制程序转换为执行二进制图像时,删除被重写为特定的数据的区域,生成存储了在执行二进制程序内共享的特定的数据的共享区域,并生成将所删除的区域在执行二进制程序内的位置和共享区域关联起来进行管理的管理信息。从而,由于删除重写为特定的数据的区域,特定的数据仅存储在共享区域中,故可削减执行二进制图像所含的特定的数据的数据量,可以削减整个执行二进制图像的数据量。
此外,在上述信息处理系统中,较为理想的是,在虚拟地址空间展开上述执行二进制图像存储部中所存储的上述执行二进制图像时,参照上述管理信息,识别被删除的上述区域在上述执行二进制程序内的位置,将存储在上述共享区域内的特定的数据分配到与识别出的位置相对应的上述虚拟地址空间。
根据此结构,在虚拟地址空间展开执行二进制图像存储部中所存储的执行二进制图像时,参照管理信息,识别被删除的区域在执行二进制程序内的位置,将存储在共享区域内的特定的数据分配到与识别出的位置相对应的上述虚拟地址空间。因此,无需变化执行二进制程序所包含的文本信息或数据信息等执行代码主体的设置地址,即可将执行二进制图像设置到虚拟地址空间。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制读取部,从上述执行二进制程序中读取表示上述执行二进制程序是否已完成地址解决的地址解决信息,上述区域检测部,判断上述执行二进制读取部所读取的上述地址解决信息是否为地址解决已完成信息,当判断为地址解决未完成时,不从上述执行二进制程序中检测可进行数据重写的区域。
根据此结构,从执行二进制程序中读取表示执行二进制程序是否已完成地址解决的地址解决信息,判断所读取的地址解决信息是否为地址解决已完成的信息,当判断为地址解决未完成时,不从执行二进制程序中检测可进行数据重写的区域。因此,仅可在判断为地址解决已完成时检测可进行数据重写的区域,将符号信息或再配置信息作为可进行数据重写的区域检测出来。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制程序,以节为单位被分割,上述区域检测部,即使某信息为上述执行二进制程序中用于地址解决的信息,只要该信息被其它节所参照,则将该信息排除在删除对象以外。
根据此结构,由于即使某信息为执行二进制程序中用于地址解决的信息,只要该信息被其它节所参照,则将该信息排除在删除对象以外,故保留被其它节所参照的信息而不删除,可以防止所参照的数据不存在的情况发生。
此外,在上述信息处理系统中,较为理想的是,上述执行二进制程序,包含多个执行二进制程序,上述区域检测部,即使某信息为上述执行二进制程序中用于地址解决的信息,只要该信息被其它执行二进制程序所参照时,则将该信息排除在删除对象以外。
根据此结构,由于即使某信息为执行二进制程序中用于地址解决的信息,只要该信息被其它执行二进制程序所参照,则将该信息排除在删除对象以外,故保留被其它执行二进制程序所参照的信息而不删除,可以防止所参照的数据不存在的情况发生。
此外,在上述信息处理系统中,较为理想的是,上述区域检测部,检测出在上述执行二进制程序中多个符号是否共享同一字符串,仅在共享字符串的所有符号都可删除时,才将上述多个符号和与上述字符串相对应的区域作为可进行数据重写的区域检测出来。
根据此结构,检测出在执行二进制程序中多个符号共享同一字符串,仅在共享字符串的所有符号都可删除时,才将多个符号和与字符串相对应的区域作为可进行数据重写的区域检测出来。在多个符号共享执行二进制程序内的字符串时,即使判断一个符号可删除,只要其它符号未判断为可删除,就不能删除执行二进制程序内的符号的字符串以及符号信息。因此,可以防止判断一个符号可删除而删除字符串,导致共享字符串的其它符号无法指定字符串的情况发生。
本发明提供的执行二进制图像生成装置,包括:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的执行二进制图像生成方法,包括:执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测步骤,获取在上述执行二进制读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写步骤,向由上述区域检测步骤中检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的执行二进制图像生成程序,使计算机作为以下的部而发挥其功能:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
本发明提供的记录介质,是记录执行二进制图像生成程序的可由计算机读取的记录介质,上述执行二进制图像生成程序使计算机作为以下的部而发挥其功能:执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写特定的数据;执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的上述特定的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
根据上述结构,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息。然后,获取所读取的执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出执行二进制程序中可进行数据重写的区域。接着,向检测出的执行二进制程序中的可进行数据重写的区域重写特定的数据。随后,削减重写后的执行二进制程序所包含的特定的数据的数据量,将执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。将转换后的执行二进制图像存储到执行二进制图像存储部中,在虚拟地址空间展开并执行存储于执行二进制图像存储部中的执行二进制图像。
从而,由于从执行二进制程序中检测出再配置信息或符号信息等可进行数据重写的区域,向检测出的可进行数据重写的区域重写特定的数据,削减特定的数据的数据量,故无需变化执行二进制程序中包含的文本信息或数据信息等执行代码主体的设置地址,即可削减执行二进制图像的数据量。
本发明提供的执行二进制图像执行装置,包括:执行二进制图像存储部,存储执行二进制图像,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的执行二进制图像执行方法,包括:执行二进制图像存储步骤,将执行二进制图像存储到执行二进制图像存储部中,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行步骤,在虚拟地址空间展开并执行在上述执行二进制图像存储步骤中存储于上述执行二进制图像存储部中的上述执行二进制图像。
本发明提供的执行二进制图像执行程序,使计算机作为以下的部而发挥其功能:执行二进制图像存储部,存储执行二进制图像,上述执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
本发明提供的记录介质,是记录执行二进制图像执行程序的可由计算机读取的记录介质,上述执行二进制图像执行程序使计算机作为以下的部而发挥其功能:执行二进制图像存储部,存储执行二进制图像,该执行二进制图像为,在计算机上执行的执行二进制程序中的可进行数据重写的区域已被重写了特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并已被转换为可在计算机上识别的格式;执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
根据上述结构,将在计算机上执行的执行二进制程序的可进行数据重写的区域重写为特定的数据,重写后的执行二进制程序所包含的上述特定的数据的数据量被削减,并被转换为可在计算机上识别的格式的执行二进制图像存储到执行二进制图像存储部中。然后,在虚拟地址空间展开并执行执行二进制图像存储部中所存储的执行二进制图像。从而,由于所存储的是数据量削减后的执行二进制图像,可以削减存储执行二进制图像所需的存储容量。
产业上的利用可能性
本发明的信息处理系统、信息处理方法、执行二进制图像生成装置、执行二进制图像生成方法、执行二进制图像生成程序、记录执行二进制图像生成程序的可由计算机可读取的记录介质、执行二进制图像执行装置、执行二进制图像执行方法、执行二进制图像执行程序和记录执行二进制图像执行程序的可由计算机读取的记录介质,可以削减在计算机上执行的程序的数据大小,由于可以在搭载计算机的各种设备中抑制内存大小而在产业上很有实用价值。

Claims (14)

1.一种信息处理系统,其特征在于包括:
执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;
区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;
执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;
执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;
执行二进制图像存储部,存储由上述执行二进制图像转换部转换后的上述执行二进制图像;
执行部,在虚拟地址空间展开并执行上述执行二进制图像存储部中所存储的上述执行二进制图像。
2.根据权利要求1所述的信息处理系统,其特征在于:上述执行二进制读取部,读取已完成符号的地址解决的上述执行二进制程序。
3.根据权利要求1或2所述的信息处理系统,其特征在于:
上述执行二进制图像转换部,在将上述执行二进制程序转换为上述执行二进制图像时,对由上述执行二进制重写部重写后的上述执行二进制程序进行压缩。
4.根据权利要求3所述的信息处理系统,其特征在于:
上述执行二进制程序,以节为单位被分割;
上述可进行数据重写的区域,是上述节内的指定区域;
上述执行二进制重写部,将重写为压缩率高于上述其它数据的压缩率的数据的区域以上述执行二进制程序的节为单位来集中。
5.根据权利要求3所述的信息处理系统,其特征在于:
上述执行二进制程序,以节为单位被分割;
上述可进行数据重写的区域是上述节;
上述执行二进制重写部,将重写为压缩率高于上述其它数据的压缩率的数据的区域以上述执行二进制程序的整体来集中。
6.根据权利要求1或2所述的信息处理系统,其特征在于:上述执行二进制图像转换部,在将上述执行二进制程序转换为上述执行二进制图像时,删除由上述执行二进制重写部重写了压缩率高于其它数据的压缩率的数据的区域,生成存储了在上述执行二进制程序内共享的压缩率高于上述其它数据的压缩率的数据的共享区域,并生成将所删除的上述区域在上述执行二进制程序内的位置和上述共享区域关联起来进行管理的管理信息。
7.根据权利要求6所述的信息处理系统,其特征在于:上述执行部,在虚拟地址空间展开上述执行二进制图像存储部中所存储的上述执行二进制图像时,参照上述管理信息,识别所删除的上述区域在上述执行二进制程序内的位置,将存储在上述共享区域内的压缩率高于其它数据的压缩率的数据分配到与识别出的位置相对应的上述虚拟地址空间。
8.根据权利要求1所述的信息处理系统,其特征在于:
上述执行二进制读取部,从上述执行二进制程序中读取表示上述执行二进制程序是否已完成地址解决的地址解决信息;
上述区域检测部,判断上述执行二进制读取部所读取的上述地址解决信息是否为地址解决已完成的信息,当判断为地址解决未完成时,不从上述执行二进制程序中检测可进行数据重写的区域。
9.根据权利要求1所述的信息处理系统,其特征在于:
上述执行二进制程序,以节为单位被分割;
上述区域检测部,即使某信息为上述执行二进制程序中用于地址解决的信息,只要该信息被其它节所参照,就将该信息排除在删除对象以外。
10.根据权利要求1所述的信息处理系统,其特征在于:
上述执行二进制程序,包含多个执行二进制程序;
上述区域检测部,即使某信息为上述执行二进制程序中用于地址解决的信息,只要该信息被其它执行二进制程序所参照,就将该信息排除在删除对象以外。
11.根据权利要求1所述的信息处理系统,其特征在于:上述区域检测部,检测出在上述执行二进制程序中多个符号是否共享同一字符串,仅在共享字符串的所有符号都可删除时,才将上述多个符号和与上述字符串相对应的区域作为可进行数据重写的区域检测出来。
12.一种信息处理方法,其特征在于包括:
执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;
区域检测步骤,获取在上述执行二进制程序读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;
执行二进制重写步骤,向由上述区域检测步骤中检测出的上述执行二进制程序中的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;
执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像;
执行二进制图像存储步骤,将在上述执行二进制图像转换步骤中转换的上述执行二进制图像存储到执行二进制图像存储部中;
执行步骤,在虚拟地址空间展开并执行在上述执行二进制图像存储步骤中存储于上述执行二进制图像存储部中的上述执行二进制图像。
13.一种执行二进制图像生成装置,其特征在于包括:
执行二进制读取部,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;
区域检测部,获取由上述执行二进制读取部所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;
执行二进制重写部,向由上述区域检测部检测出的上述执行二进制程序的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;
执行二进制图像转换部,削减由上述执行二进制重写部重写后的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
14.一种执行二进制图像生成方法,其特征在于包括:
执行二进制读取步骤,读取表示在计算机上执行的执行二进制程序的内部结构的结构信息;
区域检测步骤,获取在上述执行二进制读取步骤中所读取的上述执行二进制程序的结构信息,解析用于地址解决的信息,当地址解决已完成时,检测出上述执行二进制程序中可进行数据重写的区域;
执行二进制重写步骤,向在上述区域检测步骤中检测出的上述执行二进制程序的可进行数据重写的区域重写压缩率高于上述执行二进制程序内的其它数据的压缩率的数据;
执行二进制图像转换步骤,削减在上述执行二进制重写步骤中重写的上述执行二进制程序所包含的压缩率高于上述其它数据的压缩率的数据的数据量,将上述执行二进制程序转换为可在计算机上识别的格式的执行二进制图像。
CN200680027056XA 2005-07-27 2006-07-25 生成执行二进制图像的装置及方法 Active CN101228509B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005216715 2005-07-27
JP216715/2005 2005-07-27
PCT/JP2006/314694 WO2007026484A1 (ja) 2005-07-27 2006-07-25 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
CN101228509A CN101228509A (zh) 2008-07-23
CN101228509B true CN101228509B (zh) 2010-05-26

Family

ID=37808587

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680027056XA Active CN101228509B (zh) 2005-07-27 2006-07-25 生成执行二进制图像的装置及方法

Country Status (4)

Country Link
US (1) US8281289B2 (zh)
JP (1) JP4944033B2 (zh)
CN (1) CN101228509B (zh)
WO (1) WO2007026484A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841797A (zh) * 2011-06-24 2012-12-26 富士施乐株式会社 程序执行设备、图像处理设备和程序执行方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510723B2 (en) * 2009-05-29 2013-08-13 University Of Maryland Binary rewriting without relocation information
TW201128383A (en) * 2009-07-29 2011-08-16 Reversinglabs Corp Portable executable file analysis
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
WO2016162075A1 (en) * 2015-04-09 2016-10-13 Longsand Limited Removing library objects from a static library
US10419020B2 (en) 2015-06-18 2019-09-17 International Business Machines Corporation Increasing storage capacity and data transfer speed in genome data backup
US10430266B2 (en) * 2016-06-13 2019-10-01 Vmware, Inc. Full state session reviving, forking, and snapshoting based on an application data dump
US11221835B2 (en) * 2020-02-10 2022-01-11 International Business Machines Corporation Determining when to perform and performing runtime binary slimming

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740446A (en) * 1994-08-30 1998-04-14 Nec Corporation Compiling device and compiling method
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL91221A (en) * 1989-08-04 1995-03-30 Ibm Israel Binary text compression method
JPH04160537A (ja) 1990-10-25 1992-06-03 Toshiba Corp 情報処理装置
JPH04308927A (ja) * 1991-04-05 1992-10-30 Nec Corp ページテーブル格納方式
US5898795A (en) * 1995-12-08 1999-04-27 Ricoh Company, Ltd. Character recognition method using a method for deleting ruled lines
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
US6014513A (en) * 1997-12-23 2000-01-11 University Of Washington Discovering code and data in a binary executable program
US6110227A (en) * 1998-06-24 2000-08-29 Microsoft Corporation Systems and methods for pre-processing variable initializers
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
JP2002225395A (ja) 2001-02-02 2002-08-14 Ricoh Co Ltd 画像形成装置
JP2003174404A (ja) * 2001-12-07 2003-06-20 Matsushita Electric Ind Co Ltd 携帯無線端末装置及び携帯無線システム
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
US6996699B2 (en) * 2002-09-10 2006-02-07 Microsoft Corporation Secondary processor execution kernel framework
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
JP2008503011A (ja) * 2004-06-08 2008-01-31 ダートデバイセズ コーポレーション ユニバーサルデバイスインタオペラビリティプラットフォームのためのデバイスチームリクルートメントおよびコンテンツレンディションのアーキテクチャ装置および方法
JP4160537B2 (ja) 2004-06-23 2008-10-01 Krh株式会社 連結具
US7823137B2 (en) * 2004-10-21 2010-10-26 International Business Machines Corporation Process and implementation for using byte code insertion to modify a class definition to define and use probes for application components
US7260713B2 (en) * 2004-12-14 2007-08-21 Lsi Corporation Apparatus and method for building, storing, uploading, relocating and executing DOS based software module during system startup time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5740446A (en) * 1994-08-30 1998-04-14 Nec Corporation Compiling device and compiling method
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841797A (zh) * 2011-06-24 2012-12-26 富士施乐株式会社 程序执行设备、图像处理设备和程序执行方法

Also Published As

Publication number Publication date
WO2007026484A1 (ja) 2007-03-08
CN101228509A (zh) 2008-07-23
US8281289B2 (en) 2012-10-02
JP4944033B2 (ja) 2012-05-30
JPWO2007026484A1 (ja) 2009-03-26
US20100131932A1 (en) 2010-05-27

Similar Documents

Publication Publication Date Title
CN101228509B (zh) 生成执行二进制图像的装置及方法
US7444460B2 (en) Data storage device, method for updating management information in data storage device, and computer program
CN100476825C (zh) 创建符号链接的方法以及使用符号链接的方法和装置
JP5103807B2 (ja) 制御プログラム、制御方法、情報処理装置及び情報処理システム
CN102667772A (zh) 文件级分级存储管理系统、方法和设备
KR20060045659A (ko) B-트리의 연속키들을 재명명하는 방법 및 시스템
US20080040448A1 (en) Transferring web contents
CN103460197A (zh) 计算机系统、文件管理方法以及元数据服务器
CN101251799B (zh) 管理实现的方法和装置
JPWO2007026484A6 (ja) 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体
JPWO2007099636A1 (ja) ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置
US20060212848A1 (en) Apparatus for managing configuration of application software
JP5217155B2 (ja) ファイル圧縮自動判定方式および方法、並びに、プログラム
KR100637787B1 (ko) 파일 정보의 기록 처리 방법 및 프로그램
KR100840844B1 (ko) 사용자 단말에 저장되어 있는 개인 정보를 검색하는 시스템및 그 개인 정보 검색 방법
CN106557572A (zh) 一种安卓应用程序文件的提取方法及系统
CN109325005A (zh) 一种数据处理方法和电子设备
JP5473250B2 (ja) 検索装置の制御方法、検索装置
JP4437116B2 (ja) 文書ファイル移動追跡装置、文書ファイル移動追跡システム、文書ファイル移動追跡方法及びプログラム
JP5629438B2 (ja) ファイル管理装置及びその制御方法
JP3725087B2 (ja) 知識情報収集システムおよび知識情報収集方法
CN109684870B (zh) 一种自包含的文件信息配置方法及系统
JP2003157263A (ja) 情報収集方法、情報収集装置及び検索対象文字情報蓄積プログラム
JP2005267036A (ja) トレース出力制御方法およびトレースシステム
KR101058059B1 (ko) 임베디드 파일 시스템의 마운팅 장치 및 그 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MATSUSHITA ELECTRIC (AMERICA) INTELLECTUAL PROPERT

Free format text: FORMER OWNER: MATSUSHITA ELECTRIC INDUSTRIAL CO, LTD.

Effective date: 20140715

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: Osaka Japan

Patentee after: Matsushita Electric Industrial Co.,Ltd.

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20140715

Address after: California, USA

Patentee after: PANASONIC INTELLECTUAL PROPERTY CORPORATION OF AMERICA

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co.,Ltd.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20170110

Address after: The United States of New York 10017 Lexington Avenue 38 floor 450

Patentee after: Sun patent hosting Co.

Address before: California, USA

Patentee before: PANASONIC INTELLECTUAL PROPERTY CORPORATION OF AMERICA