CN1809818A - 在产生差别文件中使用的处理软件 - Google Patents

在产生差别文件中使用的处理软件 Download PDF

Info

Publication number
CN1809818A
CN1809818A CNA2004800173170A CN200480017317A CN1809818A CN 1809818 A CN1809818 A CN 1809818A CN A2004800173170 A CNA2004800173170 A CN A2004800173170A CN 200480017317 A CN200480017317 A CN 200480017317A CN 1809818 A CN1809818 A CN 1809818A
Authority
CN
China
Prior art keywords
redaction
data
difference
file
prototype version
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.)
Granted
Application number
CNA2004800173170A
Other languages
English (en)
Other versions
CN100472475C (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.)
Qualcomm Inc
Qualcomm Technologies Inc
Original Assignee
Innopath Software Inc
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 Innopath Software Inc filed Critical Innopath Software Inc
Publication of CN1809818A publication Critical patent/CN1809818A/zh
Application granted granted Critical
Publication of CN100472475C publication Critical patent/CN100472475C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Abstract

为例如字节级文件差分提供了系统和方法。文件版本之间的软件/可执行的改变包括限定为源代码改变的主要改变/逻辑改变以及次要改变。次要改变一般由主要改变引起并由软件编译器/链接器应用产生。次要改变包括地址改变、指针目标地址改变以及地址偏移改变。所提供的预处理系统和方法在文件版本间使用近似规则来去除/减少次要改变,并把有关去除这些改变的信息编码在对应差别文件的信息中。

Description

在产生差别文件中使用的处理软件
相关申请
该申请涉及2002年5月13日提出的美国专利申请号10/146,545。
技术领域
所公开的实施例涉及用差别文件更新电子文件。
背景技术
运行在处理器、微处理器和/或处理单元上以提供某种功能的软件随时间经常改变。此改变可以是由例如纠正软件文件中的bug或错误、适应技术发展或添加新特征的需要而引起的。特别的,掌控在移动处理设备例如移动无线设备上的嵌入式软件组件常常包括很多需要纠正的软件bug。软件包括以人类可读的美国信息交换标准码(ASCII)普通文本文件或二进制代码形式的一个或多个文件。软件文件可以分成通常称为模块或组件的较小单元。
基于便携式处理器的设备如移动处理设备典型地包括实时操作系统(RTOS),在所述实时操作系统中设备的所有软件组件链接为一个单独的大文件。此外,在这些移动无线设备中,通常没有提供文件系统支持。而且,该单独的大文件需要使用慢速通信链路如无线电、红外线或串行链接来预加载或嵌入到所述设备中。
通过慢速通信链接来更新移动处理设备的大文件的障碍包括有关将更新的文件递送到设备的时间、带宽以及成本。对递送大文件到移动处理设备的问题的一个现有解决方案包括使用压缩。尽管通常使用若干现有的压缩算法,但是,经常是即使压缩过的文件对于通过慢速、昂贵、窄带的通信链路下载到设备也太大。
更新文件的另一典型解决方案使用差别程序来产生修正的文件如何区别于原始文件的说明。有生成这种差别数据的可得到的差别程序。但是,即使压缩过,对于通过有关的通信协议传送,使用这些差别程序生成的差别文件有时也太大。
附图说明
图1是示出一个实施例中文件差分和更新的框图。
图2是在图1的实施例下产生增量(delta)文件的流程图。
图3是可执行文件的原始和新版本的框图。
图4是图1和图2的实施例中预处理电子文件的不同版本的流程图。
图5是在图4的实施例中的预处理电子文件的不同版本的代码(文本)段的流程图。
图6是在图5的实施例中的为电子文件的原始版本的代码(文本)段产生新目标地址值的流程图。
图7是在一个实施例中的文件的原始版本和新版本的框图,示出关于为电子文件的原始版本的代码(文本)段产生新目标地址值而描述的不同地址(和相应记号)。
图8是在图4的实施例中的预处理电子文件的原始和新版本的数据段的流程图。
图9是在图8的实施例中的为电子文件的原始版本的数据段产生新的数据指针值的流程图。
图10是在一个实施例中的文件的原始版本和新版本的框图,示出为电子文件的原始版本产生新数据指针值所使用的不同地址(和相应记号)。
图11是在图4的实施例中的共有函数单元的提示合并的流程图。
图12是在图4的实施例中的共有数据单元的提示合并的流程图。
在所述图中,相同的参考号识别相同或基本相似的元素或行为。为了易于识别对任何特殊元件或行为的讨论,参考号中最重要的位指的是该元素第一次被介绍的图号(如,元件124关于图1被第一次介绍和讨论)。
具体实施方式
提供了系统和方法,用于预处理文件的原始和新版本作为原始和新版本之间的差别文件产生的一部分。该预处理支持进一步减小差别文件的大小。软件/文件版本间的可执行改变包括限定为源代码改变的主要改变/逻辑改变以及次要改变。次要改变一般是由主要改变引起的并由软件编译器/链接器应用来产生。次要改变包括由主要改变引起的并由软件编译器/链接器应用所产生的地址改变、指针目标地址改变以及地址偏移改变。所提供的预处理系统和方法在文件版本间使用近似规则来去除/减少次要改变,并把有关去除这些改变的信息编码到对应的差别文件的信息中。
在此详细描述用于在电子文件的两个版本之间产生差别文件的系统和方法,其在这里称为文件差分。图1是示出在一个实施例中的文件差分和更新的框图。所述文件差分和更新包括差分组件和更新组件。差分组件,此处称为文件差别生成器,根据电子文件的原始版本和新版本在第一基于处理器的或计算机系统中产生差别文件。更新组件,此处称为更新生成器,使用差别文件和原始文件的掌控拷贝在第二基于处理器的或计算机系统上产生新文件的拷贝。
在以下说明中,介绍了若干具体细节以提供对本发明的实施例的完全理解和实现说明。但是,本领域的技术人员将认识到本发明可以不需具体细节的一个或多个而实现,或利用其他组件、系统等等来实现。在其他例子中,不显示或不详细说明公知的结构或操作,以避免模糊本发明的方面。
参考图1,第一计算机系统102和第二计算机系统104通过通信路径106通信。如在本领域公知的,计算机102和104包括一起工作的计算组件和设备的任何集合。计算机系统102和104也可以是较大的计算机系统或网络中的组件或子系统。
通信路径106包括任何介质,文件通过所述介质在计算机102和104之间交换和传送。因此,路径106包括无线连接、有线连接和混合无线/有线连接。通信路径106还包括到包括本地局域网(LAN)、城域网(MAN)、广域网(WAN)、专用网、局间或后端网络以及Internet的网络的耦合或连接。此外,通信路径106包括可移动的固定介质如软盘、硬盘驱动器和CD-ROM盘,以及电话线、总线和电子邮件消息。
第一通信系统102接收电子文件的原始的、或旧的版本110和新版本112。新文件112通常是原始文件110的更新或修正的版本,但并不限制于此。电子文件110和112包括:软件文件,包括动态链接库文件、共享对象文件、嵌入式软件组件(EBSC)、固件文件、可执行文件;数据文件,包括十六进制数据文件、系统配置文件;以及包括个人使用数据的文件,但并不限制于此。因为任何类型的文件都可以看作字节流,以下依据上下文而可将文件描述为字节流。
如下所述,文件差别生成器114的组件接收新文件112,把它与原始文件110比较,并计算被比较文件间的差别。这些差别包括被比较文件间的字节级差别,但并不限制于此。文件差别生成器114在比较期间产生差别文件116,这里称作增量文件116。
一个实施例的文件差别生成器114耦合于主机系统102的组件之间,其中所述组件包括至少一个处理器、至少一个控制器、至少一个存储器设备以及至少一个总线,但并不限制于此。一个实施例的文件差别生成器114的组件包括至少一个预处理子系统124和至少一个差分子系统134。预处理子系统124也称为预处理器124,包括在预处理算法、程序或例程的至少一个的控制下运行的至少一个处理器。同样,差分子系统134包括在差分算法、程序或例程的至少一个的控制下运行的至少一个处理器。
增量文件116的内容提供了对新文件112和原始文件110之间差别的有效表示。增量文件116包括表现有关文件的新的或当前版本与该文件的以前版本之间差别的元数据以及代替和/或插入操作的真实数据,如2002年5月13日提出的标题为“Byte-Level File Differencing and UpdatingAlgorithms”、申请专利号10/146,545的美国专利申请所述。文件差别生成器114用最少量的字节和预定义的格式或协议在增量文件116中提供原始110和新112文件之间的任何差别,从而提供在空间上优化的增量文件。
增量文件116通过通信路径106传送或传输到另一处理系统104。传送之前,增量文件116可用本领域公知的压缩技术来压缩,但并不限制于此。掌控在接收系统104上的更新生成器118用增量文件116与掌控的原始文件110H一起产生或创建新文件的拷贝112C。新文件的拷贝112C随后用于更新掌控在目的为修正或更新的客户设备上的原始文件110H。当该更新过程完成时,现在存储在第二计算机系统上的新文件与第一计算机系统102中接收的新文件112一致。
原始文件和新文件之间的差别通常比新文件小,如果是差别而不是整个新文件被传输和存储,则显著节省了存储和传输。这对掌控着通过可通常是慢速和昂贵的连接如无线或蜂窝状连接而更新的程序的移动电子设备(客户设备)特别重要。增量文件减小的大小提供了很多改进,其中之一包括将增量文件传输到客户设备所需的带宽减小;较小的文件意味着传送需要较小的带宽。而且,较小的文件需要较少的传输时间,并且因此降低了文件传送被中断的可能性且同时减少了接收文件中的传输错误。另外,通过非安全连接传输增量文件比传输新软件映像更安全。所有这些改进提高了用户满意度。
图2是在图1的实施例中的产生增量文件的流程图。在块204,当新文件和原始文件在第一处理或计算机系统中被接收时,操作开始。对应于新和原始文件的映射文件也被接收。映射文件是包括软件映像的每个符号的开始地址和大小的高级文本文件,其中符号实例包括函数和全局变量。映射文件由编译器/链接器应用来输出,并且也称为日志文件、符号文件和/或列表文件。
在块206,在新文件和原始文件的内容之间执行预处理操作以便识别两文件内容的共有段和简单模式。通常,预处理使用所识别共有段和模式来减少/去除新和原始文件间的次要改变。一个实施例的预处理包括减少和/或去除由与逻辑改变相关联的地址偏移所引起的原始和新文件之间的改变,如下所述,但并不限制于此。于是,该预处理减少了文件共有段之间的差别,包括次要改变,因此提高了差别计算的效率。
预处理之后,在块208,计算新文件和经修改原始文件之间的字节级差别。在块210,编码和合并经计算的差别并通过遵循预定义的编码格式而产生增量文件。如果可能,在块212,然后如本领域公知的优化增量文件以进一步减小文件大小,并且在块214,提供优化的增量文件作为输出。
如上所述,在新文件和原始文件的内容之间执行预处理操作以便识别两文件内容中的共有段和简单模式。共有段和简单模式的知识用于减少/去除次要改变,因此造成整体性能增强。
如上所述,电子文件或软件更新在系统和客户设备之间的传输会花大量时间,尤其是通过低带宽通道传输时。一个实例是蜂窝电话软件升级。典型的实现是通过蜂窝无线耦合发送新和原始软件版本之间的字节级文件差别或改变。出现相当大的传递时间是因为可执行文件的新和原始版本之间的差别比其对应的源文件之间的差别更复杂。
出现这些新和原始文件版本之间的复杂差别一部分是因为源文件中小的改变经常引入贯穿可执行文件的较大改变。例如,可执行文件中引入的改变包括两种主要类型的改变:主要改变和次要改变。主要改变,也称为逻辑改变,是由从原始文件中删除源代码行、添加源代码行到新文件以及修改源代码行所引起的源代码改变。次要改变限定为包括但不局限于由主要改变引起并由编译器/链接器应用产生的地址改变、指针目标地址改变以及地址偏移改变。下面所述的预处理例程减少/去除了次要改变并把有关去除这些改变的信息编码到对应增量文件的信息中。
对可执行文件中引入的次要改变的分析从假设可执行文件包括代码(文本)段和数据段开始。图3是框图300,示出可执行文件的原始版本V1和新版本V2。原始版本V1和新版本V2都包括代码(文本)段310和320及数据段312和322。新版本V2和原始版本V1差别在于新版本V2包括了大小为0x500的附加的新代码块302。新代码块302的存在引入了两种次要改变。
第一种次要改变发生在新版本V2的代码(文本)段320并导致分支指令BRANCH具有不同的分支位移,也称为相对地址或分支偏移,由在分支指令地址BRANCH和目标指令地址TARGET之间添加新代码块302引起。在此实例中,目标指令地址是0x1000,而分支指令地址是0x3000,导致原始版本中0x2000(0x3000-0x1000)的分支位移。在分支指令地址和目标指令地址之间的新代码块(大小为0x500)的添加把分支指令地址改变为0x3500(0x3000+0x500)。所以,新版本V2中的分支位移改变为0x2500(0x3500-0x1000)。
第二种次要改变发生在新版本V2的数据段322中并导致数据指针POINTER中存储的值改变或存储对应数据区的绝对地址的数据指针值改变。数据指针值的改变由在代码(文本)段中添加新代码302引起。新代码302插入在数据段322之前的原始文件中的一个点。因此,在原始版本中为0x8000的数据指针值在新版本中改变为0x8500(0x8000+0x500)。
由于软件开发变得越来越复杂,次要改变遍布在可执行文件中,以至当考虑字节级文件差分的上下文时次要改变的数量超过了主要改变。下述的预处理例程使用文件的原始和新版本之间的关系来减少编码在增量文件中的有关次要改变的差别的信息数量。利用最少的信息,当进行字节级差分和重构时可以达到级联计算的效果,从而减小了增量文件的大小。
通常,一个实施例的预处理例程包括用于最小化增量文件大小的至少一个近似例程和至少一个合并例程。近似例程作用是根据文本(代码)和数据模型假设来减少/去除次要改变。合并例程,也称为提示合并例程,以用于传送到接收新版本的设备的最低成本水平来编码模型信息。如上所述,模型信息用于设备中的新版本的恢复,但并不限制于此。
图4是图1和图2的实施例中预处理电子文件的不同版本的流程图206。在块402,当接收到文件的新和原始版本时,从相关的映射文件中提取共有函数单元和共有数据单元。在块404,合并共有函数单元以形成共有函数块,其在以下及参考图11详细描述。同样,合并共有数据单元以形成共有数据块,其在以下参考图12详细说明。然后,在块408,预处理系统的预处理例程预处理新和原始文件的代码(文本)段,其在以下参考图5、6、7描述。在块410,预处理例程随后或同时预处理新和原始文件的数据段,其在以下参考图8、9、10描述。在块412,编码共有函数块和共有数据块,并输出原始文件的经修改版本以用于执行字节级文件差分。
图5是在图4的实施例中的预处理电子文件的不同版本的代码(文本)段的流程图408。通常,文件的代码(文本)段由一个或多个函数单元或块组成。在块502,一个实施例的代码(文本)段的预处理从识别原始和新文件的每个函数单元的开始和结束地址开始,其中原始文件的函数单元在这里称为“原始函数单元”而新文件的函数单元称为“新函数单元”。函数单元的开始和结束地址使用映射文件识别,但并不限制于此。
在块504,预处理器接下来给每个唯一的函数单元分配唯一的索引或索引值。给唯一函数单元分配索引值支持对原始和新文件版本都是共有的函数单元的识别。随后,当在文件的原始和新版本中都发现相同的函数单元时,该函数被分配一个共有索引值,但该实施例并不限制于此。
例如,考虑包括原始函数单元F1、F2、F3和F4的原始文件版本,以及包括新函数单元F1、F2、F3和F5的新文件版本。如果预处理器分别用索引值1、2、3、4和5来索引函数单元F1、F2、F3、F4和F5,则下表是针对原始文件版本组合的:
  Index   startAddressV1   endAddressV1
  1234   0x80400x80620x80860x9056   0x80620x80800x809e0x90a8
同样,下表是针对新文件版本组合的:
  Index   startAddressV2   endAddressV2
  1235   0x80600x80820x80a60x90e6   0x80820x80a00x80be0x9138
在这两个表中,startddress通常限定为对应函数单元的开始地址;因此“startAddressV1”是原始文件的函数单元的startAddress,而“startAddressV2”是新文件的函数单元的startAddress。进一步地,endAddress通过把函数单元大小与函数单元开始地址相加而产生,即
endAddress=startAddress+函数单元大小
但是该实施例并不限制于此。于是,endAddressV1限定为原始文件的函数单元的endAddress,而endAddressV2限定为新文件的函数单元的endAddress。对结束地址的该限定这里也适用于数据单元,但并不限制于此。
接下来,在块506,预处理器使用来自于上表的索引值、开始地址和结束地址的信息产生共有函数单元的HintTable。该HintTable包括组合在一个表中的共有函数单元的信息,包括索引值、原始文件版本(V1)的原始函数单元的开始和结束地址以及新文件版本(V2)的新函数单元的开始和结束地址。HintTable的信息使用任何数量的本领域公知的技术来设置。使用以上信息,一个实施例的HintTable如下产生:
 Index   startAddrV1   endAddrV1   startAddrV2   endAddrV2
  123   0x80400x80620x8086   0x80620x80800x809e   0x80600x80820x80a6   0x80820x80a00x80be
在块508,预处理器继续为包括目标地址的原始函数单元的指令产生新目标地址值。图6是在图5的实施例下为电子文件的原始版本的代码(文本)段产生新目标地址值的流程图508。
在描述新目标地址值的产生时,与函数单元相关联的各种地址用特殊记号说明如下。指令地址在此通常用记号“addr”表示;因此,“addrV1”表示原始函数单元中的指令地址,而“addrV2”表示新函数单元中的指令地址。目标地址在此通常用记号“targetAddr”表示;因此,“targetAddrV1”表示原始函数单元中的目标地址,而“targetaddrV2”表示新函数单元中的对应目标地址。此外,包括targetAddrV1的原始函数单元的开始地址在此用记号“targetStartAddrV1”表示,是包括targetAddrV1的原始函数单元的开始地址,而包括targetAddrV2的新函数单元的开始地址在此用记号“targetStartAddrV2”表示。
图7是一个实施例中的文件的原始版本V1和新版本V2的框图,示出关于为电子文件原始版本的代码(文本)段产生新目标地址值而描述的不同地址(和相应记号)。第一共有函数单元CFUA和第二共有函数单元CFU B对原始版本V1和新版本V2都是共有的。原始版本V1的共有函数单元CFU B具有开始地址startAddrV1,并包括位于指令地址addrV1的可计算指令cal_insA。该可计算指令在以下描述。原始版本V1的共有函数单元CFU A具有开始地址targetStartAddrV1,并包括可计算指令cal-insA的目标地址targetAddrV1。
同样地,新版本V2的共有函数单元CFU B具有开始地址strtAddrV2,并包括位于指令地址addrV2的可计算指令cal_insB。新版本V2的共有函数单元CFU A具有开始地址targetStartAddrV2,并包括可计算指令cal-insB的目标地址targetAddrV2。
回到图6,在块602,通过从原始文件版本的原始函数单元j读取未预处理的可计算指令开始产生新目标地址值,其中j是计数器值,值初始化为1并且接下来每次增加1直到j=n,其中n代表原始版本和新版本间的共有函数单元的总数。
然后在块604产生或计算可计算指令的当前目标地址,如下所述。对包括目标地址的任何指令,例如象程序计数器相关的跳转指令和加载/存储指令,目标地址用当前指令地址和对应指令解码来计算。使用以上提及的记号,当前目标地址计算变成
targetAddrV1=addrV1+解码(指令),或可替换地,
解码(指令)=targetAddrV1-addrV1。
如果值[targetAddrV1-addrV1]已知,该指令也可基于对应的编码方案来计算:
指令=编码(targetAddrV1-addrV1)
这一类指令称为可计算指令,在此用“cal-ins”表示,而值(targetAddrV1-addrV1)称为可计算指令的值或“指令值”。
对共有函数单元中的可计算指令,一个实施例的预处理器使用原始版本中的指令值连同原始函数单元开始地址及新函数单元开始地址一起产生共有函数单元的新版本中的指令值。利用以上提及的记号,于是,使用原始版本中的指令值(targetAddrV1-addrV1)、startAddrV1、targetStartAddrV1、startAddrV2和targetStartAddrV2来产生或计算新版本中的指令值(targetAddrV2-addrV2)。
因此,在块606,一旦产生原始文件的目标地址(targetAddrV1),预处理器访问HintTable以识别k,即包括目标地址targetAddrV1的原始文件版本的函数单元。在块608,利用原始函数单元j及其目标函数单元k的识别,预处理器从HintTable中读取startAddrV1、startAddrV2、targetStartAddrV1和targetStartAddrV2。
接下来,在块610,预处理器现在为cal_insB产生指令值(targetAddrV2-addrV2)以替换cal_nsA的指令值,如下所述。一个实施例的预处理器在至少两个假设之下操作,但并不限制于此。第一假设假定在原始版本和新版本中具有相同大小的共有函数单元具有在原始和新版本上的相同指令结构,这里所述指令结构包括指令类型和指令顺序。第二假设假定对于满足第一假设的共有函数单元中的任何可计算指令,当所述可计算指令是函数调用或可计算指令的目标地址落入也满足第一假设的共有函数单元中时,两个不变量通常在原始和新版本上保持如下:
addrV1-startAddrV1=addrV2-startAddrV2
targetAddrV1-targetStartAddrV1=targetAddrV2-targetStartAddrV2。
于是,根据这两个假设,在块610,预处理器为cal_insA产生新指令值(targetAddrV2-addrV2),如
targetAddrV2-addrV2=(targetAddrV1-addrV1)
                   +(targetStartAddrV2-targetStartAddrV1)
                   -(startAddrV2-startAddrV1),
在此称为公式1。
在块612,使用cal_insA的新指令值,预处理器将cal_insA修改为
指令=编码(targetAddrV2-addrV2)。
在原始版本的地址addrV1的原始指令cal_insA就以新指令替换。
在块614,预处理器随后判定是否有原始函数单元j的任何可计算指令仍然是未预处理。当可计算指令仍然是未预处理,预处理器返回去在块602从原始函数单元j读取另一个或可替换地下一个未预处理的可计算指令,并且继续如上所述进行预处理。
如在块614所判定的,当原始函数单元j的所有可计算指令都预处理后,在块616,预处理器判定计数器中的值j是否大于值n。判定j不大于n表明有共有函数单元未被预处理,所以在块618,计数器中的值j增加1,并继续如上所述进行预处理。
判定j大于n表明原始文件版本的所有函数单元都已被预处理。随后,在块620,预处理器输出包括新文件的近似版本的原始文件的修改版本。
如以上参考图4所述的,在块410,除了根据文本(代码)模型假设以去除次要改变,预处理器和近似例程还起到根据数据模型假设以去除次要改变的作用。图8是在图4的实施例下的用来预处理电子文件的原始和新版本的数据段的流程图410。通常,文件的数据段由一个或多个全局变量单元或块组成,所述单元或块此处称为“数据单元”。
在块802,一个实施例的数据段的预处理开始于对原始和新文件的每个数据单元的开始和结束地址的识别,这里原始文件的数据单元表示为“原始数据单元”,而新文件的数据单元表示为“新数据单元”。数据单元的开始和结束地址用映射文件识别,但并不限制于此。
在块804,预处理接下来给每个唯一的数据单元分配唯一的索引或索引值。给每个唯一的数据单元分配索引值支持对原始和新文件版本都是共有的数据单元的识别。随后,当在文件的原始和新版本中发现相同的数据单元时,给该数据单元分配一共有索引值,但该实施例并不限制于此。给唯一的数据单元的索引值的分配与上述给唯一的函数单元的索引值的分配相同,但并不限制于此。同样,根据索引值所组织的并包括每个数据单元的开始和结束地址的表的产生与用于原始和新文件版本的函数单元的上述表的产生相同。但是,可替换的实施例可使用任何数量的本领域公知的技术来分配索引值和产生表。
接下来,在块806,预处理器用来自上表的索引值、开始地址和结束地址的信息来产生共有数据单元的HintTable。该HintTable包括组合在一张表中的共有数据单元信息,包括索引值、原始文件版本(V1)的原始数据单元的开始和结束地址以及新文件版本(V2)的新数据单元的开始和结束地址。该HintTable的产生与参考共有函数单元的HintTable在以上所描述的相同,但是在可替换实施例中可使用任何数量的本领域公知的技术来产生该HintTable。
在块808,预处理器继续为原始版本的数据指针产生新数据指针值。图9是在图8的实施例下的用于为电子文件原始版本中的数据指针产生新数据指针值的流程图808。
数据指针是指向数据单元中的一些数据的指令。接着描述此处用于描述新数据指针值的产生的记号。包括数据指针的指令的地址在此通常用记号“dataPointer”表示;因此,“dataPointerV1”表示原始版本中的dataPointer,而“dataPointerV2”表示新版本中的dataPointer。包括由数据指针所指向的数据的数据单元的开始地址在此用“dataStartAddr”表示;因此“dataStartAddrV1”表示原始版本中的dataStartAddr,而“dataStartAddrV2”表示新版本中的dataStartAddr。
图10是一个实施例中的原始版本V1和新版本V2的框图,示出用于为电子文件原始版本产生新数据指针值的不同地址(和对应记号)。原始版本V1和新版本V2都包括代码(文本)段和数据段。数据段包括对原始文件版本V1和新文件版本V2都是共有的共有数据单元CDU A。原始版本V1包括指向原始版本的共有数据单元CDU A中的一些数据的代码(文本)段中的数据指针dataPointerV1,这里原始版本V1的CDU A的开始地址是dataStartAddrV1。同样,新版本V2包括指向新版本V2的共有数据单元CDU A中的一些数据的代码(文本)段中的数据指针dataPointerV2,这里新版本V2的CDU A的开始地址是dataStartAddrV2。dataStartAddr地址来自与文件的原始版本V1和新版本V2的软件映像相关联的映射文件。
回到图9,在块902,新数据指针值的产生通过识别原始版本中的未预处理的数据指针开始。一个实施例的预处理器用原始版本中的指针值(dataPointerV1)连同包括dataPointerV1所指向数据的数据单元的开始地址(dataStartAddrV1)及它在新版本中的对应数据单元的开始地址(dataStartAddrV2)一起产生新版本中的数据指针值(dataPointerV2),如下所述。这是通过在块904通过访问HintTable以识别k、即原始版本中的一数据单元来完成的,所述数据单元包括由dataPointerV1指向的数据。在块906,利用对数据单元k的识别,预处理器从HintTable中读取dataStartAddrV1和dataStartAddrV2。
在块908,预处理器随后产生数据指针值(dataPointerV2)以替换dataPointerV1,如下所述。一个实施例的预处理器在有关数据单元的至少两个附加假设下操作,这里称为第三和第四假设,但并不限制于此。第三假设假定在原始版本和新版本中具有相同大小的共有数据单元在原始和新版本上具有相同数据结构,这里所述数据结构包括数据变量的类型、大小和顺序。第四假设假定对满足第三假设的共有数据单元中的任何数据指针,不变式在原始和新版本上通常保持如下:
dataPointerV1-dataStartAddrV1=dataPointerV2-dataStartAddrV2。
因此,根据第三和第四假设,在块908,预处理器为新数据单元产生新数据指针值(dataPointerV2),如
dataPointery2=dataPointerV1+(dataStartAddrV2-dataStartAddrV1),在此称为公式2。
在块910,利用数据指针值datPointerV2,预处理器在原始版本中的对应地址处用dataPointerV2替换dataPointerV1。在块912,预处理器随后判定是否有原始数据单元的任何数据指针仍然是未预处理。
在块912,当原始数据单元的数据指针仍然是未预处理,预处理器返回以从原始数据单元读取另一个或可替换地下一个未预处理的数据指针,且如上所述继续进行预处理。如在块912所判定的,当原始数据单元的所有数据指针都预处理了,在块914,预处理器输出包括新文件的近似版本的原始文件的修改版本。
如以上在HintTable中所用的共有函数单元及共有数据单元的开始和结束地址共同称为“算法提示”或“提示”,因为它们用于判定不同文件版本间的共有单元的相对位置。如此,所述提示被传送给接收差别或增量文件以用于从增量文件和原始文件恢复新文件版本的客户设备,如上所述。由于传送提示通过与用于传送增量文件和其他信息到客户设备相同的低带宽通道来执行,一个实施例的预处理器执行提示合并以合并HintTable的共有函数单元和共有数据单元而不影响预处理算法或例程的性能。该合并减小了包括提示的文件大小并因此减小了传送给客户设备的信息量。
利用由上述预处理代码(文本)段所得到的共有函数单元,并返回到图4,在块404,在提示合并例程或算法的控制下的预处理器合并共有函数单元以形成共有函数块。图11是在图4的实施例下的共有函数单元的提示合并404的流程图。
同样,在块406,预处理器使用由上述数据段的预处理所产生的共有数据单元来合并共有数据单元以形成共有数据块。图12是在图4的实施例下的共有数据单元的提示合并406的流程图。下面依次描述共有函数单元和共有数据单元的提示合并。
尽管为了清楚在此分开描述了共有函数单元和共有数据单元的提示合并,所述实施例可以按任意顺序和任意组合来执行与合并相关联的操作。有关记号,函数或数据单元的开始地址在此通常用如上所述的记号“startAddress”表示;因此,“startAddressV1”表示原始函数或数据单元的开始地址,而“startAddressV2”表示在新函数或数据单元中的对应开始地址。同样,函数或数据单元的结束地址在此通常用记号“endAddress”表示;因此,“endAddressV1”表示原始函数或数据单元的结束地址,而“endAddressV2”表示在新函数或数据单元中的对应结束地址。
如以上参考图5所述的,产生共有函数单元的HintTable,其包括组合在一张表中的共有函数单元的信息,所述信息包括索引值、原始文件版本V1的原始函数单元的开始和结束地址以及新文件版本V2的新函数单元的开始和结束地址。上面提供的HintTable用作描述共有函数单元的提示合并的例子,但所述实施例并不限制于此:
  Index   startAddrV1   endAddrV1   startAddrV2   endAddrV2
  123   0x80400x80620x8086   0x80620x80800x809e   0x80600x80820x80a6   0x80820x80a00x80be
参考图4和图11以及该HintTable,在块1102,共有函数单元的提示合并404的操作开始于预处理器将HintTable的所有n个记录标记为可用、设置计数器j=1以及从关联的HintTable读取函数单元j和单元(j+1)的原始和新版本。在此例中,单元j和单元(j+1)的值对应于提示表的索引值,这里j=1,2,…(n-1),但并不限制于此。此外,j的值初始地设置为等于1且随后在进行提示合并404和处理了共有单元时用本领域公知的方法来增加。所以,在块1102,读取与索引值1和2(j+1=1+1=2)关联的共有函数单元的信息。
在块1104,预处理器判定共有函数单元j的原始版本V1和新版本V2的大小是否相等。该判定通过在原始版本V1和新版本V2的开始和结束地址之间求差来完成,如
         endAddrV1(j)-startAddrV1(j)=endAddrV2(j)-startAddrV2(j),
但并不限制于此。当原始版本V1和新版本V2具有不同大小的文件时,在块1112,操作进行为判定j的值是否小于量(n-1)。
当原始版本V1和新版本V2具有相同大小时,在块1116,预处理器判定共有函数单元j的原始版本V1的结束地址是否与共有函数单元(j+1)的原始版本V1的开始地址相同,如
                endAddrV1(j)=startAddrV1(j+1),
但并不限制于此。当共有函数单元j的原始版本V1的结束地址与共有函数单元(j+1)的原始版本V1的开始地址不同时,在块1112,操作进行为判定j的值是否小于量(n-1)。
当共有函数单元j的原始版本V1的结束地址与共有函数单元(j+1)的原始版本V1的开始地址相同时,在块1108,预处理器判定共有函数单元j的新版本V2的结束地址是否与共有函数单元(j+1)的新版本V2的开始地址相同,如
                  endAddrV2(j)=startAddrV2(j+1),
但并不限制于此。当共有函数单元j的新版本V2的结束地址与共有函数单元(j+1)的新版本V2的开始地址不同时,在块1112,操作进行为判定j的值是否小于量(n-1)。
当共有函数单元j的新版本V2的结束地址与共有函数单元(j+1)的新版本V2的开始地址相同时,在块1110,预处理器合并共有函数单元j和共有单元(j+1)的信息以形成共有函数块来替换单元(j+1)的记录,然后把单元j的记录标记为不可用。在块1112,操作然后进行为判定j的值是否小于量(n-1)。
在块1112,预处理器判定j的值是否小于量(n-1)。当j的值等于量(n-1),表明所有函数单元都已预处理,在块1116,操作进行为输出所有可用的记录作为共有函数块,并且操作返回。当j的值小于量(n-1),表明函数单元仍然是未预处理,在块1114,j的值增加,并且在块1102,操作进行为读取对应于j的新值的共有函数单元的信息。如上所述继续进行预处理。
下面参考图11和HintTable说明包括共有函数单元的提示合并的例子。操作开始于预处理器把所有三个记录标记为可用并从HintTAble中读取函数单元1和2的原始和新版本。然后预处理器判定共有函数单元1的原始版本V1和新版本V2是否大小相等。该判定通过在原始版本V1和新版本V2的开始和结束地址之间求差来完成,如
       endAddrV1(1)-startAddrV1(1)=endAddrV2(1)-startAddrV2(1)。
用来自HintTable的真实值代替产生
             (0x8062)-(0x8040)=(0x8082)-(0x8060)。
由于原始版本V1和新版本V2大小相等,预处理器接下来判定共有函数单元1的原始版本V1的结束地址是否与共有函数单元2的原始版本V1的开始地址相同,如
                 endAddrV1(1)=startAddrV1(2)。
用来自HintTable的真实值代替产生共有函数单元1的原始版本V1的结束地址与共有函数单元2的原始版本V1的开始地址相同的判定,如
                    (0x8062)=(0x8062)。
因为共有函数单元1的原始版本V1的结束地址与共有函数单元2的原始版本V1的开始地址相同,接下来判定共有函数单元1的新版本V2的结束地址是否与共有函数单元2的新版本V2的开始地址相同,如
                  endAddrV2(1)=startAddrV2(2)。
用来自HintTable的真实值代替产生共有函数单元1的新版本V2的结束地址与共有函数单元2的新版本V2的开始地址相同的判定,如
                    (0x8082)=(0x8082)。
响应于共有函数单元1的新版本V2的结束地址与共有函数单元2的新版本V2的开始地址相同的判定,预处理器合并共有函数单元1和共有函数单元2的信息以形成共有函数块如下:
 Index   startAddrV1   endAddrV1  startAddrV2   endAddrV2
 123   0x80400x80400x8086   0x80620x80800x809e  0x80600x80600x80a6   0x80820x80a00x80be   不可用可用可用
继续该例子,预处理器接下来从HintTable读取函数单元2和3的原始和新版本。预处理器判定共有函数单元2的原始版本V1和新版本V2是否大小相等。该判定通过在原始版本V1和新版本V2的开始和结束地址之间求差来完成,如
       endAddrV1(2)-startAddrV1(2)=endAddrV2(2)-startAddrV2(2)。
用来自HintTable的真实值代替产生
             (0x8080)-(0x8040)=(0x80a0)-(0x8060),
表示原始版本V1和新版本V2大小相等。
预处理器接下来判定共有函数单元2的原始版本V1的结束地址是否与共有函数单元3的原始版本V1的开始地址相同,如
                  endAddrV1(2)=startAddrV1(3)。
用来自HintTable的真实值代替产生判定共有函数单元2的原始版本V1的结束地址与共有函数单元3的原始版本V1的开始地址不同的判定,如
                (0x8080)不等于(0x8086)。
因为共有函数单元2的原始版本V1的结束地址与共有函数单元3的原始版本V1的开始地址不同,操作返回并且共有函数单元2和3不合并以形成共有函数块。
合并共有函数单元之后,上面例子的HintTable的可用记录如下输出:
 Index   startAddrV1   endAddrV1   startAddrV2   endAddrV2
 23   0x80400x8086   0x80800x809e   0x80600x80a6   0x80a00x80be
一个实施例的预处理器使用与上述关于共有函数单元的类似的方式来执行共有数据单元的提示合并。参考图4和图12,共有数据单元的提示合并406的操作开始于预处理器标记HintTable的所有n个记录、设置计数器j=1以及在块1202从关联的HintTable读取数据单元j和(j+1)的原始和新版本。单元j和单元(j+1)的值对应于提示表的索引值,这里j=1,2,…(n-1),但并不限制于此。
在块1204,预处理器判定共有数据单元j的原始版本V1和新版本V2的大小是否相等。该判定通过在原始版本V1和新版本V2的开始和结束地址之间求差来完成,如
         endAddrV1(j)-startAddrV1(j)=endAddrV2(j)-startAddrV2(j),
但并不限制于此。当原始版本V1和新版本V2具有不同大小的文件时,在块1212,操作进行为判定j的值是否小于量(n-1)。
当原始版本V1和新版本V2大小相等时,在块1206,预处理器判定共有数据单元j的原始版本V1的结束地址是否与共有数据单元(j+1)的原始版本V1的开始地址相同,如
                  endAddrV1(j)=startAddrV1(j+1),
但并不限制于此。当共有数据单元j的原始版本V1的结束地址与共有数据单元(j+1)的原始版本V1的开始地址不同时,在块1212,操作进行为判定j的值是否小于量(n-1)。
当共有数据单元j的原始版本V1的结束地址与共有数据单元(j+1)的原始版本V1的开始地址相同时,在块1208,预处理器判定共有数据单元j的新版本V2的结束地址是否与共有数据单元(j+1)的新版本V2的开始地址相同,如
                  endAddrV2(j)=startAddrV2(j+1),
但并不限制于此。当共有数据单元j的新版本V2的结束地址与共有数据单元(j+1)的新版本V2的开始地址不同时,在块1212,操作进行为判定j的值是否小于量(n-1)。
当共有数据单元j的新版本V2的结束地址与共有数据单元(j+1)的新版本V2的开始地址相同时,在块1210,预处理器合并共有数据单元j和共有数据单元(j+1)的信息以形成共有数据块来替换单元(j+1)的记录,然后把单元j的记录标记为不可用。在块1212,操作进行为判定j的值是否小于量(n-1)。
在块1212,预处理器判定j的值是否小于量(n-1)。当j的值等于量(n-1),表明所有数据单元都已预处理,在块1216,操作进行为输出HintTable中的可用记录作为共有数据块,并且操作返回。当j的值小于量(n-1),表明数据单元未被预处理,在块1214,j的值增加,并且在块1202,操作进行为读取对应于j的新值的共有数据单元的信息。如上所述继续进行预处理。
所述用于预处理电子文件的不同版本的系统和方法可应用于使用任意数量的指令架构的任意数量的处理和/或基于处理器的系统的软件和可执行文件。例如,此处的系统和方法可用于ARM架构,如由D.Jagger和D.Seal的“ARM架构参考手册”第二版所述。ARM架构是基于16/32位嵌入式精简指令集计算机(RISC)核心的微处理器架构,并引入Thumb16位指令集。当用在ARM架构中时,例如,以上提及的可计算指令将包括ARM/Thumb指令集的“利用链接分支(BL)”和“利用链接分支以及将模式改变为ARM/Thumb(BLX)”指令。此外,以上提及的数据指针包括ARM/Thumb指令集的DCD指令。
作为使用上述预处理的设备和/或系统的例子,接收和使用增量文件的计算设备可以是掌控更新所需的对应软件应用的客户设备,例如蜂窝电话、移动电子设备、移动通信设备、个人数字助理以及其他基于处理器的设备。通过使运营商和设备制造商能够经由他们的无线基础设施有效地发布电子文件内容和应用,对范围从固件到嵌入式应用的所有移动设备软件提供这种支持。
得益于上述预处理的系统的另一例子包括使用有线串行连接将增量文件从掌控文件差别生成器的设备传送到掌控文件更新生成器的设备的系统。这些系统典型地具有低的传送速率,并且因为传送速率低,减小增量文件大小是一种实现较快传送时间的途径。
得益于使用预处理的系统的又一例子包括使用无线电通信将增量文件从掌控文件差别生成器的设备传送到运行文件更新生成器的设备的系统。在经受与无线连接相关的低可靠性的同时,这些系统也具有低的传送速率。在这些系统中使用较小的增量文件提供了几个优点。例如,较小的文件大小导致较快的增量文件传送时间。较快的传送时间在为设备用户节约时间的同时也减少了将错误引入增量文件中的机会,从而提高了系统可靠性。而且,利用蜂窝通信,减少的传送时间造成为典型地按分钟为服务付费的消费者节约了成本。
作为另一优点,较小的增量文件减小了传送增量文件到客户设备所需的带宽。减小的带宽使得通过分配的通道支持更多客户设备。如同减少的传送时间,这也导致为无线服务提供商减少了运营成本。
用于预处理文件的原始和新版本作为在原始和新文件之间产生的差别文件的一部分的上述系统包括用于产生差别文件的第一设备,以及接收差别文件并用差别文件在第二设备中产生新文件版本的第二设备。第一设备包括减小差别文件大小的至少一个组件,所述减小通过以下进行:对应于由代码行删除、代码行添加以及代码行修改的至少一种所引起的地址偏移来识别原始和新版本之间的差别;通过使用原始版本的文本段的地址与新版本的对应文本段的地址之间的至少一种关系来修改原始版本的指令的目标地址,来去除原始和新版本之间所共有的文本段中的所识别差别;以及产生原始文件的修改版本,所述修改版本包括具有经修改目标地址的指令。
在一个实施例中,去除原始和新版本之间所共有的文本段中的所识别差别进一步包括:识别原始和新版本间所共有的第一和第二文本段,其中原始版本中的第一文本段包括第一可计算指令而新版本中第二文本段包括第二可计算指令;识别原始和新版本间所共有的第三和第四文本段,其中原始版本中的第三文本段包括对应第一可计算指令的第一目标地址,其中新版本中的第四文本段包括对应第二可计算指令的第二目标地址;通过用第三和第四函数单元的开始地址之间的第一差别及用第一和第二函数单元的开始地址之间的第二差别修改第一指令值,来从第二可计算指令产生第二指令值;以及用第二指令值替换第一可计算指令的第一指令值。
文件预处理作为一个实施例的差别文件产生的部分进一步包括通过修改原始版本中的数据指针值来去除包括指向原始和新版本所共有的数据段的数据指针的指令中的所识别差别,其中使用由当前数据指针指向的原始版本中的数据段的开始地址与新版本中的对应数据段的开始地址之间的差别来修改数据指针值。去除包括数据指针的指令中的所识别差别进一步包括:识别原始和新版本之间所共有的第一和第二代码段,其中原始版本中的第一代码段包括第一数据指针,而新版本中的第二代码段包括第二数据指针;识别原始和新版本之间所共有的第一和第二数据单元,其中原始版本中的第一数据单元包括对应第一数据指针的第一目标地址,其中新版本中的第二数据单元包括对应第二数据指针的第二目标地址;通过用第一和第二数据单元的开始地址间的差别修改第一指针值,来从第二数据指针产生第二数据指针值;以及用第二数据指针值替换第一数据指针的第一数据指针值。
一个实施例的系统中的第一设备用至少一种耦合来传送差别文件到第二设备,其中至少一种耦合是无线耦合、有线耦合以及混合无线/有线耦合中的至少一种。
一个实施例的系统中的第二设备包括至少一个基于处理器的设备,如个人计算机、便携式计算设备、蜂窝电话、便携式通信设备以及个人数字助理。
上述用于预处理文件的原始和新版本作为在原始和新版本之间的差别文件产生的部分的系统包括用于产生差别文件的设备。该设备包括:用于接收电子文件原始版本和新版本的装置;用于识别原始和新版本所共有的代码单元的装置;用于识别代码单元所共有的指令的装置,其中所述指令包括指示对相应文件的另一部分处理的指令值;用于从原始版本的第一指令产生第一指令值的装置;用于从新版本的第二指令产生第二指令值的装置,其中第二指令对应于第一指令;用于用第二指令值替换第一指令的第一指令值的装置;以及用于产生包括具有第二指令值的第一指令的原始文件的修改版本的装置。
上述用于预处理文件的原始和新版本作为原始和新版本之间的差别文件产生的部分的系统包括相关的方法。这些方法当中有一种方法用于减小包括电子文件的原始版本和新版本之间的经编码差别的差别文件的大小。一个实施例的方法包括:对应于由代码行删除、代码行添加以及代码行修改中的至少一种引起的地址偏移,来识别原始和新版本之间的差别;通过使用原始版本的文本段的地址与新版本的对应文本段的地址之间的至少一种关系修改原始版本的指令目标地址,来去除原始和新版本所共有的文本段中的所识别差别;以及产生包括具有经修改目标地址的指令的原始文件的修改版本。
去除共有文本段中的所识别差别的方法,进一步包括:识别原始和新版本间所共有的第一和第二文本段,其中原始版本中第一文本段包括第一可计算指令,而新版本中第二文本段包括第二可计算指令;识别原始和新版本间所共有的第三和第四文本段,其中原始版本中的第三文本段包括对应第一可计算指令的第一目标地址,其中新版本中的第四文本段包括对应第二可计算指令的第二目标地址;通过用第三和第四函数单元的开始地址之间的第一差别以及用第一和第二函数单元的开始地址之间的第二差别修改第一指令值,来从第二可计算指令产生第二指令值;以及用第二指令值替换第一可计算指令的第一指令值。
一个实施例的方法进一步包括通过修改原始版本中的数据指针值来去除包括指向原始和新版本所共有的数据段的数据指针的指令中的所识别差别,其中使用由当前数据指针所指向的原始版本中的数据段的开始地址与新版本中的对应数据段的开始地址之间的差别来修改数据指针值。
去除包括数据指针的指令中的所识别差别进一步包括:识别原始和新版本之间所共有的第一和第二代码段,其中原始版本中的第一代码段包括第一数据指针,而新版本中的第二代码段包括第二数据指针;识别原始和新版本之间所共有的第一和第二数据单元,其中原始版本中的第一数据单元包括对应第一数据指针的第一目标地址,其中新版本中的第二数据单元包括对应第二数据指针的第二目标地址;从第二数据指针产生第二数据指针值;以及用第二数据指针值替换第一数据指针的第一数据指针值。一个实施例的第二数据指针值的产生包括用第一和第二数据单元的开始地址之间的差别来修改第一数据指针值。
一个实施例的方法进一步包括产生包括具有经修改数据指针的指令的原始文件的修改版本。
一个实施例的方法进一步包括合并共有数据单元以形成共有数据块。一个实施例的合并包括:当原始版本的第一数据单元与新版本的第一数据单元大小相等、原始版本的第一数据单元的结束地址等于原始版本的第二数据单元的开始地址以及新版本的第一数据单元的结束地址等于新版本的第二数据单元的开始地址时,组合原始版本的第一和第二数据单元并组合新版本的对应第一和第二数据单元以形成共有数据块;以及对另外的可合并数据单元重复该组合操作。所述合并进一步包括合并共有文本段以形成共有函数块。所述合并还可包括:当原始版本的第一文本段与新版本的第一文本段大小相等、原始版本的第一文本段的结束地址等于原始版本的第二文本段的开始地址以及新版本的第一文本段的结束地址等于新版本的第二文本段的开始地址时,组合原始版本的第一和第二文本段并组合相应新版本的对应第一和第二文本段以形成共有函数块;以及对另外的可合并文本段重复该组合操作。
上述用于预处理文件的原始和新版本作为在原始和新版本之间的差别文件产生的部分的系统包括相关的方法。这些方法当中有一种方法用于执行文件差分,包括:接收电子文件的原始版本和新版本;识别原始和新版本所共有的代码单元;识别代码单元所共有的指令,其中所述指令包括有关对应文件的另一部分的指令值;从原始版本的第一指令解码第一指令值;从新版本的第二指令产生第二指令值,其中第二指令对应于第一指令;用第二指令值替换第一指令的第一指令值;以及产生包括具有第二指令值的第一指令的原始文件的修改版本。
一个实施例的方法进一步包括从相关的映射文件中提取共有代码单元,其中所述共有代码单元包括共有函数单元和共有数据单元。
一个实施例的方法进一步包括合并代码单元的共有函数单元以形成共有函数块。一个实施例的合并包括:当原始版本的第一函数单元与新版本的第一函数单元大小相等、原始版本的第一函数单元的结束地址等于原始版本的第二函数单元的开始地址以及新版本的第一函数单元的结束地址等于新版本的第二函数单元的开始地址时,组合原始版本的第一和第二函数单元并组合新版本的对应第一和第二函数单元以形成共有函数块;以及对另外的可合并函数单元重复该组合操作。一个实施例的方法进一步包括编码所述共有函数块。
一个实施例的方法进一步包括合并代码单元的共有数据单元以形成共有数据块。一个实施例的合并包括:当原始版本的第一数据单元与新版本的第一数据单元大小相等、原始版本的第一数据单元的结束地址等于原始版本的第二数据单元的开始地址以及新版本的第一数据单元的结束地址等于新版本的第二数据单元的开始地址时,组合原始版本的第一和第二数据单元并组合新版本的对应第一和第二数据单元以形成共有数据块;以及对另外的可合并数据单元重复该组合操作。所述方法可以进一步包括编码共有数据块。
在一个实施例的方法中,原始和新版本所共有的代码单元是共有函数单元,其中第一指令包括第一可计算指令,而第二指令包括第二可计算指令,其中产生第二指令值包括用包括目标地址的原始和新版本的共有函数单元的开始地址之间的第一差别以及用包括第一和第二可计算指令的共有函数单元的开始地址之间的第二差别来修改第一指令值。
一个实施例的方法的代码单元包括函数单元。在这些方法中,产生第一指令值包括产生第一可计算指令的当前指令地址与第一可计算指令的目标地址之间的差别。产生第二指令值包括:产生第一可计算指令的当前指令地址与第一可计算指令的目标地址之间的差别;产生新版本的第一共有函数单元的开始地址与原始版本的对应第一共有函数单元的开始地址之间的差别;以及产生新版本的第二共有函数单元的开始地址与原始版本的对应第二共有函数单元的开始地址之间的差别。
在一个实施例的一些方法中,代码单元包括数据单元而指令包括数据指针。
在一个实施例的方法中,原始和新版本所共有的代码单元是共有数据单元,其中第一指令包括第一数据指针而第二指令包括第二数据指针,其中第一指令值包括第一数据指针值而第二指令值包括第二数据指针值,其中产生第二指令值包括通过用第一和第二数据单元的开始地址之间的差别修改第一数据指针值来产生第二数据指针值。
一个实施例的方法进一步包括在原始文件的修改版本与新文件之间执行文件差分并产生差别文件。该方法还进一步包括:传送差别文件到便携式处理系统;以及用差别文件在便携式处理系统中产生新文件版本。一个实施例的方法还进一步包括:合并代码单元的共有函数单元以形成共有函数块;合并代码单元的共有数据单元以形成共有数据块;以及编码共有函数块和共有数据块以用于在便携式处理系统中产生新文件版本。
上述用于预处理文件的原始和新版本作为原始和新版本之间的差别文件产生的部分的系统还包括附加的相关的方法。这些方法当中有一种方法用于判定电子文件之间的差别,包括:接收电子文件的原始版本和新版本;识别原始和新版本之间所共有的第一和第二函数单元,其中原始版本中的第一函数单元包括第一可计算指令而新版本中的第二函数单元包括第二可计算指令;识别原始和新版本之间所共有的第三和第四函数单元,其中原始版本中的第三函数单元包括对应第一可计算指令的第一目标地址,其中新版本中的第四函数单元包括对应第二可计算指令的第二目标地址;从第二可计算指令产生第二指令值;用第二指令值替换第一可计算指令的第一指令值;以及产生包括具有第二指令值的第一指令的原始文件的修改版本。
在所述方法下产生第二指令值包括用第三和第四函数单元的开始地址之间的第一差别以及用第一和第二函数单元的开始地址之间的第二差别来修改第一指令值。
一个实施例的方法进一步包括:识别原始和新版本之间所共有的第一和第二代码段,其中原始版本中的第一代码段包括第一数据指针而新版本中的第二代码段包括第二数据指针;识别原始和新版本之间所共有的第一和第二数据单元,其中原始版本中的第一数据单元包括对应第一数据指针的第一目标地址,其中新版本中的第二数据单元包括对应第二数据指针的第二目标地址;从第二数据指针产生第二数据指针值;用第二数据指针值替换第一数据指针的第一数据指针值;以及产生包括具有第二数据指针值的第一数据指针的原始文件的修改版本。在一个实施例中产生第二数据指针值包括产生由当前数据指针指向的原始版本中的数据段的开始地址与新版本中的对应数据段的开始地址之间的差别。
一个实施例的方法进一步包括合并共有函数单元以形成共有函数块。
一个实施例的方法进一步包括合并共有数据单元以形成共有数据块。
一个实施例的方法进一步包括使用原始文件的经修改版本和新文件来产生差别文件。所述方法还进一步包括:传送差别文件到便携式处理系统;以及用差别文件在便携式处理系统中产生新文件版本。
上述用于预处理文件的原始和新版本作为原始和新版本之间的差别文件产生的部分的系统包括计算机可读介质。一个实施例的计算机可读介质包括可执行指令,当所述指令在处理系统中执行时,通过以下减小了包括电子文件的原始版本和新版本之间的代码差别的差别文件大小:对应于由代码行删除、代码行添加以及代码行修改中的至少一种所引起的地址偏移,来识别原始和新版本之间的差别;通过使用原始版本的文本段的地址与新版本的对应文本段的地址之间的至少一种关系修改原始版本的指令目标地址,来去除原始和新版本所共有的文本段中的所识别差别;以及产生包括具有经修改目标地址的指令的原始文件的修改版本。
本发明的各方面可以实现为编程到多种电路中的功能性,所述电路包括可编程逻辑器件(PLD)如现场可编程门阵列(FPGA)、可编程阵列逻辑(PAL)器件、电可编程逻辑和存储器器件及标准的基于蜂窝的器件,以及专用集成电路(ASIC)。实现本发明的各方面的一些其他可能性包括:带存储器的微控制器(如电子可擦除可编程只读存储器(EEPROM))、嵌入式微处理器、固件、软件等等。此外,本发明的各方面可以在具有基于软件的电路仿真、离散逻辑(顺序的和组合的)、定制器件、模糊(神经系统的)逻辑、量子器件以及任意以上器件类型的混合的微处理器中实施。当然基础的器件技术可以多种组成类型提供,例如象互补金属氧化物半导体(CMOS)的金属氧化物半导体场效应晶体管(MOSFET)技术、象发射极耦合逻辑(ECL)的双极技术、聚合物技术(例如硅共轭聚合物和金属共轭聚合物金属结构)、混合模拟和数字等等。
除非上下文清楚地需要,否则在整个说明和权利要求中,词“包括”应解释为与排除或穷尽的意思相对的内含的意义;即,是“包括但不限于”的意思。使用单数或复数的词也分别包括复数和单数。另外,当用于本申请中时,词“在此”、“在下面”、“以上”、“以下”以及类似词应指整个该申请而非该申请的任何特殊部分。当关于两个或更多条目的列表来使用词“或”时,该词覆盖所有以下对该词的理解:列表中的任何条目、列表中的所有条目以及列表中的条目的任意组合。
以上对本发明实施例的说明不是要穷尽或把本分明限制为所公开的精确形式。尽管为了说明的目的在此描述了本发明的特定实施例和例子,如本领域的技术人员将认识到的,在本发明的范围内进行各种等效的修改是可能的。这里提供的本发明的讲授可应用于其他处理系统和通信系统,而不仅用于上述的文件差分系统。
上述各种实施例的元素和行为可以组合以提供进一步的实施例。可以根据上述详细说明而对本发明进行这些和其他的改变。
所有以上引用和美国专利及专利申请通过引用结合于此。如果需要,可以修改本发明的各方面,采用上述各种专利和申请的系统、功能和概念以提供本发明进一步的实施例。
总之,在以下权利要求中,所使用的术语不应理解为把本发明限制于说明书和权利要求中所公开的特定实施例,而应理解为包括工作在权利要求下以提供文件差分的所有处理系统。相应地,本发明不受公开内容所限制,而本发明的范围应完全由权利要求来确定。
尽管本发明的某些方面在下面以某种权利要求的形式出现,发明人以多种权利要求形式设想了本发明的各个方面。例如,仅仅本发明的一个方面描述为在计算机可读介质中实施,但其他方面同样也可以在计算机可读介质中实施。相应地,发明人保留在提出申请之后添加附加权利要求的权利,以便为本发明的其他方面追加这样的附加权利要求形式。

Claims (43)

1.一种用于更新电子文件的系统,包括:
第一设备,用于产生包括电子文件的原始版本和新版本之间的经编码差别的差别文件,其中所述第一设备包括减小所述差别文件大小的至少一个组件,所述减小通过以下进行:
对应于由代码行删除、代码行添加以及代码行修改中的至少一种所引起的地址偏移,来识别所述原始和新版本之间的差别;
通过使用所述原始版本的文本段的地址与所述新版本的对应文本段的地址之间的至少一种关系而修改所述原始版本的指令目标地址,来去除所述原始和新版本所共有的文本段中的所识别差别;
产生包括具有所述经修改目标地址的指令的所述原始文件的修改版本;及
第二设备,接收所述差别文件并用所述差别文件在所述第二设备中产生新文件版本。
2.权利要求1的系统,其中去除进一步包括:
识别所述原始和新版本间所共有的第一和第二文本段,其中所述原始版本中的第一文本段包括第一可计算指令,而所述新版本中的第二文本段包括第二可计算指令;
识别所述原始和新版本间所共有的第三和第四文本段,其中所述原始版本中的第三文本段包括对应所述第一可计算指令的第一目标地址,其中所述新版本中的第四文本段包括对应所述第二可计算指令的第二目标地址;
通过用第三和第四函数单元的开始地址之间的第一差别及用第一和第二函数单元的开始地址之间的第二差别而修改第一指令值,来从所述第二可计算指令产生第二指令值;以及
用所述第二指令值替换所述第一可计算指令的第一指令值。
3.权利要求1的系统,进一步包括通过修改所述原始版本中的数据指针值来去除包括指向所述原始和新版本所共有的数据段的数据指针的指令中的所识别差别,其中使用由当前数据指针指向的所述原始版本中的数据段的开始地址与所述新版本中的对应数据段的开始地址之间的差别来修改数据指针值。
4.权利要求3的系统,其中去除包括数据指针的指令中的所识别差别进一步包括:
识别所述原始和新版本之间所共有的第一和第二代码段,其中所述原始版本中的第一代码段包括第一数据指针而所述新版本中的第二代码段包括第二数据指针;
识别所述原始和新版本之间所共有的第一和第二数据单元,其中所述原始版本中的第一数据单元包括对应所述第一数据指针的第一目标地址,其中所述新版本中的第二数据单元包括对应所述第二数据指针的第二目标地址;
通过用所述第一和第二数据单元的开始地址间的差别而修改第一指针值,来从所述第二数据指针产生第二数据指针值;以及
用所述第二数据指针值替换所述第一数据指针的第一数据指针值。
5.权利要求1的系统,其中所述第二设备包括从个人计算机、便携式计算设备、蜂窝电话、便携式通信设备以及个人数字助理当中选择的至少一种基于处理器的设备。
6.权利要求1的系统,其中所述第一设备用至少一种耦合来传送差别文件到所述第二设备,其中所述至少一种耦合为无线耦合、有线耦合以及混合无线/有线耦合当中的至少一种。
7.一种用于产生差别文件的设备,包括:
用于接收电子文件的原始版本和新版本的装置;
用于识别所述原始和新版本所共有的代码单元的装置;
用于识别所述代码单元所共有的指令的装置,其中所述指令包括指示处理对应文件的另一部分的指令值;
用于从所述原始版本的第一指令产生第一指令值的装置;
用于从所述新版本的第二指令产生第二指令值的装置,其中所述第二指令对应于所述第一指令;
用于以所述第二指令值替换所述第一指令的第一指令值的装置;以及
用于产生包括具有所述第二指令值的第一指令的所述原始文件的修改版本的装置。
8.一种用于减小包括电子文件的原始版本和新版本之间的经编码差别的差别文件的大小的方法,包括:
对应于由代码行删除、代码行添加以及代码行修改中的至少一种所引起的地址偏移,来识别所述原始和新版本之间的差别;
通过使用所述原始版本的文本段与所述新版本的对应文本段的地址之间的至少一种关系而修改所述原始版本的指令的目标地址,来去除所述原始和新版本所共有的文本段中的所识别差别;以及
产生包括具有经修改目标地址的指令的所述原始文件的修改版本。
9.权利要求8的方法,其中去除进一步包括:
识别所述原始和新版本间所共有的第一和第二文本段,其中所述原始版本中的第一文本段包括第一可计算指令,而所述新版本中的第二文本段包括第二可计算指令;
识别所述原始和新版本间所共有的第三和第四文本段,其中所述原始版本中的第三文本段包括对应所述第一可计算指令的第一目标地址,其中所述新版本中的第四文本段包括对应所述第二可计算指令的第二目标地址;
通过用第三和第四函数单元的开始地址之间的第一差别及用第一和第二函数单元的开始地址之间的第二差别而修改第一指令值,来从所述第二可计算指令产生第二指令值;以及
用所述第二指令值替换所述第一可计算指令的第一指令值。
10.权利要求8的方法,进一步包括通过修改所述原始版本中的数据指针值来去除包括指向所述原始和新版本所共有的数据段的数据指针的指令中的所识别差别,其中使用由当前数据指针指向的所述原始版本中的数据段的开始地址与所述新版本的对应数据段的开始地址之间的差别来修改数据指针值。
11.权利要求10的方法,其中去除包括数据指针的指令中的所识别差别进一步包括:
识别所述原始和新版本之间所共有的第一和第二代码段,其中所述原始版本中的第一代码段包括第一数据指针,而所述新版本中的第二代码段包括第二数据指针;
识别所述原始和新版本之间所共有的第一和第二数据单元,其中所述原始版本中的第一数据单元包括对应所述第一数据指针的第一目标地址,其中所述新版本中的第二数据单元包括对应所述第二数据指针的第二目标地址;
从所述第二数据指针产生第二数据指针值;以及
用所述第二数据指针值替换所述第一数据指针的第一数据指针值。
12.权利要求11的方法,其中产生所述第二数据指针值包括用所述第一和第二数据单元的开始地址间的差别来修改第一数据指针值。
13.权利要求10的方法,进一步包括产生所述原始文件的修改版本,所述修改版本包括具有经修改数据指针的指令。
14.权利要求10的方法,进一步包括合并共有数据单元以形成共有数据块。
15.权利要求14的方法,其中合并包括:
当所述原始版本的第一数据单元与所述新版本的第一数据单元大小相等、所述原始版本的第一数据单元的结束地址等于所述原始版本的第二数据单元的开始地址以及所述新版本的第一数据单元的结束地址等于所述新版本的第二数据单元的开始地址时,组合所述原始版本的第一和第二数据单元并组合所述新版本的对应第一和第二数据单元以形成共有数据块;以及
对另外的可合并数据单元重复该组合操作。
16.权利要求15的方法,进一步包括合并共有文本段以形成共有函数块。
17.权利要求16的方法,其中合并包括:
当所述原始版本的第一文本段与所述新版本的第一文本段大小相等、所述原始版本的第一文本段的结束地址等于所述原始版本的第二文本段的开始地址以及所述新版本的第一文本段的结束地址等于所述新版本的第二文本段的开始地址时,组合所述原始版本的第一和第二文本段并组合所述新版本的对应第一和第二文本段以形成共有函数块;以及
对另外的可合并文本段重复该组合操作。
18.一种用于执行文件差分的方法,包括:
接收电子文件的原始版本和新版本;
识别所述原始和新版本所共有的代码单元;
识别所述代码单元所共有的指令,其中所述指令包括有关对应文件的另一部分的指令值;
从所述原始版本的第一指令解码第一指令值;
从所述新版本的第二指令产生第二指令值,其中所述第二指令对应于所述第一指令;
用所述第二指令值替换所述第一指令的第一指令值;以及
产生包括具有所述第二指令值的第一指令的所述原始文件的修改版本。
19.权利要求18的方法,进一步包括从相关的映射文件中提取共有代码单元,其中所述共有代码单元包括共有函数单元和共有数据单元。
20.权利要求18的方法,进一步包括合并所述代码单元的共有函数单元以形成共有函数块。
21.权利要求20的方法,其中合并包括:
当所述原始版本的第一函数单元与所述新版本的第一函数单元大小相等、所述原始版本的第一函数单元的结束地址等于所述原始版本的第二函数单元的开始地址以及所述新版本的第一函数单元的结束地址等于所述新版本的第二函数单元的开始地址时,组合所述原始版本的第一和第二函数单元并组合所述新版本的对应第一和第二函数单元以形成共有函数块;以及
对另外的可合并函数单元重复该组合操作。
22.权利要求20的方法,进一步包括编码所述共有函数块。
23.权利要求18的方法,进一步包括合并所述代码单元的共有数据单元以形成共有数据块。
24.权利要求23的方法,其中合并包括:
当所述原始版本的第一数据单元与所述新版本的第一数据单元大小相等、所述原始版本的第一数据单元的结束地址等于所述原始版本的第二数据单元的开始地址以及所述新版本的第一数据单元的结束地址等于所述新版本的第二数据单元的开始地址时,组合所述原始版本的第一和第二数据单元并组合所述新版本的对应第一和第二数据单元以形成共有数据块;以及
对另外的可合并数据单元重复该组合操作。
25.权利要求23的方法,进一步包括编码所述共有数据块。
26.权利要求18的方法,其中所述原始和新版本所共有的代码单元是共有函数单元,其中所述第一指令包括第一可计算指令而所述第二指令包括第二可计算指令,其中产生所述第二指令值包括用包括目标地址的所述原始和新版本的共有函数单元的开始地址之间的第一差别以及用包括所述第一和第二可计算指令的所述原始和新版本的共有函数单元的开始地址之间的第二差别来修改所述第一指令值。
27.权利要求18的方法,其中所述代码单元包括函数单元。
28.权利要求27的方法,其中产生所述第一指令值包括产生第一可计算指令的当前指令地址与第一可计算指令的目标地址之间的差别。
29.权利要求27的方法,其中产生所述第二指令值包括:
产生第一可计算指令的当前指令地址与第一可计算指令的目标地址之间的差别;
产生新版本的第一共有函数单元的开始地址与原始版本的对应第一共有函数单元的开始地址之间的差别;以及
产生所述新版本的第二共有函数单元的开始地址与所述原始版本的对应第二共有函数单元的开始地址之间的差别。
30.权利要求18的方法,其中所述代码单元包括数据单元而所述指令包括数据指针。
31.权利要求18的方法,其中所述原始和新版本所共有的代码单元是共有数据单元,其中所述第一指令包括第一数据指针而所述第二指令包括第二数据指针,其中所述第一指令值包括所述第一数据指针值而所述第二指令值包括所述第二数据指针值,其中产生所述第二指令值包括通过用第一和第二数据单元的开始地址之间的差别修改所述第一数据指针值来产生第二数据指针值。
32.权利要求18的方法,进一步包括在所述原始文件的修改版本与新文件之间执行文件差分并产生差别文件。
33.权利要求32的方法,进一步包括:
将所述差别文件传送到便携式处理系统;以及
用所述差别文件在所述便携式处理系统中产生新文件版本。
34.权利要求33的方法,进一步包括:
合并所述代码单元的共有函数单元以形成共有函数块;
合并所述代码单元的共有数据单元以形成共有数据块;以及
编码所述共有函数块和所述共有数据块以便用于在便携式处理系统中产生所述新文件版本。
35.一种用于判定电子文件之间的差别的方法,包括:
接收电子文件的原始版本和新版本;
识别所述原始和新版本之间所共有的第一和第二函数单元,其中所述原始版本中的第一函数单元包括第一可计算指令而所述新版本中的第二函数单元包括第二可计算指令;
识别所述原始和新版本之间所共有的第三和第四函数单元,其中所述原始版本中的第三函数单元包括对应所述第一可计算指令的第一目标地址,其中所述新版本中的第四函数单元包括对应所述第二可计算指令的第二目标地址;
从所述第二可计算指令产生第二指令值;
用该第二指令值替换所述第一可计算指令的第一指令值;以及
产生包括具有所述第二指令值的第一指令的原始文件的修改版本。
36.权利要求35的方法,其中产生所述第二指针值包括用所述第三和第四函数单元的开始地址之间的第一差别以及用所述第一和第二函数单元的开始地址之间的第二差别来修改所述第一指令值。
37.权利要求35的方法,进一步包括:
识别所述原始和新版本之间所共有的第一和第二代码段,其中所述原始版本中的第一代码段包括第一数据指针,而所述新版本中的第二代码段包括第二数据指针;
识别所述原始和新版本之间所共有的第一和第二数据单元,其中所述原始版本中的第一数据单元包括对应所述第一数据指针的第一目标地址,其中所述新版本中的第二数据单元包括对应所述第二数据指针的第二目标地址;
从所述第二数据指针产生第二数据指针值;
用该第二数据指针值替换所述第一数据指针的第一数据指针值;以及
产生包括具有所述第二数据指针值的第一数据指针的原始文件的修改版本。
38.权利要求37的方法,其中产生所述第二数据指针值包括产生由当前数据指针所指向的原始版本中的数据段的开始地址与所述新版本中的对应数据段的开始地址之间的差别。
39.权利要求35的方法,进一步包括合并共有函数单元以形成共有函数块。
40.权利要求35的方法,进一步包括合并共有数据单元以形成共有数据块。
41.权利要求35的方法,进一步包括使用所述原始文件的修改版本和新文件来产生差别文件。
42.权利要求41的方法,进一步包括:
将所述差别文件传送到便携式处理系统;以及
用所述差别文件在所述便携式处理系统中产生新文件版本。
43.一种计算机可读介质,包括可执行指令,当该可执行指令在处理系统中执行时,减小了包括电子文件的原始版本和新版本之间的经编码差别的差别文件的大小,所述减小通过以下进行:
对应于由代码行删除、代码行添加以及代码行修改中的至少一种所引起的地址偏移,来识别所述原始和新版本之间的差别;
通过使用所述原始版本的文本段与所述新版本的对应文本段的地址之间的至少一种关系而修改所述原始版本的指令的目标地址,来去除所述原始和新版本所共有的文本段中的所识别差别;以及
产生包括具有经修改目标地址的指令的所述原始文件的经修改版本。
CNB2004800173170A 2003-06-20 2004-05-19 用于更新电子文件的系统及其中的方法 Expired - Fee Related CN100472475C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/600,978 2003-06-20
US10/600,978 US7089270B2 (en) 2003-06-20 2003-06-20 Processing software images for use in generating difference files

Publications (2)

Publication Number Publication Date
CN1809818A true CN1809818A (zh) 2006-07-26
CN100472475C CN100472475C (zh) 2009-03-25

Family

ID=33517863

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800173170A Expired - Fee Related CN100472475C (zh) 2003-06-20 2004-05-19 用于更新电子文件的系统及其中的方法

Country Status (6)

Country Link
US (1) US7089270B2 (zh)
EP (1) EP1639472A4 (zh)
JP (2) JP2007521566A (zh)
KR (1) KR101132875B1 (zh)
CN (1) CN100472475C (zh)
WO (1) WO2005001696A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101303660B (zh) * 2007-03-15 2010-09-08 株式会社东芝 将数据从配置源设备配置到配置目标设备的系统
CN102132260A (zh) * 2009-08-21 2011-07-20 日立系统解决方案有限公司 更新数据生成装置、信息设备以及程序
CN103294658A (zh) * 2012-03-02 2013-09-11 北大方正集团有限公司 一种文档保存方法及装置
CN103713928A (zh) * 2013-12-31 2014-04-09 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN106406918A (zh) * 2016-11-25 2017-02-15 华胜信泰信息产业发展有限公司 源代码自动合并方法和源代码自动合并装置
CN106657361A (zh) * 2016-12-30 2017-05-10 歌尔科技有限公司 一种代码添加混淆的安卓安装包ota升级方法
CN109496301A (zh) * 2017-05-19 2019-03-19 深圳配天智能技术研究院有限公司 嵌入式系统中管理文件的方法、嵌入式设备及其存储介质

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890464B2 (en) * 2003-06-20 2011-02-15 Innopath Software, Inc. Processing software images and generating difference files
WO2004114130A2 (en) * 2003-06-23 2004-12-29 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
ATE466334T1 (de) * 2004-02-27 2010-05-15 Ericsson Telefon Ab L M Programmieren eines flash-speichers
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7580959B2 (en) * 2004-06-14 2009-08-25 International Business Machines Corporation Apparatus, system, and method for providing efficient disaster recovery storage of data using differencing
US7484051B2 (en) * 2004-06-14 2009-01-27 International Business Machines Corporation Apparatus, system and method for reliably updating a data group in a read-before-write data replication environment using a comparison file
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
JP5173427B2 (ja) * 2004-11-08 2013-04-03 イノパス・ソフトウェアー・インコーポレーテッド 圧縮リード・オンリ・メモリ・ファイル・システム(crmfs)イメージの更新
US7792930B1 (en) * 2004-11-10 2010-09-07 Juniper Networks, Inc. Network device configuration using separate logic and version-based configuration files
US7523450B2 (en) * 2004-11-15 2009-04-21 International Business Machines Corporation Apparatus, system, and method for identifying fixed memory address errors in source code at build time
US20060117075A1 (en) * 2004-12-01 2006-06-01 International Business Machines Corporation Prerequisite, dependent and atomic deltas
US20060136520A1 (en) * 2004-12-17 2006-06-22 Nokia Corporation Apparatus, method and computer program to provide metadata-based data transfer from one mobile terminal to another mobile terminal
US7516206B2 (en) * 2005-01-28 2009-04-07 Cassatt Corporation Management of software images for computing nodes of a distributed computing system
US8387037B2 (en) * 2005-01-28 2013-02-26 Ca, Inc. Updating software images associated with a distributed computing system
US7478097B2 (en) 2005-01-31 2009-01-13 Cassatt Corporation Application governor providing application-level autonomic control within a distributed computing system
US7680799B2 (en) * 2005-01-31 2010-03-16 Computer Associates Think, Inc. Autonomic control of a distributed computing system in accordance with a hierarchical model
US7454427B2 (en) * 2005-01-31 2008-11-18 Cassatt Corporation Autonomic control of a distributed computing system using rule-based sensor definitions
US7685148B2 (en) * 2005-01-31 2010-03-23 Computer Associates Think, Inc. Automatically configuring a distributed computing system according to a hierarchical model
EP1691282A1 (en) * 2005-02-11 2006-08-16 Biftone Corporation Build optimizer tool for efficient management of software builds for mobile devices
US7590653B2 (en) * 2005-03-02 2009-09-15 Cassatt Corporation Automated discovery and inventory of nodes within an autonomic distributed computing system
US8719786B2 (en) * 2005-03-30 2014-05-06 Alcatel Lucent Method for performing conditionalized N-way merging of source code
EP1755034B1 (en) * 2005-08-18 2017-01-18 Telefonaktiebolaget LM Ericsson (publ) Object code generation for increasing the performance of delta files
US20070130232A1 (en) * 2005-11-22 2007-06-07 Therrien David G Method and apparatus for efficiently storing and managing historical versions and replicas of computer data files
WO2007064849A1 (en) * 2005-12-01 2007-06-07 Cassatt Corporation Automated deployment and configuration of applications in an autonomically controlled distributed computing system
EP1793311A3 (en) * 2005-12-01 2007-08-29 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
US7735075B2 (en) * 2005-12-01 2010-06-08 Samsung Electronics Co., Ltd. System and method for a pseudo dynamic link library (DLL) linker for a monolithic image in a wireless device
US7634517B1 (en) * 2006-02-10 2009-12-15 Google Inc. System and method for dynamically updating a document repository without interrupting concurrent querying
US8572138B2 (en) * 2006-03-30 2013-10-29 Ca, Inc. Distributed computing system having autonomic deployment of virtual machine disk images
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
JP4262276B2 (ja) * 2006-12-20 2009-05-13 キヤノン株式会社 画像処理装置、その制御方法、プログラム、記憶媒体
US20080275895A1 (en) * 2007-05-03 2008-11-06 Leroux Daniel D Method, system, and program product for aligning models
US8301740B2 (en) * 2007-06-27 2012-10-30 Ca, Inc. Autonomic control of a distributed computing system using dynamically assembled resource chains
US7895317B2 (en) 2007-06-27 2011-02-22 Computer Associates Think, Inc. Autonomic control of a distributed computing system using finite state machines
KR101126797B1 (ko) * 2008-12-15 2012-03-29 한국전자통신연구원 센서 노드의 업데이트를 수행하는 업데이트 서버 및 센서 노드, 센서 노드의 업데이트 방법
US8612961B2 (en) * 2008-12-31 2013-12-17 Motorola Mobility Llc System and method for downloading software upgrades
JP2011028321A (ja) * 2009-07-21 2011-02-10 Mitsubishi Electric Corp 差分情報生成装置、差分情報生成方法および差分情報生成プログラム
US8498965B1 (en) * 2010-02-22 2013-07-30 Trend Micro Incorporated Methods and apparatus for generating difference files
TWI416373B (zh) * 2010-03-25 2013-11-21 Wistron Corp 鍵盤定義更新方法及電腦系統
WO2011136809A1 (en) * 2010-04-30 2011-11-03 Hewlett-Packard Development Company, L.P. Preprocessor for file updating
US9652440B2 (en) 2010-05-27 2017-05-16 Microsoft Technology Licensing, Llc Concurrent utilization of a document by multiple threads
US8555161B2 (en) * 2010-05-27 2013-10-08 Microsoft Corporation Concurrent editing of a document by multiple clients
CN101916194B (zh) * 2010-06-01 2013-06-12 浙江大学 一种无线传感网节点程序的部署方法
US8719239B2 (en) * 2010-07-16 2014-05-06 International Business Machines Corporation Displaying changes to versioned files
US20130198152A1 (en) * 2010-09-10 2013-08-01 LaShawn McGhee Systems and methods for data compression
CN102053855B (zh) * 2010-12-13 2014-03-05 浪潮(北京)电子信息产业有限公司 一种软件的生成系统及方法
US8473504B2 (en) 2011-05-12 2013-06-25 Samsung Electronics Co., Ltd. Stabilized binary differencing
WO2012119407A1 (zh) * 2011-08-23 2012-09-13 华为技术有限公司 文档更新方法和装置
US20140033188A1 (en) * 2012-07-26 2014-01-30 Microsoft Corporation System updates from cloud blob storage using vhd differentials
US9098513B1 (en) 2012-08-27 2015-08-04 Trend Micro Incorporated Methods and systems for differencing orderly dependent files
KR101992191B1 (ko) * 2012-11-01 2019-06-24 엘지전자 주식회사 이동 단말기 및 그 제어방법
CN103336703B (zh) * 2013-07-08 2018-09-18 惠州Tcl移动通信有限公司 生成升级包的方法、服务器、软件升级方法、移动终端
KR102124803B1 (ko) * 2013-07-23 2020-06-22 엘지전자 주식회사 델타 파일을 생성하는 장치 및 방법과, 그 델타 파일을 이용하여 펌웨어를 업그레이드하는 수신 단말 및 그 업그레이드 방법
CN103942143B (zh) * 2014-04-09 2017-03-15 烽火通信科技股份有限公司 一种基于版本库比较的PC‑Lint代码检查结果筛选方法
KR101599133B1 (ko) 2014-06-09 2016-03-15 주식회사 엔지스테크널러지 네비게이션 장치의 지도 데이터 제공 방법 및 시스템
US10191477B2 (en) * 2015-10-30 2019-01-29 Yokogawa Electric Corporation System and method for modification management of a configuration system
EP3299956A1 (de) * 2016-09-26 2018-03-28 Siemens Aktiengesellschaft Verfahren und anordnung zur aktualisierung eines computerprogramms
US20190095187A1 (en) * 2017-09-28 2019-03-28 Trillium Incorporated Incremental updates in static libraries
CN108572834B (zh) * 2018-04-16 2023-12-12 深圳市雅阅科技有限公司 一种浏览器的升级方法和装置
US11579578B2 (en) * 2020-03-26 2023-02-14 Honeywell International Inc. Hierarchal controller logic with incremental updates
CN113625995A (zh) * 2020-05-07 2021-11-09 武汉斗鱼网络科技有限公司 一种自适应获取数据的方法和装置
US11429360B1 (en) * 2021-05-17 2022-08-30 International Business Machines Corporation Computer assisted programming with targeted visual feedback
US11782687B1 (en) * 2022-10-21 2023-10-10 Aurora Labs Ltd. Shrinking executable files based on function analysis

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479654A (en) 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
JPH06274384A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
US5742905A (en) 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5832520A (en) 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US6374250B2 (en) 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US6526574B1 (en) 1997-07-15 2003-02-25 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6035423A (en) 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
GB2343768A (en) * 1998-08-17 2000-05-17 Connected Place Limited Merging a sequence of delta files
IL125846A0 (en) * 1998-08-19 1999-04-11 Emony Incremental program update
US6167258A (en) 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6327671B1 (en) 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
IL129947A (en) 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6651190B1 (en) 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6535894B1 (en) 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
WO2001098951A1 (en) * 2000-06-22 2001-12-27 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020099726A1 (en) 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US20020129107A1 (en) 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6925467B2 (en) 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US6836657B2 (en) 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7096311B2 (en) 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7007049B2 (en) 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7320010B2 (en) 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7003534B2 (en) 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US20040098421A1 (en) 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7099884B2 (en) 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101303660B (zh) * 2007-03-15 2010-09-08 株式会社东芝 将数据从配置源设备配置到配置目标设备的系统
CN102132260A (zh) * 2009-08-21 2011-07-20 日立系统解决方案有限公司 更新数据生成装置、信息设备以及程序
US8904374B2 (en) 2009-08-21 2014-12-02 Hitachi Soloutions, Ltd. Firmware update data generating apparatus and information device
CN103294658A (zh) * 2012-03-02 2013-09-11 北大方正集团有限公司 一种文档保存方法及装置
CN103294658B (zh) * 2012-03-02 2016-07-13 北大方正集团有限公司 一种文档保存方法及装置
CN103713928A (zh) * 2013-12-31 2014-04-09 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN103713928B (zh) * 2013-12-31 2017-02-22 优视科技有限公司 增量文件生成方法、应用程序安装文件更新方法及装置
CN106406918A (zh) * 2016-11-25 2017-02-15 华胜信泰信息产业发展有限公司 源代码自动合并方法和源代码自动合并装置
CN106406918B (zh) * 2016-11-25 2020-02-28 华胜信泰信息产业发展有限公司 源代码自动合并方法和源代码自动合并装置
CN106657361A (zh) * 2016-12-30 2017-05-10 歌尔科技有限公司 一种代码添加混淆的安卓安装包ota升级方法
CN106657361B (zh) * 2016-12-30 2019-09-13 歌尔科技有限公司 一种代码添加混淆的安卓安装包ota升级方法
CN109496301A (zh) * 2017-05-19 2019-03-19 深圳配天智能技术研究院有限公司 嵌入式系统中管理文件的方法、嵌入式设备及其存储介质

Also Published As

Publication number Publication date
JP5261433B2 (ja) 2013-08-14
KR20060026880A (ko) 2006-03-24
WO2005001696A1 (en) 2005-01-06
EP1639472A1 (en) 2006-03-29
CN100472475C (zh) 2009-03-25
US20040260734A1 (en) 2004-12-23
EP1639472A4 (en) 2009-01-07
US7089270B2 (en) 2006-08-08
KR101132875B1 (ko) 2012-04-03
JP2010176699A (ja) 2010-08-12
JP2007521566A (ja) 2007-08-02

Similar Documents

Publication Publication Date Title
CN1809818A (zh) 在产生差别文件中使用的处理软件
CN100337407C (zh) 对结构化文档进行编码和解码的方法和系统
CN1143208C (zh) 用于消息转换的装置和方法
CN1168216C (zh) 文档管理设备,数据压缩方法和数据解压缩方法
CN1228762C (zh) 用于语音识别的方法、组件、设备及服务器
CN1672150A (zh) 用于软件原子化的视图
CN1280740A (zh) 下载数据
CN1315017A (zh) 包含内部引用的两种版本数据表格之间的差别提取
CN1165855C (zh) 用于发布数据的系统、方法、设备以及数据再现设备
CN1672133A (zh) 优化的代码生成
CN101076168A (zh) 智能终端系统的管理方法和智能终端
CN1684464A (zh) 用于远程差分压缩的有效算法和协议
CN1753368A (zh) 为远程差异压缩寻找候选对象的有效算法
CN1542584A (zh) 程序电子水印处理装置
CN1122216C (zh) 优化器
CN1742480A (zh) 信息处理装置、信息处理方法和计算机程序
CN1610265A (zh) 算术解码/编码装置、携带终端、活动图像摄影及记录/重放装置
CN101069181A (zh) 存储设备和记录介质
CN1839580A (zh) 信息分配系统
CN1675842A (zh) 算术编码的方法和设备
CN1886976A (zh) 用于使用动作列表及版本控制对一无线装置执行动作的方法、软件及设备
CN1194295C (zh) 程序变换装置及程序变换方法
CN1643496A (zh) 智能卡中的数据结构
CN100337176C (zh) 对数字版权中执行权限进行系统限制的方法及装置
CN1146796C (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
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20161129

Address after: California, USA

Patentee after: QUALCOMM Inc.

Address before: California, USA

Patentee before: QUALCOMM TECHNOLOGIES Inc.

Effective date of registration: 20161129

Address after: California, USA

Patentee after: QUALCOMM TECHNOLOGIES Inc.

Address before: California, USA

Patentee before: INNOPATH SOFTWARE, Inc.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090325

Termination date: 20200519