WO2011106007A1 - Updating computer files - Google Patents
Updating computer files Download PDFInfo
- Publication number
- WO2011106007A1 WO2011106007A1 PCT/US2010/025420 US2010025420W WO2011106007A1 WO 2011106007 A1 WO2011106007 A1 WO 2011106007A1 US 2010025420 W US2010025420 W US 2010025420W WO 2011106007 A1 WO2011106007 A1 WO 2011106007A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- computer
- file
- version
- computer software
- orphaned
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- the processing resource may spend an inordinate amount of time conveying the update to the client devices. Further, the channel that connects the processing resource with the client devices may be unavailable for other uses during the time that the update is occurring.
- a wide area wireless communications system such as a cellular telephone system
- transmitting a software update from cellular base stations over the air to receiving cellular communications units may require large amounts of electrical energy as well as consuming precious channel bandwidth.
- bandwidth that is consumed for transmitting updates to communications units is bandwidth that cannot be used for revenue-generating and commercial purposes.
- each cellular communications unit is taken out of commission so that the update can be received and processed by the unit, the unit is likely to be unavailable for other comm nications purposes.
- Figure 1 is a high-level block diagram of a processing environment showing a remote client and a software updating resource according to an embodiment of the invention.
- Figure 2 is a flowchart for a method of updating computer software according to an embodiment of the invention.
- Figure 3 represents a 256 x 256 two-dimensional array of symbol-pair probabilities used to calculate the symmetric divergence of two files according to an embodiment of the invention.
- Figure 4 represents a logic module for updating computer software according to an embodiment of the invention.
- a method and system for updating computer files provides a means for saving time and energy when updates to remote clients must be performed in either wired or wireless communications environments.
- computer files of a software update are analyzed and the results of this analysis are compared to the results of similar analyses of computer files of a software version previously loaded on the remote clients. If these results indicate that computer files in the software update share characteristics common to those of computer files previously loaded on the remote client, the updated computer files can be compressed using the previously-loaded computer files as a reference by way of a technique known as differentia! compression. This can result in an update of a large software package (perhaps greater than 100 MB) using perhaps 10 MB, 5 MB, or even less.
- These devices include, but are not limited to, cellular communications devices that transmit and receive voice and data, portable laptop and handheld computing devices, GPS receivers, as wel! a fixed- station wireless devices such as wireless hubs, routers, celiuiar base stations, and so forth.
- the "computer” may also be a wired or a wireless computer peripheral, such as a printer, copier, facsimile machine, and so forth,
- Embodiments of the invention also make use of the term "software', which includes any program that directs the operation of a computer.
- Software may reside in volatile or non-volatile memory and may consist of higher-level commands that are compiled or irsterpreted by a general purpose processor.
- Software may also consist of lower level commands that are more closely tied to particular processing elements such as a controller or other devices.
- FIG. 1 is a high-level block diagram of a processing environment showing a remote client (20) and a software updating resource (40) according to an embodiment of the invention.
- first version of computer software 10 represents a number of files stored and organized on remote client 20.
- First version of computer software 10 may represent an entire software package including an operating system, libraries, configuration files, etc., that controls ail of the operations of remote client 20 or may represent only a portion of the software package loaded on the remote client, such as libraries or configuration files.
- the inventors contemplate that remote client 20 is representative of a group of devices that may number in the hundreds, thousands, millions, or an even more.
- remote client 20 represents one of a iarge number of cellular
- first version of compute software 10 may represent one of dozens, hundreds, or even thousands of computer files,
- Software updating resource 40 is contemplated as being a centralized resource, such as a computer server or a group of servers, that provisions remote client 20 with various services. These services may include basic analog and/or digital voice communications, data communications, mobiie Internet access, and so forth, in the embodiment of Figure 1 , these communication services, as well as compuier software updates to remote client 20, are conducted through the use of communications channe! 50.
- Communications channel 50 may represent a wireless (over the air) communications link, wired communications link (such as a iocai area network, wide area network, Internet, and so forth), or may be of a hybrid nature in which one or more portions of the channel are wireless while one or more other portions of the channel make use of a wired medium,
- second version of computer software 30 is represented, in the embodiment of Figure 1 , second version of computer software 30 represents a file system intended to replace at least a portion of first version of computer software 10.
- a conventional method for updating computer software might be to apply one or more compression schemes to second version of computer software 30 and transmit the entire compressed version of the software along communications channel 50.
- the remote devices include larger and larger software file systems. Accordingly, updates to these remote devices become proportionately larger,
- FIG. 2 is a flowchart for a method of updating computer software according to an embodiment of the invention.
- the apparatus of Figure 4 (described herein) may be used to perform the method of Figure 2, although nothing prevents the method from being performed using alternative structures.
- the method of Figure 2 begins at step 100, which includes finding files of the same name in the first and second versions of computer software. Files having the same name and being perhaps located in the same directory or subdirector between the first and second software versions are considered to be similar. Thus, as an example, in the event that a fiie in a first and a second version of computer software are both entitled
- step 1 10 the attributes of the files having the same names in the first and second software versions are compared.
- the two file possess identical attributes (for example, identical ownership, identical read/write permissions, whether the two files are hidden, and so forth), as well as being identical when compared in a byte-to-byte manner, an update to the file is not necessary.
- any computer software update transmitted from an updating resource to a remote client would not need to include a compressed (or uncompressed) version of this file, Accordingly, these files are removed from the software update package at step 120.
- step 130 one or more "orphaned" computer files in the second version of computer software are identified.
- orphaned indicates a computer file in a second version of computer software that does not have an identical name as a file in the first version of compute software.
- the file "Mobile internet Browser 9.1 " exists in a first version while the fiie Internet Mobile Browser 9.1 " exists in a second version, the latter file is said to be “orphaned”.
- the file "Mobile internet Browser V9.2" exists in a first version white the fiie "Mobile Internet Browser V9.2" exists in a second version, the file is not an orphaned fiie since both names are identical.
- a "symmetric divergence" between the orphaned computer file (from the second version of computer software) and each computer fiie in the first version of computer software is calculated.
- symmetric divergence is a measure of the difference in the occurrence of symbol- pairs between an orphaned computer fife and each of the computer files in the first version of computer software that is resident on a remote client.
- the symmetric divergence is defined as the maximum quantity of:
- j Q) is a measure of the Kul!back-Leibier divergence in the probabiiity of occurrence of symbol pairs.
- DKL( I Q) be interpreted as the number of extra information binary digits ⁇ bits ⁇ necessary to code samples from an information source having a probabiiity distribution ⁇ with a code based on probability distribution Q.
- Q) meaning that ⁇ ( ⁇
- the inventors have determined that using the maximum quantity of (D L ⁇ P
- the symmetric divergence of higher order symbol probabilities is used, Shown in Figure 3 is a 256 x 256 two-dimensional array of symbol-pair probabilities used to calculate the symmetric divergence of two files according to an embodiment of the invention.
- two-dimensional array 200 is constructed and the probabiiity of occurrence of consecutive pairs of 8-bit words from each orphaned computer file of the second version of computer software and from each file of the first version of the computer software are calculated.
- each array might correspond to the probability of 00000000 being followed by 00000000 (Poooooooooooo)-
- the probability of 11 11 11 11 being followed by 11 1 1 1 11 1 (Pui ii m-nn m i) is entered.
- the probabilities of the remaining symbol combinations are entered.
- a three- dimensional array can be constructed in which the probability of occurrence of 8-bit triplets are entered.
- Sti!l other embodiments of the invention may use a four dimensional array in which the probability of occurrence of four consecutive symbols sequences are entered.
- the inventors have determined that excellent results can be achieved using the 256 x 256 two-dimensional array such as Is represented in Figure 3. This is to say that increases in the complexity of the probabiSity-of-occurrence arrays for each 8-bit symbol (beyond two dimensions) does not provide a significant increase, in the accuracy of a Kullback-leib!er-based method,
- step 150 After computing the symmetric divergence of the symbol pairs between one or mor orphaned computer files in the second version of computer software and each computer file in the first version of computer software, as in step 140, the method proceeds to step 150.
- the computer file from the first version of computer software and the orphaned file from the second version of computer software that exhibit a minimum of symmetric divergence is chosen.
- the predetermined amount set for symmetric divergence is set to 0, 1 ,
- the maximum amount for symmetric divergence may be set to a smaller number (such as .05 or less) or may be set to a larger number (such as .15 or greater),
- step 160 the file from the first version of computer software determined in step 150 is used as a reference for differentially compressing the orphaned computer file from the second version of computer software, in many instances, this enables a large computer file from a computer software update package to be compressed and transmitted as perhaps a very smali file in which compression is referenced to a file in the first version of computer software already present on the remote device.
- the inventors have determined that calculating the Kuliback-Leibier symmetric divergence between symbol pairs of orphaned files and files from a previous software version can be as effective in determining similarity between files as performing a large number of byte-to-byte comparisons between files of each version.
- there is no need to compare each file of the first version with each file of the second version which could require perhaps millions of file comparisons.
- the number of comparisons between files of the second version of computer software and the first version of computer software can be reduced by more than tenfold.
- the orphaned file can be conveyed to the remote unit as a small deviation from a reference file already loaded on the remote unit.
- the orphaned file can stiii be compressed according to conventional techniques without referencing a particular fife from a software version already loaded on the remote unit.
- Figure 4 represents a logic module for updating computer software according to an embodiment of the invention.
- the iogic module of Figure 4 may be embodied in software for use on a computer system such as a server, or may be embodied on smaller computing platforms such as personal computers, laptop computers, or handheld computing devices. Additionally, one or more of the Iogic modules of Figure 4 may be implemented in hardware, or perhaps as part of a system that includes both hardware and software elements,
- software version 1 module 310 represents an image of the software previously loaded onto one or more remote clients, such as remote client 20 of Figure 1.
- Software version 2 module 320 represents a software configuration intended to be loaded onto the one or more remote clients.
- File name compare module 330 represents a logic block in which files from software version 2 module 320 are compared with files from software version 1 module 310. In some embodiments of the invention, the directory or subdirectory, within which each file is located, are also compared.
- orphaned files are detected fin which an orphaned file is a computer file of software version 2 that does not have a name identical to that of a file in software version 1), the orphaned files are conveyed to orphaned file check module 340, in module 340, checking routines may be performed in which files from either version that do not meet predetermined size criteria are removed from further nalysis.
- the output of orphaned file check module 340 is conveyed to symmetric divergence processing module 350.
- the symmetric divergence between an orphaned file from software version 2 and one or more files from software version 1 is determined.
- the two candidate files may be conveyed to differential compression module 360.
- compression algorithms are applied to the orphaned fiie from software version 2 using the fiie from software version 1 as a reference.
- the output of differential compression module 360 is then conveyed to one or more remote units by way of transmit module 370.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
A method of updating computer software includes identifying an orphaned computer file in a second version of computer software, the orphaned computer file having a name that does not correspond to any name of a computer file in a first version of computer software and computing symmetric divergence between the orphaned computer file and each computer file in the first version of computer software. The method also includes choosing a file from the computer files in the first version of computer software that yields a minimum value of symmetric divergence between the file and the orphaned computer file and using the file as a reference file for compressing the orphaned computer file.
Description
Updating Computer Files
Background
£001| ln environment in which a centralized processing resource is tasked with updating remotely-located client devices, it is typically undesirable for the processing resource to transmit large files, such as (for example) an entire operating system, without some level of file compression. Without at least a basic level of compression, the processing resource may spend an inordinate amount of time conveying the update to the client devices. Further, the channel that connects the processing resource with the client devices may be unavailable for other uses during the time that the update is occurring.
[002] In a wide area wireless communications system, such as a cellular telephone system, transmitting a software update from cellular base stations over the air to receiving cellular communications units may require large amounts of electrical energy as well as consuming precious channel bandwidth. And, bandwidth that is consumed for transmitting updates to communications units is bandwidth that cannot be used for revenue-generating and commercial purposes. Further, as each cellular communications unit is taken out of commission so that the update can be received and processed by the unit, the unit is likely to be unavailable for other comm nications purposes.
Brief Description of the Drawings
[003] Figure 1 is a high-level block diagram of a processing environment showing a remote client and a software updating resource according to an embodiment of the invention.
1004] Figure 2 is a flowchart for a method of updating computer software according to an embodiment of the invention.
[005] Figure 3 represents a 256 x 256 two-dimensional array of symbol-pair probabilities used to calculate the symmetric divergence of two files according to an embodiment of the invention.
£008] Figure 4 represents a logic module for updating computer software according to an embodiment of the invention.
Description of the Embodiments
[007] A method and system for updating computer files provides a means for saving time and energy when updates to remote clients must be performed in either wired or wireless communications environments. In some embodiments of the invention, computer files of a software update are analyzed and the results of this analysis are compared to the results of similar analyses of computer files of a software version previously loaded on the remote clients. If these results indicate that computer files in the software update share characteristics common to those of computer files previously loaded on the remote client, the updated computer files can be compressed using the previously-loaded computer files as a reference by way of a technique known as differentia! compression. This can result in an update of a large software package (perhaps greater than 100 MB) using perhaps 10 MB, 5 MB, or even less.
[008] In some embodiments of the invention, statistical techniques are employed to determine the probability of occurrence of symbol pairs, symbol triplets, or even higher order symboi combinations present in a computer file of a software update package. The symbol occurrence probabilities are compared with similar probabilities that pertain to files present in a software version already in use by the remote client. If the two probability sets diverge by less than a predetermined amount, it is likely that the computer file of the software update package can be transmitted as a compressed version that is referenced to a file already loaded on the remote client.
[009] in embodiments of the invention, the term "computer" is intended to encompass a broad range of electronic devices. These devices include, but are not limited to, cellular communications devices that transmit and receive voice and data, portable laptop and handheld computing devices, GPS receivers, as wel! a fixed- station wireless devices such as wireless hubs, routers, celiuiar base stations, and so forth. The "computer" may also be a wired or a wireless computer peripheral, such as a printer, copier, facsimile machine, and so forth,
[0010] Embodiments of the invention also make use of the term "software', which includes any program that directs the operation of a computer. Software may reside in volatile or non-volatile memory and may consist of higher-level commands that are compiled or irsterpreted by a general purpose processor. Software may also consist of lower level commands that are more closely tied to particular processing elements such as a controller or other devices.
[0011] Figure 1 is a high-level block diagram of a processing environment showing a remote client (20) and a software updating resource (40) according to an embodiment of the invention. In Figure 1 , first version of computer software 10 represents a number of files stored and organized on remote client 20. First version of computer software 10 may represent an entire software package including an operating system, libraries, configuration files, etc., that controls ail of the operations of remote client 20 or may represent only a portion of the software package loaded on the remote client, such as libraries or configuration files. The inventors contemplate that remote client 20 is representative of a group of devices that may number in the hundreds, thousands, millions, or an even more. Thus, in one example, remote client 20 represents one of a iarge number of cellular
communications devices provisioned by a publicly-available cellular carrier. Further, first version of compute software 10 may represent one of dozens, hundreds, or even thousands of computer files,
[0012] Software updating resource 40 is contemplated as being a centralized resource, such as a computer server or a group of servers, that provisions remote client 20 with various services. These services may include basic analog and/or
digital voice communications, data communications, mobiie Internet access, and so forth, in the embodiment of Figure 1 , these communication services, as well as compuier software updates to remote client 20, are conducted through the use of communications channe! 50. Communications channel 50 may represent a wireless (over the air) communications link, wired communications link (such as a iocai area network, wide area network, Internet, and so forth), or may be of a hybrid nature in which one or more portions of the channel are wireless while one or more other portions of the channel make use of a wired medium,
[0013] Within software updating resource 40, second version of computer software 30 is represented, in the embodiment of Figure 1 , second version of computer software 30 represents a file system intended to replace at least a portion of first version of computer software 10. A conventional method for updating computer software might be to apply one or more compression schemes to second version of computer software 30 and transmit the entire compressed version of the software along communications channel 50. However, the inventors have determined that as feature sets of remote clients increase in capability, the remote devices include larger and larger software file systems. Accordingly, updates to these remote devices become proportionately larger,
[0014J Figure 2 is a flowchart for a method of updating computer software according to an embodiment of the invention. The apparatus of Figure 4 (described herein) may be used to perform the method of Figure 2, although nothing prevents the method from being performed using alternative structures. The method of Figure 2 begins at step 100, which includes finding files of the same name in the first and second versions of computer software. Files having the same name and being perhaps located in the same directory or subdirector between the first and second software versions are considered to be similar. Thus, as an example, in the event that a fiie in a first and a second version of computer software are both entitled
"Mobiie Internet Browser V9.1 ", it is likely that the two files are similar enough so as to not require additional analysis of the files' similarity.
[001 SJ In one embodiment of the invention, an even higher likelihood that the two files named "Mobile Internet Browser V9.1 " are similar between first and second software versions is implied when the two files are located in identical directories (for example 7root/kemelf) in both versions. In another embodiment of the invention, a high probability that the two files are identical could be expected when the two files are at least located in the same subdirectory, in software version 1 , for example, the fiie may be located in the directory ". V1 /root/kernel/" white in software version 2 the file might be located in the directory ". V2/root/kernelf.
[0016] The method of Figure 2 continues at step 1 10 in which the attributes of the files having the same names in the first and second software versions are compared. In the event that the two file possess identical attributes (for example, identical ownership, identical read/write permissions, whether the two files are hidden, and so forth), as well as being identical when compared in a byte-to-byte manner, an update to the file is not necessary. Thus, any computer software update transmitted from an updating resource to a remote client would not need to include a compressed (or uncompressed) version of this file, Accordingly, these files are removed from the software update package at step 120.
[0017] At step 130, one or more "orphaned" computer files in the second version of computer software are identified. In this embodiment, the term
"orphaned" indicates a computer file in a second version of computer software that does not have an identical name as a file in the first version of compute software. Thus, in the event that the file "Mobile internet Browser 9.1 " exists in a first version, while the fiie Internet Mobile Browser 9.1 " exists in a second version, the latter file is said to be "orphaned". On the contrary, if the file "Mobile internet Browser V9.2" exists in a first version, white the fiie "Mobile Internet Browser V9.2" exists in a second version, the file is not an orphaned fiie since both names are identical.
0O18] At step 140 a "symmetric divergence" between the orphaned computer file (from the second version of computer software) and each computer fiie in the first version of computer software is calculated. In the embodiment of Figure 2, symmetric divergence is a measure of the difference in the occurrence of symbol-
pairs between an orphaned computer fife and each of the computer files in the first version of computer software that is resident on a remote client. For this
embodiment, the symmetric divergence is defined as the maximum quantity of:
(DKL(P || Q) ,D L(Q || P))
Wherein D*. (P |j Q) is a measure of the Kul!back-Leibier divergence in the probabiiity of occurrence of symbol pairs.
[0013] As those of skiii in the art aware of, the Kuilback-Leib!er divergence is a non-symmetric measure of relative entropy between two probabiiity distributions P and Q . The quantity D«L(P I Q) can be expressed as:
D L(P J! G) - -∑xP(x) iogQ(x) +∑x P{x> logP(x)
As it pertains to at least some embodiments of the present invention, the expression DKL( I Q) be interpreted as the number of extra information binary digits {bits} necessary to code samples from an information source having a probabiiity distribution Ρ with a code based on probability distribution Q. However, given the non-symmetrical nature of DKL(P | Q), meaning that ϋκι(Ρ || 0)≠ D^(Q \\ P), the inventors have determined that using the maximum quantity of (D L{ P || Q);
DKL{Q || P)) provides repeatab!e results when actual computer software files are analyzed.
[0020] in one embodiment of the invention, rather than use the Kullback- Leibler symmetric divergence of single symbol probabilities, the symmetric divergence of higher order symbol probabilities is used, Shown in Figure 3 is a 256 x 256 two-dimensional array of symbol-pair probabilities used to calculate the symmetric divergence of two files according to an embodiment of the invention. In this example, two-dimensional array 200 is constructed and the probabiiity of occurrence of consecutive pairs of 8-bit words from each orphaned computer file of
the second version of computer software and from each file of the first version of the computer software are calculated. Thus, for both files, the top left entry of each array might correspond to the probability of 00000000 being followed by 00000000 (Poooooooooooooooo)- At the bottom right of each 256 x 256 array, the probability of 11 11 11 11 being followed by 11 1 1 1 11 1 (Pui ii m-nn m i) is entered. At other locations in the 256 x 256 array, the probabilities of the remaining symbol combinations are entered.
[0021] !n other embodiments of the invention, higher order symbol-occurrence probabilities beyond symbol pairs may be used. Thus, in one example, a three- dimensional array can be constructed in which the probability of occurrence of 8-bit triplets are entered. Sti!l other embodiments of the invention may use a four dimensional array in which the probability of occurrence of four consecutive symbols sequences are entered. However although 3, 4, and higher-dimensioned arrays are possible, the inventors have determined that excellent results can be achieved using the 256 x 256 two-dimensional array such as Is represented in Figure 3. This is to say that increases in the complexity of the probabiSity-of-occurrence arrays for each 8-bit symbol (beyond two dimensions) does not provide a significant increase, in the accuracy of a Kullback-leib!er-based method,
[0022] After computing the symmetric divergence of the symbol pairs between one or mor orphaned computer files in the second version of computer software and each computer file in the first version of computer software, as in step 140, the method proceeds to step 150. At step 150, the computer file from the first version of computer software and the orphaned file from the second version of computer software that exhibit a minimum of symmetric divergence is chosen. If the calculated symmetric divergence is lower than a predetermined amount, these file pairs are selected for further processing, !n one embodiment of the invention that has provided excellent results according to the inventors, the predetermined amount set for symmetric divergence is set to 0, 1 , However, In othe embodiments of the invention, the maximum amount for symmetric divergence may be set to a smaller
number (such as .05 or less) or may be set to a larger number (such as .15 or greater),
[0023] The method proceeds to step 160 in which the file from the first version of computer software determined in step 150 is used as a reference for differentially compressing the orphaned computer file from the second version of computer software, in many instances, this enables a large computer file from a computer software update package to be compressed and transmitted as perhaps a very smali file in which compression is referenced to a file in the first version of computer software already present on the remote device.
[0024] The inventors have determined that calculating the Kuliback-Leibier symmetric divergence between symbol pairs of orphaned files and files from a previous software version can be as effective in determining similarity between files as performing a large number of byte-to-byte comparisons between files of each version. Thus, for file systems containing many thousands of computer files in both first and second software versions, there is no need to compare each file of the first version with each file of the second version, which could require perhaps millions of file comparisons. By way of selecting only orphaned files from the second computer software version, the number of comparisons between files of the second version of computer software and the first version of computer software can be reduced by more than tenfold.
[OQ2§3 It should be noted that the inventors have experienced instances in which a low value (such as less than .05) of Kuliback-Leibier symmetric divergence between an orphaned file and a file from a previous software version have not resulted In a substantial reduction in the update file size when differentia!
compression was applied. In these instances, the calculation of the symmetric divergence in symbol-pair occurrences yields a number that erroneously indicates that the orphaned file can be conveyed to the remote unit as a small deviation from a reference file already loaded on the remote unit. Under these "false aiarm" circumstances, the orphaned file can stiii be compressed according to conventional
techniques without referencing a particular fife from a software version already loaded on the remote unit.
[00261 An additional example of a false alarm occurs when files being analyzed are smaller than a predetermined minimum size. In these instances, perhaps only very few symbol pairs occurring in files from the first and second versions computer software versions are present, thus resulting in most entries of the exemplary 258 x 256 array being 0. The resulting Ku!lback-Leibier symmetric divergence could thus be expected to be quite low, even though the files may have few symbol pairs in common with each other. This represents another instance in which conventional compression techniques thai do not involve differential compression should be applied to the computer update file. For this reason, it may be useful for some embodiments of the invention to apply the method of Figure 2 only on nonempty files of a second version of computer software.
(00 73 'n mos^ instances, the method of Figure 2 performs one file
comparison between the files of version 1 and version 2. Thus, when files having the same (or a substantially similar) name in the first and second software versions are detected in step 100, compared in a byte-to-byte manner in step 110, and then removed from the software update package in step 120, further reference to the particular file name is not made throughout the remainder of the method. As an example, in th event that both the first and second versions include the file
"library 1234.xmi", any additional occurrence of this file in the second version does not bring about a second comparison of file names in version 1 to determine a second match. Consequently, an additional occurrence of this file (library.J234.xml) in version 2 might result in the file being labeled as an orphan.
[0028J However, in using a method similar to that of Figure 2, the inventors have encountered instances in which a large file in a first computer software version has been divided into two or more files in a second software version with each of the two or more files in the second software version being significantly smaller than the Iarge file encountered in the first version. For example, a file entitled
"library_1234.xmf> having a size of 5 MB in a first version might be divided into two
files having the names "iibrary_1234.xmn and "library__1234.dat" in the second version, with each fi!e of the second version having a size of 2.5 MB. in this instance, it might be expected that not only is there a small symmetric divergence between the symbol probability pairs of the two files entitled "library_1234.xml", there may aiso be low symmetric divergence in the symbol probability pairs between the files "iibrary__1234.xm and "Sibrary__1234.dat" , Thus, in one example, it may be beneficial to compress "library__1234.dat' by referencing "library_123.xmr as an instance in which a similarly-named file of a second version is significantly smaller than a corresponding file name of a first software version.
[00293 Figure 4 represents a logic module for updating computer software according to an embodiment of the invention. The iogic module of Figure 4 may be embodied in software for use on a computer system such as a server, or may be embodied on smaller computing platforms such as personal computers, laptop computers, or handheld computing devices. Additionally, one or more of the Iogic modules of Figure 4 may be implemented in hardware, or perhaps as part of a system that includes both hardware and software elements,
[QO30J In Figure 4, software version 1 module 310 represents an image of the software previously loaded onto one or more remote clients, such as remote client 20 of Figure 1. Software version 2 module 320 represents a software configuration intended to be loaded onto the one or more remote clients. File name compare module 330 represents a logic block in which files from software version 2 module 320 are compared with files from software version 1 module 310. In some embodiments of the invention, the directory or subdirectory, within which each file is located, are also compared. If orphaned files are detected fin which an orphaned file is a computer file of software version 2 that does not have a name identical to that of a file in software version 1), the orphaned files are conveyed to orphaned file check module 340, in module 340, checking routines may be performed in which files from either version that do not meet predetermined size criteria are removed from further nalysis.
to
£0031] The output of orphaned file check module 340 is conveyed to symmetric divergence processing module 350. In this module, the symmetric divergence between an orphaned file from software version 2 and one or more files from software version 1 is determined. When the symmetric divergence between the files is found to be less than a predetermined amount (such as 0,1) the two candidate files may be conveyed to differential compression module 360. In this module, compression algorithms are applied to the orphaned fiie from software version 2 using the fiie from software version 1 as a reference. The output of differential compression module 360 is then conveyed to one or more remote units by way of transmit module 370.
[0032] in conclusion, while the present invention has been particularly shown and described with reference to various embodiments, those skilled in the art will understand that many variations may be made therein without departing from the spirit and scope of the invention as defined in the following claims. This description of the invention should be understood to include the novel and non-obvious combinations of elements described herein, and claims may be presented in this or a later application to any novel and non-obvious combination of these elements. The foregoing embodiments are illustrative, and no single feature or element is essential to all possible combinations that may be claimed in this or a later application. Where the claims recite "a" or "a first" element or the equivalent thereof, such claims should be understood to include incorporation of one or more such elements, neither requiring nor excluding two or more such elements.
Claims
1. A method of updating computer software, comprising:
identifying an orphaned computer file in a second version of computer software, the orphaned computer file having a name that does not correspond to any name of a computer fiie in a first version of computer software;
computing symmetric divergence between the orphaned computer file and each computer fiie in the first version of computer software
choosing a file from the computer files in the first version of computer software that yields a minimum value of symmetric divergence between the fiie and the orphaned computer file; and
using the file as a reference file for compressing the orphaned computer file.
2. The method of claim 1 , in which the orphaned computer fiie additionally has an extension that does not correspond to any extension of a computer fi!e in the first version of computer software.
3. The method of claim 1 , wherein the step of computing symmetric divergence is performed only on nonempty computer files in the second version of computer software.
4. The method of claim 1 , wherein the step of computing symmetric divergence is performed only on orphaned computer files and computer files in the first version of computer software of a predetermined minimum size.
5. The method of claim 1 , wherein symmetric divergence is a measure of the difference Sn the occurrence of symbol pairs between the orphaned computer file and each of the computer fifes in the first version of computer software,
6. The method of claim 5, wherein symmetric divergence is calculated using Kuilback-Leibler divergence in the probability of occurrence of symbol pairs between the orphaned computer file and each of the computer fiies in the first version of computer software.
7. The method of claim 6, wherein the minimum value of symmetric divergence between the file and the orphaned computer file is iess than ,1 ,
8. The method of claim 1 , wherein symmetric divergence is a measure of the difference in the occurrence of symbol triplets between the orphaned computer file and each of the computer files in the first version of computer software.
9. A logic module for updating computer software, comprising: a file name compare module for determining files present in a second version of computer software not present in a first version of computer software;
a file divergence processing module for determining the symmetric divergence between a fiie from the second version of computer software and a fiie from the first version of computer software; and
a differential compression module for compressing a file from the second version of computer software using a file from the first version of computer software as a reference.
10. The logic module of ciaim 9, wherein the symmetric divergence processing module constructs a two-dimensional array of the probability of symbol- pair occurrences between files in the first and second versions of computer software.
11. The logic module of claim 9, wherein the symmetric divergence processing module constructs one of the group consisting of a three-dimensional wherein each entry of the three dimensional array indicates a probability of symbol triplets occurrences,
12. The logic module of claim 9, additionally comprising a file check module for removing, from further analysis, files from one of the group consisting of the first version of computer software and the second version of computer software that do not meet predetermined size criteria,
13. The logic module of claim 9, wherein the file divergence processing module outputs a measure of symmetric divergence.
14. The logic module of claim 13, wherein the measure of symmetric divergence pertains to the KuJ!back-Leibler symmetric divergence.
15. The logic module of claim 14, wherein the differential compression module operates on the file from the second version of computer software when the Kuilback-Leihler symmetric divergence between the file from the second versio of computer software and the file from the first version of computer software are less than ,1
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2010/025420 WO2011106007A1 (en) | 2010-02-25 | 2010-02-25 | Updating computer files |
| US13/260,219 US8607218B2 (en) | 2010-02-25 | 2010-02-25 | Updating computer files |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2010/025420 WO2011106007A1 (en) | 2010-02-25 | 2010-02-25 | Updating computer files |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2011106007A1 true WO2011106007A1 (en) | 2011-09-01 |
Family
ID=44507122
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2010/025420 Ceased WO2011106007A1 (en) | 2010-02-25 | 2010-02-25 | Updating computer files |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US8607218B2 (en) |
| WO (1) | WO2011106007A1 (en) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8910148B2 (en) * | 2010-07-29 | 2014-12-09 | International Business Machines Corporation | Packaging an application with plurality of libraries |
| CN105867947B (en) * | 2016-04-25 | 2019-03-26 | 青岛海信电器股份有限公司 | Data processing method and device after preset application program is upgraded |
| US10963239B2 (en) | 2018-10-18 | 2021-03-30 | International Business Machines Corporation | Operational file management and storage |
| CN109471641B (en) * | 2018-11-12 | 2022-05-03 | 中通客车股份有限公司 | Automatic batch program flashing system and method for multiple controllers of new energy passenger car |
| US12596792B2 (en) * | 2022-03-22 | 2026-04-07 | Hewlett Packard Enterprise Development Lp | Data encryption detection |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050289534A1 (en) * | 2004-06-24 | 2005-12-29 | Samsung Electronics Co., Ltd. | Method for upgrading software version of mobile terminal using integrated difference files |
| US20060080651A1 (en) * | 2004-10-12 | 2006-04-13 | Microsoft Corporation | Update package for offline synchronization of software updates |
| KR20070000867A (en) * | 2005-06-28 | 2007-01-03 | 케이티하이텔 주식회사 | Apparatus and method for providing update file, Apparatus and method for downloading update file using same |
| US20090260000A1 (en) * | 2008-04-14 | 2009-10-15 | Sun Microsystems, Inc. | Method, apparatus, and manufacture for software difference comparison |
| US7665081B1 (en) * | 2006-05-06 | 2010-02-16 | Kaspersky Lab, Zao | System and method for difference-based software updating |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7830418B2 (en) | 2006-04-28 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Perceptually-derived red-eye correction |
-
2010
- 2010-02-25 US US13/260,219 patent/US8607218B2/en not_active Expired - Fee Related
- 2010-02-25 WO PCT/US2010/025420 patent/WO2011106007A1/en not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050289534A1 (en) * | 2004-06-24 | 2005-12-29 | Samsung Electronics Co., Ltd. | Method for upgrading software version of mobile terminal using integrated difference files |
| US20060080651A1 (en) * | 2004-10-12 | 2006-04-13 | Microsoft Corporation | Update package for offline synchronization of software updates |
| KR20070000867A (en) * | 2005-06-28 | 2007-01-03 | 케이티하이텔 주식회사 | Apparatus and method for providing update file, Apparatus and method for downloading update file using same |
| US7665081B1 (en) * | 2006-05-06 | 2010-02-16 | Kaspersky Lab, Zao | System and method for difference-based software updating |
| US20090260000A1 (en) * | 2008-04-14 | 2009-10-15 | Sun Microsystems, Inc. | Method, apparatus, and manufacture for software difference comparison |
Also Published As
| Publication number | Publication date |
|---|---|
| US20120023489A1 (en) | 2012-01-26 |
| US8607218B2 (en) | 2013-12-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7877517B2 (en) | Determining whether to compress data transmitted over a network | |
| US8171008B2 (en) | Data retrieval | |
| CN112100152B (en) | Service data processing method, system, server and readable storage medium | |
| US12026071B2 (en) | Method, electronic device and computer program product for storage management | |
| WO2011106007A1 (en) | Updating computer files | |
| US11758022B2 (en) | Compression of machine-generated data | |
| CN112199344A (en) | A method and apparatus for classifying logs | |
| US12236089B2 (en) | System and method for data compaction utilizing distributed codebook encoding | |
| US20240048151A1 (en) | System and method for filesystem data compression using codebooks | |
| US10411728B2 (en) | Device for and method of determining clusters | |
| CN116431570A (en) | File fragment transmission method, device, equipment and storage medium | |
| US20250139060A1 (en) | System and method for intelligent data access and analysis | |
| WO2017027226A1 (en) | On the fly statistical delta differencing engine | |
| US12499092B2 (en) | System and method for sourceblock length optimization for data compaction | |
| US12260086B2 (en) | System and method for data compaction utilizing mismatch probability estimation | |
| US11308212B1 (en) | Adjudicating files by classifying directories based on collected telemetry data | |
| CN111190858A (en) | Software information storage method, device, equipment and storage medium | |
| US11789708B2 (en) | Compression of firmware updates | |
| CN115113900A (en) | Method, device, storage medium and electronic device for updating compiled project file | |
| CN114461234A (en) | Installation package processing method and device, electronic equipment and computer readable storage medium | |
| CN112131223A (en) | Traffic classification statistical method, device, computer equipment and storage medium | |
| US20260079891A1 (en) | System and Method for Sourceblock Length Optimization for Data Compaction | |
| US12099475B2 (en) | System and method for random-access manipulation of compacted data files | |
| US12578857B2 (en) | System and method for operating system multiloading and virtualization using codebook encoding of data streams and process calls | |
| US8990173B2 (en) | Method and apparatus for selecting an optimal delete-safe compression method on list of delta encoded integers |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 13260219 Country of ref document: US |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10846763 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 10846763 Country of ref document: EP Kind code of ref document: A1 |