Algorithms for block-level code alignment of software binary files

Share
Save

Share On Facebook Share On Twitter Share By Email
Save Item
Add to
my lists

Filing Information

  • Patent Number: US7031972
  • Application Number: US10624704
  • Filing date: 07/21/2003
  • Issue date: 04/18/2006
  • Prior Publication Data:
  • Predicted expiration date: 05/10/2024
  • Patent term adjustment: 294
Explore Your Innovation Network™ for an introduction to:

Innovation Network Your First Name:
Last Name:
 
Already a member? Sign In
  • U.S. Classifications: 707/101  · 707/7  ·
  • International Classifications: G06F1700 · G06F1730 ·
10 Claims, 9 Drawings


Abstract

A file differencing and updating system is provided that includes a file differencing component and a file updating component. The file differencing component, or file differencing engine, generates a difference file in a first processor-based or computer system from an original or old version and a new version of an electronic file. Generation of the difference files includes processing to reduce the number of file changes introduced by code block swaps. The processing uses an alignment algorithm, which includes a sorting algorithm, to align the code blocks of the original version in the same order as those of the new version, thereby eliminating the increase in the number of byte-level file differences due to code block swaps. During the alignment operations, the block movements are dynamically recorded at a minimum cost level and encoded for transmission to the file updating component for use in code recovery.

References Cited

U.S. Patent Documents

Document NumberAssigneesInventorsIssue/Pub Date
US5479654 Squibb Data Systems, Inc. Squibb Dec 1995
US5574906 International Business Machines Corporation Morris Nov 1996
US5742905 Bell Communications Research, Inc. Pepe Apr 1998
US5806078 Softool Corporation Hug Sep 1998
US5813017 International Business Machines Corporation Morris Sep 1998
US5832520* Miller, Call, Plauck and Miller Miller Nov 1998
US6018747 International Business Machines Corporation Burns Jan 2000
US6052531 Symantec Corporation Waldin Apr 2000
US6088694 International Business Machines Corporation Burns Jul 2000
US6167258 Cleveland Medical Devices Inc. Schmidt Dec 2000
US6233589 Novell, Inc. Balcha May 2001
US6269456 Network Associates, Inc. Hodges Jul 2001
US6327671 International Business Machines Corporation Menon Dec 2001
US6349311 Symantec Corporation Sobel Feb 2002
US6374250* International Business Machines Corporation Ajtai et al. Apr 2002
US6401239 B.I.S. Advanced Software Systems Ltd. Miron Jun 2002
US6442660 Sharp Laboratories of America, Inc. Henerlau Aug 2002
US6466999* Microsoft Corporation Sliger et al. Oct 2002
US6470329 Sun Microsystems, Inc. Livschitz Oct 2002
US6526574 Pocket Soft, Inc. Jones Feb 2003
US6535894 Sun Microsystems, Inc. Schmidt Mar 2003
US6542906 Connected Place Ltd. Korn Apr 2003
US6594822 Nortel Networks Limited Schweitz Jul 2003
US6615404 Tadiran Telecom Business Systems Ltd. Garfunkel Sep 2003
US6651190 A. Worley Worley Nov 2003
US6671703 Synchrologic, Inc. Thompson Dec 2003
US6671757 fusionOne, Inc. Multer Dec 2003
US6694336 Fusionone, Inc. Multer Feb 2004
US6836657* InnoPath Software, Inc. Ji et al. Dec 2004
US20010029178 Criss Oct 2001
US20010049263 Zhang Dec 2001
US20020099726 International Business Machines Corporation Crudele Jul 2002
US20020129107 Loughran Sep 2002
US20030110253 Relicore, Inc. Anuszczyk Jun 2003
US20030200207 Symantec Corporation Dickinson Oct 2003
US20030212712 Gu Nov 2003
US20040031027* Hiltgen Feb 2004
US20040062130 Chiang Apr 2004
US20040092255 JI DE Ji May 2004
US20040098361 Peng May 2004
US20040098413 Peng May 2004
US20040098420 Peng May 2004
US20040098421 Peng May 2004
US20040098427* Peng May 2004
US20040111427 Gu Jun 2004
US20040220980 Forster Nov 2004
US20050010576* Ren et al. Jan 2005
US20050010870* Gu et al. Jan 2005
* cited by examiner

Other Publications

Tichy, Walter F., “The string-to-string correction problem with block moves”, ACM Transaction on Computer Systems, vol. 2, No. 4, Nov. 1984, pp. 309-321.
Ajtai, Miklos et al., “Compactly encoding unstructured inputs with differential compression”, IBM Almaden Research Center, 44 pages, no date.
Burns, Randal C. et al., “In-place reconstruction of delta compressed files”, IBM Almaden Research Center, 9 pages, no date.
Burns, Randal et al., “In-place reconstruction of version differences”, IBM Almaden Research Center, 25 pages, no date.
Ziv, Jacob et al., “A universal algorithm for sequential data compression”, IEEE Transactions on Information Theory, vol. IT-23, No. 3, May 1977.

Patent Family

Document NumberAssigneeInventorsIssue/Pub Date
US20050021572Liwei Ren et al.Jan 2005
WO2005015343INNOPATH SOFTWARE, INC.Liwei REN et al.Feb 2005
US7031972InnoPath Software, Inc.Liwei Ren et al.Apr 2006
US20060101040REN LIWEILiwei Ren et al.May 2006
US7392260InnoPath Software, Inc.Liwei Ren et al.Jun 2008

Read Patent

Read patent

Independent Claims | See all claims (10)

  1. 1. A method for reducing a number of changes between an original file and a new file on a processor-based device, comprising: determining an order of code blocks of the new file using index values; sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values; generating at least one list of original order numbers of the code blacks of the original file affected by code block movement; and moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.
  2. 2. An apparatus comprising at least one processor coupled to: means for receiving an original file and a new file, wherein the new file includes an updated version of the original file; means for determining an order of code blocks of the new file using index values; means for sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values; means for generating lists of original order numbers of the code blocks of the original file affected by code block movements; and means for moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.
  3. 3. A system for updating electronic files of remote devices, comprising: a first device including a processor coupled to a file differencing engine that generates differences between an original version and a new version of an electronic file by: determining an order of code blocks of the new version using index values; sorting code blocks of the original version and generating a largest increasing subsequence (LIS) of code blocks according to the index values; generating lists of original order numbers of the code blocks of the original version affected by code block movements; moving the code blocks of the original version to locations in the original version according to the largest increasing subsequence of code blocks, wherein the code blocks of the original version are aligned in the saint order as code blocks of the new version; generating an encoded list including information of the code block moves; transmitting the encoded list to a second device; and a file updating engine coupled to a processor of the second device, the file updating engine generating a copy of the new version using a difference file and information of the code block moves.
  4. 5. A method for generating difference flies on a processor-based device, comprising: receiving an original file and a new file, wherein the new file includes an updated version of the original file; determining an order of code blocks of the new tile using index values; sorting code blocks of the original file and generating a largest increasing subsequence (LIS) of code blocks according to the index values; generating lists of original order numbers of the code blocks of the original file affected by code block movements; moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file; and generating an encoded list including information of the code block moves.
  5. 10. A computer readable medium including executable instructions which, when executed in a processing system, reduce a number of changes between an original file and a new file by: determining an order of code blocks of the new file using index values; sorting code blocks of the original file and generating a largest increasing subsequence (LIS) or code blocks according to the index values; generating lists of original order numbers of the code blocks of the original file affected by code block movements; and moving the code blocks of the original file to locations in the original file according to the largest increasing subsequence of code blocks, wherein the code blocks of the original file are aligned in the same order as code blocks of the new file.