CN101346693A - 产生、链接和更新基于组件的软件的方法和其上记录有这种软件的信息存储介质 - Google Patents
产生、链接和更新基于组件的软件的方法和其上记录有这种软件的信息存储介质 Download PDFInfo
- Publication number
- CN101346693A CN101346693A CNA2007800009748A CN200780000974A CN101346693A CN 101346693 A CN101346693 A CN 101346693A CN A2007800009748 A CNA2007800009748 A CN A2007800009748A CN 200780000974 A CN200780000974 A CN 200780000974A CN 101346693 A CN101346693 A CN 101346693A
- Authority
- CN
- China
- Prior art keywords
- symbol
- software
- component software
- address
- assembly
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
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)
Abstract
提供了以多个二进制镜像提供基于组件的软件、链接基于组件的软件和更新基于组件的软件的方法以及一种其上记录有软件的信息存储介质。所述其上记录有软件的信息存储介质包括:至少一个软件组件;符号表,记录有所述软件组件所使用的符号的地址信息;存储器映射信息,记录有指示加载所述软件组件和符号表的位置的存储器地址信息。
Description
技术领域
本发明涉及软件的组件化,更具体地讲,涉及以多个二进制镜像产生基于组件的软件、链接基于组件的软件和更新基于组件的软件的方法和其上记录有软件的信息存储介质。
背景技术
在消费类电子(CE)装置中嵌入有提供各种支持功能的各种软件。由于CE装置具有有限的存储容量,所以必须开发存储容量小的软件。由于必须更新软件以进行纠错或者改进功能,所以设计软件以被升级。因此,正在积极进行研究寻找有效升级软件的方法。有两种软件更新方法。一种是将软件划分成多个组件并对组件进行更新。另一种方法是以二进制镜像来改变软件并对二进制镜像进行更新。
图1是传统的基于组件的软件的框图。参照图1,操作系统(OS)110和三个组件120、130和140彼此分开并被存储在闪存中。当启动系统时,OS 110被加载到RAM,并且需要OS 110的组件120、130和140被加载到RAM。由于组件120、130和140的地址彼此没有链接,所以组件120、130和140中的每个组件在头125中存储链接信息。在LINUX系统或VxWorks系统中使用可执行和可链接的格式(ELF)存储链接信息。在组件120、130和140中的每个组件被加载到RAM时使用链接信息,从而组件120、130和140中的每个组件可被链接到组件120、130和140中的每个组件所参考的其他组件的RAM的物理地址。
因此,这种结构的优点在于:由于可对组件120、130和140中的每个组件容易地进行管理,并且所述每个组件是独立的,所以组件120、130和140中的一个组件的改变不会影响其他组件。也可有效地更新软件。例如,当第三组件140被更新时,从服务器下载第三组件140的新版本组件150,并用该新版本组件150代换现有版本的第三组件140。因为减小了软件更新服务器的负荷,并且不更新全部的软件镜像,所以可有效更新软件。
然而,这种结构的缺点在于:组件120、130和140中的每个组件的文件大小增加。详细地讲,由于没有链接组件120、130和140的地址,所以必须在组件120、130和140中的每个组件的文件的头中记录组件120、130和140中的每个组件的链接信息,这将文件的大小增加三倍或者四倍。文件大小增加的原因在于组件120、130和140中的每个组件必须将关于组件120、130和140的哪一部分使用导出和导入符号的信息包括在组件120、130和140中的每个组件的头中。因此,这种结构被广泛地用于不限制存储空间的系统,然而,不可能将这种结构应用于具有有限存储空间的CE装置。此外,由于在编译和运行时这种结构花费很多时间来进行链接,所以更难将这种结构应用于CE装置。
因此,大多数CE装置将包括OS 110的所有软件合成为大的二进制镜像,例如EXE、BIN,并将所述二进制镜像存储在闪存中。在这种情况下,尽管可减小二进制镜像的大小,但是必须整个更新现有二进制镜像以允许软件版本升级。
图2是作为二进制镜像分配的传统软件的框图。参照图2,合成OS和三个组件的文件210被存储在闪存中。当启动系统时,文件210被加载到RAM。因为向三个组件中的每个组件的符号指定了静态地址,并且将这些组件作为二进制镜像210存储,所以这种结构不需要符号表或头信息。因此,由于可以将二进制镜像的大小最小化,所以这种结构适合于具有有限存储空间的CE装置。
为了更新以二进制镜像210的状态存储的软件,从服务器下载新二进制镜像220,并代换现有版本文件210。然而,每个组件中的某部分的改变需要更新整个二进制镜像。由于不包括符号表或者头信息以减小二进制镜像的大小,所以所有符号被链接到静态地址。由于使用了静态地址来将组件彼此链接,所以二进制镜像中的小改变也引起文件的大改变。因此,由于从软件更新服务器下载整个文件,并且现有二进制镜像210作为文件的安全备份被备份,所以闪存空间必须是二进制镜像大小的两倍。
发明内容
技术方案
本发明提供了一种在占用较小存储空间的同时有效地构建基于组件的软件的方法。
本发明还提供一种更新和链接基于组件的软件以使发送的数据量、所使用的闪存量和使用闪存所需要的时间最小化的方法。
技术效果
根据本发明,减小了由于用于将二进制镜像软件转换成基于组件的软件的符号信息引起增加的文件大小。
此外,由于二进制镜像软件被划分成若干个组件,所以只需要更新改变的组件以升级软件,从而减小了从服务器下载的数据量,很大程度上减小了安全更新的备份文件的大小,并提高了更新速度,从而可有效地更新软件。
尽管已经参照本发明示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可在形式和细节上进行各种改变。示例性实施例应该被认为只是为了描述的意义,而不是为了限制的目的。因此,本发明的范围不由本发明的详细描述来限定,而是由权利要求限定,并且,落入所述范围内的所有不同被认为是包括在本发明中。
附图说明
通过参照附图对本发明示例性实施例的详细描述,本发明的上述和其他特征和优点将会更清楚,其中:
图1是传统的基于组件的软件的框图;
图2是作为二进制镜像分配的传统软件的框图;
图3是根据本发明实施例的基于组件的软件的框图;
图4是根据本发明实施例的包括基于组件的软件的闪存的框图;
图5是加载图4的软件的RAM的框图;
图6是用于调用图5所示的第一组件中的函数的代码的示图;
图7是根据本发明另一实施例的基于组件的软件的框图;
图8是包括图7所示的基于组件的软件的闪存的框图;
图9是加载图8所示的软件的RAM的框图;
图10是根据本发明实施例的符号表的内容的示图;
图11是通过更新图10所示的符号表获得的符号表的内容的示图;
图12是用于调用在图9所示的第二组件中的函数的代码的示图;
图13是用于解释传统函数调用原理的示图;
图14是根据本发明实施例的解释间接函数调用原理的示图;
图15是根据本发明实施例的软件安排方法的流程图;
图16是根据本发明实施例的编译和链接基于组件的软件的方法的流程图;
图17是根据本发明实施例的基于组件的软件更新方法的流程图。
最佳方式
根据本发明的一方面,提供了一种记录有基于组件的软件的信息存储介质,包括:至少一个软件组件;符号表,记录有所述至少一个软件组件所使用的符号的地址信息;存储器映射信息,记录有加载所述至少一个软件组件和符号表的存储器地址信息。
存储器映射信息还可包括加载操作系统(OS)的存储器地址信息。
所述介质还可包括:符号查询函数,所述符号查询函数被所述至少一个软件组件调用,并通过询问符号表输出输入符号的存取信息。
输入符号的存取信息可包括符号表中的输入符号的地址或在所述至少一个软件组件或OS中的输入符号的物理地址。
所述至少一个软件组件可包括参考符号表以获取OS和其他软件组件提供的符号的物理地址的代码。
根据本发明的一方面,提供了一种软件安排方法,包括:产生至少一个软件组件;产生记录有所述至少一个软件组件所使用的符号的地址信息的符号表;产生记录有加载OS、所述至少一个软件组件和符号表的存储器地址信息的存储器映射信息。
根据本发明的一方面,提供了一种基于存储器映射信息和符号表来链接包括至少一个软件组件的软件的方法,其中,所述存储器映射信息中记录有加载所述至少一个组件的存储器地址信息,所述符号表中记录有加载所述至少一个软件组件所使用的符号的地址信息。
根据本发明的一方面,提供了一种更新包括至少一个软件组件的软件的方法,其中,所述至少一个软件组件基于存储器映射信息和符号表被链接,所述存储器映射信息中记录有加载每个组件的存储器地址信息,所述符号表中记录有关于所述至少一个软件组件所使用的符号的地址信息,所述方法包括:更新所述至少一个软件组件中将被更新的软件组件;更新符号表以反映更新的软件组件的改变的内容。
在下面的描述中将部分地阐述本发明的另外方面,部分地,本发明的另外方面将会从下面的描述中变得清楚,或者通过实施本发明而被了解。可借助元素和各种元素的结合来实现和获得本发明的各方面,并且在下面的详细描述和权利要求中具体阐述本发明的各方面。
应该理解,前面和后面的描述只是示例性和解释性的,并不意图以任何方式来限制要求保护的本发明或其应用。
发明的方式
将参照附图来更全面地描述本发明,其中,在附图中示出了本发明的示例性实施例。
图3是根据本发明实施例的基于组件的软件的框图。在当前实施例中,作为指定接口的符号查询函数320被用于提供独立的软件组件340-1至340-N中的每个组件。
参照图3,本发明当前实施例的软件被划分成操作系统(OS,未示出)和多个软件组件340-1至340-N。OS可实现为软件组件340-1至340-N中的一个或多个组件。与传统技术不同,软件组件340-1至340-N中的每个组件不包括用于链接的头信息,而是已使用存储器映射信息310被链接。由于先前已经链接了软件组件340-1至340-N,所以它们不需要头信息,而是使用与传统地以二进制镜像实现的软件的存储空间相似的存储空间。
本发明当前实施例的软件包括符号表330和存储器映射信息310,所述符号表330用于记录由软件组件340-1至340-N中的每个组件使用的符号的地址信息,所述存储器映射信息310用于记录加载软件组件340-1至340-N和符号表330的RAM的地址信息。存储器映射信息310还包括加载OS和符号查询函数320的RAM的存储器地址。存储器映射信息310被用于链接软件并将软件加载到RAM。
如上所述,本发明当前实施例的软件还包括查找由软件组件340-1至340-N中的每个组件提供的符号(函数和全局变量等)的符号查询函数320。符号查询函数320,作为被软件组件340-1至340-N调用的公共接口,查询符号表330并输出比如将被软件组件340-1至340-N中的每个组件使用的符号的地址的存取信息。软件组件340-1至340-N中每个组件的二进制镜像使用加载符号查询函数320的地址来调用符号查询函数320。符号查询函数320返回符号表330中的输入符号的地址或在软件组件340-1至340-N或OS中的输入符号的物理地址。调用符号查询函数320的软件组件340-1至340-N基于返回的信息使用期望的符号。
图4是根据本发明实施例的包括基于组件的软件的闪存的框图。参照图4,三个先前链接的软件组件440、450和460被安装在闪存中。所述闪存还包括存储器映射信息410、符号查询函数420和符号表430,它们与OS 400分离。然而,存储器映射信息410、符号查询函数420和符号表430可被包括在OS 400中。
图5是加载图4所示的软件的RAM的框图。参照图5,基于存储器映射信息410将每个组成部分加载到指定的存储器空间。
由于基于在存储器映射信息410中指定的地址来映射和链接三个软件组件440、450和460,所以如果它们被加载到具有不同基本地址的存储器空间,则发生错误。从地址0开始加载符号查询函数420和符号表430,从地址100开始加载OS 400,从地址300开始加载第一组件440,从地址400开始加载第二组件450,从地址500开始加载第三组件460。
本发明的基于组件的软件不被动态地链接,而在它被加载到RAM之前被链接。当软件组件440、450和460中的一个组件直接参考另一软件组件的函数地址时,如果由于另一组件的校正而引起函数地址改变,则需要修改参考另一组件的软件组件。因此,软件组件440、450和460中的每个组件使用作为指定的接口的符号查询函数420来进行通信,因此可对它们进行独立的管理。由于软件组件440、450和460中的每个组件通过指定的接口420使用另一软件组件的函数地址,所以另一软件组件的函数地址的改变不影响参考另一软件组件的软件组件。
图6是用于调用图5所示的第一组件440中的函数的代码的示图。
传统技术通过使用比如“malloc 100”的指令来调用函数以调用用于存储器分配的函数(malloc)。然而,参照图6,在本发明的当前实施例中,首先,代码调用作为符号查询函数的QuerySymbol,接收关于函数malloc的函数指针610,并使用返回的函数指针620来调用malloc。
所述方法引起组件之间的独立性,这可从使用汇编语言提供的代码得到确认。汇编代码630和640对应于函数调用610和620。“调用”指令字用于调用存储在相关地址中的函数。从相关地址执行函数所需的指令字例程被包括在代码中。
第一调用指令字630使用绝对值地址0x0来调用QuerySymbol。第二调用指令字640使用计算的地址[RegX]来调用作为另一组件的函数的malloc。如果将作为符号查询函数的QuerySymbol的地址指定为静态的,则由于第一调用指令字630没有改变,所以不必纠正参考另一组件的组件。[RegX]指示包括在符号表中malloc的地址被包括在[RegX]中。然而,在本发明的另一实施例中,第二调用指令字640可参考malloc的物理地址。此外,本发明的当前实施例描述由OS提供的函数malloc。然而,当使用另一组件的函数时,根据相同的原理使用符号查询函数来获得期望的函数的存取信息,以使用期望的函数。
图7是根据本发明另一实施例的基于组件的软件的框图。参照图7,不使用符号查询函数并且修改链接程序,从而链接软件组件730-1到730-N的二进制镜像以包括参考符号表720的代码,以获取通过OS和其他软件组件提供的符号的物理地址。图3所示的先前实施例的基于组件的软件既包括调用符号查询函数的指令字,也包括调用将被使用以调用外部函数的函数的指令字。
然而,与图3所示的先前实施例不同,本发明当前实施例的基于组件的软件不包括符号查询函数,而包括存储器映射信息710、符号表720和一个或者多个软件组件730-1到730-N。与图3所示的先前实施例相同,OS可被实现为这些软件组件730-1到730-N中的一个或者多个组件。
存储器映射信息710包括关于加载符号表720、OS和软件组件730-1到730-N中的每个组件的RAM的地址信息,并被用于链接OS和软件组件730-1到730-N中的每个组件并将OS和软件组件730-1到730-N中的每个组件加载到RAM。当链接软件组件730-1到730-N中的每个组件时,基于当前执行的指令字的地址和符号表720的符号地址信息指定物理地址。因此,当前执行的指令字的地址和符号表720的符号地址信息是执行软件组件730-1到730-N的每个指令字的重要信息。存储器映射信息710被用于指定软件组件730-1到730-N中的每个组件的基本地址。
符号表720存储软件组件730-1到730-N中的每个组件使用的符号的地址信息。通过使用在符号表720中指定的地址来将软件组件730-1到730-N中的每个组件使用的函数和变量与软件组件链接。例如,当使用函数printf时,传统链接方法直接将以函数printf开始的地址和使用函数printf的软件组件相链接。然而,在本发明当前实施例中,将记录有函数printf的地址的符号表720的地址与使用函数printf的软件组件相链接。因此,当更新软件组件730-1到730-N中的每个组件时,必须同时更新存储在闪存中的符号表720。符号表720必须被更新以支持动态加载。
图8是包括图7所示的基于组件的软件的闪存的框图。参照图8,三个先前链接的软件组件830、840和850被安装在闪存中。闪存还包括存储器映射信息810和符号表820,它们与OS 800分离。然而,存储器映射信息810和符号表820可被包括在OS 800中。
图9是加载图8的软件的RAM的框图。参照图9,基于存储器映射信息810,每一组成部分被加载到指定的存储器空间。
从地址0开始加载符号查询函数820,从地址300开始加载OS 800,从地址600开始加载第一组件830,从地址1000开始加载第二组件840,从地址1500开始加载第三组件850。
图10是根据本发明实施例的符号表1010的内容的示图。参照图10,符号表1010包括每个符号的地址值。例如,符号表1010显示函数printf从地址0x0640(1012)开始,函数strlen从地址0x0920(1014)开始。在本发明当前实施例中,由于不使用动态链接方法,而是先前链接有关地址,所以符号名称被用作参考而不需要被存储在符号表1010中。下面部分1020被表示为符号表1010的二进制格式。在下面部分1020中,每个符号的地址仅使用4字节。
图11是通过更新图10所示的符号表获得的符号表1110的内容的示图。参照图11,由于提供这些函数的OS被更新,所以函数printf的开始地址被改变成0x0700(1112),函数strlen开始的地址被改变成0x0980(1114)。与图10所示的符号表1010相同,下面部分1120被表示为符号表1110的二进制格式。
图12是用于调用在图9所示的第二组件840中的函数的代码的示图。参照图12,与图6所示的代码不同,汇编代码不需要调用符号查询函数的指令字。调用函数printf的指令字被编译并被链接到由记录有函数printf的开始地址的符号表的地址0x0000参考的汇编指令字1212。调用函数strlen的指令字被编译并被链接到由记录有函数strlen的开始地址的符号表的地址0x0008参考的汇编指令字1214。这些调用指令字1212和1214操作以通过符号表被重定位到存储函数printf和strlen的地址。具体地讲,通过将所需函数的地址写到符号表,调用指令字使用间接寻址方法跳转到函数printf和strlen。在这点上,如果符号表的位置(地址)没有改变,则使用符号的软件组件不受影响,只是通过更新软件组件和包括符号的符号表来正确地完成符号链接。
尽管在提供函数printf和strlen的OS被更新之后,符号表1110的地址值改变,但是不必更新使用函数printf和strlen的第二组件840。因为符号表1110的地址没有改变,所以使用记录在符号表的地址0x0000的信息1112和记录在符号表的地址0x0008的信息1114来间接调用函数,不必更新使用符号的软件组件。为此,符号表的地址不可改变,但是新符号被添加到符号表的最后。如上所述,符号表必定总被加载到在存储器映射信息中指定的地址。
图13是解释传统函数调用原理的示图。参照图13,传统调用指令字1302直接转到包括函数printf的地址1304。
图14是用于解释根据本发明实施例的间接函数调用原理的示图。参照图14,在本发明的当前实施例中使用记录有函数的地址的符号表的地址。也就是说,深度被增加。当第一组件调用函数printf时,第一组件被改变以具有参考地址0x700的符号表项的指令字1402。由于符号表的地址0x700包括记录有OS的地址0x04ba18的项1406,所以“call[0x700]”调用以地址0x04ba18开始的函数printf 1408。
尽管在当前实施例中描述了OS提供的函数,但是很显然,以与当前实施例中描述的方式相同的方式来使用由软件组件提供的函数。
图15是根据本发明实施例的获得基于组件的软件的方法的流程图。参照图15,划分软件以产生至少一个软件组件(操作1502)。在这点上,应该理解,相同的方法可被用于最初以组件形式编写软件的情况,在这种情况下,可省略软件划分步骤。产生记录有产生的软件组件所使用的符号的地址信息的符号表(操作1504)。产生记录有加载OS、软件组件和符号表的存储器地址信息的存储器映射信息(操作1506)。
基于组件的软件产生方法还可包括产生符号查询函数的操作,所述符号查询函数被至少一个软件组件调用并通过询问符号表输出输入的符号的存取信息。符号存取信息可包括符号表中的输入符号的地址或在软件组件或OS中的输入符号的物理地址。根据本发明另一实施例,软件组件可包括参考符号表的代码,以获取OS和其他软件组件提供的符号的物理地址。
图16是根据本发明实施例的编译和链接基于组件的软件的方法的流程图。参照图16,编译输入的源代码(操作1602和1604),然后进行链接(操作1606)。基于存储器映射信息和符号表,输入源代码的外部符号查询代码被改变成基于符号表获取符号的物理地址的间接寻址代码,以执行链接处理(操作1606)。
图17是根据本发明实施例的基于组件的软件更新方法的流程图。可独立地更新根据本发明的基于组件的软件的每个软件组件。因此,不更新整个软件镜像,而只更新改变的组件和改变的符号表。
参照图17,不更新所有的软件组件,而只更新将被改变和升级的软件组件(操作1702)。更新符号表以反映更新的软件组件的改变的内容(操作1704)。如果改变了加载每个软件组件的存储器地址,则更新存储器映射信息(操作1706)。
当使用间接方法来调用所有外部函数时,必须考虑软件性能方面的问题。函数使用得越频繁,问题变得越严重。尽管不频繁调用外部组件函数,但是频繁调用OS提供的函数,这可能会影响软件的性能。为了解决这个问题,不能间接调用OS提供的函数,而必须直接调用。如果间接调用OS提供的函数,则由于组件相互关联,所以不能校正OS提供的函数,并且不能改变存储器映射信息中指定的OS的基本地址。
然而,实验显示,本发明的间接调用方法没有在很大程度上减小软件的性能。当在VxWorks中执行从具有1303个外部函数调用的软件产生的二进制镜像时,二进制镜像的大小是974KB,二进制镜像的平均动作数是1594(26.57秒)。同时,当具有1303个外部函数调用的软件是根据本发明的基于组件的,并且在相同的平台VxWorks中执行时,二进制镜像的大小是978KB,平均动作数是1615(26.9秒)。因此,根据本发明,需要与使用二进制镜像产生的软件的存储器具有相似大小的存储器,并且执行速度也几乎与二进制镜像软件的速度相同,并且可利用作为二进制镜像提供的软件和基于组件的软件的优点。
本发明还可被实现为计算机可读记录介质上的计算机可读代码。
Claims (15)
1、一种其上记录有基于组件的软件的信息存储介质,包括:
至少一个软件组件;
符号表,记录有所述至少一个软件组件所使用的符号的地址信息;
存储器映射信息,记录有所述至少一个软件组件和符号表的存储器地址信息。
2、如权利要求1所述的介质,其中,存储器映射信息还包括操作系统(OS)的存储器地址信息。
3、如权利要求1所述的介质,还包括:符号查询函数,当所述符号查询函数被所述至少一个软件组件调用时,所述符号查询函数询问符号表并输出输入符号的存取信息。
4、如权利要求3所述的介质,其中,输入符号的存取信息包括符号表中的输入符号的地址或在所述至少一个软件组件或OS中的输入符号的物理地址。
5、如权利要求1所述的介质,其中,所述至少一个软件组件包括参考符号表以获取OS和其他软件组件提供的符号的物理地址的代码。
6、一种处理软件程序的方法,包括:
通过划分软件程序来产生至少一个软件组件;
产生记录有所述至少一个软件组件所使用的符号的地址信息的符号表;
产生记录有关于OS、所述至少一个软件组件和符号表的存储器地址信息的存储器映射信息。
7、如权利要求6所述的方法,还包括:产生符号查询函数,当所述符号查询函数被所述至少一个软件组件调用时,所述符号查询函数询问符号表并输出输入符号的存取信息。
8、如权利要求7所述的方法,其中,输入符号的存取信息包括符号表中的输入符号的地址或在所述至少一个软件组件或OS中的输入符号的物理地址。
9、如权利要求6所述的方法,其中,所述至少一个软件组件包括参考符号表以获取OS和其他软件组件提供的符号的物理地址的代码。
10、一种链接包括至少一个软件组件的软件的方法,包括:
提供存储器映射;
将关于至少一个软件组件的存储器地址信息记录在存储器映射中;
提供符号表;
将所述至少一个软件组件所使用的符号的地址信息记录在符号表中。
11、如权利要求10所述的方法,其中,基于符号表将所述至少一个软件组件的符号查询代码改变为获取符号的物理地址的代码。
12、一种其上记录有用于执行链接包括至少一个软件组件的软件的方法的计算机程序的计算机可读记录介质,所述程序使计算机执行下述步骤:
产生存储器映射;
将存储器地址信息存储在存储器映射中;
产生符号表;
将所述至少一个软件组件所使用的符号的地址信息存储在符号表中,
其中,基于所述符号表将所述至少一个软件组件的符号查询代码改变成获取符号的物理地址的代码。
13、一种更新包括至少一个软件组件的软件的方法,其中,所述至少一个软件组件基于存储器映射信息和符号表被链接,所述存储器映射信息中记录有指示每个组件被加载的位置的存储器地址信息,所述符号表中记录有关于所述至少一个软件组件所使用的符号的地址信息,所述方法包括:
更新所述至少一个软件组件中将被更新的软件组件;
更新符号表以反映更新的软件组件的改变的内容。
14、如权利要求13所述的方法,还包括:如果加载每个组件的存储器地址被改变,则更新存储器映射信息。
15、一种其上记录有用于执行更新包括至少一个软件组件的软件的方法的计算机程序的计算机可读记录介质,其中,所述至少一个软件组件基于存储器映射信息和符号表被链接,所述存储器映射信息中记录有指示每个组件被加载的位置的存储器地址信息,所述符号表中记录有所述至少一个软件组件所使用的符号的地址信息,所述方法包括:
更新所述至少一个软件组件中将被更新的软件组件;
更新符号表以反映更新的软件组件的改变的内容;
如果加载每个组件的存储器地址被改变,则更新存储器映射信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060053894 | 2006-06-15 | ||
KR1020060053894A KR20070119356A (ko) | 2006-06-15 | 2006-06-15 | 소프트웨어의 컴포넌트화 방법, 링크 방법 및 업데이트방법과, 소프트웨어를 기록한 정보저장매체 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101346693A true CN101346693A (zh) | 2009-01-14 |
Family
ID=38831912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800009748A Pending CN101346693A (zh) | 2006-06-15 | 2007-05-10 | 产生、链接和更新基于组件的软件的方法和其上记录有这种软件的信息存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070294683A1 (zh) |
KR (1) | KR20070119356A (zh) |
CN (1) | CN101346693A (zh) |
WO (1) | WO2007145428A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882094A (zh) * | 2010-06-10 | 2010-11-10 | 中兴通讯股份有限公司 | 嵌入式系统制作补丁的方法和系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288919A1 (en) * | 2007-05-14 | 2008-11-20 | Microsoft Corporation | Encoding of Symbol Table in an Executable |
US8175099B2 (en) | 2007-05-14 | 2012-05-08 | Microsoft Corporation | Embedded system development platform |
US20090228875A1 (en) * | 2008-03-04 | 2009-09-10 | Devries Alex | Method and System for Reducing Disk Allocation by Profiling Symbol Usage |
US8108645B2 (en) * | 2008-06-26 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Optimized memory allocation via feature extraction |
US8468516B1 (en) * | 2008-12-19 | 2013-06-18 | Juniper Networks, Inc. | Creating hot patches for embedded systems |
US9152438B2 (en) * | 2010-04-19 | 2015-10-06 | Qualcomm Incorporated | Object linking based on a determined linker order |
GB2527060B (en) * | 2014-06-10 | 2021-09-01 | Arm Ip Ltd | Method and device for updating software executed from non-volatile memory |
US10108404B2 (en) * | 2016-10-24 | 2018-10-23 | International Business Machines Corporation | Compiling optimized entry points for local-use-only function pointers |
CN114840400A (zh) * | 2022-04-14 | 2022-08-02 | 北京字节跳动网络技术有限公司 | 异常组件的识别方法、装置、设备、存储介质及程序产品 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193191A (en) * | 1989-06-30 | 1993-03-09 | Digital Equipment Corporation | Incremental linking in source-code development system |
US5613120A (en) * | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
US5790856A (en) * | 1995-05-08 | 1998-08-04 | Apple Computer, Inc. | Methods, apparatus, and data structures for data driven computer patches and static analysis of same |
US5938766A (en) * | 1997-03-21 | 1999-08-17 | Apple Computer, Inc. | System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables |
US6349408B1 (en) * | 1998-03-23 | 2002-02-19 | Sun Microsystems, Inc. | Techniques for implementing a framework for extensible applications |
US20030074656A1 (en) * | 2001-09-14 | 2003-04-17 | Yoshiaki Irino | Program execution apparatus and method, computer program for performing the program execution method, image forming system, and address solution method |
US7562346B2 (en) * | 2003-09-02 | 2009-07-14 | Microsoft Corporation | Software componentization for building a software product |
US20060080288A1 (en) * | 2004-10-11 | 2006-04-13 | Microsoft Corporation | Interaction of static and dynamic data sets |
US7721298B2 (en) * | 2004-12-03 | 2010-05-18 | Microsoft Corporation | Operating system performance |
-
2006
- 2006-06-15 KR KR1020060053894A patent/KR20070119356A/ko not_active Application Discontinuation
- 2006-12-19 US US11/641,056 patent/US20070294683A1/en not_active Abandoned
-
2007
- 2007-05-10 CN CNA2007800009748A patent/CN101346693A/zh active Pending
- 2007-05-10 WO PCT/KR2007/002308 patent/WO2007145428A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101882094A (zh) * | 2010-06-10 | 2010-11-10 | 中兴通讯股份有限公司 | 嵌入式系统制作补丁的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20070294683A1 (en) | 2007-12-20 |
KR20070119356A (ko) | 2007-12-20 |
WO2007145428A1 (en) | 2007-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101346693A (zh) | 产生、链接和更新基于组件的软件的方法和其上记录有这种软件的信息存储介质 | |
KR101699981B1 (ko) | 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화 | |
US10089119B2 (en) | API namespace virtualization | |
US6363436B1 (en) | Method and system for loading libraries into embedded systems | |
US6876996B2 (en) | Method and apparatus for using a shared library mechanism to facilitate sharing of metadata | |
US6202205B1 (en) | System and method for profile-based, on-the-fly optimization of library code | |
US7503034B2 (en) | Method and system for dynamically mapping archive files in an enterprise application | |
EP3084596B1 (en) | Executable code for constrained computing environments | |
EP3267308B1 (en) | Application loading method and device | |
US20090259999A1 (en) | Method and system for applying a patch during application execution | |
EP2487585A1 (en) | Method and device for dynamically loading relocatable file | |
US20080005728A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment | |
JPH0836488A (ja) | ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置 | |
US20080005727A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity | |
KR20040004551A (ko) | 사전 습득된 프로그램 파일들을 생성 및 이용하기 위한방법 및 디바이스 | |
CN105224309A (zh) | 一种调取函数的方法和装置 | |
CN103677778A (zh) | 一种CAP文件Classref常量的解析方法 | |
US6578194B1 (en) | System and method using extended relocation types and operations in relocating operations | |
CN110659088B (zh) | 一种嵌入式环境下程序扩展的方法及系统 | |
WO2007128974A1 (en) | Dead functions elimination in dynamic linked libraries for code size reduction of operating systems in embedded systems | |
US20080301719A1 (en) | Mapping Of Dynamic Link Libraries In Computing Devices | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
CN102216901A (zh) | 组件扩展方法和装置 | |
CN115994003A (zh) | 操作系统中共享对象的处理方法及处理装置 | |
CN101770508B (zh) | 移动通信终端中的数据访问方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090114 |