Claims
- 1. A system for updating electronic files, comprising:
a first device including a first component of a file differencing and updating system that generates a delta file; a second device receiving the delta file from the first device via at least one coupling, the second device including a second component of the file differencing and updating system configured to,
update electronic files of the second device by,
reading at least one new component of a new electronic file from the delta file, the new electronic file being an updated version of an original electronic file; identifying and reserving a memory block large enough to accommodate the new component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when a size of the new component exceeds a size of available memory blocks of the first and second memory areas; writing the new component to the reserved memory block; and updating a vector table when the new component is written to a memory block other than an original memory block including the corresponding component of the original electronic file; and access the electronic files of the devices by,
receiving a function call from a main program of the device, the function call including identification information of corresponding electronic files; reading a start address of the corresponding electronic files from the vector table; and generating a call for the corresponding electronic files using the start address and the identification information.
- 2. The system of claim 1, wherein the second device further includes first and second application programming interfaces (APIs) for use in updating electronic files.
- 3. The system of claim 1, wherein the second device further includes a third application programming interface (API) for use in accessing electronic files.
- 4. The system of claim 1, wherein the first device includes a processor-based device accessible by at least one provider of software hosted on the second device.
- 5. The system of claim 1, wherein the second device includes at least one processor-based device selected from among personal computers, portable computing devices, cellular telephones, portable communication devices, and personal digital assistants.
- 6. The system of claim 1, wherein the at least one coupling is selected from among wireless couplings, wired couplings, hybrid wireless/wired couplings, and couplings with at least one network including local area networks (LANs), metropolitan area networks (MANs), and wide area networks (WANs), proprietary networks, backend networks, the Internet, and removable fixed mediums including floppy disks, hard disk drives, and compact disc-read only memory (CD-ROM), as well as telephone lines, buses, and electronic mail messages.
- 7. The system of claim 1, wherein the original and new electronic files comprise software files including dynamic link library files, shared object files, embedded software components (EBSCs), firmware files, executable files, data files including hex data files, system configuration files, and files including personal use data.
- 8. A method for device memory management in a host device, comprising:
receiving identification information of at least one received component of a new electronic file, the new electronic file being an updated version of an original electronic file, wherein the identification information includes a size of the received component; identifying and reserving a memory block large enough to accommodate the received component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when the size exceeds a size of available memory blocks of the first and second memory areas; providing an address of the reserved memory block; and updating the original electronic file by writing the received component to the reserved memory block.
- 9. The method of claim 8, further comprising updating a first table when the received component is written to a memory block other than an original memory block in the first memory area including a corresponding component of the original electronic file, wherein the first table includes component information of components of electronic files of the host device, the component information including component identification, read only memory (ROM) number, start address, and size.
- 10. The method of claim 8, wherein identifying and reserving includes reserving an original memory block of the first memory area when the size is equal to or smaller than a size of a corresponding component of the original electronic file, the original memory block including the corresponding component of the original electronic file.
- 11. The method of claim 10, wherein identifying and reserving includes searching at least one of the second memory area and unused portions of the first memory area for a memory block large enough to store the received component when the size exceeds the size of the corresponding component of the original electronic file.
- 12. The method of claim 8, wherein the rewriting of the first memory area and the reapportionment of the second memory area further includes:
reading a second table including at least one entry corresponding to the unused memory blocks of the first area; rewriting components of the first memory area to sequentially pack the components of the first memory area and consolidate the unused memory blocks; sequentially evaluating a size of each component of the second memory area and rewriting components of the second memory area to the first memory area where a size of the component of the second memory area and a size of the consolidated unused memory blocks permits; identifying remaining blocks of the consolidated unused memory blocks following the sequential evaluating and rewriting; reapportioning the second memory area by designating the remaining blocks of the consolidated unused memory blocks as part of the second memory area; setting a pointer of the second memory area to maintain a start address of available memory of the reapportioned second memory area; and updating the second table.
- 13. The method of claim 12, wherein the entries of the second table comprise information of the unused memory blocks including read only memory (ROM) number, start address, and size.
- 14. The method of claim 8, further comprising accessing functions provided by electronic files of the host device by:
receiving a function call from a main program of the host device, the function call including identification information of corresponding electronic files; reading a start address of the corresponding electronic files from a vector table; and generating a call for the corresponding electronic files using the start address and the identification information.
- 15. A method for device memory management during file updating, comprising:
determining a size of at least one received component of a new electronic file using identification information of the received component, the new electronic file being an updated version of an original electronic file; when the size is equal to or smaller than a size of a corresponding component of the original electronic file, allocating an original memory block of a first memory area into which to write the received component, the original memory block including the corresponding component of the original electronic file; when the size exceeds the size of the corresponding component of the original electronic file, searching at least one of a second memory area and unused portions of the first memory area for a memory block large enough to store the received component; and when the size exceeds a size of available memory blocks of the first and second memory areas, rewriting the first memory area to remove the unused portions, reapportioning the first and second memory areas, and allocating a memory block of the second memory area into which to write the received component.
- 16. The method of claim 15, wherein the rewriting of the first memory area further includes:
reading a table including at least one entry corresponding to the unused portions of the first memory area; and rewriting components of the first memory area to sequentially pack the components of the first memory area and consolidate the unused memory blocks.
- 17. The method of claim 15, wherein reapportioning the first and second memory areas further includes:
sequentially evaluating a size of each component of the second memory area and writing components of the second memory area to the rewritten first memory area when a size of the component of the second memory area and a size of a consolidated unused memory block of the rewritten first memory area permits; identifying remaining blocks of the consolidated unused memory blocks following the sequential evaluating and writing; reapportioning the first and second memory areas by designating the remaining blocks of the consolidated unused memory blocks as part of the second memory area; setting a pointer of the second memory area to maintain a start address of available memory of the reapportioned second memory area; and updating the table.
- 18. A method for managing memory of electronic devices, comprising:
updating electronic files of the devices by,
receiving at least one new component of a new electronic file, the new electronic file being an updated version of an original electronic file; identifying and reserving a memory block large enough to accommodate the new component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when a size of the new component exceeds a size of available memory blocks of the first and second memory areas; writing the new component to the reserved memory block; and updating a vector table when the new component is written to a memory block other than an original memory block including the corresponding component of the original electronic file; and accessing the electronic files of the devices by,
receiving a function call from a main program of the device, the function call including identification information of corresponding electronic files; reading a start address of the corresponding electronic files from the vector table; and generating a call for the corresponding electronic files using the start address and the identification information.
- 19. The method of claim 18, wherein the identification information includes function identification and arguments to the function.
- 20. An apparatus comprising:
means for receiving at least one new component of a new electronic file, the new electronic file being an updated version of an original electronic file; means for identifying and reserving a memory block large enough to accommodate the new component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when a size of the new component exceeds a size of available memory blocks of the first and second memory areas; means for updating the original electronic file by writing the new component to the reserved memory block; and means for updating a vector table when the new component is written to a memory block other than an original memory block including the corresponding component of the original electronic file.
- 21. The apparatus of claim 20, wherein the apparatus includes at least one processor-based device selected from among personal computers, portable computing devices, cellular telephones, portable communication devices, and personal digital assistants.
- 22. The apparatus of claim 20, wherein the means for identifying and reserving a memory block is a first application programming interface (API).
- 23. The apparatus of claim 20, further comprising:
means for receiving a function call from a main program of the device, the function call including identification information of corresponding electronic files; means for reading a start address of the corresponding electronic files from the vector table; and means for generating a call for the corresponding electronic files using the start address and the identification information.
- 24. The apparatus of claim 23, wherein the means for receiving a function call is a second application programming interface (API).
- 25. A computer readable medium including executable instructions which, when executed in a processing system, update electronic files and file components by:
receiving identification information of at least one received component of a new electronic file, the new electronic file being an updated version of an original electronic file, wherein the identification information includes a size of the received component; identifying and reserving a memory block large enough to accommodate the received component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when the size exceeds a size of available memory blocks of the first and second memory areas; providing an address of the reserved memory block; and updating the original electronic file by writing the received component to the reserved memory block.
- 26. An electromagnetic medium including executable instructions which, when executed in a processing system, update electronic files and file components by:
receiving identification information of at least one received component of a new electronic file, the new electronic file being an updated version of an original electronic file, wherein the identification information includes a size of the received component; identifying and reserving a memory block large enough to accommodate the received component by performing a sequential search of a first and second memory area, wherein the first memory area is rewritten to eliminate unused memory blocks and the first and second memory areas are reapportioned when the size exceeds a size of available memory blocks of the first and second memory areas; providing an address of the reserved memory block; and updating the original electronic file by writing the received component to the reserved memory block.
- 27. A system for updating electronic files, comprising:
a first device including a first component of a file differencing and updating system that generates a delta file; a second device receiving the delta file from the first device via at least one coupling, the second device including a second component of the file differencing and updating system configured to update electronic files of the second device by,
receiving at least one component of a new electronic file via the delta file, the new electronic file being an updated version of an original electronic file; determining a size of the received component; when the size is equal to or smaller than a size of a corresponding component of the original electronic file, writing the received component to an original memory area that includes the corresponding component of the original electronic file; and when the size exceeds the size of the corresponding component of the original electronic file, writing the received component to a reserved memory area that is associated with the original memory area.
- 28. A method for updating electronic files, comprising:
receiving at least one component of a new electronic file, the new electronic file being an updated version of an original electronic file; determining a size of the received component; when the size is equal to or smaller than a size of a corresponding component of the original electronic file, writing the received component to an original memory area that includes the corresponding component of the original electronic file; and when the size exceeds the size of the corresponding component of the original electronic file, writing the received component to a reserved memory area that is associated with the original memory area.
- 29. The method of claim 28, wherein the at least one component includes a group of components.
- 30. An apparatus comprising:
means for receiving at least one component of a new electronic file, the new electronic file being an updated version of an original electronic file; means for determining a size of the received component; means for writing the received component to an original memory area that includes the corresponding component of the original electronic file, when the size is equal to or smaller than a size of a corresponding component of the original electronic file; and means for writing the received component to a reserved memory area that is associated with the original memory area when the size exceeds the size of the corresponding component of the original electronic file.
RELATED APPLICATIONS
[0001] This application is related to the application titled BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS, application Ser. No. 10/146,545, filed May 13, 2002, the application titled UPDATING ELECTRONIC FILES USING BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS, application Ser. No. 10/261,153, filed Sep. 30, 2002, the application titled UPGRADING OF ELECTRONIC FILES INCLUDING AUTOMATIC RECOVERY FROM FAILURES AND ERRORS OCCURRING DURING THE UPGRADE, Attorney Docket Number DOGO.P005 (Application Number not yet assigned), filed Nov. 12, 2002, the application titled GENERATING DIFFERENCE FILES USING MODULE INFORMATION OF EMBEDDED SOFTWARE COMPONENTS, Attorney Docket Number DOGO.P004 (Application Number not yet assigned), filed Nov. 18, 2002, the application titled CONTROLLING UPDATES OF ELECTRONIC FILES, Attorney Docket Number DOGO.P006 (Application Number not yet assigned), filed Nov. 18, 2002, the application titled SCHEDULING UPDATES OF ELECTRONIC FILES, Attorney Docket Number DOGO.P007 (Application Number not yet assigned), filed Nov. 18, 2002, and the application titled MANAGING ELECTRONIC FILE UPDATES ON CLIENT DEVICES, Attorney Docket Number DOGO.P008 (Application Number not yet assigned), filed Nov. 18, 2002, all of which are currently pending.