WO1994022086A1 - Apparatus and method for extracting and updating finite difference in executable file - Google Patents

Apparatus and method for extracting and updating finite difference in executable file Download PDF

Info

Publication number
WO1994022086A1
WO1994022086A1 PCT/JP1994/000454 JP9400454W WO9422086A1 WO 1994022086 A1 WO1994022086 A1 WO 1994022086A1 JP 9400454 W JP9400454 W JP 9400454W WO 9422086 A1 WO9422086 A1 WO 9422086A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
old
area
execution file
new
Prior art date
Application number
PCT/JP1994/000454
Other languages
English (en)
French (fr)
Inventor
Morimasa Tanimura
Original Assignee
Ntt Data Communications Systems Corporation
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 Ntt Data Communications Systems Corporation filed Critical Ntt Data Communications Systems Corporation
Priority to GB9423581A priority Critical patent/GB2281990B/en
Priority to US08/343,444 priority patent/US5752039A/en
Publication of WO1994022086A1 publication Critical patent/WO1994022086A1/ja

Links

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/99953Recoverability
    • 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

Definitions

  • the present invention when an execution file is updated for the purpose of fixing a bug or partially enhancing a function, a difference between a new execution file and an old execution file is extracted and an update file is extracted.
  • the present invention relates to an execution file difference extraction apparatus and method for generating a new execution file from an old execution file and an update file, which is regarded as a file. Background technology
  • the executable file is distributed to the user and the predetermined service is provided by the executable file (EXE file)
  • the bug in the executable file can be corrected
  • a new EXE file is created in the executable file distributed to the user, as shown in Figure 1A.
  • the file may be updated to the old EXE file.
  • the distribution medium is a network as shown in Fig. 2, the host computer HOST of the center TC is connected to the host computer HOST in the office TC via an image. If the new EXE file has such a large size as described above, the line usage fee will be high and it will be uneconomical.
  • the new EXE file itself is not distributed for such a problem, but the old EXE file and the new EXE file are combined as shown in FIG. 1B.
  • a comparison process is performed between the new EXE file and the difference between the new EXE file and the old EXE file is extracted and set as an updated file, and the updated file is distributed to the user. It is becoming.
  • the old EXE file, the updated file, the power, and the new EXE file are generated by the update process using the predetermined update program. . Since the new EXE file and the old EXE file often have the same program code, the updated file, which is the difference between them, is often used.
  • the size of the file is often smaller than the size of the new EXE file. Therefore, by distributing the update file to the user, the data capacity required for the distribution medium can be reduced.
  • the host computer HOST of the center TC distributes the update file to the host computer HOST in the office TC via the drawing.
  • the inter-centre communication unit starts the update program after receiving the above update file, so that the old EXE file can be used.
  • the new EXE file is stored on the primary disk and the secondary disk via the file operation unit.
  • the distribution processing management section in the host computer H0ST of the office TC transfers the new EXE file from the communication section in the office via the LAN (local area network).
  • client server CSV In the client server CSV, the communication unit in the office receives the new EXE file.
  • the received new EXE file is sent to the primary disk and the secondary disk via the file operation unit. Disclosure of inventions stored in
  • the top of the old EXE file and the top of the new EXE file are used. For the entire file from the beginning to the end of each file, it is determined whether or not the data matches in byte units, and the unmatched data is extracted as difference data. For this reason, for example, if even one byte of data is deleted or inserted in the middle of a new EXE file, all data of the old EXE file and the new EXE file will be deleted after that byte. There is a problem that the data does not match, and as a result, the size of the update file becomes large. Therefore, when the update file is distributed via the network as in the example in Fig. 2, the line usage is much less than when the new EXE file is distributed as it is. The result is that the efficiency is not improved. ⁇ The present invention aims at reducing the size of the update file.
  • the present invention first has the following configuration as an execution file difference extraction device.
  • the area dividing unit divides each of the old execution file and the new execution file into a plurality of areas for each predetermined logical unit.
  • This logical unit is, for example, a segment, resource, header, table, section directory, section, etc., which is a unit of the data attribute of the old execution file or the new execution file. .
  • the region associating unit includes a plurality of regions of the old execution file divided by the region dividing unit and the new execution file. Areas corresponding to each other are associated with a plurality of areas in one file.
  • the difference extraction processing unit includes a region of the old execution file and a new execution file associated by the region association unit.
  • This difference information includes, for example, attribute information indicating that data is to be inserted, deleted, or replaced in the old execution file in the new execution file,
  • It consists of 10 target data length information and the target data.
  • the update file generation unit stores the difference information extracted in the difference extraction processing unit in the update file, and performs the association in the area association unit.
  • the present invention provides an execution file updating device, wherein an update file generated by the above-mentioned update file generation unit is provided.
  • It is configured to have a file updating unit for sequentially extracting the difference information from the 20 files and generating a new execution file from the difference information and the old execution file.
  • the difference extraction process when executed, for example, the execution file in the system
  • Figure 1A and Figure IB are illustrations of file update
  • Figure 2 is an illustration of file update environment
  • FIG. 3 is a configuration diagram of a preferred embodiment of the present invention.
  • FIG. 4 is a diagram showing a file format according to a preferred embodiment of the present invention.
  • Figure 5 shows the operation flow chart (part 1) of the header breaking section
  • Figure 6 shows the operation flow chart of the header analysis part (part 2)
  • Figure 7 shows the DOS EXE header and ⁇ EXE header data.
  • FIG. 8 is a diagram showing EXE header information
  • FIG. 9 is a diagram showing a data structure of a segment table section
  • Figure 10 is a diagram showing the data structure of the resident non-resident name table section.
  • Fig. 11 is a diagram showing the data structure of the import name table section.
  • FIG. 12 is a diagram showing the relationship between the module reference table section and the import / export list table section.
  • Fig. 13 shows the data structure of the resource table section.
  • Figure 14 shows the operation flow of the segment data mapping unit.
  • FIG. 15A and Figure 15B show the arrangement of the segments of the old EXE file and the new EXE file
  • Figure 16A and Figure 16 B is an explanatory diagram of the correspondence between the segments
  • Figure 17 is an illustration of relocation information
  • FIG. 19A and FIG. 19B are diagrams showing the arrangement of the resources of the old EXE file and the new EXE file
  • Fig. 20 is an explanatory diagram of Min Min's corresponding resource
  • FIG. 22 is an operation flowchart of the comparison process
  • FIG. 23 is an explanatory diagram of the comparison process.
  • FIGS. 24A and 24B are explanatory diagrams of the difference extraction processing when insertion is performed in the new EXE file.
  • FIGS. 25A and 25B are explanatory diagrams of the difference extraction processing when deletion is performed in the new EXE file
  • FIGS. 26A and 26B are explanatory diagrams of the difference extraction processing when the replacement is performed with the new EXE file.
  • Fig. 27A and Fig. 27B are illustrations of the difference extraction processing when deletion and replacement are performed simultaneously in the new EXE file.
  • Fig. 28A and Fig. 28B are explanatory diagrams of the difference extraction processing when special insertion and deletion are performed simultaneously in the new EXE file.
  • FIGS. 29A and 29B are diagrams showing the data structure of the update file.
  • FIG. 30 is a diagram showing a file format according to another preferred embodiment of the present invention. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 3 is a configuration diagram of a preferred embodiment of the present invention.
  • the difference extraction processing section 304 includes a header analysis section 301 described later and a segment data association section 3002 described later. Or, from the beginning to the end of the specified area from the resource mapping unit 303, extract the byte-by-byte difference between the new EXE file 303 and the old EXE file 305, and extract the difference. Save the differences to the updated file 307.
  • the header breaking section 301 extracts the DOS EXE header area and the EXE header area for the old EXE file 305 and the new EXE file 306, respectively. For these areas, the difference extraction processing section 304 is instructed to perform difference extraction processing. In addition, the header analysis unit 301 extracts the extracted DOS EXE header and the contents of the EXE header for the old EXE file 300 and the new EXE file 306, respectively. By performing analysis, an area of each table section described later is extracted, and a difference extraction process is instructed to the difference extraction processing section 304 with respect to each extracted table section area.
  • the solder unfolding section 301 divides the old EXE file 305 and the new EXE file 306 from the extracted segment table section for each of the segment files described later.
  • the information 308 is extracted and set in the segment data associating unit 302 and the resource associating unit 303, which will be described later, and is described later from the extracted resource table unit.
  • the resource information 309 is extracted and set in the resource association unit 303 described later.
  • the segment data associating unit 302 based on the segment information 300 from the header decoding unit 301, combines the old EXE file 305 and the new EXE file 306 with each other.
  • the segment data are associated with each other, and the difference extraction processing unit 30 is instructed to perform the difference extraction processing for the associated segment data pair area. If the one corresponding to the segment data existing in the old EXE file 305 does not exist in the new EXE file 306, the difference information indicating that the segment data should be deleted is provided. Save to update file 307. Conversely, if the one corresponding to the segment data existing in the new EXE file 306 does not exist in the old EXE file 305, the segment data should be imported. Saves the difference information in the update file 307.
  • the resource executor 303 and the new EXE file 305 The resources are associated with the file 303, and the difference extraction processing unit 304 is instructed to perform the difference extraction processing on the area of each associated resource pair. . If the resource corresponding to the resource existing in the old EXE file 305 does not exist in the new EXE file 306, the difference information indicating that the resource should be deleted is updated. Save to Ile 3 07. Conversely, new If the resource corresponding to the resource that exists in the EXE file 306 does not exist in the old EXE file 305, the difference information indicating that the resource should be inserted is updated. Save to file 3 07.
  • FIG. 4 is a diagram showing a common file format of the old EXE file 305 and the new EXE file 306.
  • the file targeted in this preferred embodiment is an EXE file that can be executed under a U.S. system, which is one of the multitasking operating systems for computers. is there. Note that the present invention is not limited to such files. For example, as will be described later5, for example, an EXE file that can be executed under a Zhu operating system is also included in the present invention. Scope of application.
  • the EXE file having the configuration shown in Fig. 4 is constructed so that it can be executed under a system that is one of the conventional single task 0 operating systems for computers. I have. Therefore, this EXE file is composed of a DOS EXE format area and an EXE format area as shown in FIG.
  • the first half of the file contains the DOS EXE format
  • the DOS EXE format area includes a DOS EXE header area in which various information for executing a ⁇ "program and pointer information to a US EXE header, which will be described later, are stored, and a program operating under a US system. It consists of a DOS load module area where the main body of the program is stored.
  • EXE format area stores various information for executing the application program and pointer information to various tape sections described later, etc.
  • EXE header area various table section areas described later, system It consists of a segment data area that stores the main body of the program that operates under the original, and a resource area that stores data called resources used in the ⁇ "program.
  • the old EXE file 305 is added to each of the DOS EXE format area, the red EXE header area, and each table area.
  • the difference extraction process with the new EXE file 306 is performed, and then the segment data and resources between the old EXE file 305 and the new EXE file 306 are extracted.
  • the major feature is that the difference extraction process is executed for each area of each pair of the segment data and the resource after the correspondence is performed.
  • the size of the generated update file 307 can be significantly reduced as compared with the conventional technology.
  • the operations of the header analysis unit 301, the segment data association unit 302, the resource association unit 303, and the difference extraction processing unit 304 will be sequentially described.
  • the header breaking unit 301 is activated.
  • the operation flow chart of the processing executed by the header deciphering unit 301 is shown in FIGS. 5 and 6.
  • the operation of the header analyzing unit 301 is performed in a computer system (not shown).
  • CPU central processing unit
  • step S501 the old EXE file 305 and the new EXE file 306 are stored in the file offset 0 in the DOS EXE header, respectively. It is determined whether the one-word code is "MZ" (see Fig. 7). If the code is not "MZ", the file is not an EXE file, so an error message is displayed in step S523 and the difference extraction processing ends.
  • step S At 502, for each of the old EXE file 305 and the new EXE file 306, the file offset 18h in the DOS EXE header ("h" indicates that It indicates that the value of the obtained one word is a hexadecimal number.) It is determined whether or not the value stored in the word is 40h (see FIG. 7). If the value is not 40h, the file is not an EXE format file. Therefore, an error message is displayed in step S523 and the difference extraction process is performed. finish.
  • step S 50 If the above value is 40 h, step S 50
  • the old EXE file 305 and the new ££ file 306 are indicated by the values stored in the file offset 3Ch in the DOS EXE header. It is determined whether or not the one-word offset address is an address in the EXE area (see FIG. 7). If the address is not an address in the EXE area, the file is not a file in the fEXE format, so the error is displayed in step S523 and the difference is extracted. The process ends.
  • step S504 each of the old EXE file 300 and the new EXE file 310 is added. It is determined whether or not the value of one word stored in the ⁇ ⁇ relative offset 36h in the element EXE header is 1 (see FIG. 7). here,
  • EXE relative offset means a relative offset from the start address of the f.EXE format area. If the value is not 1, the file is not an EXE format file, and an error is displayed in step S523, and the difference extraction processing ends.
  • step S505 the DOS EXE format data area is located in each of the old EXE file 305 and the new EXE file 306.
  • step S506 the header analysis unit 301 calls the difference extraction processing unit 304, and the header analysis unit 304 extracts the old EXE file 304 and the new EXE file 303.
  • the DOS EXE format data area extracted in each case is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes a new EXE file from the beginning to the end of the DOS EXE format data area passed from the header decompression section 301 by the difference extraction processing described later. Extract the difference in byte units from the old EXE file 305 of the file 306, and save the difference in the update file 307.
  • FIG. 7 shows the old EXE file 305 and the new EXE file 306.
  • step S508 the old EXE file 305 and the new EXE file 306 are respectively read.
  • the EXE header area is indicated as the contents of the file offset 3Ch in the DOS EXE header described above.- ⁇ R From the address of the EXE area, the variable segtbl off
  • step S509 the header breaking section 301 calls the difference extraction processing section 304, and the old EXE file 205 and the new EXE file 303 are called.
  • the discarded EXE header area extracted for each of No. 06 is passed to the difference extraction processing section 304.
  • the difference extraction processing unit 304 executes the new extraction of the new EXE file 304 from the beginning to the end of the f ⁇ EXE header area passed from the header analysis unit 301 by the difference extraction processing described later. Extract the byte-by-byte difference from the old EXE file 305 of No. 6 and save the difference in the update file 307.
  • step S510 the old EXE file
  • the segment table section (see FIG. 4) extracted based on the variables segtbl off and segtbl cnt (see FIG. 8) is broken for each of 2005 and the new EXE file 303.
  • Figure 9 shows the data structure of the segment table.
  • the segment table section is a 1-byte file offset data that indicates the start address of the segment data, and a 1-byte actual segment data size that indicates the actual size of the segment data.
  • a data set consisting of data and one-word segment type / attribute data indicating the type and attribute of the segment data is provided for each of the segment data described later.
  • step S 510 for each of the old EXE file 305 and the new £ file 306, this data structure, for example, in the form of a data structure, Information 308 (see FIG. 3) is set in a memory (not shown) that can be accessed from a segment data association unit 302 and a resource association unit 303 described later. You.
  • step S511 the old EXE file 3
  • the segment table area (see FIG. 4) described above is extracted for each of 05 and the new EXE file 30. This area starts from the offset address at the head of the segment table section indicated by the variable segtbl ⁇ , and expands from the offset address indicated by the variable entrytbl ⁇ . It is extracted as the area up to the address before the offset address at the beginning of the entry table section (see Figs. 8 and 4).
  • the header decryption section 301 calls the difference extraction processing section 304 in step S512, and the old EXE file 350 and the new EXE file 310 are called together.
  • the segment table area extracted for each of 6 is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes a new EXE file from the top to the end of the segment table section area passed from the header breaking section 301 by the difference extraction processing described later. Extract the difference in byte units from the old EXE file 305 of the file 306, and save the difference to the update file 307.
  • step S 5 1 the old E X E
  • the exponent retrievable area (see FIG. 4) is extracted from each of 0 5 and the new EXE file 310.
  • This area includes the offset address at the head of the expo- nentry table section indicated by the variable entrytbl off, and the offset at the head of the resident name table section indicated by the variable resnamtbl off. It is extracted as the area up to the address before the address (see Figs. 8 and 4).
  • the export entry table section contains the ⁇ EXE format program that contains it, and other discarded programs.
  • this part should be omittea. If a program that can be referenced from a program, for example, a DLL (Dynamic Link Library) program, another program is provided as a part of the program in which this table is set. The segment number and offset in the file to the function are stored so that the function can be referred to.
  • a program that can be referenced from a program for example, a DLL (Dynamic Link Library) program
  • another program is provided as a part of the program in which this table is set.
  • the segment number and offset in the file to the function are stored so that the function can be referred to.
  • the header decryption unit 301 calls the difference extraction processing unit 304 in step S 514, and the old EXE file 305 and the new EXE file 3
  • the extracted entry table area extracted for each of No. 06 is passed to the difference extraction processing part 304.
  • the difference extraction processing section 304 executes the new extraction of the new EXE file 304 from the beginning to the end of the segment table section area passed from the header breaking section 301 by the difference extraction processing described later. Extract the difference in byte units from the old EXE file (305) in No. 6 and save the difference in the update file (307).
  • step S515 the areas of the resident name table section and the non-resident name table section (see FIG. 4) for the old EXE file 305 and the new EXE file 306, respectively, are set. Is extracted as one area. This area is from the first offset address of the resident name table part indicated by the variable resnamtbloff to the address before the first offset-address of the module reference table part indicated by the variable niodrei off.
  • the resident name table section and the non-resident name table section have a common configuration as shown in Fig. 10.
  • the resident name table section has the module name resident in memory at the time of program execution, the number of bytes, and the like.
  • the index of the table to be entered is stored, and the name of the module to be called by the program itself, the number of bytes, and the entry are stored in the non-resident name table section as needed when the program is executed. Stores the index of the table (module).
  • step S 516 the header breaking section 301 calls the difference extraction processing section 304, and the old EXE file 304 and the new EXE file.
  • the resident / non-resident name table section area extracted for each of the nodes 303 is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes the new EXE file from the beginning to the end of the resident Z non-resident name table section area passed from the header breaking section 301 by the difference extraction processing described later. Extract the difference in byte units from the old £ £ file 3 05 of 3 06, and save the difference in the updated file 3 07.
  • step S 517 the module reference table section and the import name table section (see FIG. 4) are used for the old EXE file 300 and the new EXE file 310, respectively.
  • the module name and byte length of other DLL programs referenced by the program containing the module are stored in the import name table section.
  • the offset value to each element of the import name table part is stored as a code array.
  • the header analysis unit 301 calls the difference extraction processing unit 304 in step S518, and the old EXE file 205 and the new EXE file 303 are called.
  • the module reference / inboard name table section area extracted for each of No. 6 is passed to the difference extraction processing section 30.
  • the difference extraction processing unit 304 executes the new EXE source from the beginning to the end of the module reference / import name table area passed from the header analysis unit 301 by the difference extraction processing described later. Extract the difference in byte units from the old EXE file 305 of the file 306, and save the difference to the update file 307.
  • step S 519 the old EXE file 305 and the new EXE file 306 are each extracted based on the variables resrctbl of ⁇ and resrctblcnt (see FIG. 8).
  • the resource table section (see Fig. 4) is analyzed.
  • Figure 13 shows the data structure of the resource table section.
  • the resource table portion is composed of one-page resource type ID data indicating the identifier of the resource type and one-node resource name ID data indicating the identifier of the resource name.
  • a data set is provided for each of the resources described below.
  • this data structure is used as resource information 309 (see FIG. 3).
  • the memory is set to a memory (not shown) accessible from a resource association unit 303 described later.
  • step S520 the above-mentioned resource table area (see FIG. 4) is extracted for each of the old EXE file 305 and the new EXE file 306.
  • This area is the area from the offset address at the top of the resource table indicated by the variable resrctbl off to the address advanced by the number of resource entries indicated by the variable resrctbl cnt. It is extracted (see Figures 8 and 4).
  • Step S 5 2 In step 1, the difference extraction processing section 304 is called, and the resource table area extracted in each of the old EXE file 304 and the new EXE file 303 is subtracted. The information is passed to the extraction processing section 304. As a result, the difference
  • the extraction processing section 304 executes the difference extraction processing to be described later, from the beginning to the end of the resource table section area passed from the header breaking section 301, to the new EXE file 303. Extract the byte-by-byte difference from the old EXE file 305 and save the difference to the update file 307.
  • the header analysis unit 301 uses the old EXE file 305 and the new EXE file for each of the DOS EXE area, the EXE header area, and each table area. Extraction of difference from Il 30
  • step S522 the header analysis unit 301 activates the segment data association unit 302 of FIG. 3 and ends the process.
  • segment data association section 302 the attribute of the segment data and the main part thereof are between the old EXE file 305 and the new EXE file 306. By comparing these data, the association is performed, and a difference extraction process is instructed to the difference extraction processing unit 304 for each of the associated segment data areas.
  • step S1401 based on the segment information 308 set from the header decryption section 301 in step S510 in FIG.
  • the mapping of the points is performed.
  • the segments of the old EXE file 305 are arranged in a row. Are arranged. The segments are arranged in the direction in which the file offset increases with the linker.
  • Fig. 15A shows an example of a segment of the old EXE file that was arranged in the same way.
  • the segment of segment number 3 is added to the old EXE file 305 in the new EXE file 306. ing.
  • the correspondence relationship between the new EXE file 30 and the old EXE file 305 is as shown in FIG. 16B.
  • the segment with the segment number 4 of the old EXE file 205 is deleted. Segment number 6 of segment number 2 has been added, and the other segment pairs have not changed or been replaced.
  • Process 1 The number of segments in the old EXE file 305 and the new ££ file 306 are compared.
  • Process 2 If the number of segments is the same or the new EXE file 306 has a larger number of segments, the segment defined in the old EXE file 305 is deleted. As a key, the segment in the new EXE file 306 is searched. If the old EXE file has a larger number of segments than the old EXE file, the segment defined in the new EXE file is used as a key and the old EXE file is used as a key. The segment in 305 is searched.
  • the segment type / attribute is the same as the current key segment, and the first one of the segment data is used.
  • the one that matches the contents of 6 bytes is a pair segment.
  • segment data that fills a relocation table in which relocation information is set at the top. If either the keyed segment or the segment to be searched is such data, the contents of the first 16 bytes immediately following this relocation table are Those that match are regarded as a pair segment, and a difference extraction process is separately performed on the relocation table as described later.
  • Whether or not the relocation table exists is determined by the data value indicating that the relocation table exists in the segment type / attribute data of the segment information 308. Is set or not Can be determined.
  • the search is abandoned for the key segment, and the segment is replaced by the old EXE file. 05 is the isolated segment. Then, the next segment is regarded as the key and the search is performed.
  • unpaired segments in the new EXE file 310 are considered as isolated segments in the new EXE file 310.
  • the obtained pair segment, the isolated segment of the old EXE file 305, and the isolated segment of the new EXE file 306 are used as segment association data. It is stored in memory.
  • step S1401 in FIG. 14 after all searches have been completed, the following step S14 is performed on each of the segment-associated data.
  • the processing of 1402 to S1416 is repeatedly executed.
  • step S1402 if there is segment association data in which one segment association data is extracted from memory or the like, the determination in step S1443 is made. Is YES, and subsequently, in step S144, it is determined whether or not the segment association data is a non-segment. If the segment association data is a pair segment and the judgment in step S144 is YES, then steps S148, S141, and S141 In step 2, it is determined whether relocation information is set in the old EXE file 305 and / or the new £ file 306.
  • step S1413 the relocation table area is extracted from each of the old EXE file 305 and the new EXE file 306. This area is extracted as the area from the first address of the segment data to the address that is advanced by the number of relocation items set in the first byte. Subsequently, the segment data associating unit 302 calls the difference extraction processing unit 304 in step S144, and the old EXE file 3005 and the new EXE file are also called.
  • the relocation table area extracted for each of the files 303 is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes the difference extraction processing described later to relocate the relocation table section area passed from the segment data association section 302. From the beginning to the end of the area, extract the byte-by-byte difference of the new EXE file 306 from the old EXE file 305, and save the difference to the updated file 307 .
  • step S108 If the relocation information is set only in the old EXE file 305, the determination in step S108 becomes YES, and step S1409 is executed. In step S 1409, difference information (update record) indicating that the resource table area of the old EXE file 305 has been deleted is added to the update file 307. Saved.
  • step S144 If the relocation information is set only in the new EXE file 306, the judgment in step S144 is N0, and the judgment in step S14410 is YES. And step S1 4 1 1 is executed. In step S1441, difference information (update record) indicating that the resource table area of the new EXE file 306 has been inserted is stored in the update file 30. Saved to 7.
  • step S115 is executed.
  • step S14415 the area of the segment data body excluding the relocation information is extracted. This area starts from the first address of the segment data when the relocation information is not set, and starts from the first address when the relocation information is set. From the address following the address that has advanced by the number of relocation items set for one byte, the segment data of the next segment number extracted from the segment information 3008 is extracted. Extracted as the area up to the address before the first offset address.
  • the segment data associating unit 302 calls the difference extraction processing unit 304 in step S11416, and the old data file 304 is added to the old data file 304.
  • the segment data area extracted in each of the new £ files 306 is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes a new file from the beginning to the end of the segment data area passed from the segment data association section 302 by the difference extraction processing described later. Extract the difference in byte units from the old £ £ file 3 05 of 3 06, and save the difference to the updated file 3 07.
  • the segment association data is determined to be a pair segment. If not, and if the determination in step SI404 is NO, then in step S145, the segment association data is the isolated segment of the old EXE file 304. Is determined.
  • step S1406 is executed.
  • difference information update record
  • step S1405 If the judgment of step S1405 is N0, it is an isolation of the new EXE file 306. This is a segment, and in this case, step S107 is executed.
  • step S 1407 the difference information (update record) indicating that the isolated segment area of the new EXE file 300 has been inserted is updated in the update file 307. Saved to.
  • step S1443 the determination in step S1443 becomes N0.
  • segment data associating unit 302 activates the resource associating unit 303 in FIG. 3 in step S144, and ends the processing.
  • FIG. 3 An operation flowchart of the processing executed by the resource associating unit 303 is shown in FIG.
  • the operation of the resource mapping unit 303 is the same as that of the header resolution unit 301, especially in a computer system (not shown). This is implemented as a part of the operation for executing the control program stored in the memory with respect to the stored old EXE file 304 and the new EXE file 303.
  • the resource is defined as an attribute of the segment data, and therefore, as in the case of the segment data described above, the old EXE file 300 and the new £ 5 file 303 If there are resources corresponding to and, the contents of the resources that have not been changed are matched, and a difference occurs only for the resources that have been changed.
  • the old EXE file 304 and the new EXE file 303 are similar.
  • Resource mapping between The difference extraction processing unit 304 is instructed to perform the difference extraction processing for each of the resource regions that have undergone the subtraction.
  • the resource name ID is set in the above-described resource table (see FIG. 13). Therefore, the resource mapping unit 303 compares the resource name IDs by comparing the resource name IDs, and sends the corresponding resource area to the difference extraction processing unit 304 for each of the associated resource areas. Instruct difference extraction processing.
  • step S1801 the segment information 3008 and the segment information set from the solder analysis unit 301 in steps S510 and S519 in FIG. Resources are associated based on the resource information 309.
  • Process 1 The number of resources in the old EXE file 305 and the number of resources in the new EXE file 306 are compared.
  • Process 2 If the number of resources is the same or the number of resources in the new EXE file 306 is larger, the resources defined in the old EXE file 305 are used. Key Then, the resources in the new EXE file 306 are searched. If the old EXE file 305 has more resources than the old EXE file 3, the resources defined in the new EXE file 306 are used as keys. 0 The resources in 5 are searched.
  • a resource having the same resource name ID as the resource currently set as a key is set as a paired resource.
  • the presence or absence of the re- ⁇ location table depends on whether the relocation table exists in the segment type attribute data of the segment information 308 corresponding to the resource. Can be determined based on whether or not a data value indicating is set.
  • the search for the key resource is abandoned and the resource is replaced with the old EXE file 305. It is considered an isolated resource. Then, the next resource is keyed, Is performed.
  • resources that have not been paired in the new EXE file 310 are considered to be isolated resources in the new EXE file 310.
  • the isolated resource of the E-file 305 and the isolated resource of the new EXE file 306 are held in the memory or the like as resource association data.
  • step S1800 shown below is performed.
  • Steps 2 to S1816 are executed repeatedly. These processing waves and segment correspondence data are the same as the processing in steps SI402 to S1416 in Fig. 14.
  • step S1802 one resource association data is extracted from memory or the like.
  • step S1803 determines whether the resource mapping data is a resource or not is determined. Is determined.
  • step S 1804 determines whether or not relocation information is set in both or one of 6.
  • step S1813 the relocation table area is extracted from each of the old EXE file 300 and the new EXE file 310. This area is extracted as an area from the start address of the resource to the address advanced by the number of relocation items set in the first byte. Subsequently, the resource associating unit 303 calls the difference extraction processing unit 304 in step S1814, and also executes the old EXE file 3005 and the new EXE file.
  • the relocation table area extracted for each of the files 303 is passed to the difference extraction processing section 304.
  • the difference extraction processing section 304 executes the new EXE from the beginning to the end of the relocation table section area passed from the resource association section 303 by the difference extraction processing described later. Extract the byte-by-byte difference of the file 306 from the old EXE file 305, and save the difference in the updated file 307.
  • step S 1808 Relocation information for old EXE file 305 only If the information has been set, the determination in step S 1808 is YES, and step S 1809 is executed. In step S 1809, difference information (update record) indicating that the resource table area of the old EXE file 305 has been deleted is powerful, and the update file 307 Saved to.
  • step S1880 If the relocation information is set only in the new EXE file 306, the judgment in step S1880 is N0, and the judgment in step S18810 is Becomes YES, and step S1811 is executed.
  • step S1811 the difference information (update record) indicating that the resource table area of the new EXE file 303 has been inserted is updated in the update file 30. Saved to 7.
  • the above-mentioned processing related to the relocation table is executed. Not done.
  • Step S1815 the area of the resource body excluding the relocation information is extracted. In this area, if relocation information is not set, relocation starts from the resource's first address. When the link information is set, the segment information starts from the address next to the address that has advanced by the number of relocation items set in the first byte of the resource. Extracted from the resource information 308 as an area up to the address before the offset address at the head of the resource with the next resource number.
  • the resource associating unit 303 calls the difference extraction processing unit 304 in step S 186, and also executes the old EXE file 305 and the new EXE file in step S 186.
  • the resource area extracted in each of the files 303 is passed to the difference extraction processing unit 304.
  • the difference extraction processing unit 304 executes the new EXE file from the beginning to the end of the resource area passed from the resource association unit 303 by the difference extraction processing described later. Extract the byte-by-byte difference from the old EXE file 300 of 303, and save the difference to the updated file 307.
  • step S185 it is determined whether or not it is an isolated resource of the resource file “executed file 305”.
  • step S 1 ⁇ 06 is executed. ⁇ In step S 1 86 6, the old ⁇ ⁇ ⁇ Difference information indicating that the isolated resource area of file 305 has been deleted (update record) Powerfully saved to update file 307.
  • step S1855 If the resource association data is not the isolated resource of the old X-file 305 but the judgment of step S1855 is ⁇ , it is the new X-file This is the 306 isolated resource, in which case step S 1807 is performed.
  • step SI8C7 the difference information (update record) indicating that the isolated resource area of the new file 306 has been inserted is added to the update file 307. Saved.
  • the operation flow of the difference extraction processing executed by the difference extraction processing section 304 is shown in Fig. 21.
  • the operation flowchart of the comparison process executed in the process is shown in FIG.
  • These operations are performed in the same manner as in the case of the header breaking section 301, especially in a computer system (not shown), because of the CPU power and the old EXE file 305 stored in a disk device or the like. This is implemented as a part of the operation for executing the control program stored in the memory for the new EXE file 303 and the new EXE file 306.
  • step S2101 it is determined whether or not there is no more data to be compared in the designated area.
  • the comparison process is performed using the byte data on the comparison side as a key.
  • step S221 of FIG. 22 the end position in the comparison side area or the current comparison start position to be described later is stored in the variable srcend, which is secured in a memory not shown in the figure.
  • the address of the position closer to the current comparison start position on the comparison side among the positions ahead of the 10 24 bytes is stored.
  • the variable “distend”, which is secured in a memory not shown in the figure stores the end position in the comparison target area or the current comparison start position of the comparison target side to be described later. Stores the address of the position ahead of the byte that is closer to the current comparison start position on the comparison target side.
  • step S222 the address of the current comparison start position on the comparison side is stored in a variable src secured in a memory (not shown).
  • the variable src initially stores the address of the first byte data a in the designated area of the new EXE file 306.
  • the address of the current comparison start position on the comparison target side is stored in the variables d ist and nextd ist, which are secured especially in the memory not shown.
  • the addresses of the first byte data a in the specified area of the old EXE file 305 are initially stored in the variables d ist and next d ist.
  • step S2206 the values of variables src, dist, and nextdist are sequentially incremented in step S2206, while steps S2203 ⁇ S2204 ⁇ S2
  • steps S2203 ⁇ S2204 ⁇ S2 By repeating the processing of 205 ⁇ S2206 ⁇ S2203, as shown by T1 to T3 in Fig. 24A, the function indicated by the variables src and dist The byte data having the same value in the address are sequentially associated with each other.
  • step S226 a new EXE file on the comparison side is obtained.
  • step S2208 the value of the variable dist is incremented in step S2208, while step S2204 ⁇ S2207 ⁇ S2208 ⁇ S
  • the new EXE file at the address indicated by the variable src is returned by the processing of 2 2 0 9 ⁇ S 2 2 0 4 ⁇ S 2 2 0 7 ⁇ S 2 2 0 8 being repeated.
  • step S2203 if the address indicated by the variable src does not exceed the comparison end address indicated by the variable srcend, and if the judgment in step S2203 is N0, the operation is repeated. While the value of the variable dist is incremented in step S2208, step 32204 ⁇ 322007 ⁇ S2208-> S2209 ⁇ S 2 204 ⁇ S 2 0 7 ⁇ S 2 2 0 8 Using the second byte data I inserted in the new EXE file 303 at the address indicated by the number src as a key, the value and the variable dist that are sequentially incremented Until the values of the byte data de ... on the old EXE file 305 at the address indicated by ⁇ match, and the determination in step S2204 becomes YES. They are compared sequentially. This operation is shown at T6, ⁇ 7 in Figure 24A.
  • step S2209 Thereafter, each time the determination in step S2209 becomes YES, the same comparison processing is repeated for each of the third and subsequent byte data I inserted in the new EXE file 306. (T8, T9 in Figure 24A).
  • step S2210 the address of the note data d on the new EXE file 306 is substituted for the variable src, and the old EXE file 3 indicated by the variable nextdist for the variable dist.
  • step S 222 the new EXE file in the address indicated by the variable src 3 0 6
  • the byte data d of the old EXE file 305 at the address indicated by the variable dist matches the byte data d of this address, and the determination is YES.
  • the matching state is that the byte data ab • ' ⁇ c of the new EXE file 300 and the old EXE file 300 match first, and then the new EXE file 30 Byte data II inserted in step 6 Since this is a match state after mismatching with the byte data de ⁇ 'on file 305, the determination in step S2205 is YES.
  • step S2211 the matching part indicated by the byte data ab, c of the new EXE file 306 in Fig. 24A and the old EXE file 305 in Fig. 24A
  • the match start point (address of byte data a) and the number of matching bytes are calculated, and the mismatched portion indicated by the byte data II * The mismatch start point and the number of mismatch bytes are calculated, and the comparison process ends.
  • step S2205 when a pair of a matching portion and a mismatching portion is found and the determination in step S2205 becomes YES, it will be described later with reference to FIGS. 28A and 28B.
  • step S2207 when a pair of a non-matching part and a matching part is found and the judgment in step S2207 is YES, the matching start point and the number of matching bytes of the matching part, and the mismatch starting point of the non-matching part And the number of mismatched bytes is calculated, and the comparison process ends.
  • step S210 the steps shown in FIG. 21 are performed for each byte data in the specified area of the old EXE file 305, using each byte data in the specified area of the new EXE file 306 as a key.
  • step S210 the number of matching bytes described above is 64 bytes. Is determined.
  • step S210 the difference corresponding to the above-described mismatched portion is determined.
  • the information is written to update file 307 in Figure 3.
  • the number of matching bytes indicated by the byte data ab 'and c of the new EXE file 306 and the old EXE file 305 in Fig. 24A is 64 bytes or more.
  • the new EXE file 306 it is assumed that the byte data II,..., I was inserted immediately after the address indicated by the byte data c of the old EXE file 305.
  • the indicated difference information is written to the update file 307.
  • step S2104 step S211 described above is performed. Contrary to the case of 02, the designated area of the old EXE file 305 is set as the comparison side, the specified area of the new EXE file 306 is set as the comparison side, and the byte data of the comparison side is set as the comparison side. As a key, the comparison processing shown in FIG. 22 described above is executed.
  • FIG. 24B shows an operation corresponding to FIG. 24A described above.
  • variables srcend and distend, variables src, and variables dist and nextdisU are set in steps S2201 and S2202, as in Fig. 24A. Is determined.
  • step S 2206 the value of variable src is changed to the address of d in the old EXE file 305 on the comparison side, and the comparison is made.
  • the new EXE file 303 on the target side after the value of the byte data II ' ⁇ ⁇ I into which the value of the variable dist is inserted, the first data is addressed, and then step S2 When 204 is executed, the judgment becomes N0.
  • step S2204 ⁇ S2207 ⁇ S2208 ⁇ S2 20.9 ⁇ S2204 ⁇ S2207 ⁇ S2208 is reprocessed, and the old EXE file 305 at the address indicated by the variable src is restored.
  • step S2204 Using the byte data d as a key, its value and the byte data II ⁇ ⁇ ⁇ I on the new EXE file 306 in the address indicated by the variable dist sequentially incremented Are equal to each other, and the determination in step S2204 is YES. Until they are compared. This operation is shown at T4 to T6 in FIG. 24B.
  • this new XE file 306 is substituted in step S 228,
  • the byte data d of the old EXE file at the address indicated by the variable src and the new EXE file at the address indicated by the variable dist are read.
  • the byte data d of 6 matches, and the judgment is YES.
  • the match status is determined by first comparing the old EXE file 3 05 and the new EXE file 3
  • step S2205 Since the byte data d on the EXE file 305 is in a match state after mismatching, the judgment in step S2205 is YES.
  • step S2211 the byte data ab, ⁇ , and c of the old EXE file 305 and the new EXE file 306 of FIG.
  • the match start point (address of byte data a) and the number of matching bytes are determined, and the mismatched portion indicated by the byte data II ⁇ ⁇ ⁇ I inserted in the new EXE file 30 6.
  • the mismatch start point and the number of mismatch bytes are calculated, and the comparison process ends.
  • the finger of the old EXE file By comparing the byte data of the specified area of the new EXE file 306 with the byte data of the specified area as the key, the matching process is performed by comparing the byte data of the specified area in step S210 in FIG. If a mismatched pair is found, then in step S2105 it is determined whether all bytes are mismatched.
  • step S210 If all the bytes do not match and the determination in step S210 is YES, in step S210, the difference information regarding the above-described mismatch is updated in Fig. 3. Written to file 307.
  • step S First, the number of matching bytes in the comparison processing of the above-described step S2102 using the byte data of the new EXE file 306 as a key by the following equation RNEW0LD is calculated
  • RNEW0LD (number of new to old matching bytes)
  • step S2106 If the judgment of step S2106 is YES, step S2107 is performed, and step S2107 is performed when the old EXE file 305 is fixed in step S2107.
  • step S2109 The result of the comparison process of 104 is selected and the In step S2109, the difference information on the mismatched part obtained by the comparison processing is written to the update file 307 in FIG.
  • step S210 the step when the new EXE file 306 is used as a key
  • step S210 the result of the comparison process in step S210 is selected, and in step S209, the difference information on the mismatched portion obtained by the comparison process is updated in FIG. Is written to 307.
  • step S21008 the step when the new EXE file 306 is used as a key in step S21008
  • the result of the comparison process in S210 is selected, and in step S210, the new EXE file 310 is used as difference information on the mismatched portion obtained by the comparison process.
  • the difference information indicating that byte data II... I was inserted immediately after the address indicated by byte data c of the old EXE file 305 is stored in the updated file 307. Is written.
  • next comparison start position is set in step S2110, and the processing returns to step S2101 and subsequent steps.
  • the next comparison start position is in the new EXE file 306.
  • the byte data stored in the variable src when the judgment in step S2204 in Fig. 22 is YES.
  • the address of the byte data d stored in the variable disU at that time is the same as the address of the data d and the old EXE file 305. Thereafter, the comparison process exactly as described above is repeated with these comparison start positions as starting points.
  • step S2101 If the byte data to be compared no longer exists in the specified area of the new EXE file 306 and the specified area of the old EXE file 305, the judgment of step S2101 is made. Becomes YES, and the difference extraction processing in these designated areas ends.
  • step S210 of FIG. 21 the area designated in the new EXE file 306 is compared with the area designated by the old EXE file.
  • the comparison process is executed using the area specified in the file 305 as a comparison target and the byte data on the comparison side as a key.
  • This comparison processing is different from the case of The same process is performed, except that the comparison side and the comparison side are reversed.
  • the coincidence start point and the coincidence start point of the matching part indicated by the byte data ab, c of the new EXE file 306 of FIG. 25A and the old EXE file 305 of FIG. The byte count is calculated, the byte data DD deleted in the new EXE file 306, the mismatch start point of the mismatched portion indicated by D, and the number of mismatch bytes are calculated, and the comparison process ends.
  • ⁇ As a result of the above operation the steps shown in FIG.
  • step S210 whether the number of matching bytes is equal to or greater than 64 bytes It is determined whether or not.
  • step S210 If the number of matching bytes is equal to or greater than 6 4 knots and the judgment in step S210 is YES, in step S210, the difference information on the above-described mismatched portion is determined. Is written to the update file 307 in Fig. 3. Match bytes less than 64 bytes Step S
  • the old EXE file 3 is used in step S2104, contrary to the case of step S2102 described above.
  • the designated area of 05 is the comparison side
  • the designated area of the new EXE file 30 6 is the comparison side
  • the byte data of the comparison side is the key
  • the comparison processing shown in FIG. 22 is executed. As an example of this comparison processing, an operation corresponding to FIG. 25A described above is shown in FIG. 25B. This comparison processing is the same as that of FIG. 24A described above, except that the comparison side and the comparison target side are reversed.
  • the number of matching bytes is calculated, and the mismatch starting point and the number of mismatching bytes of the mismatched portion indicated by the byte data DD deleted in the new EXE file 306 are calculated.
  • the comparison process ends.
  • step S210 it is determined whether or not all the bytes are mismatching.
  • step S2105 the judgment in step S2105 is N0, so that in step S2106, Based on Equations (1), (2), and (3) above, the percentage of matching bytes when the new EXE file 306 is used as a key.
  • Key 3 0 5 as a key It is determined whether it is smaller than the ratio of the number of matching bytes R0LDNEW.
  • step S2108 step S2 is performed when the new EXE file 303 is used as a key.
  • the result of the comparison process of step 102 is selected, and in step S2109, the difference information about the mismatched part obtained by the comparison process is used as the difference information in the new EXE file 306.
  • Difference data indicating that byte data DD... D between byte data c and d of EXE file 305 has been deleted is written to update file 307.
  • the byte existing between the byte data c and d in the designated area of the old EXE file 305 is determined. Assume that the area of the data string RR is replaced by another byte data string RR having the same length.
  • step S210 of FIG. 21 the area specified in the new EXE file 306 is compared with the area designated by the old EXE file.
  • the comparison process is executed using the area specified in the file 305 as the comparison target side and the byte data on the comparison side as a key.
  • the comparison process shown in FIG. The processing is the same as that of the comparison range indicated by T1 to T9 of 4A.
  • the comparison range indicated by T10 to ⁇ 13 in FIG. The processing is the same as that of the comparison range indicated by ⁇ 4 to T7 in Fig. 26.
  • the new EXE file 310 and the old EXE file in Fig. 26A are displayed.
  • the matching start point and the number of matching bytes of the matching part indicated by the byte data ab ', c, are calculated, and the byte data RR' replaced with the new EXE file 306 ⁇ -The mismatch start point and the number of mismatch bytes of the mismatched portion indicated by R are calculated, and the comparison process ends.
  • step S203 the number of matching bytes described above is increased to 64 or more. It is determined whether there is.
  • step S210 If the number of matching bytes is equal to or greater than 64 bytes and the determination in step S210 is YES, in step S210, the difference information regarding the above-described mismatched portion is obtained. It is written to the update file 307 in FIG. If the number of matching bytes is smaller than 64 bytes and the judgment of step S2103 is N0, step S2104 is executed at step S2104. In case of 1 0 2 Conversely, the designated area of the old EXE file 305 is set as the comparison side, the specified area of the new EXE file 306 is set as the comparison target, and the byte data of the comparison side is set as the key. Then, the comparison process shown in FIG. 22 described above is executed. As an example of this comparison processing, an operation corresponding to FIG.
  • FIG. 26B In this comparison process, first, in the comparison range indicated by T1 to T9 in FIG. 26B, the process is the same as that in the comparison range indicated by ⁇ 1 to ⁇ 9 in FIG. Then, in the comparison range indicated by 10 to 0 13 in FIG. 268, the processing is the same as that in the comparison range indicated by ⁇ 4 to ⁇ 7 in FIG. . Then, as a result of this comparison processing, it is represented by the note data ab... C of the old file 305 and the new file 306 in FIG. 26.
  • the matching start point and the number of matching bytes of the matching part are calculated, and the byte data RR * replaced by the new EXE file 306 * The mismatching starting point of the mismatched part indicated by R And the number of mismatched bytes is calculated, and the comparison process ends.
  • step S210 determines whether all the bits do not match. It is determined whether or not.
  • step S2105 since all the bytes do not match, the judgment of step S2105 becomes N0, so that in step S2106, Based on Equations (1), (2) and (3) above, the ratio of the number of matching bytes when the new EXE file 306 is used as a key. It is determined whether or not it is smaller than the ratio R0LDNEW of the number of matching bytes when rule 3505 is used as a key.
  • step S210 the step S2 in which the new EXE file 106
  • the result of the comparison process of step 102 is selected, and in step S2109, the difference information of the mismatched part obtained by the comparison process is used as the difference information of the old EXE file in the new EXE file 306.
  • step S2102 of FIG. 21 the new EXE file 3
  • the comparison process is executed with the area specified in 06 as the comparison side and the area specified in the old EXE file 305 as the comparison target side, and the byte data on the comparison side as the key. You.
  • This comparison process is the same as that of FIG. 26A. Therefore, in the comparison range indicated by T 1 to T 10 in FIG. 27A, the comparison range shown by the above-described FIG. 24 4 0 ⁇ 1 to ⁇ 9 is used. In the comparison range indicated by Tl 1 to T 13 in FIG. 27 2, the comparison processing indicated by ⁇ 4 to ⁇ 7 in FIG. 25 ⁇ is performed. The processing is similar to that of the range. Then, as a result of this comparison processing, the matching start indicated by the byte data ab-.c of the new file 3306 in FIG. 27 and the data file ⁇ X ⁇ in the old file 305 in FIG. 27 starts. The point and the number of matching bytes are calculated, and the byte data inserted, deleted, and replaced in the new EXE file 310
  • step S in FIG. 21 for each byte data of the specified area of the old EXE file 305 using the byte data of the specified area of the new EXE file 306 as a key
  • step S2103 it is determined whether or not the number of matching bytes is equal to or greater than 64 bytes. Is determined.
  • step S210 the difference information regarding the above-described mismatched portion is obtained. Is written to the update file 307 in FIG.
  • step S2104 the above-described step S2102 is performed. Contrary to the case of, the designated area of the old EXE file 305 is set as the comparison side, and the specified area of the new EXE file 306 is set as the comparison target side, and the byte data of the comparison side is set.
  • the comparison processing shown in FIG. 22 described above is executed. As an example of this comparison processing, an operation corresponding to FIG. 27A described above is shown in FIG. 27B. This comparison process is the same as that of FIG. 26B described above. First, in the comparison range indicated by T1 to T9 of FIG.
  • step S in FIG. 21 for each byte data in the specified area of the new EXE file 306 using the byte data in the specified area of the old EXE file 305 as a key
  • step S2105 it is determined whether or not all bytes do not match. You.
  • step S2106 is performed. Based on Equations (1), (2), and (3), the ratio of the number of matching bytes when the new EXE file 306 is used as a key, RNEW0LD is the old EXE file 3 It is determined whether or not the ratio of the number of matching bytes when R5 is used as the key is smaller than R0LDNEW.
  • step S210 the result of the comparison processing of step S210 when the new EXE file 306 is used as a key is selected, and step S210 is selected.
  • step 9 the difference information about the mismatched part obtained by the comparison processing is written to the update file 307.
  • the number of bytes between the byte data c and d in the designated area of the old EXE file 303 is larger than the designated area of the new EXE file 310. If the number of bytes is larger than the number of bytes between c and d in the new EXE file, the difference information indicating that the byte data corresponding to the number of bytes in the new EXE file 2006 has been replaced is updated. To the file 307, and then ((the number of bytes in the old EXE file 305) one (the number of bytes in the new EXE file 306) byte data The difference information to the effect that was deleted is written to the updated file 307.
  • the number of bytes between byte data c and d in the designated area of the old EXE file 300 is larger than the designated area of the new EXE file 303. If the number of bytes is smaller than the number of bytes between byte data c and d in the previous EXE file, the difference information indicating that the byte data corresponding to the number of bytes in the old EXE file 305 has been replaced is updated. 307 heired, followed by-. ((Number of bytes in new EXE file 306) The difference information indicating that one byte (the number of bytes in the old EXE file 305) has been inserted is written to the update file 307.
  • the number of bytes between byte data c and d in the designated area of the old EXE file 3005 is equal to the number of bytes in the designated area of the new EXE file 310. Is equal to the number of bytes between c and d, the difference that the byte data of the old EXE file 305 or the new EXE file 306 has been replaced by the number of bytes is replaced. The information is written to the update file 307.
  • step S210 of FIG. 21 the area specified in the new EXE file 306 is compared with the area designated by the old EXE file.
  • the area specified in file 3 05 is compared
  • the comparison processing is executed using the byte data on the comparison side as a key.
  • This comparison processing is the same as that of the comparison range indicated by T4 to T6 in FIG. 25A described above in the comparison range indicated by T1 to T3 in FIG. 28A.
  • the comparison range indicated by ⁇ 4 to ⁇ 6 in FIG. 28 is the same processing as that in the comparison range indicated by ⁇ 1 to ⁇ 3 in FIG. At the time of the change from ⁇ 3 to ⁇ 4 in Fig.
  • step S2206 the new EXE file is stored in the variable src.
  • step S220 At the time when step 4 is executed, the byte data a of the new EXE file 310 at the address indicated by the variable src and the byte of the old EXE file 300 at the address indicated by the variable dist Data d does not match, The judgment is NO. This mismatch condition is caused by the fact that each byte data II... I on the new EXE file 306 and the byte data ab.
  • step S222 the determination in step S222 is YES, and the determination in step S222 is YES. 1 1 is executed.
  • step S2211 the mismatch start point and the number of mismatch bytes of the mismatched portion indicated by byte data ab, c on the old EXE file 305 in Fig. 28A are calculated. Also, the inserted byte data II on the new EXE file 306 and the byte deleted on the new EXE file 306 on the old EXE file 305.
  • the matching start point and the number of matching bytes of the matching part indicated by the data DD ' ⁇ ' D are calculated, and the comparison processing ends.
  • the finger of the new EXE file 310 Compared to each byte data of the specified area of the old EXE file 305 using each byte data of the specified area as a key, the matching part and the non-matching part are determined by the comparison processing in step S210 in FIG. Then, in step S2103, it is determined whether or not the number of matching bytes is equal to or more than 64 bytes.
  • FIG. 28A the number of bytes of the byte data string II.
  • step S210 the specified area of the old EXE file 305 is compared with the new EXE file in a manner opposite to the case of step S210 described above.
  • the comparison process shown in FIG. 22 described above is executed using the designated area of the file 306 as the comparison target side and the byte data on the comparison side as the key. As an example of this comparison processing, an operation corresponding to FIG. 28A described above is shown in FIG. 28B.
  • This comparison process is the same as that of the comparison range indicated by D4 to D6 in FIG. 24B in the comparison range indicated by T1 to D3 in FIG. 28B.
  • the comparison range indicated by ⁇ 4 to ⁇ 6 in FIG. 28B is the same processing as that of the comparison range indicated by ⁇ 1 to ⁇ 3 in FIG.
  • the address of the byte data D on the old EXE file 305 is assigned to the variable src in step S226.
  • the variable src is indicated by the variable src.
  • the byte data D of the old EXE file 305 in the above does not match the byte data d of the new EXE file 306 in the address indicated by the variable dist, and the judgment is NO.
  • This mismatch condition is caused by the byte data a of the old EXE file 305 and the inserted byte data I of the new EXE file 306 first.
  • step S2211 byte data II on the new EXE file 306 in Fig. 28B II Also, the matching start point and the number of matching bytes of the matching part indicated by the byte data ab, c on the old EXE file 305 and the new EXE file 306 are calculated. Then, the comparison process ends.
  • FIG. 21 shows that each byte data in the designated area of the old EXE file 300 is used as a key and that each byte data in the designated area of the new EXE file 303 is used.
  • step S2105 becomes N0, so that in step S2106, Based on the above formulas (1), (2) and (3), the ratio of the number of matching bytes when the new EXE file 306 is used as a key, RNEW0LD is the old EXE file It is determined whether or not the ratio of the number of matching bytes when R305 is used as a key is smaller than R0LDNEW.
  • the byte number of the byte data string ab ' ⁇ ⁇ c which is the matching part is large, and the byte of the byte data string II ⁇ ⁇ ⁇ I which is the mismatching part is
  • the number is small, for example, about several bytes, the result is that the matching part is long and the mismatching part is short. Therefore, in the examples of FIGS. 28A and 28B, RNEW0LD ⁇ R0LDNEW.
  • the updated file 307 stores the difference information of the unmatched portion, so that the number of matched portions is preferably as large as possible. Therefore, as in the case of Figs.
  • the ratio of the number of matching bytes when the new EXE file 306 is used as a key RNEW0LD makes the old EXE file 30 The ratio of the number of matching bytes when 5 is used as the key. If the value is smaller than R0LDNEW and the determination in step S2106 is YES, the old EXE file is deleted in step S2107.
  • the difference information indicating that the byte data II, '', and I have been inserted before the address indicated by the byte data a of 305 is written to the update file 307.
  • the difference extraction processing section 304 executes the difference extraction processing.
  • FIGS. 29A and 29B show the data structure of the update file 307.
  • each record of the update file 307 contains data RdcordID indicating the attribute of the record and the processing position of the record with respect to the old EXE file 305.
  • DataOiiset-data to be updated composed of data DataLength indicating the length of the actual data to be updated, and an actual data array Data [ ⁇ ] to be updated,
  • RdcordID The attributes of RdcordID are shown in Figure 29B.
  • RdcordID with a value of 0 indicates the old EX if the record indicates that it is a replacement record.
  • the actual data array of the length indicated by the data DataLength from the position indicated by the data DataOffset on the old EXE file 305 Is inserted.
  • a RecordID with a value of 2 indicates that the record is a delete record.
  • data DataOffset on the old EXE file 305
  • data RecordLength The indicated length of data is deleted. In this case, the actual data distribution
  • the present invention is applied to the difference extraction processing of an EXE file that can be executed under a system, and includes a DOS EXE format area and a 20 EXE header.
  • the difference extraction processing is executed after the correspondence is performed for each logical unit of the area, each table section area, the segment data area, and the resource area.
  • the present invention is not limited to this, and the difference extraction processing is executed after the association is performed in another logical unit, for example, 25 in the page data unit.
  • line / 7_ 1 can be configured.
  • FIG. 30 is a diagram showing an example of the format of an EXE file executable under the raw operating system.
  • An EXE file having the configuration shown in FIG. 30 is a conventional single task operator for a computer, as in the case of the EXE file of FIG. 4 described above. It is constructed so that it can be executed under the elementary system which is one of the operating systems. Therefore, as shown in Fig. 30, the EXE file is composed of a region of the US EXE format and a region of the usual EXE format.
  • EXE format area in the first half of the file.
  • This EXE format area operates under the basic system with an EXE header area in which various information for executing the ⁇ ⁇ program and pointer information to the EXE header 20 described later are stored. (Not shown) that stores the main body of the program to be executed.
  • EXE header area that stores various information, etc., for executing the 1 program
  • section directory area for referring to the section area described later, and this section directory.
  • the range of the EXE header area can be obtained by referring to the header size set in that area.
  • the difference extraction processing can be executed between the old EXE file and the new EXE file.
  • each logical unit is processed by the same processing as in the above-described preferred embodiment.
  • the difference extraction processing can be executed between the old EXE file and the new EXE file.
  • the difference extraction processing when executed, the difference extraction processing is executed, the difference extraction processing is executed after the association is performed for each logical unit.

Description

明 細 発 明 の 名 称
実行フ ァ ィ ル差分抽出/更新装置及び 実行フア イ ル差分抽出方法 技 術 分 野
本発明は、 バグの修正又は部分的な機能拡張を目 的と して実行フ ア イ ルが更新される場合に、 新実行 フア イ ルの旧実行ファ ィ ルに対する差分が抽出され て更新フ ァ イ ルとされ、 旧実行フ ァ イ ルと更新フ ァ ィ ノレとから新実行フ ア イ ルが生成される実行フ ァ ィ ル差分抽出ノ更新装置及び方法に関する。 背 景 技 術
ユーザに実行フ ァ ィ ルが配付されその実行フ ァ ィ ル ( E X E フ ァ イ ル) によ り所定サービスが提供さ れている場合、 その実行ファ イ ルに存在するバグを 修正したり、 その实行フ ァ イ ルによって実現される 機能の部分的な拡張を目的と して、 図 1 Aに示され るよう に、 ユーザに配付されている実行フ ァ イ ルに おいて、 新 E X Eフ ァ イ ルから旧 E X E フ ァ イ ルへ の更新がなされる場合がある。
一方、 最近では、 コ ン ピュータ システムの機能の 発達により、 実行フ ァ イ ルのプログラムサ イ ズが数 百キロバイ トから数メ ガバイ ト或いは数十メ ガバイ トに達しつつある。 従って、 上述のような実行ファ ィ ルの更新時に、 新 E X Eフ ァ イ ルがそのまま配付 されるのは、 配付媒体に多 く のデータ容量が要求さ れる こ とになり、 不経済である。
例えば、 配付媒体が図 2 に示されるようなネ ッ ト ワークである場合、 セ ンタ T Cのホス ト コ ンピュー タ H O S Tは、 画線を介して、 事務所 T C内のホス ト コ ンピュータ H O S Tに対して新 E X Eフ ァ ィ ル を配信する こ とになる力く、 新 E X Eファ イ ルが上述 のような大きなサイ ズを有する場合、 回線使用料が 高 く ついてしまい、 不経済である。
このよう な問題に対し、 従来、 新 E X Eフ ァ イ ル そのものが配付されるのではな く 、 図 1 Bに示され るよう に、 旧 E X Eフ ァ イ ルと新 E X Eフ ァ イ ルと の間で比較処理がなされ、 新 E X Eファ ィ ルの旧 E X Eフ ァ イ ルに対する差分が抽出されて更新フア イ ルとされ、 その更新ファ イ ルがユーザに配付される という形態が採られるよ う になってきている。 この 場合、 ユーザ側では、 図 1 Bに示されるよう に、 所 定の更新プログラムによる更新処理によって、 旧 E X Eファ ィ ルと更新フ ァ ィ ルと力、ら新 E X Eファ ィ ルが生成される。 新 E X Eファ イ ルと旧 E X Eフ ァ ィ ルとでは、 プログラムコー ドが同じ部分が存在す る場合が多いために、 それらの差分である更新フ 7 ィ ルのサイ ズは、 新 E X Eファ イ ルのサイ ズに比較 して小さい場合が多い。 従って、 更新フ ァ イ ルがュ —ザに配付される こ とにより、 配付媒体に要求され るデータ容量を削減する こ とができ る。
図 2の例においては、 セ ンタ T Cのホス ト コ ンビ ユータ H O S Tは、 画線を介して、 事務所 T C内の ホス ト コ ンピュータ H O S Tに対して更新フ ァ イ ル を配信する。 事務所 T C内のホス ト コ ンピュータ H 0 S Tでは、 セ ンタ間通信部が、 上記更新フ ア イ ル を受信した後、 更新プログラムを起動する こ とによ り、 旧 E X Eフ ァ イ ルと更新ファ イ ルとから新 E X Eファ イ ルを生成する。 この新 E X Eファ イ ルは、 フ ァ ィ ル操作部を介して正ディ スク及び副ディ スク に保存される。 そ して、 事務所 T Cのホス ト コ ンピ ユータ H 0 S T内の配信処理管理部が、 新 E X Eフ ア イ ルを、 事務所内通信部から L A N (ローカルェ リ アネ ッ ト ワーク ) を介して、 ク ライ ア ン トサーバ C S Vに配信する。 ク ラ イ ア ン トサーバ C S Vでは 事務所内通信部が上記新 E X Eファ イ ルを受信する , この受信された新 E X Eファ ィ ルは、 フ ァ イ ル操作 部を介して正ディ スク及び副ディ スクに保存される 発 明 の 開 示
しかし、 上述のよう な従来の差分抽出方式では、 旧 E X Eファ イ ルの先頭及び新 E X Eフ ァ イ ルの先 頭から各フ ァ イ ルの未尾までのファ イ ル全体にわた つて、 バイ ト単位でデータが一致するか否かが判定 され、 一致しないデータが差分のデータ と して抽出 されている。 このために、 例えば新 E X Eフ ァ イ ル の途中で 1 バイ トでもデータの削除又は挿入が行わ れている と、 そのバイ ト以降では全て旧 E X Eファ ィ ルのデータ と新 E X Eファ ィ ルのデータ とが一致 しな く なり、 その結果、 更新ファ イ ルのサイ ズが大 き く なってしま う という問題点を有している。 従つ て、 図 2 の例のよう にネ ッ ト ワークを介して更新フ ア イ ルが配信される場合などで、 新 E X Eファ イ ル がそのまま配信される場合に比較してそれほど回線 の使用効率が向上しないという結果になってしま う < 本発明は、 更新ファ イ ルのサイ ズを削減する こ と を目的とする。
本発明は、 まず、 実行フ ア イ ル差分抽出装置と し て、 以下の構成を有する。
領域分割部は、 旧実行フ ァ ィ ル及び新実行フ ァ ィ ルのそれぞれを、 所定の論理単位毎に複数の領域に 分割する。 この論理単位は、 例えば、 旧実行フア イ ル又は新実行ファ ィ ルのデータ属性の単位であるセ グメ ン ト、 リ ソース、 ヘッダ、 テーブル、 セク ショ ンディ レク ト リ 、 セク ショ ンなどである。
次に、 領域対応付け部は、 領域分割部によって分 割された旧実行ファ ィ ルの複数の領域と新実行フ ァ 1 ィ ルの複数の領域との間で、 互いに対応する領域同 士を対応付けする。
また、 差分抽出処理部は、 領域対応付け部によつ て対応付けされた旧実行フ ァ ィ ルの領域と新実行フ
5 ア イ ルの領域との間で、 旧実行フ ァ イ ルの領域のデ ータに対する新実行ファ ィ ルの領域のデータの差分 情報を抽出する。 この差分情報は、 例えば、 新実行 ファ ィ ルにおいて旧実行ファ ィ ルに対してデータの 挿入、 削除、 又は置換が行われる旨の属性情報、 そ
10 の対象となるデータの長さ情報、 及びその対象とな るデータ とから構成される。
そして、 更新フ ァ イ ル生成部は、 差分抽出処理部 において抽出された差分情報を更新フ ァ イ ルに格納 すると共に、 領域対応付け部において対応付けが行
15 われなかった旧実行フ ァ イ ルの領域又は新実行フ ァ ィ ルの領域に対応する差分情報を抽出しそれを更新 フ ァ イ ルに格納する。
また、 本発明は、 実行フア イ ル更新装置として、 上述の更新フ ァ イ ル生成部により生成された更新フ
20 ア イ ルから前記差分情報を順次取り出し、 その差分 情報と旧実行フ ァ イ ルとから、 新実行フ ァ イ ルを生 成するフ ァ イ ル更新部を有するよう に構成される。
本発明においては、 差分抽出処理が実行される場 合、 例えば システムにおける実行フ ァ イ ルにつ
25 いては、 DOS E XE 形式の領域、 EXEヘッダ領域、
AccordinerPCT Article 21(6) this part should be omitted, (^f )
Figure imgf000007_0001
各テーブル部領域、 セグメ ン トデータ領域、 及びリ ソース領域のそれぞれの論理単位毎に、 対応付けが 行われた上で、 差分抽出処理が実行される。 また、 例えば ^ システムにおける実行フ ァ イ ルに ついては、 後述するように、 EXEヘッダ領域.
* EXE へッダ領域、 セ ク シ ョ ンディ レク ト リ領域、 及びセク ショ ン領域のそれぞれの論理単位 毎に、 対応付けが行われた上で差分抽出処理が実行 される。
このため、 旧実行フ ァ イ ルと新実行フ ァ イ ルとの 間で、 各領域のデータが一致する確率が高く なり、 その結果、 生成される更新フ ァ イ ルのサイ ズが大幅 に削減される。 図 面 の 簡 単 な 説 明
図 1 A、 図 I Bは、 フ ァ イ ル更新の説明図、 図 2 は、 フ ァ イ ル更新環境の説明図、
図 3 は、 本発明の好適実施例の構成図、
図 4 は、 本発明の好適実施例におけるフ ァ イ ル形 式を示した図、
図 5 は、 ヘッダ解折部の動作フ ローチャー ト (そ の 1 ) 、
図 6 は、 ヘッダ解析部の動作フ ローチャー ト (そ の 2 ) 、
図 7 は、 DOS EXE ヘッダと ^ EXEへッダのデー
According PCT Article 21(6) this part should be omitted.
Figure imgf000008_0001
タ構造を示した図、
図 8 は、 EXEヘッダ情報を示した図、 図 9 は、 セグメ ン ト テーブル部のデータ構造を示 した図、
図 1 0 は、 常駐ノ非常駐ネームテーブル部のデ一 タ構造を示した図、
図 1 1 は、 イ ンポー トネームテーブル部のデータ 構造を示した図、
図 1 2 は、 モ ジュール参照テーブル部とイ ンポ一0 トネ一ムテーブル部の関係を示した図、
図 1 3は、 リ ソーステーブル部のデータ構造を示 した図、
図 1 4 は、 セグメ ン トデータ対応付け部の動作フ
D一チ ヤ一卜 -5 図 1 5 A、 図 1 5 Bは、 旧 E X Eフ ァ イ ル及び新 E X Eファ ィ ルのセグメ ン トの配列を示した図、 図 1 6 A、 図 1 6 Bは、 セグメ ン ト の対応関係の 説明図、
図 1 7 は、 リ ロケ一シ ョ ン情報の説明図、
0 図 1 8 は、 リ ソース対応付け部の動作フ ローチヤ 一ト、
図 1 9 A、 図 1 9 Bは、 旧 E X Eフ ァ イ ルと新 E X Eフ ァ ィ ルの リ ソースの配列を示した図、
図 2 0 は、 リ ソースの対応閔係の説明図、
5 図 2 1 は、 差分抽出処理の動作フ,ローチャー ト、
According PCT Article 21(6) this part should be omitted.
£§ge 2
line z 図 2 2 は、 比較処理の動作フローチャー ト、 図 2 3 は、 比較処理の説明図、
図 2 4 A、 図 2 4 B は、 新 E X Eフ ァ イ ルに挿入 が行われた場合の差分抽出処理の説明図、
図 2 5 A、 図 2 5 Bは、 新 E X Eファ イ ルで削除 が行われた場合の差分抽出処理の説明図、
図 2 6 A、 図 2 6 Bは、 新 E X Eフ ァ イ ルで置換 が行われた場合の差分抽出処理の説明図、
図 2 7 A、 図 2 7 B は、 新 E X Eフ ァ イ ルで挿入. 削除、 及び置換が同時に行われた場合の差分抽出処 理の説明図、
図 2 8 A、 図 2 8 Bは、 新 E X Eファ イ ルで特殊 な挿入及び削除が同時に行われた場合の差分抽出処 理の説明図、
図 2 9 A、 図 2 9 Bは、 更新フ ァ イ ルのデータ構 造を示した図、
図 3 0 は、 本発明の他の好適実施例におけるファ ィ ル形式を示した図である。 発明を実施するための最良の形態
以下、 図面を参照しながら本発明を実施するため の最良の形態につき詳細に説明する。
図 3 は、 本発明の好適実施例の構成図である。 まず、 差分抽出処理部 3 0 4 は、 後述するへッダ 解折部 3 0 1 、 セグメ ン トデータ対応付け部 3 0 2 又はリ ソース対応付け部 3 0 3から指定された領域 の先頭から末尾まで、 新 E X E フ ァ イ ル 3 0 6 の旧 E X E フ ァ イ ル 3 0 5 に対するバイ ト単位の差分を 抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブす る。
へッダ解折部 3 0 1 は、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれについて、 そ の DOS EXE ヘッダの領域及び EXEヘッダの領域 を抽出し、 それらの領域について差分抽出処理部 3 0 4 に対して差分抽出処理を指示する。 また、 へッ ダ解析部 3 0 1 は、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれについて、 上述の抽 出された DOS EXE ヘッダ及び EXEヘッダの内容 を解析する ことにより後述する各テーブル部の領域 を抽出し、 抽出された各テーブル部領域についても 差分抽出処理部 3 0 4 に対して差分抽出処理を指示 する。 更に、 ヘ ンダ解折部 3 0 1 は、 旧 E X E フ ァ ィ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれに ついて、 抽出されたセグメ ン ト テーブル部から後述 するセグメ ン ト情報 3 0 8 を抽出して、 それを後述 するセグメ ン トデ一タ対応付け部 3 0 2及びリ ソー ス対応付け部 3 0 3 に設定し、 また、 抽出されたリ ソーステーブル部から後述する リ ソース情報 3 0 9 を抽出して、 それを後述する リ ソース対応付け部 3 0 3 に設定する。
According PCT Article 21(6) this part should be omitted. t)
Figure imgf000011_0001
セグメ ン トデータ対応付け部 3 0 2 は、 ヘッダ解 折部 3 0 1 からのセグメ ン ト情報 3 0 8 に基づいて、 旧 E X Eフア イ ノレ 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 との間のセグメ ン トデータの対応付けを行い、 対応 付けされた各セグメ ン トデータのペアの領域につい て差分抽出処理部 3 0 に対して差分抽出処理を指 示する。 旧 E X Eフ ァ イ ル 3 0 5 に存在するセグメ ン トデータに対応する ものが新 E X Eフ ァ ィ ル 3 0 6 に存在しない場合は、 そのセ グメ ン トデータを削 除すべき旨の差分情報を更新フ ァ イ ル 3 0 7 にセ一 ブする。 逆に、 新 E X Eフ ァ イ ル 3 0 6 に存在する セ グメ ン トデータ に対応する ものが旧 E X Eフ ア イ ル 3 0 5 に存在しない場合は、 そのセグメ ン トデー タを揷入すべき旨の差分情報を更新フ ァ イ ル 3 0 7 にセーブする。
リ ソース対応付け部 3 0 3 は、 へ 'ンダ解析部 3 0 1 からのセグメ ン ト情報 3 0 8及びリ ソース情報 3 0 9 に基づいて、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ ィ ル 3 0 6 との間のリ ソースの対応付けを行 い、 対応付けされた各リ ソースのペアの領域につい て差分抽出処理部 3 0 4 に対して差分抽出処理を指 示する。 旧 E X Eフ ァ イ ル 3 0 5 に存在する リ ソー スに対応する ものが新 E X Eフ ァ イ ル 3 0 6 に存在 しない場合は、 その リ ソースを削除すべき旨の差分 情報を更新フ ァ イ ル 3 0 7 にセーブする。 逆に、 新 E X E フ ァ イ ル 3 0 6 に存在する リ ソースに対応す るものが旧 E X Eフ ァ イ ル 3 0 5 に存在しない場合 は、 その リ ソースを挿入すべき旨の差分情報を更新 フ ァ イ ル 3 0 7 にセーブする。
上述の構成を有する好適実施例の動作について、 以下に順次説明する。
まず、 図 4 は、 旧 E X Eフ ァ イ ル 3 0 5及び新£ X E フ ァ イ ル 3 0 6 の共通のフ ァ イ ル形式を示した 図である。
0 本好適実施例で対象とされるフ ァ イ ルは、 コ ンビ ュ一タ のためのマルチタ スクオペレーテ ィ ングシス テムの 1 つである 米 システムのもとで実行可能な E X E フ ァ イ ルである。 なお、 本発明は、 このよう なフア イ ル限定されるものではな く 、 後述するよう5 に、 例えば 朱 オペレーテ ィ ングシステムの も とで実行可能な E X E フ ァ イ ルなども、 本発明の 適用範囲である。
図 4 に示される構成を有する E X Eファ ィ ルは、 コ ンピュ一タのための従来からあるシ ングルタスク0 オペレーテ ィ ングシステムの 1 つである シス テムのもとでも実行可能なように構築されている。 そのため、 この E X E フ ァ イ ルは、 図 4 に示される よう に、 DOS EXE 形式の領域と EXE形式の領域 とから構成されている。
5 始めに、 フ ァ イ ルの前半部分には、 DOS EXE 形式
According PCT Article 21(6) this part should be omitted. (
Figure imgf000013_0001
の領域が存在する。 この DOS EXE 形式の領域は、 ^" 用プログラムを実行するための各種情報と後述 する 米 EXEヘッダへのポイ ンタ情報等が格納され る DOS EXE ヘッダ領域と、 米 システムのもとで 動作するプロ グラ ムの本体が格納される DOS ロー ド モ ジュール領域とから構成される。
フ ァ イ ルの後半部分には、 EXE形式の領域が 存在する。 来 EXE形式の領域は、 用プログラ ムを実行するための各種情報と後述する各種テープ ル部へのポイ ンタ情報等が格納される ^ EXEへッ ダ領域、 後述する各種テーブル部領域、 システ ムのも とで動作するプログラムの本体が格納される セ グメ ン トデータ領域、 及び ^" プログラ ムで利用 される リ ソースと呼ばれるデータが格納される リ ソ —ス領域とから構成される。
本好適実施例においては、 差分抽出処理が実行さ れる場合、 DOS EXE 形式の領域、 朱 EXEヘッダ領 域、 及び各テーブル部領域のそれぞれの領域毎に、 旧 E X E フ ア イ ノレ 3 0 5 と新 E X E フ ァ イ ル 3 0 6 との差分抽出処理が実行され、 その後、 旧 E X E フ ア イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 との間のセ グメ ン トデータ及びリ ソースの対応付けが行われた 上で、 その対応付けされた各セグメ ン トデータ及び リ ソースのペアの領域毎に差分抽出処理が実行され る こ とが、 大きな特徴である。 このように、 所定の
According PCT Article 21(6) this part should be omitted. (来ノ
page /ん _
line /一^ 7, /0 , 〃, / ノ 7 論理単位毎に差分抽出処理が実行される こ とにより 従来技術に比較して、 生成される更新ファ イ ル 3 0 7 のサイ ズを大幅に削減する こ とが可能となる。 次に、 へッダ解析部 3 0 1 、 セグメ ン トデータ対 応付け部 3 0 2、 リ ソース対応付け部 3 0 3、 及び 差分抽出処理部 3 0 4 の各部の動作について、 順次 説明する。
本好適実施例では、 まず、 ヘッダ解折部 3 0 1 が 起動される。 ヘッダ解圻部 3 0 1 で実行される処理 の動作フローチャー ト は、 図 5及び図 6 に示される, このヘッダ解析部 3 0 1 の動作は、 特には図示しな いコ ンピュータ システムにおいて、 C P U (中央処 理装置) 力、'、 ディ スク装置などに記憶された旧 E X Eファ イ ル 3 0 5及び新 E X Eファ イ ル 3 0 6 に対 して、 メ モ リ に記憶された制御プログラムを実行す る動作の一部と して実現される。
まず、 ステ ップ S 5 0 1 で、 旧 E X Eファ イ ル 3 0 5及び新 E X Eファ イ ル 3 0 6 のそれぞれについ て、 DOS EXE ヘッダ内のファ イ ルオフセ ッ ト 0 に格 納されている 1 ワー ドのコー ドが " M Z " であるか 否かが判定される (図 7 参照) 。 そのコー ドが " M Z " でない場合、 そのフ ア イ ノレは E X E フ ァ イ ルで はないため、 ステ ップ S 5 2 3でエラ一表示が行わ れ差分抽出処理を終了する。
上述のコー ドが " M Z " である場合、 ステ ップ S 5 0 2で、 旧 E X E フ ァ イ ル 3 0 5及び新 E X E フ ア イル 3 0 6 のそれぞれについて、 DOS EXE ヘッダ 内のフ ァ イ ルオフセ ッ ト 1 8 h ( " h " は、 それ力 付加された 1 ワー ドの値が 1 6進数である こ とを示 す。 ) に格納されている値が 4 0 hであるか否かが 判定される (図 7参照) 。 その値が 4 0 hでない場 合は、 そのフ ァ イ ルは う |ζ" EXE形式のフ ァ イ ルでは ないため、 ステ ップ S 5 2 3でエラ一表示が行われ 差分抽出処理を終了する。
上述の値が 4 0 hである場合は、 ステ ップ S 5 0
3で、 旧 E X Eフ ァ イ ル 3 0 5及び新 £ £ファ ィ ル 3 0 6 のそれぞれについて、 DOS EXE へッダ内の ファ イ ルオフセ ッ ト 3 C hに格納されている値で示 される 1 ワー ドのオフセ ッ トア ドレスが EXEの 領域のア ドレスであるか否かが判定される (図 7参 照) 。 そのア ドレス力く 音 EXEの領域のァ ド レスで ない場合は、 そのファ イ ルは f EXE形式のフア イ ルではないため、 ステ ップ S 5 2 3でエラー表示力く 行われ差分抽出処理を終了する。
上述したア ドレスが EXEの領域のア ドレスで ある場合には、 更にステ ップ S 5 0 4 で、 旧 E X E フ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6 のそれ ぞれについて、 素 EXEヘッダ内の ^ ΕΧΈ相対ォ フセ ッ ト 3 6 hに格納されている 1 ワー ドの値が 1 であるか否かが判定される (図 7参照) 。 こ こで、
According PCT Article 21(6) this part should be omitted. (米 ) line 7, /< >/έ>,/7. Z '一: 一 棄 EXE相対オフセ ッ ト とは、 f . EXE形式の領域 の先頭ア ドレスからの相対オフセ ッ トをいう。 その 値が 1 でない場合には、 そのファ イ ルは EXE形 式のファ イ ルではないため、 ステ ップ S 5 2 3でェ ラ一表示が行われ差分抽出処理を終了する。
上述した値が 1 である場合には、 ステ ップ S 5 0 5 で、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ ィ ル 3 0 6 のそれぞれにっき、 DOS EXE 形式のデータ領 域力;、 フ ァ イ ルオフセ ッ ト 0から、 DOS EXE へ ッダ 内のファ イ ルオフセ ッ ト 3 C hの内容と して示され る 素 EXEの領域のァ ドレスの手前のァ ドレスまで の領域として抽出される (図 4参照) 。
次に、 ヘッダ解析部 3 0 1 は、 ステップ S 5 0 6 で、 差分抽出処理部 3 0 4 をコールすると共に、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 の それぞれにっき抽出された DOS EXE 形式のデータ領 域を差分抽出処理部 3 0 4 に渡す。 この結果、 差分 抽出処理部 3 0 4 は、 後述する差分抽出処理により、 へッダ解圻部 3 0 1 から渡された DOS EXE 形式のデ —タ領域の先頭から末尾まで、 新 E X E フ ァ イ ル 3 0 6 の旧 E X E フ ァ イ ル 3 0 5 に対するバイ ト単位 の差分を抽出し、 その差分を更新フ ァ イ ル 3 0 7 に セーブする。
次に、 ステ ッ プ S 5 0 7 で、 旧 E X E フ ァ イ ル 3 0 5及び新 E X E フ ァ イ ル 3 0 6 における図 7 に示
According PCT Article 21(6) this part should be omitted. )
Page
line / 2 リ される "^ EXEヘッダの内容のう ち、 參印が付与さ れたデータが抽出され、 それぞれ図 8 に示される各 変数に格納される。 こ の変数は、 特には図示しない メ モ リ に保持される。 これらの変数については後述 する。
続いて、 ステ ップ S 5 0 8で、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれにっき、
EXEヘッダ領域が、 前述した DOS EXE ヘッダ内 のフ ァ ィ ルオフセ ッ ト 3 C h の内容として示される -^r EXEの領域のア ド レスから、 変数 segtbl off
(図 8参照) で示されるセグメ ン トテーブル部の先 頭ァ ド レスの手前のァ ド レスまでの領域と して抽出 される (図 4参照) 。
次に、 ヘッダ解折部 3 0 1 は、 ステ ッ プ S 5 0 9 で、 差分抽出処理部 3 0 4をコールすると共に、 旧 E X E フ ア イ ノレ 3 0 5 と新 E X E フ ア イ ノレ 3 0 6 の それぞれについて抽出された 棄 EXEヘッダ領域を 差分抽出処理部 3 0 4 に渡す。 この結果、 差分抽出 処理部 3 0 4 は、 後述する差分抽出処理により、 へ ッダ解析部 3 0 1 から渡された f^ EXEヘッダ領域 の先頭から末尾まで、 新 E X E フ ァ イ ル 3 0 6 の旧 E X E フ ァ イ ル 3 0 5 に対するバイ ト単位の差分を 抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブす る。
続いて、 ステ ッ プ S 5 1 0 で、 旧 E X E フ ァ イ ル
According PCT Article 21(6) this part should be omitted. ) page _ _
line ん ノ / , Z7, 0 3 0 5 と新 E X Eフ ァ イ ル 3 0 6のそれぞれについ て、 変数 segtbl off及び segtbl cnt (図 8参照) に 基づいて抽出されるセグメ ン トテーブル部 (図 4参 照) が解折される。 セ グメ ン ト テーブル部のデータ 構造は、 図 9に示される。 セグメ ン トテーブル部は. セグメ ン トデータの先頭ァ ド レスを示す 1 ヮ一 ドの フ ァ イ ルオ フセ ッ トデータ、 セグメ ン ト データ の実 サイ ズを示す 1 ヮ一 ドの実セグメ ン トデータサイ ズ データ、 及びセ グメ ン トデータのタイ プ及び属性を 示す 1 ワー ドのセグメ ン トタ イ プ/属性データから なるデータセ ッ トを、 後述するセグメ ン トデータの それぞれに対応して有している。 ステ ップ S 5 1 0 では、 旧 E X Eフ ァ イ ル 3 0 5 と新£ £フ ァ ィ ル 3 0 6のそれぞれについて、 このデータ構造が、 例 えばデータ構造体の形式で、 セグメ ン ト情報 3 0 8 (図 3参照) と して、 後述するセグメ ン トデータ対 応付け部 3 0 2及びリ ソース対応付け部 3 0 3から ア ク セス可能な特には図示しないメ モ リ に設定され る。
次に、 ステ ッ プ S 5 1 1で、 旧 E X Eフ ァ イ ル 3
0 5 と新 E X Eフ ァ イ ル 3 0 6のそれぞれについて 上述のセグメ ン ト テーブル部領域 (図 4参照) が抽 出される。 この領域は、 変数 segtbl οίίで示される セグメ ン トテーブル部の先頭のオフセ ッ トァ ドレス から、 変数 entrytbl οίίで示されるエキスポ一 トェ ン ト リ テーブル部の先頭のオフセ ッ トア ド レスの手 前のア ド レスまでの領域として抽出される (図 8、 図 4参照) 。
続いて、 ヘッダ解圻部 3 0 1 は、 ステ ップ S 5 1 2で、 差分抽出処理部 3 0 4 をコールすると共に、 旧 E X Eフ ア イ ノレ 3 0 5 と新 E X Eフア イ ノレ 3 0 6 のそれぞれについて抽出されたセグメ ン ト テ一ブル 部領域を差分抽出処理部 3 0 4 に渡す。 この結果、 差分抽出処理部 3 0 4 は、 後述する差分抽出処理に より、 へッダ解折部 3 0 1 から渡されたセグメ ン ト テーブル部領域の先頭から未尾まで、 新 E X Eフ ァ ィ ル 3 0 6 の旧 E X Eフア イ ノレ 3 0 5 に対するバイ ト単位の差分を抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブする。
次に、 ステ ップ S 5 1 3 で、 旧 E X Eフ ア イ ノレ 3
0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれにっき、 エキスポ一 ト ェ ン ト リ テ一ブル部領域 (図 4参照) が抽出される。 この領域は、 変数 entrytbl offで示 されるエキスポ一 ト ェ ン ト リ テーブル部の先頭のォ フセ ッ ト ア ド レス力、ら、 変数 resnamtbl off で示さ れる常駐ネームテ一ブル部の先頭のオフセ ッ トア ド レスの手前のァ ド レスまでの領域と して抽出される (図 8、 図 4参照) 。
エキスボー トエ ン ト リ テーブル部には、 それが舍 まれる ^ EXE形式のプログラムが、 他の 棄 プロ
AccordinffPCT Article 21(6) this part should be omittea.
Figure imgf000020_0001
グラムから参照され得るプログラム、 例えば D L L (ダイ ナ ミ ッ ク リ ンク ラ イ ブラ リ ) プログラムであ る場合に、 他の 来 プログラムがこのテーブル部が 舍まれるプログラムの一部として提供される関数を 参照できるように、 その関数へのファ イ ル内のセグ メ ン ト番号とオフセ ッ トが格納される。
続いて、 ヘッダ解圻部 3 0 1 は、 ステ ップ S 5 1 4で、 差分抽出処理部 3 0 4をコールする と共に、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれについて抽出されたエキスポ一 トェン ト リ テーブル部領域を差分抽出処理部 3 0 4に渡す。 この結果、 差分抽出処理部 3 0 4 は、 後述する差分 抽出処理により、 ヘッダ解折部 3 0 1から渡された セグメ ン トテーブル部領域の先頭から末尾まで、 新 E X Eフ ア イ ノレ 3 0 6の旧 E X Eフ ア イ ノレ 3 0 5 に 対するバイ ト単位の差分を抽出し、 その差分を更新 ファ イル 3 0 7 にセーブする。
次に、 ステ ップ S 5 1 5で、 旧 E X Eフア イ ノレ 3 0 5 と新 E X Eフア イ ノレ 3 0 6のそれぞれについて、 常駐ネームテーブル部及び非常駐ネームテーブル部 (図 4参照) の領域が、 1 つの領域と して抽出され る。 この領域は、 変数 resnamtbloffで示される常駐 ネームテ一ブル部の先頭のオフセ ッ トァ ドレスから、 変数 niodrei offで示されるモジユール参照テーブル 部の先頭のオフセ ッ ト-ア ドレスの手前のア ドレスま
According PCT Article 21(6) this part should be omitted. -^)
P ge
line での領域と して抽出される (図 8、 図 4 参照) 。 常駐ネームテーブル部及び非常駐ネームテーブル 部は、 図 1 0 に示される共通の構成を有し、 常駐ネ ームテーブル部には、 プログラム実行時にメ モ リ に 常駐するモジユ ール名とそのバイ ト数及びエ ン ト リ されるテーブルのイ ンデク スが格納され、 非常駐ネ ームテーブル部には、 プログラム実行時に必要に応 じてそのプログラム自体が呼出すモジュール名とそ のバイ ト数及びエ ン ト リ されるテーブル (モジュ一 ル) のイ ンデクスが格納される。
続いて、 へッダ解折部 3 0 1 は、 ステ ップ S 5 1 6 で、 差分抽出処理部 3 0 4 をコールする と共に、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ア イ ノレ 3 0 6 のそれぞれについて抽出された常駐/非常駐ネーム テーブル部領域を差分抽出処理部 3 0 4 に渡す。 こ の結果、 差分抽出処理部 3 0 4 は、 後述する差分抽 出処理によって、 ヘッダ解折部 3 0 1 から渡された 常駐 Z非常駐ネームテーブル部領域の先頭から末尾 まで、 新 E X Eファ イ ル 3 0 6 の旧 £ £フ ァ ィ ル 3 0 5 に対するバイ ト単位の差分を抽出し、 その差 分を更新ファ イ ル 3 0 7 にセーブする。
次に、 ステ ップ S 5 1 7 において、 旧 E X Eファ ィ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれに ついて、 モジュール参照テーブル部及びィ ンポー ト ネームテーブル部 (図 4 参照) の領域が、 1 つの領 域として抽出される。 こ の領域は、 変数 modrei of f で示されるモジユール参照テ一ブル部の先頭のオフ セ ッ トァ ドレスから、 変数 resrctb l of fで示される リ ソーステーブル部の先頭のオフセ ッ ト ァ ド レスの 手前のア ドレスまでの領域と して抽出される (図 8 . 図 4参照) 。
イ ンポ一 トネ一ムテーブル部には、 図 1 1 に示さ れるよう に、 それが含まれるプログラムが参照する 他の D L Lプログラムのモジュール名とそのバイ ト 長が格納され、 モ ジュール参照テーブル部には、 図 1 2 に示されるように、 イ ンポ一 トネームテ一ブル 部の各要素へのオフセ ッ ト値がヮー ド配列と して格 納される。
続いて、 ヘッダ解析部 3 0 1 は.、 ステ ップ S 5 1 8 で、 差分抽出処理部 3 0 4 をコールする と共に、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれについて抽出されたモジュール参照/ィ ンボー トネームテーブル部領域を差分抽出処理部 3 0 に渡す。 こ の結果、 差分抽出処理部 3 0 4 は、 後述する差分抽出処理によって、 ヘッダ解析部 3 0 1 から渡されたモジュール参照/ィ ンポー ト ネーム テーブル部領域の先頭から末尾まで、 新 E X Eソァ ィ ル 3 0 6 の旧 E X E フ ァ イ ル 3 0 5 に対するバイ ト単位の差分を抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブする。 次に、 ステ ッ プ S 5 1 9で、 旧 E X Eファ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれについて、 変数 resrctbl of ί及び resrctbl cnt (図 8参照) に 基づいて抽出される リ ソーステーブル部 (図 4参照) が解析される。 リ ソーステーブル部のデータ構造は、 図 1 3に示される。 リ ソーステ一ブル部は、 リ ソー スのタ イ プの識別子を示す 1 ヮ一 ドのリ ソースタ イ プ I Dデータ と、 リ ソースネームの識別子を示す 1 ヮー ドのリ ソースネーム I Dデータ とからなるデー タセ ッ トを、 後述する リ ソースのそれぞれに対応し て有している。 ステ ップ S 5 1 9では、 旧 E X Eフ ア イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6のそれぞれ について、 このデータ構造が、 リ ソース情報 3 0 9 (図 3参照) と して、 後述する リ ソース対応付け部 3 0 3からアク セス可能な特には図示しないメ モ リ に設定される。
次に、 ステ ップ S 5 2 0で、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6のそれぞれについて、 上述の リ ソーステーブル部領域 (図 4参照) が抽出 される。 この領域は、 変数 resrctbl offで示される リ ソーステーブル部の先頭のオフセ ッ トァ ド レスか ら、 変数 resrctbl cntで示される リ ソースェ ン ト リ 数分だけ進んだァ ド レスまでの領域と して抽出され る (図 8、 図 4参照) 。
いて、 へ ダ解折部 3 0 1 は、 ステ ッ プ S 5 2 1 で、 差分抽出処理部 3 0 4 をコ ールする と共に、 旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のそれぞれにっき抽出されたリ ソーステーブル部領 域を差分抽出処理部 3 0 4 に渡す。 この結果、 差分
5 抽出処理部 3 0 4 は、 後述する差分抽出処理により、 ヘ ッ ダ解折部 3 0 1から渡されたリ ソーステーブル 部領域の先頭から末尾まで、 新 E X E フ ァ イ ル 3 0 6 の旧 E X Eフ ァ イ ル 3 0 5 に対するバイ ト単位の 差分を抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセ
10 ーブする。
以上のようにして、 ヘッダ解析部 3 0 1 によって、 DOS EXE 形式の領域、 EXEヘッダ領域、 及び各 テーブル部領域のそれぞれの領域毎に、 旧 E X Eフ ア イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 との差分抽
15 出処理が実行される。
そ して、 ヘッダ解析部 3 0 1 は、 ステップ S 5 2 2 で、 図 3 のセグメ ン トデータ対応付け部 3 0 2 を 起動して、 処理を終了する。
セグメ ン トデータ対応付け部 3 0 2で実行される
20 処理の動作フローチャー ト は図 1 4 に示される。 こ のセグメ ン トデータ対応付け部 3 0 2 の動作は、 へ ッダ解折部 3 0 1 の場合と同様、 特には図示しない コ ン ピュータ システムにおいて、 C P U力く、 デイ ス ク装置などに記憶された旧 E X E フ ァ イ ル 3 0 5及 25 び新 E X E フ ァ イ ル 3 0 6 に対して、 メ モ リ に記憶 According PCT Article 21(6) this part should be omitted. ^ page
line された制御プログラムを実行する動作の一部と して 実現される。
こ こで、 旧 E X E フ ァ イ ル 3 0 5 と新 £ £ フ ァ ィ ル 3 0 6 とで対応するセ グメ ン トデータがある場 合、 変更されていないセグメ ン トについてはそれら の内容が一致し、 変更されたセ グメ ン トについての み差分が生ずる。 そ こで、 セグメ ン トデータ対応付 け部 3 0 2 では、 旧 E X E フ ァ イ ル 3 0 5 と新 E X Eフア イ ノレ 3 0 6 との間で、 セ グメ ン トデータの属 性やその主要部のデータを比較する こ とにより その 対応付けを行い、 その対応付けしたセグメ ン トデー タ領域毎に差分抽出処理部 3 0 4 に対して差分抽出 処理を指示する。
まず、 ステ ッ プ S 1 4 0 1 で、 前述した図 6 のス テ ツプ S 5 1 0 でヘッダ解圻部 3 0 1 から設定され たセグメ ン ト情報 3 0 8 に基づいて、 セ グメ ン ト の 対応付けが行われる。
こ の処理では、 まず、 旧 E X E フ ァ イ ル 3 0 5 の セグメ ン ト情報 3 0 8 (図 9参照) に基づいて、 旧 E X E フ ァ イ ル 3 0 5 のセグメ ン トがー列に並べら れる。 なお、 セグメ ン ト は、 リ ンカによってフア イ ルオフセ ッ トが増大する方向に並べられている。 並 ベられた旧 E X Eフア イ ノレ 3 0 5 のセグメ ン トの例 を図 1 5 Aに示す。
次に、 新 E X E フ プ ィ ル 3 0 6 のセ グメ ン ト情報 3 0 8 (図 9参照) に基づいて、 新 E X Eフ ァ イ ル 3 0 6 のセグメ ン トが一列に並べられる。 並べられ た新 E X Eフ ァ イ ル 3 0 6 のセグメ ン トの例を図 1 5 Bに示す。
図 1 5 A、 図 1 5 Bの例では、 新 E X Eフ ァ イ ル 3 0 6 においては、 旧 E X Eフ ァ イ ル 3 0 5 に対し て、 セグメ ン ト番号 3 のセグメ ン トが追加されてい る。 従って、 この状態が検出される必要がある e 今、 本好適実施例では、 旧 E X Eファ イ ル 3 0 5 から新 E X Eファ イ ル 3 0 6 への更新は、 セグメ ン トを削除、 置換、 又は追加する こ とにより行われる とする。 従って、 旧 E X Eファ.ィ ル 3 0 5 と新 £ Eファ イ ル 3 0 6 のセグメ ン トの対応閬係が図 1 6 Aに示されるよう なものになるこ とはあり得ず、 そ の対応関係は例えば図 1 6 Bに示される如く となる, この例では、 旧 E X Eフ ァ イ ル 3 0 5 のセグメ ン ト 番号 4 のセグメ ン トが削除され、 新 E X Eファ イ ル 3 0 6 のセグメ ン ト番号 2 のセグメ ン トが追加され その他のセグメ ン トのペアについては、 変更がない か、 又は置換がなされている。
そこで、 一列に並べられた旧 E X Eフ ァ イ ル 3 0 5 のセグメ ン ト及び新 E X Eフ ァ イ ル 3 0 6 のセグ メ ン トについて、 以下の対応付け処理がなされる。
処理 1 : 旧 E X Eファ イ ル 3 0 5 と新 £ £ファ ィ ル 3 0 6 のセグメ ン ト数が比較される。 処理 2 : セグメ ン ト数が同じか、 新 E X E フ ア イ ル 3 0 6 のセグメ ン ト数の方が多い場合は、 旧 E X E フ ァ ィ ル 3 0 5 で定義されているセグメ ン トをキ —と して、 新 E X E フ ァ イ ル 3 0 6 中のセグメ ン ト がサーチされる。 旧 E X E フ 7 ィ ノレ 3 0 5 のセ グメ ン ト数の方が多い場合は、 新 E X E フ ァ イ ル 3 0 6 で定義されているセグメ ン トをキーと して、 旧 E X Eフア イ ノレ 3 0 5 中のセグメ ン トがサーチされる。
処理 3 : サ—チ対象であるセグメ ン トにおいて、 現在のキ一とされているセグメ ン ト に対し、 セグメ ン ト タ イ プ/属性が同じで、 かつ、 セグメ ン トデー タの最初の 1 6 バイ トの内容が一致するものがペア セグメ ン 卜 とされる。 こ こで、 図 1 7 に示されるよ う に、 先頭にリ ロケーシ ョ ン情報が設定されている リ ロケ一シ ョ ンテーブルを舍むセ グメ ン ト データが 存在する。 キーとされているセグメ ン ト又はサーチ 対象であるセグメ ン トの何れかがこのよう なデータ である場合には、 このリ ロケ一ショ ンテーブルの直 後の最初の 1 6 バイ トの内容が一致する ものがペア セグメ ン ト と され、 リ ロケーシ ョ ンテーブルについ ては、 後述するよう に別に差分抽出処理が実行され る。 なお、 リ ロケー シ ョ ンテーブルが存在するか否 かは、 セグメ ン ト情報 3 0 8 のセ グメ ン トタ イ プ/ 属性データに、 リ ロケー シ ョ ンテーブルが存在する こ とを示すデータ値が設定されているか否かによつ て判別できる。
サーチ対象であるセグメ ン トにおいて、 上記一致 関係が成立するセグメ ン ト がない場合には、 キーと なったセグメ ン トについては、 サーチは諦められ、 そのセグメ ン ト は旧 E X Eフア イ ノレ 3 0 5 の孤立セ グメ ン ト とされる。 そして、 次のセグメ ン トがキ一 とされて、 サーチが行われる。
全てのサーチが終了した時点で、 新 E X Eフア イ ル 3 0 6 においてペアとならなかったセグメ ン ト は, 新 E X Eフ ァ イ ル 3 0 6の孤立セグメ ン ト とされる < このようにして得られた、 ペアセグメ ン ト、 旧 E X Eフ ァ イ ル 3 0 5の孤立セグメ ン ト、 及び新 E X Eフ ァ イ ル 3 0 6 の孤立セグメ ン トが、 セグメ ン ト 対応付けデータ と してメ モ リ などに保持される。
上述のよう にして、 図 1 4 のステ ップ S 1 4 0 1 で、 全てのサーチが終了した後、 セグメ ン ト対応付 けデータのそれぞれに対して、 以下に示されるステ 'ン プ S 1 4 0 2〜 S 1 4 1 6の処理が繰り返し実行 される。
即ち、 まず、 ステップ S 1 4 0 2で、 1 つのセグ メ ン ト対応付けデータがメ モ リ などから抽出される セグメ ン ト対応付けデータが存在するならステ ッ プ S 1 4 0 3 の判定は Y E S となり、 続いて、 ステ ップ S 1 4 0 4で、 そのセグメ ン ト対応付けデータ がぺァセ グメ ン トか否かが判定される。 セグメ ン ト対応付けデータがペアセグメ ン トであ つてステ ップ S 1 4 0 4 の判定が Y E Sの場合には、 ステ ップ S 1 4 0 8、 S 1 4 1 0、 及び S 1 4 1 2 で、 旧 E X Eフ ア イ ノレ 3 0 5及び新 £ £ フ ァ ィ ル 3 0 6 の両方又は何れか一方にリ ロケ一シ ョ ン情報 が設定されているか否かが判定される。
旧 E X Eフ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6 の両方にリ ロケーシ ョ ン情報が設定されている 場合は、 ステ ップ S 1 0 8及び S 1 4 1 0 の判定 が N 0 となり ステ ップ S 1 1 2 の判定が Y E S と なって、 ステ ップ S 1 1 3が実行される。 ステ ツ プ S 1 4 1 3 では、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれにっき、 リ ロケー シ ョ ンテーブル部領域が抽出される。 こ の領域は、 セ グメ ン トデータの先頭ア ド レスから、 その先頭 1 パ ィ トに設定されている リ ロケー シ ョ ン項目数分だけ 進んだア ドレスまでの領域と して抽出される。 続い て、 セグメ ン トデータ対応付け部 3 0 2 は、 ステ ツ プ S 1 4 1 4 で、 差分抽出処理部 3 0 4 をコールす ると共に、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ ィ ル 3 0 6 のそれぞれについて抽出された リ ロケ一 ショ ンテ一ブル部領域を差分抽出処理部 3 0 4 に渡 す。 この結果、 差分抽出処理部 3 0 4 は、 後述する 差分抽出処理によって、 セグメ ン トデータ対応付け 部 3 0 2から渡された リ ロケーシ ョ ンテーブル部領 域の先頭から末尾まで、 新 E X Eフ ァ イ ル 3 0 6 の 旧 E X Eフ ァ イ ル 3 0 5 に対するバイ ト単位の差分 を抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブ する。
旧 E X Eフ ァ イ ル 3 0 5 のみにリ ロケーショ ン情 報が設定されている場合は、 ステ ップ S 1 0 8 の 判定が Y E S となり、 ステ ップ S 1 4 0 9 が実行さ れる。 ステ ップ S 1 4 0 9 では、 旧 E X Eファ イ ル 3 0 5 のリ ソーステーブル部領域が削除された旨を 示す差分情報 (更新レコー ド) 力く、 更新フ ァ イ ル 3 0 7 にセーブされる。
新 E X Eフ ァ イ ル 3 0 6 のみにリ ロケーショ ン情 報が設定されている場合は、 ステ ップ S 1 4 0 8 の 判定が N 0、 ステ ップ S 1 4 1 0 の判定が Y E S と なり、 ステ ップ S 1 4 1 1 が実行される。 ステ ップ S 1 4 1 1 においては、 新 E X Eフ ア イ ノレ 3 0 6 の リ ソーステーブル部領域が挿入された旨を示す差分 情報 (更新レコ ー ド) が、 更新フ ア イ ル 3 0 7 にセ —ブされる。
旧 E X Eフ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6 の何れにも リ ロケーショ ン情報が設定されてい ない場合は、 上述のリ ロケーショ ンテーブルに閬す る処理は実行されない。
以上のステ ップ S 1 4 1 4、 S 1 4 0 9、 又は S 1 4 1 1 の処理の後、 又はステ ップ S 1 4 1 2 の判 定か N 0 となった後、 ステ ップ S 1 1 5 が実行さ れる。 ステ ップ S 1 4 1 5 では、 リ ロケー シ ョ ン情 報を除いたセグメ ン トデータ本体の領域が抽出され る。 こ の領域は、 リ 口ケーシ ヨ ン情報が設定されて いない場合にはセ グメ ン トデータの先頭ァ ド レスか ら、 リ ロケー シ ョ ン情報が設定されている場合には セグメ ン トデータの先頭 1 バイ トに設定されている リ ロケーショ ン項目数分だけ進んだァ ド レスの次の ァ ド レスから、 セグメ ン ト情報 3 0 8 から抽出され る次のセグメ ン ト番号のセグメ ン トデータの先頭の オフセ ッ トァ ド レスの手前のァ ド レスまでの領域と して抽出される。
続いて、 セグメ ン トデータ対応付け部 3 0 2 は、 ステ ッ プ S 1 4 1 6 で、 差分抽出処理部 3 0 4 をコ —ルする と共に、 旧 Ε Χ Ε フ ァ イ ル 3 0 5 と新 £ Ε フ ァ イ ル 3 0 6 のそれぞれにっき抽出されたセ グ メ ン トデータ領域を差分抽出処理部 3 0 4 に渡す。 この結果、 差分抽出処理部 3 0 4 は、 後述する差分 抽出処理によって、 セグメ ン トデータ対応付け部 3 0 2から渡されたセグメ ン トデータ領域の先頭から 末尾まで、 新 Ε Χ Ε フ ァ イ ル 3 0 6 の旧 £ £フ ァ ィ ル 3 0 5 に対するバイ ト単位の差分を抽出し、 そ の差分を更新フ ァ イ ル 3 0 7 にセーブする。
一方、 前述したステ ップ S 1 4 0 4 の判定におい て、 セ グメ ン ト対応付けデータがペアセ グメ ン ト て ない場合であってステ ップ S I 4 0 4 の判定が N O の場合には、 更にステ ップ S 1 4 0 5で、 セグメ ン ト対応付けデータが旧 E X Eファ イ ル 3 0 5 の孤立 セグメ ン トであるか否かが判定される。
セグメ ン ト対応付けデータが旧 E X Eファ イ ル 3 0 5 の孤立セグメ ン トであってステ ップ S 1 0 5 の判定が Y E Sなら、 ステ ップ S 1 4 0 6が実行さ れる。 ステ ップ S 1 4 0 6では、 旧 E X Eファ イ ル 3 0 5 の孤立セグメ ン トの領域が削除された旨を示 す差分情報 (更新レコー ド) 力く、 更新ファ イ ル 3 0 7 にセーブされる。
セグメ ン ト対応付けデータ力く旧 E X Eファ イ ル 3 0 5の孤立セグメ ン トでな く ステ ップ S 1 4 0 5 の 判定が N 0なら、 それは新 E X Eファ イ ル 3 0 6 の 孤立セグメ ン トであり、 この場合には、 ステ ップ S 1 0 7が実行される。 ステ ップ S 1 4 0 7 では、 新 E X Eフ ァ イ ル 3 0 6の孤立セグメ ン トの領域が 挿入された旨を示す差分情報 (更新レコー ド) が、 更新フ ァ イ ル 3 0 7 にセーブされる。
以上のステ ツプ S 1 4 0 2〜 S 1 4 1 6 の処理が 全てのセグメ ン ト対応付けデータに対して繰り返し 実行される。 そして、 セグメ ン ト対応付けデータが な く なる と、 ステ ップ S 1 4 0 3の判定が N 0とな る。 このよう にして、 セグメ ン トデータ対応付け部 3 0 2 によって、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ア イ ノレ 3 0 6 との間で、 セグメ ン トデータ の対 応付けが行われた上で、 その対応付けされたセグメ ン トデータ領域毎に差分抽出処理部 3 0 4 で差分抽 出処理が実行される。
そして、 セグメ ン トデータ対応付け部 3 0 2 は、 ステ ッ プ S 1 4 1 7 で、 図 3 の リ ソース対応付け部 3 0 3 を起動して、 処理を終了する。
リ ソース対応付け部 3 0 3 で実行される処理の動 作フローチヤ一 ト は、 図 1 8 に示される。 このリ ソ ース対応付け部 3 0 3 の動作は、 へ 'ンダ解圻部 3 0 1 などの場合と同様、 特には図示しないコ ンピュー タ システムにおいて、 C P U力 、 デ ィ ス ク装置など に記憶された旧 E X Eフ ァ イ ル 3 0 5及び新 E X E フ ァ イ ル 3 0 6 に対して、 メ モ リ に記憶された制御 プログラムを実行する動作の一部と して実現される こ こで、 リ ソースはセ グメ ン トデータ の一属性と して規定され、 従って、 前述したセグメ ン トデータ の場合と同様、 旧 E X Eフ ァ イ ル 3 0 5 と新 £ 5 フ ァ イ ル 3 0 6 とで対応する リ ソースがある場合、 変更されていない リ ソースについてはそれらの内容 がー致し、 変更された リ ソースについてのみ差分が 生ずる。 そ こで、 リ ソース対応付け部 3 0 3 で も、 セグメ ン トデータ対応付け部 3 0 2 の場合と同様に 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 との間で、 リ ソースの対応付けを行い、 その対応付 けした リ ソース領域毎に差分抽出処理部 3 0 4 に対 して差分抽出処理を指示する。
この場合、 特にリ ソースでは、 前述した リ ソース テーブル部 (図 1 3参照) において、 リ ソースネー ム I Dが設定されている。 そこで、 リ ソース対応付 け部 3 0 3 は、 リ ソースネーム I Dを比較する こ と により その対応付けを行い、 その対応付けしたリ ソ ース領域毎に差分抽出処理部 3 0 4 に対して差分抽 出処理を指示する。
まず、 ステ ッ プ S 1 8 0 1 で、 前述した図 6 のス テ ツプ S 5 1 0及び S 5 1 9でヘ ンダ解析部 3 0 1 から設定されたセグメ ン ト情報 3 0 8及びリ ソース 情報 3 0 9 に基づいて、 リ ソ一スの対応付けが行わ れる。
この処理では、 まず、 旧 E X Eファ イ ル 3 0 5及 び新 E X Eファ イ ル 3 0 6 のセグメ ン ト情報 3 0 8 (図 9参照) 並びにリ ソース情報 3 0 9 に基づいて. それらのリ ソースが抽出される。 こ こで、 { (セグ メ ン ト情報 3 0 8 と して設定されているセグメ ン ト の数) 一 (リ ソース情報 3 0 9 と して設定されてい る リ ソースの数) + 1 } 番目以降のセグメ ン ト情報 3 0 8 力く、 リ ソース情報 3 0 9 と して設定されてい る各リ ソースネーム I Dに対応する リ ソースを示し ている。 旧 E X Eファ イ ル 3 0 5及び新£ £ファ ィ ル · 3 0 6 において抽出されたリ ソースの例を図 1 9 Aに示す。
次に、 旧 E X Eフア イ ノレ 3 0 5及び新 E X Eファ ィ ル 3 0 6 において抽出された リ ソース力 、 セグメ ン ト情報 3 0 8から抽出される フ ァ イ ルオ フセ ッ ト 順にソー ト される。 ソー ト された旧 E X Eフ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6の リ ソースの例 を図 1 9 Bに示す。
次に、 ソー ト された旧 E X Eフ ァ イ ル 3 0 5及び 新 E X Eフ ァ イ ル 3 0 6 の リ ソースにおいて、 同じ リ ソースネーム I Dを有する もの同士が対応付けら れる。 この結果、 図 1 9 A、 図 1 9 Bの例における 対応関係は、 図 2 0に示される如く となる。 こ の例 では、 旧 E X Eフ ア イ ノレ 3 0 5 の リ ソースネーム I D = 6の リ ソースが削除され、 新 E X Eフ ァ イ ル 3 0 6 の リ ソースネーム I D = 9及び 3 8 の リ ソース が追加され、 その他の リ ソ ースのペア については-、 変更がないか、 又は置換がなされている。
そ こ で、 ソー ト された旧 E X Eフ ァ イ ル 3 0 5 の リ ソース及び新 E X Eフ ア イ ノレ 3 0 6の リ ソースに ついて、 以下の対応付け処理がなされる。
処理 1 : 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eファ ィ ル 3 0 6 の リ ソ ース数が比較される。
処理 2 : リ ソース数が同じか、 新 E X Eフア イ ル 3 0 6 のリ ソ ース数の方が多い場合は、 旧 E X Eフ ア イ ル 3 0 5 で定義されている リ ソ ースをキーと し て、 新 E X Eフア イ ノレ 3 0 6 中のリ ソースがサーチ される。 旧 E X E フ ァ イ ル 3 0 5 のリ ソース数の方 が多い場合は、 新 E X E フ ァ イ ル 3 0 6 で定義され ている リ ソースをキ一と して、 旧 E X E フ ァ イ ル 3 0 5 中のリ ソースがサーチされる。
処理 3 : サーチ対象である リ ソースにおいて、 現 在のキーとされている リ ソースに対し、 リ ソースネ —ム I Dが同じものがペア リ ソースとされる。 こ こ で、 前述したセグメ ン トデータの場合と同様、 図 1 7 に示されるよう に、 先頭にリ ロケーショ ン情報が 設定されている リ ロケーショ ンテーブルを有する リ ソースが存在する。 キーとされている リ ソース又は サーチ対象である リ ソースの何れかがこのよ う なデ —タである場合には、 そのリ ロケーショ ンテーブル については、 後述するよう に別に差分抽出処理が実 行される。 なお、 リ πケーシヨ ンテーブルが存在す るか否かは、 リ ソースに対応するセグメ ン ト情報 3 0 8 のセグメ ン トタ イ プノ属性データに、 リ ロケ一 ショ ンテ一ブルが存在する こ とを示すデータ値が設 定されているか否かによつて判別でき る。
サーチ対象である リ ソースにおいて、 上記一致関 係が成立する リ ソースがない場合には、 キーとなつ た リ ソースについては、 サーチは諦められ、 そのリ ソースは旧 E X Eファ イ ル 3 0 5 の孤立リ ソースと される。 そ して、 次のリ ソースがキーとされて、 サ ーチが行われる。
全てのサーチが終了した時点で、 新 E X Eフ ア イ ル 3 0 6 においてペア とならなかった リ ソースは、 新 E X Eフ ァ イ ル 3 0 6 の孤立リ ソースとされる。
このよう にして得られた、 ペア リ ソース、 旧 E X
Eフ ァ イ ル 3 0 5 の孤立リ ソース、 及び新 E X Eフ ア イ ル 3 0 6 の孤立リ ソースが、 リ ソース対応付け データ と してメ モ リ などに保持される。
上述のよう にして、 図 1 8 のステ ップ S 1 8 0 1 で、 全てのサーチが終了した後、 リ ソース対応付け データのそれぞれに対して、 以下に示されるステ ツ プ S 1 8 0 2〜 S 1 8 1 6 の処理が缲り返し実行さ れる。 これらの処理波、 セグメ ン ト対応付けデータ に対する図 1 4 のステ ッ プ S I 4 0 2〜 S 1 4 1 6 の処理と同じである。
即ち、 まず、 ステ ッ プ S 1 8 0 2で、 1 つの リ ソ ース対応付けデータがメ モ リ などから抽出される。
リ ソース対応付けデータが存在するならステ ッ プ S 1 8 0 3 の判定は Y E S となり、 続いて、 ステ ツ ブ S 1 8 0 4 で、 その リ ソース対応付けデータがぺ ァ リ ソースか否かが判定される。
リ ソース対応付けデータがペア リ ソースであって ステ ップ S 1 8 0 4 の判定が Y E Sの場合には、 ス テ ツプ S 1 8 0 8、 S 1 8 1 0 、 及び S 1 8 1 2 で 旧 E X Eフ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6 の両方又は何れか一方にリ ロケーシ ョ ン情報が設 定されているか否かが判定される。
旧 E X Eフ ァ イ ル 3 0 5及び新 E X Eフ ァ イ ル 3 0 6 の両方にリ ロケ一ショ ン情報が設定されている 場合は、 ステップ S 1 8 0 8及び S 1 8 1 0 の判定 が N 0となりステツ.プ S 1 8 1 2 の判定が Y E S と なって、 ステ ップ S 1 8 1 3 が実行される。 ステ ツ プ S 1 8 1 3 では、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれぞれにっき、 リ ロケーシ ヨ ンテーブル部領域が抽出される。 この領域は、 リ ソースの先頭ア ドレスから、 その先頭 1 バイ トに設 定されている リ ロケ一ショ ン項目数分だけ進んだァ ドレスまでの領域として抽出される。 続いて、 リ ソ ース対応付け部 3 0 3 は、 ステ ップ S 1 8 1 4 で、 差分抽出処理部 3 0 4をコールすると共に、 旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6 のそれ それについて抽出されたリ ロケ一ショ ンテ一ブル部 領域を差分抽出処理部 3 0 4に渡す。 この結果、 差 分抽出処理部 3 0 4 は、 後述する差分抽出処理によ つて、 リ ソース対応付け部 3 0 3から渡されたリ ロ ケーシ ヨ ンテーブル部領域の先頭から末尾まで、 新 E X Eフ ァ イ クレ 3 0 6 の旧 E X Eフ ァ イ ル 3 0 5 に 対するバイ ト単位の差分を抽出し、 その差分を更新 フ ァ イ ル 3 0 7 にセーブする。
旧 E X Eフ ァ イ ル 3 0 5 のみにリ ロケーショ ン情 報が設定されている場合は、 ステ ップ S 1 8 0 8 の 判定が Y E S となり、 ステ ッ プ S 1 8 0 9 が実行さ れる。 ステ ップ S 1 8 0 9 では、 旧 E X Eフ ァ イ ル 3 0 5 の リ ソーステーブル部領域が削除された旨を 示す差分情報 (更新レコー ド) 力く、 更新フ ァ イ ル 3 0 7 にセーブされる。
新 E X Eフ ァ イ ル 3 0 6 のみに リ ロケー シ ョ ン情 報が設定されている場合は、 ステ ッ プ S 1 8 0 8 の 判定が N 0、 ステ ッ プ S 1 8 1 0 の判定が Y E S と なり、 ステ ップ S 1 8 1 1 が実行される。 ステ ップ S 1 8 1 1 においては、 新 E X Eフ ァ イ ル 3 0 6 の リ ソーステーブル部領域が挿入された旨を示す差分 情報 (更新レコ ー ド) が、 更新フ ア イ ル 3 0 7 にセ ーブされる。
旧 E X Eフ ァ イ ル 3 0 5及び新 E X E フ ァ イ ル 3 0 6 の何れにも リ ロケーシ ョ ン情報が設定されてい ない場合は、 上述の リ ロケーシ ョ ンテ一ブルに関す る処理は実行されない。
以上のステ ップ S 1 8 1 4、 S 1 8 0 9、 又は S 1 8 1 1 の処理の後、 又はステ ップ S 1 8 1 2 の判 定が N ◦ となった後、 ステ ッ プ S 1 8 1 5 が実行さ れる。 ステ ップ S 1 8 1 5 では、 リ ロケー シ ョ ン情 報を除いた リ ソース本体の領域が抽出される。 この 領域は、 リ ロケーシ ョ ン情報が設定されていない場 ム αにはリ ソースの先頭ア ド レスから、 リ ロケ ン ン情報が設定されている場合にはリ ソースの先頭 1 バイ 卜に設定されている リ ロケーショ ン項目数分だ け進んだァ ド レスの次のァ ド レスから、 セグメ ン ト 情報 3 0 8及びリ ソース情報 3 0 8 から抽出される 次のリ ソース番号のリ ソースの先頭のオフセ ッ トァ ド レスの手前のァ ド レスまでの領域と して抽出され る。
続いて、 リ ソース対応付け部 3 0 3 は、 ステ ッ プ S 1 8 1 6 で、 差分抽出処理部 3 0 4 をコールする と共に、 旧 E X E フ ァ イ ル 3 0 5 と新 E X Eフ ア イ ル 3 0 6 のそれぞれにっき抽出されたリ ソース領域 を差分抽出処理部 3 0 4 に渡す。 この結果、 差分抽 出処理部 3 0 4 は、 後述する差分抽出処理によって- リ ソース対応付け部 3 0 3 から渡されたリ ソ一ス領 域の先頭から末尾まで、 新 E X E フ ァ イ ル 3 0 6 の 旧 E X E フ ァ イ ル 3 0 5 に対するバイ ト単位の差分 を抽出し、 その差分を更新フ ァ イ ル 3 0 7 にセーブ する。
一方、 前述したステ ップ S 1 8 0 4 の判定におい て、 リ ソース対応付けデータがペア リ ソースでない 場合であってステ ップ S 1 8 0 4 の判定が N 0の場 合には、 更にステ ップ S 1 8 0 5で、 リ ソース対応 付けデータ力"日 E X E フ ァ イ ル 3 0 5 の孤立リ ソ一 スであるか否かが判定される。
リ ソース対 ^付けデータ力く旧 E X E フ ァ イ ル 3 0 5 の孤立リ ソースであってステ ッ プ S 1 8 0 5 の判 定か Y E Sなら、 ステ ップ S 1 δ 0 6 が実行される < ステ ップ S 1 8 0 6 では、 旧 Ε Χ Εフ ァ イ ル 3 0 5 の孤立リ ソースの領域が削除された旨を示す差分情 報 (更新レコ ー ド) 力く、 更新フア イ ル 3 0 7 にセー ブされる。
リ ソ ース対応付けデータが旧 Ε X Εフ ァ ィ ル 3 0 5 の孤立リ ソースでな く ステ ッ プ S 1 8 0 5 の判定 が Ν〇なら、 それは新 Ε X Εフ ァ イ ル 3 0 6 の孤立 リ ソースであり、 この場合には、 ステ ッ プ S 1 8 0 7 が実行される。 ステ ップ S I 8 C 7 では、 新 Ε Χ Εフ ァ イ ル 3 0 6 の孤立リ ソースの領域が挿入され た旨を示す差分情報 (更新レコー ド) 力 更新フ ァ ィ ル 3 0 7 にセーブされる。
以上のステ ップ S 1 8 0 2〜 S 1 8 1 6 の処理が. 全てのリ ソース対応付けデータに対して橾り返し実 行される。 そ して、 リ ソース対応付けデータがな く なる と、 ステ 'ン プ S 1 8 0 3 の判定が N 0 となり、 全ての処理を終了する。
最後に、 上述したよう に してヘッダ解析部 3 0 1 セグメ ン トデータ対応付け部 3 0 2、 又はリ ソ一ス 対応付け部 3 0 3 からコールされる差分抽出処理部 3 0 4 の処理について説明する。
差分抽出処理部 3 0 4 で実行される差分抽出処理 の動作フ π—チ ャー ト は図 2 1 に、 また、 差分抽出 処理において実行される比較処理の動作フ ローチ ヤ — ト は図 2 2 に示される。 これらの動作は、 ヘッダ 解折部 3 0 1 などの場合と同様、 特には図示しない コ ンピュータ システムにおいて、 C P U力く、 デイ ス ク装置などに記憶された旧 E X E フ ァ イ ル 3 0 5及 び新 E X E フ ァ イ ル 3 0 6 に対して、 メ モ リ に記憶 された制御プログラムを実行する動作の一部と して 実現される。
今、 例えば図 2 4 Aに示されるように、 旧 E X E フア イ ノレ 3 0 5 の領域と して、 ノ イ トデータ列 a b
• · · c d e · · ' · からなる領域が指定され、 一 方、 新 E X E フ ァ イ ル 3 0 6 の領域と して、 バイ ト データ c と d の間にバイ トデータ列 I I · ' · I が 挿入された領域が指定されたとする。
図 2 1 において、 まず、 ステ ップ S 2 1 0 1で、 指定された領域において比較すべきデータがな く な つたか否かが判定される。
比較すべきデータがある場合、 ステ ップ S 2 1 0
2で、 新 E X Eフ ァ イ ル 3 0 6 において指定された 領域を比較側、 旧 E X E フ ァ イ ル 3 0 5 において指 定された領域を比較対象側と して、 図 2 3 に示され るよう に、 比較側のバイ トデータをキーと して比較 処理が実行される。
比較処理の動作フローチ ャー ト は図 2 2 に示され る。 図 2 2 のステ ップ S 2 2 0 1 で、 特には図示しな いメ モ リ に確保されている変数 srcendに、 比較側の 領域における終了位置又は後述する現在の比較側の 比較開始位置より 1 0 2 4 バイ ト前方の位置のう ち 現在の比較側の比較開始位置から近い方の位置のァ ド レスが格納される。 同様にして、 特には図示しな いメ モ リ に確保されている変数 d i stend に、 比較対 象側の領域における終了位置又は後述する現在の比 較対象側の比較開始位置より 1 0 2 4 バイ ト前方の 位置のう ち、 現在の比較対象側の比較開始位置から 近い方の位置のァ ドレスが格納される。
次に、 ステ ップ S 2 2 0 2で、 特には図示しない メ モ リ に確保されている変数 src に、 現在の比較側 の比較開始位置のァ ド レスが格納される。 図 2 4 A の例では、 変数 src には最初は新 E X E フ ァ イ ル 3 0 6 の指定領域における先頭のバイ トデータ a のァ ドレスが格納される。 同様にして、 特には図示しな いメ モ リ に確保される変数 d i stと nextd i stに、 現在 の比較対象側の比較開始位置のァ ド レスが格納され る。 図 2 4 Aの例では、 変数 d i stと nex td i stには最 初は旧 E X E フ ァ イ ル 3 0 5 の指定領域における先 頭のバイ トデータ a のァ ド レスが格納される。
その後、 図 2 4 Aに示されるよう に、 新 E X E フ ア イ ル 3 0 6 と旧 E X E フ ァ イ ル 3 0 5 とで内容が 一致しているバイ トデータ a b · · ' c の範囲にお いては、 ステ ップ S 2 2 0 6 で変数 src 、 dist、 及 び nextdistの値が順次ィ ンク リ メ ン ト されながら、 ステ ップ S 2 2 0 3→ S 2 2 0 4→ S 2 2 0 5→ S 2 2 0 6→ S 2 2 0 3 の処理が繰り返される こ とに より、 図 2 4 Aの T 1〜T 3 に示されるよう に、 変 数 src 及び distで示されるァ ドレスにおける値が一 致するバイ トデータ同士が順次対応付けられてゆ く , そして、 図 2 4 Aに示されるように、 ステ ップ S 2 2 0 6 で、 比較側である新 E X Eファ イ ル 3 0 6 において変数 src の値が挿入されたバイ トデータ I I ♦ · · I のう ち最初のデータのア ド レスにされ、 比較対象側である旧 E X Eフ ァ イ ル 3 0 5 において 変数 distの値がバィ トデータ d のア ド レスにされた 後、 次にステ ップ S 2 2 0 4 が実行される時点で、 その判定が N O となる。
この後は、 ステ ップ S 2 2 0 8で変数 di stの値が イ ンク リ メ ン ト されながら、 ステ ップ S 2 2 0 4→ S 2 2 0 7 → S 2 2 0 8→ S 2 2 0 9→ S 2 2 0 4 → S 2 2 0 7 → S 2 2 0 8 の処理が操り返される こ とにより、 変数 src で示されるァ ド レスにおける新 E X Eフ ァ イ ル 3 0 6 で挿入された第 1 番目のバイ トデータ I をキーとして、 その値と、 順次イ ンク リ メ ン ト される変数 distで示されるァ ド レスにおける 旧 E X Eフ ァ イ ル 3 0 5上のバイ トデータ d e · ' * の各値と;^、 それらが一致してステ ップ S 2 2 0 4の判定が Y E S となるまで、 順次比較される。 こ の動作は、 図 2 4 Aの T 4、 Τ 5 に示される。
この比較処理の繰り返しの結果、 新 Ε Χ Εフア イ ル 3 0 6で挿入された第 1番目のバイ トデータ I に 一致するバイ トデータが旧 Ε X Εフ ァ イ ル 3 0 5上 で見つかれなければ、 やがて変数 di stで示されるァ ド レスが変数 distend で示される比較終了ァ ド レス を越え、 ステ ップ S 2 2 0 9 の判定が Y E S となる , この場合には、 新 E X Eフ ァ イ ル 3 0 6で挿入さ れた第 1番目のバイ トデータ I をキーとするサーチ は諦められ、 ステ ッ プ S 2 2 1 0で、 変数 src の値 がィ ンク リ メ ン ト される こ とによ り新 E X Eフ ア イ ル 3 0 6で挿入された第 2番目のバイ トデータ I が キーとされ、 また、 変数 distに変数 nextdistのア ド レスが挿入される こ とにより、 比較対象側である旧 E X Eフ ァ イ ル 3 0 5上の比較開始位置が初めて不 一致が発生したバイ トデータ dのァ ド レスに戻され る。
そ して、 変数 src によ って示されるァ ド レスが変 数 srcendで示される比較終了ァ ド レスを越えておら ずステ ッ プ S 2 2 0 3の判定が N 0であれば、 再び ステ ッ プ S 2 2 0 8で変数 distの値がィ ンク リ メ ン ト されながら、 ステ ップ 3 2 2 0 4→ 3 2 2 0 7→ S 2 2 0 8 -> S 2 2 0 9→ S 2 2 0 4→ S 2 2 0 7 → S 2 2 0 8 の処理が繰り返される こ とにより、 変 数 src で示されるァ ド レスにおける新 E X Eファ ィ ル 3 0 6で挿入された第 2番目のバイ トデータ I を キーと して、 その値と、 順次イ ンク リ メ ン ト される 変数 di stで示されるア ド レ スにおける旧 E X Eファ ィ ル 3 0 5上のバイ トデータ d e · · ' の各値とが それらが一致してステ ップ S 2 2 0 4 の判定が Y E S となるまで、 順次比較される。 こ の動作は、 図 2 4 Aの T 6、 Τ 7 に示される。
以下、 ステ ップ S 2 2 0 9 の判定が Y E S となる 毎に、 新 E X Eフ ァ イ ル 3 0 6で挿入された第 3番 目以降の各バイ トデータ I について同様の比較処理 が繰り返される (図 2 4 Aの T 8、 T 9 ) 。
やがてステ ップ S 2 2 1 0で、 変数 src に新 E X Eファ ィ ノレ 3 0 6上のノ ィ トデータ dのァ ドレスが 代入され、 変数 distに変数 nextdistで示される旧 E X Eフ ァ イ ル 3 0 5上のバイ トデータ dのァ ド レス が代入された後、 ステ ッ プ S 2 2 0 4が実行された 時点で、 変数 src で示されるァ ド レスにおける新 E X Eフ ァ イ ル 3 0 6のバイ ト データ d と変数 distで 示されるア ド レスにおける旧 E X Eフ ァ イ クレ 3 0 5 のバイ トデータ d とが一致し、 その判定が Y E S と なる。 こ の一致状態は、 最初に新 E X Eフ ァ イ ル 3 0 6 と旧 E X Eフ ァ イ ル 3 0 5 のバイ トデータ a b • ' · cがー致し、 次に、 新 E X Eフ ァ イ ル 3 0 6 で挿入されたバイ トデータ I I · · · I 力く旧 E X E フ ァ イ ル 3 0 5上のバイ トデータ d e · · ' と不一 致となった後の一致状態であるため、 ステ ップ S 2 2 0 5 の判定が Y E S となる。
この結果、 ステ ップ S 2 2 1 1 で、 図 2 4 Aの新 E X Eフ ア イ ノレ 3 0 6 と旧 E X Eフ ァ イ ル 3 0 5 の バイ トデータ a b · · ' c で示される一致部分の一 致開始点 (バイ トデータ a のァ ドレス) と一致バイ ト数が算出され、 また、 新 E X Eファ イ ル 3 0 6 で 挿入されたバイ トデータ I I * · · I で示される不 一致部分の不一致開始点と不一致バイ ト数が算出さ れて、 比較処理が終了する。
上述のよう に、 一致部分と不一致部分のペアが見 つかってステ ップ S 2 2 0 5 の判定が Y E S となる 時点で、 また、 図 2 8 A、 図 2 8 Bの説明で後述す るよう に、 不一致部分と一致部分のペアが見つかつ てステ ップ S 2 2 0 7 の判定が Y E S となる時点で . 一致部分の一致開始点と一致バイ ト数、 及び不一致 部分の不一致開始点と不一致バイ ト数が算出されて 比較処理が終了される。
以上の動作の結果、 新 E X Eフ ァ イ ル 3 0 6 の指 定領域の各バイ トデータをキーとする旧 E X Eフ ァ ィ ル 3 0 5 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 2 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 3 で、 上述の一致バイ ト数が 6 4 バイ ト以上であるか否かが判定される。
一致バィ ト数が 6 4バイ ト以上であつてステ ップ S 2 1 0 3の判定が Y E S となつた場合には、 ステ ップ S 2 1 0 9で、 上述の不一致部分に閬する差分 情報が図 3 の更新ファ イ ル 3 0 7へライ トされる。 例えば図 2 4 Aの新 E X Eファ イ ル 3 0 6 と旧 E X Eファ イ ル 3 0 5 のバイ トデータ a b ' · · cで示 される一致部分の一致バイ ト数が 6 4バイ ト以上で ある場合には、 新 E X Eフ ァ イ ル 3 0 6において、 旧 E X Eフア イ ノレ 3 0 5 のバイ トデータ cで示され るア ドレスの直後にバイ トデータ I I · · · I が揷 入されたこ とを示す差分情報が更新ファ イ ル 3 0 7 へライ ト される。
一致バイ ト数が 6 4バイ トより少な く ステ ップ S 2 1 0 3の判定が N 0となつた場合には、 ステ ップ S 2 1 0 4で、 前述したステ ップ S 2 1 0 2の場合 とは逆に、 旧 E X Eファ イ ル 3 0 5 の指定領域を比 較側、 新 E X Eファ イ ル 3 0 6 の指定領域を比較対 象側と し、 比較側のバイ トデータをキーと して、 前 述した図 2 2で示される比較処理が実行される。
この比較処理の例と して、 前述した図 2 4 Aに対 応する動作が図 2 4 Bに示される。
始めに、 ステ ップ S 2 2 0 1 とステ ップ S 2 2 0 2で、 変数 srcendと distend 、 変数 src 、 及び変数 distと nextdisUこ、 図 2 4 Aの場合と同様の値が設 定される。
その後、 前述したステ ップ S 2 2 0 3→ S 2 2 0 4→ S 2 2 0 5→ S 2 2 0 6→ S 2 2 0 3 の処理が 繰り返される こ とにより、 図 2 4 Bの T 1 〜T 3 に 示されるよう に、 変数 src 及び distで示されるァ ド レスにおける値が一致するバイ トデータ同士が順次 対応付けられてゆ く。
そして、 図 2 4 Bに示されるよう に、 ステ ップ S 2 2 0 6で、 比較側である旧 E X Eフ ァ イ ル 3 0 5 において変数 src の値が d のア ド レスにされ、 比較 対象側である新 E X Eファ イ ル 3 0 6 において変数 distの値が挿入されたバイ トデータ I I ' · · I の う ち最初のデータのア ド レスにされた後、 次にステ ップ S 2 2 0 4が実行される時点で、 その判定が N 0となる。
この後は、 ステ ップ S 2 2 0 8で変数 distの値が イ ンク リ メ ン ト されながら、 ステ ップ S 2 2 0 4→ S 2 2 0 7→ S 2 2 0 8→ S 2 2 0 9→ S 2 2 0 4 → S 2 2 0 7→ S 2 2 0 8 の処理が操り返される こ とにより、 変数 src で示されるア ド レスにおける旧 E X Eフ ァ イ ル 3 0 5 のバイ トデータ dをキーと し て、 その値と、 順次ィ ンク リ メ ン ト される変数 dist で示されるァ ド レスにおける新 E X Eフ ァ イ ル 3 0 6上のバイ ト データ I I ♦ · · I の各値とが、 それ らが一致してステ ップ S 2 2 0 4 の判定が Y E S と なるまで、 順次比較される。 この動作は、 図 2 4 B の T 4〜T 6 に示される。
この比較処理の繰り返しの結果、 ステ ップ S 2 2 0 8で、 変数 disUこ新 Ε X Eフ ァ イ ル 3 0 6上のバ ィ トデータ dのア ドレスが代入された後、 ステ ップ S 2 2 0 が実行された時点で、 変数 src で示され るア ド レスにおける旧 E X Eフ ァ イ ル 3 0 5 のバイ トデータ d と変数 distで示されるァ ドレスにおける 新 E X Eフ ァ イ ル 3 0 6のバイ トデータ d とが一致 し、 その判定が Y E Sとなる。 この一致状態は、 最 初に旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3
0 6のバイ トデータ a b · · · cがー致し、 次に、 新 E X Eフ ァ イ ル 3 0 6で挿入されたバイ トデータ
1 I . ' · I カ 日 E X Eフ ァ イ ル 3 0 5上のバイ ト データ d と不一致となった後の一致状態であるため. ステ ップ S 2 2 0 5の判定が Y E Sとなる。
この結果、 ステップ S 2 2 1 1 で、 図 2 4 Bの旧 E X Eフ ァ イ ル 3 0 5 と新 E X Eフ ァ イ ル 3 0 6の バイ トデータ a b · ♦ · cで示される一致部分の一 致開始点 (バイ トデータ a のア ドレス) と一致バイ ト数が箕出され、 また、 新 E X Eフ ァ イ ル 3 0 6.で 挿入されたバイ トデータ I I · · · I で示される不 一致部分の不一致開始点と不一致バイ ト数が算出さ れて、 比較処理が終了する。
以上の動作の結果、 旧 E X Eフ ァ イ ル 3 0 5 の指 定領域の各バイ トデ一タをキ一とする新 E X Eファ ィ ル 3 0 6 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 4 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ッブ S 2 1 0 5で、 全てのバイ トが不一致であるか 否かが判定される。
全てのバイ トが不一致であってステ ップ S 2 1 0 5 の判定が Y E S となった場合には、 ステ ップ S 2 1 0 9 で、 上述の不一致部分に関する差分情報が図 3 の更新フ ァ イ ル 3 0 7 へラ イ ト される。
一方、 図 2 4 A、 図 2 4 Bの例のように、 全ての バイ トが不一致でな く ステ ップ S 2 1 0 5 の判定が N 0となった場合には、 ステ ップ S 2 1 0 6 で、 ま ず、 次式によって、 新 E X E フ ァ イ ル 3 0 6 のバイ トデ一タをキ一とする前述したステ ップ S 2 1 0 2 の比較処理における一致バイ ト数の割合 RNEW0LD が 算出される
RNEW0LD= (新→旧の一致バイ ト数)
/ { (新—旧の一致バイ ト数
+ (新—旧の不一致バイ ト数) }
( 1 ) 次に、 次式によって、 旧 E X E フ ァ イ ル 3 0 5 のバ ィ トデータをキーとする前述したステ ッ プ S 2 1 0 4 の比較処理における一致バイ ト数の割合 R0LDNEW が算出される。
R0LDNEW= (旧—新の一致バイ ト数)
/ { (旧→新の一致バイ ト数
+ (旧—新の不一致バイ ト数) }
• ♦ · ( 2 ) そして、 次式によって、 新 E X Eフ ァ イ ル 3 0 6 を キ一と した場合の一致バイ ト数の割合 RNEW0LD の方 カ 日 E X E フ ァ イ ル 3 0 5 をキーと した場合の一致 バイ ト数の割合 R0LDNEW より小さいか否かが判定さ れる。
RNEWOLD /RQLDNE < 1 ? ( 3 ) 今、 更新フ ァ イ ル 3 0 7 には、 不一致部分の差分 情報が格納されるため、 一致部分はなるべ く 多い方 がよい。 従って、 新 E X E フ ァ イ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW0LD の方が旧 E X E フ ァ イ ル 3 0 5 をキーと した場合の一致バイ ト 数の割合 R0LDNEW より小さ く ステ ップ S 2 1 0 6 の 判定が Y E S の場合には、 ステ ッ プ S 2 1 0 7 で、 旧 E X E フ ァ イ ル 3 0 5 をキ一と した場合のステ ツ プ S 2 1 0 4 の比較処理の結果が選択され、 ステ ツ プ S 2 1 0 9 で、 その比較処理によって得られてい る不一致部分に関する差分情報が図 3 の更新フア イ ル 3 0 7 へラ イ ト される。 一方、 新 E X Eフ ァ イ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW OLD の方が旧 E X Eフ ァ イ ル 3 0 5 をキーと した場 合の一致バイ ト数の割合 R0LDNEW 以上であってステ ップ S 2 1 0 6 の判定が N 0の場合には、 ステ ップ S 2 1 0 8 で、 新 E X Eフ ァ イ ル 3 0 6 をキーと し た場合のステ ップ S 2 1 0 2 の比較処理の結果が選 択され、 ステ ップ S 2 1 0 9で、 その比較処理によ つて得られている不一致部分に関する差分情報が図 3 の更新フ ァ イ ル 3 0 7 へラ イ ト される。
但し、 図 2 4 A及び図 2 4 Bの例では、 RNEW0LD= R0LDNEW となるため、 ステ ップ S 2 1 0 8 で、 新 E X Eフ ァ イ ル 3 0 6 をキーと した場合のステ ップ S 2 1 0 2 の比較処理の結果が選択され、 ステ ッ プ S 2 1 0 9で、 その比較処理によって得られている不 一致部分に関する差分情報と して、 新 E X Eフア イ ル 3 0 6 において旧 E X Eフ ァ イ ル 3 0 5 のバイ ト データ cで示されるア ド レスの直後にバイ トデータ I I · · · I が挿入されたこ とを示す差分情報が、 更新フ ァ イ ル 3 0 7 へラ イ ト される。
ステ ップ S 2 1 0 9 の処理の後は、 ステ ップ S 2 1 1 0 で、 次の比較開始位置が設定され、 ステ ッ プ S 2 1 0 1 以降の処理に戻る。 図 2 4 Aの例では、 次の比較開始位置は、 新 E X Eフ ァ イ ル 3 0 6では. 最後に図 2 2のステ ッ プ S 2 2 0 4 の判定が Y E S となったときの変数 src に格納されているバイ トデ —タ dのァ ド レス、 旧 E X Eフ ア イ ノレ 3 0 5でも、 同じ く そのときの変数 disUこ格納されているバイ ト データ dのア ドレスである。 以後、 これらの比較開 始位置を起点と して、 前述した場合と全く 同様の比 較処理が繰り返される。
新 E X Eフ ァ イ ル 3 0 6 の指定領域と旧 E X Eフ ア イ ル 3 0 5 の指定領域において、 比較するバイ ト データが存在しな く なったら、 ステ ップ S 2 1 0 1 の判定が Y E S となって、 これらの指定領域におけ る差分抽出処理を終了する。
次に、 図 2 5 Aに示されるよう に、 新 E X Eファ ィ ノレ 3 0 6 の指定領域において、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域のバイ トデータ c と dの間に存在 したバイ トデータ列 D D · · · Dの領域が削除され た場合を考える。
この場合、 まず、 図 2 5 Aに示されるように、 図 2 1 のステ ッ プ S 2 1 0 2で、 新 E X Eフ ァ イ ル 3 0 6 において指定された領域を比較側、 旧 E X Eフ ア イ ル 3 0 5において指定された領域を比較対象側 として、 比較側のバイ トデータをキーと して比較処 理が実行される。
この比較処理は、 前述した図 2 4 Bの場合に対し 比較側と比較対象側が逆になつただけで、 同様の処 理である。 そして、 この比較処理の結果、 図 2 5 A の新 E X Eフア イ ノレ 3 0 6 と旧 E X Eフア イ ノレ 3 0 5 のバイ トデータ a b · · · c で示される一致部分 の一致開始点と一致バイ ト数が算出され、 また、 新 E X Eファ イ ル 3 0 6 で削除されたバイ トデータ D D · · · Dで示される不一致部分の不一致開始点と 不一致バイ ト数が算出されて、 比較処理が終了する < 以上の動作の結果、 新 E X Eファ イ ル 3 0 6 の指 定領域の各バイ トデータをキーとする旧 E X Eファ ィ ノレ 3 0 5 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 2 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 3で、 上述の一致バイ ト数が 6 4 バイ ト以上であるか否かが判定される。
一致バイ ト数力 6 4 ノ ィ ト以上であってステ ップ S 2 1 0 3 の判定が Y E S となった場合には、 ステ ップ S 2 1 0 9で、 上述の不一致部分に関する差分 情報が図 3 の更新ファ イ ル 3 0 7 へライ ト される。 一致バイ ト数が 6 4 バイ トより少な く ステ ップ S
2 1 0 3 の判定が N 0 となった場合には、 ステ ップ S 2 1 0 4 で、 前述したステ ップ S 2 1 0 2 の場合 とは逆に、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域を比 較側、 新 E X Eファ イ ル 3 0 6 の指定領域を比較対 象側と し .、 比較側のバイ トデータをキーと して、 前 述の図 2 2 で示される比較処理が実行される。 この 比較処理の例と して、 前述の図 2 5 Aに対応する動 作が図 2 5 Bに示される。 この比較処理は、 前述の 図 2 4 Aの場合に対して、 比較側と比較対象側が逆 になっただけで、 同様の処理である。 そして、 この 比較処理の結果、 図 2 5 Bの旧 E X E フ ァ イ ル 3 0 5 と新 E X E フ ァ イ ル 3 0 6 のバイ トデータ a b * • · c で示される一致部分の一致開始点と一致バイ ト数が算出され、 また、 新 E X Eフ ァ イ ル 3 0 6で 削除されたバイ トデータ D D · · · Dで示される不 一致部分の不一致開始点と不一致バイ ト数が算出さ れて、 比較処理が終了する。
以上の動作の結果、 旧 E X E フ ァ イ ル 3 0 5 の指 定領域の各バイ トデータをキーとする新 E X Eファ ィ ル 3 0 6 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 4 の比較処理によって、 一 致部分と不一致部分のペアが見つかると、 次にステ ップ S 2 1 0 5で、 全てのバイ 卜が不一致であるか 否かが判定される。
図 2 5 A、 図 2 5 Bの例では、 全てのバイ トが不 一致でな く ステ ップ S 2 1 0 5 の判定が N 0 となる ため、 ステ ップ S 2 1 0 6 で、 前述した ( 1 ) 式、 ( 2 ) 式、 及び ( 3 ) 式に基づいて、 新 E X Eファ ィ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 NEW0LD の方カ 日 E X E フ ァ イ ル 3 0 5 をキーと し た場合の一致バイ ト数の割合 R0LDNEW より小さいか 否かが判定される。
図 2 5 Aと図 2 5 Bの例では、 RNEW0LD=R0LDNEW となるため、 ステ ップ S 2 1 0 8 で、 新 E X Eフ ァ ィ ル 3 0 6 をキーと した場合のステ ップ S 2 1 0 2 の比較処理の結果が選択され、 ステ ッ プ S 2 1 0 9 で、 その比較処理によって得られている不一致部分 に関する差分情報と して、 新 E X Eフ ァ イ ル 3 0 6 において旧 E X Eフ ァ イ ル 3 0 5 のバイ トデータ c と d の間のバイ トデータ D D . · · Dが削除された こ とを示す差分情報が、 更新フ ァ イ ル 3 0 7 へライ ト される。
次に、 図 2 6 Aに示されるように、 新 E X Eファ ィ ル 3 0 6 の指定領域において、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域のバイ トデータ c と d の間に存在 したバイ トデータ列 R R · · · Rの領域がそれと同 じ長さを有する他のバイ トデータ列 R R · · · Rに 置換された場合を考える。
この場合、 まず、 図 2 6 Aに示されるよ う に、 図 2 1 のステ ップ S 2 1 0 2 で、 新 E X Eフア イ ノレ 3 0 6 において指定された領域を比較側、 旧 E X Eフ ア イ ル 3 0 5 において指定された領域を比較対象側 と して、 比較側のバイ トデータをキーと して比較処 理が実行される。 この比較処理は、 まず、 図 2 6 A の T 1 〜丁 9 で示される比較範囲では、 前^の図 2 4 Aの T 1 〜 T 9で示される比較範囲のものと同様 の処理であり、 続いて、 図 2 6 Αの T l 0〜Τ 1 3 で示される比較範囲では、 前述の図 2 5 Αの Τ 4〜 T 7で示される比較範囲のものと同様の処理である < そ して、 この比較処理の結果、 図 2 6 Aの新 E X E フ ァ イ ル 3 0 6 と旧 E X Eフ ァ イ ル 3 0 5 のバイ ト データ a b ' · · cで示される一致部分の一致開始 点と一致バイ ト数が算出され、 また、 新 E X Eフ ァ ィ ル 3 0 6で置換されたバイ トデータ R R ' · - R で示される不一致部分の不一致開始点と不一致バイ ト数が算出されて、 比較処理が終了する。
以上の動作の結果、 新 E X Eフ ァ イ ル 3 0 6の指 定領域の各バイ トデータをキ一とする旧 E X Eフ ァ ィ ル 3 0 5の指定領域の各バイ トデータに対する図 2 1 のステ ッ プ S 2 1 0 2 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 3で、 上述の一致バイ ト数力 6 4ノ イ ト以上であるか否かが判定される。
一致バイ ト数が 6 4バイ ト以上であってステ ップ S 2 1 0 3 の判定が Y E S となった場合には、 ステ ップ S 2 1 0 9で、 上述の不一致部分に関する差分 情報が図 3 の更新フ ァ イ ル 3 0 7へラ イ ト される。 一致バイ ト数が 6 4 バイ トより少な く ステ ップ S 2 1 0 3 の判定が N 0とな っ た場合には、 ステ ップ S 2 1 0 4で、 前述したステ ッ プ S 2 1 0 2 の場合 とは逆に、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域を比 較側、 新 E X Eフ ァ イ ル 3 0 6 の指定領域を比較対 象側と し、 比較側のバイ トデータをキーと して、 前 述の図 2 2 で示される比較処理が実行される。 こ の 比較処理の例と して、 前述の図 2 6 Aに対応する動 作が図 2 6 Bに示される。 この比較処理は、 まず、 図 2 6 Bの T 1〜T 9 で示される比較範囲では、 前 述した図 2 5 Βの Τ 1〜Τ 9 で示される比較範囲の ものと同様の処理であって、 続いて、 図 2 6 8の丁 1 0〜Τ 1 3 で示される比較範囲では、 前述した図 2 4 Βの Τ 4〜Τ 7 で示される比較範囲のものと同 様の処理である。 そ して、 この比較処理の結果、 図 2 6 Βの旧 Ε Χ Εフ ァ イ ル 3 0 5 と新 Ε Χ Εフ ア イ ル 3 0 6 のノ ィ トデータ a b · · · c で示される一 致部分の一致開始点と一致バイ ト数が算出され、 ま た、 新 E X Eフ ァ イ ル 3 0 6 で置換されたバイ トデ ータ R R * · · Rで示される不一致部分の不一致開 始点と不一致バイ ト数が算出されて、 比較処理が終 了する。
以上の動作の結果、 旧 E X Eフ ァ イ ル 3 0 5 の指 定領域の各バイ トデータをキーとする新 E X Eフ ァ ィ ル 3 0 6 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 4 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 5で、 全てのパイ トが不一致であるか 否かが判定される。
図 2 6 A、 図 2 6 Bの例では、 全てのバイ トが不 一致でな く ステ ップ S 2 1 0 5 の判定が N 0 となる ため、 ステ ップ S 2 1 0 6 で、 前述した ( 1 ) 式、 ( 2 ) 式、 及び ( 3 ) 式に基づいて、 新 E X Eファ ィ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW0LD の方カ 日 E X Eフ ァ イ ル 3 0 5 をキーと し た場合の一致バイ ト数の割合 R0LDNEW より小さいか 否かが判定される。
図 2 6 Aと図 2 6 Bの例では、 RNEWDLD=ROLDNEW となるため、 ステ ップ S 2 1 0 8 で、 新 E X Eファ ィ ル 3 0 6 をキ一と した場合のステ ップ S 2 1 0 2 の比較処理の結果が選択され、 ステ ップ S 2 1 0 9 で、 その比較処理によって得られている不一致部分 に関する差分情報と して、 新 E X Eファ イ ル 3 0 6 において旧 E X Eフア イ ノレ 3 0 5 のバイ トデータ c と d の間のバイ トデータ R R . · · Rが置換された こ とを示す差分情報が、 更新ファ イ ル 3 0 7 へライ ト される。
次に、 図 2 7 Aに示されるように、 新 E X Eファ ィ ノレ 3 0 6 の指定領域において、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域のバイ トデータ c と d の間に存在 するバイ トデータ列のう ち、 ノ イ トデ一夕列 R · · • R及び r · · · r の領域がそれと同じ長さを有す る他のバイ トデータ列 R · · · R及び r · · · r に 置換され、 バイ トデータ列 D D ' · · Dが削除され. また、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域のバイ ト データ c と dの間に、 そこに存在していなかった新 たなバイ トデータ列 I I · . ' I が挿入された場合 を考える。
この場合、 まず、 図 2 7 Aに示されるよう に、 図 2 1 のステ ップ S 2 1 0 2で、 新 E X Eファ イ ル 3
0 6 において指定された領域を比較側、 旧 E X Eフ ア イ ル 3 0 5 において指定された領域を比較対象側 と して、 比較側のバイ トデータをキ一と して比較処 理が実行される。 この比較処理は、 図 2 6 Aの場合 と同様であり、 従って、 図 2 7 Aの T 1 〜 T 1 0で 示される比較範囲では、 前述の図 2 4 Α 0 Τ 1 〜 Τ 9で示される比較範囲のものと同様の処理であり、 続いて、 図 2 7 Αの T l 1 〜Τ 1 3で示される比較 範囲では、 前述の図 2 5 Αの Τ 4 ~Τ 7 で示される 比較範囲のものと同様の処理である。 そして、 この 比較処理の結果、 図 2 7 Αの新 Ε Χ Εファ イ ル 3 0 6 と旧 Ε X Εフア イ ノレ 3 0 5 のバイ トデータ a b - · · cで示される一致部分の一致開始点と一致バイ ト数が算出され、 また、 新 E X Eフ ァ イ ル 3 0 6て 挿入、 削除、 及び置換されたバイ トデータ i · - -
1 R · · ' R r · · · r で示される不一致部分の不 一致開始点と不一致バイ ト数が算出されて、 比較処 理が終了する。 以上の動作の結果、 新 E X Eファ イ ル 3 0 6 の指 定領域の各バイ トデータをキーとする旧 E X Eファ ィ ル 3 0 5 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 2 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 3で、 上述の一致バイ ト数が 6 4 バイ ト以上であるか否かが判定される。
一致バイ ト数が 6 4 ノ ィ ト以上であってステ ップ S 2 1 0 3 の判定が Y E S となつた場合には、 ステ ップ S 2 1 0 9 で、 上述の不一致部分に関する差分 情報が図 3 の更新ファ イ ル 3 0 7 へラ イ ト される。
一致バイ ト数が 6 4 バイ トより少な く ステ ップ S 2 1 0 3 の判定が N 0 となつた場合には、 ステップ S 2 1 0 4 で、 前述したステ ップ S 2 1 0 2 の場合 とは逆に、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域を比 較側、 新 E X Eファ イ ル 3 0 6 の指定領域を比較対 象側と し、 比較側のバイ トデ一タをキ一と して、 前 述の図 2 2で示される比較処理が実行される。 この 比較処理の例と して、 前述の図 2 7 Aに対応する動 作が図 2 7 Bに示される。 この比較処理は、 前述の 図 2 6 Bの場合と同様であり、 まず、 図 2 7 Bの T 1 〜 T 9 で示される比較範囲では、 前述した図 2 5 Βの Τ 1 〜 Τ 9 で示される比較範囲のものと同様の 処理であって、 続いて、 図 2 7 Βの T l 0 〜 Τ 1 2 で示される比較範囲では、 前述した図 2 4 Βの Τ 4 〜T 7 で示される比較範囲のものと同様の処理であ る。 そ して、 この比較処理の結果、 図 2 7 Βの旧 Ε Χ Εフ ア イ ノレ 3 0 5 と新 Ε Χ Εフア イ ノレ 3 0 6 のバ ィ トデータ a b · · ' c で示される一致部分の一致 開始点と一致バイ ト数が算出され、 また、 新 E X E フ ァ イ ル 3 0 6 で挿入、 削除、 及び置換されたバイ トデータ I ' . . I R . . ' R r . . . r で示され る不一致部分の不一致開始点と不一致バイ ト数が算 出されて、 比較処理が終了する。
以上の動作の結果、 旧 E X Eファ イ ル 3 0 5 の指 定領域の各バイ トデータをキーとする新 E X Eファ ィ ル 3 0 6 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 4 の比較処理によ って、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 5 で、 全てのバイ トが不一致であるか 否かが判定される。
図 2 7 A、 図 2 7 Bの例では、 全てのバイ トが不 一致て'な く ステ ップ S 2 1 0 5 の判定が N 0 となる ため、 ステップ S 2 1 0 6 で、 前述した ( 1 ) 式、 ( 2 ) 式、 及び ( 3 ) 式に基づいて、 新 E X Eファ ィ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW0LD の方が旧 E X Eファ イ ル 3 0 5 をキーと し た場合の一致バィ ト数の割合 R0LDNEW より小さいか 否かが判定される。
図 2 7 Aと図 2 7 Bの例では、 RNEWOLD=RQLDNEk! となるため、 ステ ップ S 2 1 0 8 で、 新 E X Eファ ィ ル 3 0 6 をキーと した場合のステ ッ プ S 2 1 0 2 の比較処理の結果が選択され、 ステップ S 2 1 0 9 で、 その比較処理によって得られている不一致部分 に関する差分情報が更新フア イル 3 0 7 ヘライ ト さ れる。
こ こで、 図 2 7 Aにおいて、 旧 E X Eフア イ ノレ 3 0 5 の指定領域におけるバイ トデータ c と d の間の バイ ト数の方が、 新 E X Eフ ァ イ ル 3 0 6 の指定領 域におけるバイ トデータ c と dの間のバイ ト数より 多ければ、 まず、 新 E X Eフ ァ イ ル 3 0 6 における 当該バイ ト数分のバイ トデータが置換された旨の差 分情報が更新フ ァ イ ル 3 0 7 へライ ト され、 続いて、 { (旧 E X Eフ ァ イ ル 3 0 5 における当該バイ ト数) 一 (新 E X Eフ ァ イ ル 3 0 6 における当該バイ ト数) 分のバイ トデータが削除された旨の差分情報が更新 フ ァ イ ル 3 0 7 へラ イ ト される。
逆に、 図 2 7 Aにおいて、 旧 E X Eフ ァ イ ル 3 0 5 の指定領域におけるバイ トデータ c と d の間のバ ィ ト数の方が、 新 E X Eフ ァ イ ル 3 0 6 の指定領域 におけるバイ トデータ c と d の間のバイ ト数より少 なければ、 まず、 旧 E X Eフ ァ イ ル 3 0 5 における 当該バイ ト数分のバイ トデータが置換された旨の差 分情報が更新フア イ ル 3 0 7 ヘラ イ ト され、. 続いて-. { (新 E X Eフ ァ イ ル 3 0 6 における当該バイ ト数) 一 (旧 E X E フ ァ イ ル 3 0 5 における当該バイ ト数) 分のバイ トデータが挿入された旨の差分情報が更新 フ ァ イ ル 3 0 7 へライ ト される。
また、 図 2 7 Aにおいて、 旧 E X Eフア イ ノレ 3 0 5 の指定領域におけるバイ トデータ c と d の間のバ ィ ト数が、 新 E X E フ ァ イ ル 3 0 6 の指定領域にお けるバイ トデータ c と d の間のバイ ト数と等しけれ ば、 旧 E X E フ ァ イ ル 3 0 5又は新 E X E フ ァ イ ル 3 0 6 における当該バイ ト数分のバイ トデータが置 換された旨の差分情報が更新フ ァ イ ル 3 0 7 へライ ト される。
最後に、 図 2 8 A、 図 2 8 Bに示されるよ う な特 殊な例を考える。 この例では、 新 E X E フ ァ イ ル 3 0 6 の指定領域において、 旧 E X E フ ァ イ ル 3 0 5 の指定領域の先頭のバイ トデータ a の手前にバイ ト データ列 I I · · · I が挿入され、 旧 E X Eフ ア イ ル 3 0 5 の指定領域のバイ トデータ c と d の間に存 在したバイ トデータ列 D D · · · Dが削除された場 合であって、 挿入されたバイ トデータ列 I I ' · · I と削除されたバイ トデータ列 D D · · · Dが偶然 に一致しているような場合が示されている。
この場合、 まず、 図 2 8 Aに示されるよう に、 図 2 1 のステ ッ プ S 2 1 0 2 で、 新 E X E フ ァ イ ル 3 0 6 において指定された領域を比較側、 旧 E X Eフ ア イ ル 3 0 5 において指定された領域を比較対象側 と して、 比較側のバイ トデータをキーと して比較処 理が実行される。 この比較処理は、 図 2 8 Aの T 1 〜 T 3で示される比較範囲では、 前述の図 2 5 Aの T 4〜 T 6で示される比較範囲のものと同様の処理 であり、 続いて、 図 2 8 Αの Τ 4〜Τ 6で示される 比較範囲では、 前述の図 2 4 Αの Τ 1 〜Τ 3で示さ れる比較範囲のものと同様の処理である。 なお、 図 2 8 Αの Τ 3→Τ 4 の変化時には、 最初に新 Ε Χ Ε フ ァ イ ル 3 0 6上の挿入された第 1番目のバイ トデ —タ I と旧 Ε Χ Εフ ァ イ ル 3 0 5上の各バイ トデー タ a b · · · c とが不一致となった後に、 新 E X E フ ァ イ ル 3 0 6上の挿入された第 1番目のバイ トデ ータ I と旧 E X Eフ ァ イ ル 3 0 5上の新 E X Eフ プ ィ ル 3 0 6 において削除された第 1番目のバイ トデ ータ Dとがー致した状態となるため、 ステ ップ S 2
2 0 5 の判定は N 0となる。
そして、 図 2 8 Aの T 6で示される処理の後、 ス テツプ S 2 2 0 6で、 変数 src に新 E X Eフ ァ イ ル
3 0 6上のバイ トデータ a のァ ドレスが代入され、 変数 di stに旧 E X Eフ ァ イ ル 3 0 5上のバイ トデ一 タ dのア ドレスが代入されて、 ステ ップ S 2 2 0 4 が実行された時点で、 変数 src で示されるア ドレス における新 E X Eフ ァ イ ル 3 0 6 のバイ トデータ a と変数 distで示されるァ ド レスにおける旧 E X Eフ ア イ ル 3 0 5 のバイ トデータ d とが不一致となり、 その判定が N Oとなる。 この不一致状態は、 最初に 新 E X Eフ ァ イ ル 3 0 6上の挿入された各バイ トデ —タ I I · · · I と旧 E X Eフ ァ イ ル 3 0 5上の各 バイ トデータ a b · · ' c とが不一致となり、 更に, 新 E X Eフ ァ イ ル 3 0 6上の挿入された各バイ トデ ータ I I · · · I と旧 E X Eフ ァ イ ル 3 0 5上の新 E X Eフ ァ イ ル 3 0 6 において削除された各バイ ト データ D D ' · · Dとが一致した後の不一致状態で あるため、 ステ ップ S 2 2 0 7 の判定は Y E S とな つて、 ステ ップ S 2 2 1 1 が実行される。 ステ ップ S 2 2 1 1 では、 図 2 8 Aの旧 E X Eフ ァ イ ル 3 0 5上のバイ トデータ a b · · · cで示される不一致 部分の不一致開始点と不一致バイ ト数が算出され、 また、 新 E X Eフ ァ イ ル 3 0 6上の挿入されたバイ トデータ I I · · · I と旧 E X Eフ ァ イ ル 3 0 5上 の新 E X Eフ ァ イ ル 3 0 6で削除されたバイ トデー タ D D ' · ' Dとで示される一致部分の一致開始点 と一致バイ ト数が算出されて、 比較処理が終了する, 以上の動作の結果、 新 E X Eフ ァ イ ル 3 0 6 の指 定領域の各バイ トデータをキーとする旧 E X Eフ ァ ィ ル 3 0 5 の指定領域の各バイ トデータに対する図 2 1 のステ ップ S 2 1 0 2 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次にステ ップ S 2 1 0 3で、 上述の一致バイ ト数力く 6 4ノ、'ィ ト以上であるか否かが判定される。 今、 図 2 8 Aにおいて、 一致部分であるバイ トデ ータ列 I I . ' · I ( = D D · · ' D ) のバイ ト数 が例えば数バイ ト程度と少な く 、 不一致部分である バイ トデータ列 a b · · · cのバイ ト数が多い場合 には、 一致部分が短く 不一致部分が長い結果となる , このよ う な場合には、 ステ ップ S 2 1 0 3 の判定 が N 0となる結果、 ステ ップ S 2 1 0 4で、 前述し たステ ッ プ S 2 1 0 2 の場合とは逆に、 旧 E X Eフ ア イ ル 3 0 5 の指定領域を比較側、 新 E X Eフア イ ル 3 0 6 の指定領域を比較対象側と し、 比較側のバ ィ トデータをキ一と して、 前述の図 2 2で示される 比較処理が実行される。 この比較処理の例と して、 前述の図 2 8 Aに対応する動作が図 2 8 Bに示され る。 この比較処理は、 図 2 8 Bの T 1 〜丁 3で示さ れる比較範囲では、 前述の図 2 4 ∑ の丁 4〜丁 6で 示される比較範囲のものと同様の処理であり、 い て、 図 2 8 Bの Τ 4〜 Τ 6で示される比較範囲では 前述の図 2 4 Βの Τ 1 〜Τ 3で示される比較範囲の ものと同様の処理である。
そして、 図 2 8 Βの Τ 6で示される処理の後、 ス テ ツプ S 2 2 0 6で、 変数 src に旧 E X Eフ ァ イ ル 3 0 5上のバイ トデータ Dのァ ド レスが代入され、 変数 di stに新 E X Eフ ァ イ ル 3 0 6上のバイ トデー タ dのァ ド レスが代入されて、 ステ ップ S 2 2 0 4 が実行された時点で、 変数 src で示されるァ ド レ ス における旧 E X Eフ ァ イ クレ 3 0 5のバイ トデータ D と変数 distで示されるァ ド レスにおける新 E X Eフ ア イ ル 3 0 6 のバイ トデータ d とが不一致となり、 その判定が N Oとなる。 こ の不一致状態は、 最初に 旧 E X Eフ ア イ ノレ 3 0 5 のバイ トデータ a と新 E X Eフ ァ イ ル 3 0 6上の挿入された各バイ トデータ I
1 · · ' I とが不一致となり、 更に、 旧 E X Eファ ィ ル 3 0 5上の各バイ トデータ a b ' · · c と新 E X Eフ ァ イ ル 3 0 6上の各バイ トデータ a b ' · · c とが一致した後の不一致状態であるため、 ステ ン プ S 2 2 0 7 の判定は Y E S となって、 ステ ップ S
2 2 1 1 が実行される。 ステ ップ S 2 2 1 1 では、 図 2 8 Bの新 E X Eフ ァ イ ル 3 0 6上のバイ トデー タ I I · ♦ · I で示される不一致部分の不一致開始 点と不一致バイ ト数が算出され、 また、 旧 E X Eフ ア イ クレ 3 0 5 と新 E X Eフ ァ イ ル 3 0 6上のバイ ト データ a b · · · cで示される一致部分の一致開始 点と一致バイ ト数が算出されて、 比較処理が終了す る。
以上の動作の結果、 旧 E X Eフ ァ イ ル 3 0 5 の指 定領域の各バイ トデ一タをキ一とする新 E X Eフ ァ ィ ル 3 0 6 の指定領域の各バイ トデータに対する図 2 1 のステ ッ プ S 2 1 0 4 の比較処理によって、 一 致部分と不一致部分のペアが見つかる と、 次.にステ ップ S 2 1 0 5で、 全てのバイ トが不一致であるか 否かが判定される。
図 2 8 A、 図 2 8 Bの例では、 全てのバイ トが不 一致でな く ステ ップ S 2 1 0 5 の判定が N 0 となる ため、 ステ ップ S 2 1 0 6 で、 前述した ( 1 ) 式、 ( 2 ) 式、 及び ( 3 ) 式に基づいて、 新 E X Eファ ィ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW0LD の方が旧 E X Eフ ァ イ ル 3 0 5 をキーと し た場合の一致バィ ト数の割合 R0LDNEW より小さいか 否かが判定される。
今、 前述したように、 図 2 8 Bにおいて、 一致部 分であるバイ トデータ列 a b ' · · c のノ イ ト数が 多 く、 不一致部分であるバイ トデータ列 I I · · · I のバイ ト数が例えば数バイ ト程度と少ない場合に は、 一致部分が長く 不一致部分が短い結果となる。 従って、 図 2 8 Aと図 2 8 Bの例では、 RNEW0LD < R0LDNEW となる。 前述したよう に、 更新フ ァ イ ル 3 0 7 には、 不一致部分の差分情報が格納されるた め、 一致部分はなるべ く 多い方がよい。 従って、 図 2 8 A及び図 2 8 Bの場合のよう に、 新 E X Eファ ィ ル 3 0 6 をキーと した場合の一致バイ ト数の割合 RNEW0LD の方力く旧 E X Eフ ァ イ ル 3 0 5 をキーと し た場合の一致バイ ト数の割合 R0LDNEW より小さ く ス テ ツプ S 2 1 0 6 の判定が Y E Sの場合には、 ステ ッ プ S 2 1 0 7 で、 旧 E X Eフ ァ イ ル 3 0 5 をキー と した場合のステ ップ S 2 1 0 4 の比較処理の結果 が選択され、 ステ ップ S 2 1 0 9 で、 その比較処理 によって得られている不一致部分に関する差分情報 と して、 新 E X Eファ イ ル 3 0 6 にぉぃて旧 £ £ フ ア イ ノレ 3 0 5 のバイ トデータ a で示されるァ ド レ スの手前にバイ トデータ I I · ' · I が挿入された こ とを示す差分情報が、 更新ファ イ ル 3 0 7 へラ イ ト される。
以上説明したよう にして、 差分抽出処理部 3 0 4 において差分抽出処理が実行される。
図 2 9 A、 図 2 9 Bに、 更新ファ イ ル 3 0 7 のデ —タ構造を示す。
更新ファ イ ル 3 0 7 の各レコー ドは、 図 2 9 Aに 示されるよう に、 そのレコー ドの属性を示すデータ RdcordIDと、 旧 E X Eファ イ ル 3 0 5 に対するその レコー ドの処理位置を示すデータ DataOiiset -、 更新 される実データの長さを示すデータ DataLength及び 更新される実データ配列 Data [η] とから構成される,
RdcordIDの属性は、 図 2 9 Bに示される。
まず、 値が 0 の RdcordIDは、 そのレコー ドが置換 レコー ドである こ とを示レ の場合には、 旧 E X
Eファ イ ル 3 0 5上のデ一タ DataOfisetで示される 位置から、 データ DataLengthで示される長さのデー タが、 実データ配列 Data [n] で示されるデータに置 換される。
また、 値が 1 の Rdcord I Dは、 そのレコー ドが挿入 1 レコー ドであるこ とを示し、 この場合には、 旧 E X Eフ ァ イ ル 3 0 5上のデータ DataOffsetで示される 位置から、 データ DataLengthで示される長さの実デ —タ配列 Data [n] で示されるデータが挿入される。
5 更に、 値が 2 の RecordIDは、 そのレコー ドが削除 レコー ドである ことを示し、 この場合には、 旧 E X Eフ ァ イ ル 3 0 5上のデータ DataOffsetで示される 位置から、 データ DataLengthで示される長さのデー タが削除される。 なお、 この場合には、 実データ配
10 列 Data [n] は付加されていない。
このように生成された更新ファ イ ル 3 0 7 に基づ いて旧 E X Eフ ァ イ ル 3 0 5が更新される場合の動 作は、 更新フ ア イ ノレ 3 0 7 力、ら 1 つ 1 つレコー ドが 取り出され、 各レコー ドに対して上述の各レコー ド
15 属性毎の処理が実行される動作と して、 簡単に実現 される
以上説明した好適実施例は、 本発明を' システ ムのも とで実行可能な E X Eフ ァ イ ルの差分抽出処 理に適用したものであって、 DOS EXE 形式の領域、 20 EXEヘ ッダ領域、 各テーブル部領域、 セグメ ン トデータ領域、 及びリ ソース領域のそれぞれの論理 単位毎に、 対応付けが行われた上で差分抽出処理が 実行される。 しかし、 本発明はこれに限られる もの ではな く 、 他の論理単位、 例えばベージデータ単位 25 などで対応付けが行われた上で差分抽出処理が実行
According PCT Article 21(6) this part should be omitted. (-^ ) page Q_J_
line /7_ 1 されるよう に構成する こ ともできる。
図 3 0 は、 素 オペレーテ ィ ングシステム のもとで実行可能な E X Eファ ィ ルの形式の一例を 示した図である。
5 こ のよ う な E X E フ ァ イ ルについて差分が抽出さ れる場合にも、 上述した好適実施例と基本的に同様 の本発明に基づく手法を適用する こ とができる。
図 3 0 に示される構成を有する E X E フ ァ イ ルは-、 前述した図 4 の E X E フ ァ イ ルの場合と同様に、 コ 10 ンピュ一タのための従来からある シ ングルタスクオ ペレ一テ ィ ングシステムの 1 つである 素 システ ムのも とでも実行可能なよ う に構築されている。 そ のため、 この E X E フ ァ イ ルは、 図 3 0 に示される よう に、 米 EXE形式の領域と 常 EXE 形 15 式の領域とから構成されている。
まず、 フ ァ イ ルの前半部分には、 E XE形式 の領域が存在する。 この EXE形式の領域は、 ■^Γ 用プロ グラ ムを実行するための各種情報及び 後述する EXE ヘッダへのポイ ンタ情報等 20 が格納される EXEヘッダ領域と、 素 シス テムのもとで動作するプログラ ムの本体が格納され る特には図示しない □ - ドモ ジユール領域と から構成される。
フ ァ イ ルの後半部分には、 ΕλΈ 形式の 25 領域が存在する。 この ' Ε Χ Ε 形式の領域は、
According PCT Article 21(6) this part should be omitted.ぼ)
Figure imgf000074_0001
1 用プログラムを実行するための各種情報 等が格納される 素 EXE ヘッダ領域、 後述す るセク ショ ン領域を参照するためのセク ショ ンディ レク ト リ領域、 このセク シ ョ ンデ ィ レク ト リ領域に
5 よって参照され ラ ^ システムのもとで動作す るプロ グラ ムの本体が格納されるセ ク シ ョ ン領域な どから構成される。
上述のよう な形式を有する E X E フ ァ ィ ルに対し て差分抽出処理が実行される場合にも、 前述した好
10 適実施例の場合と同様に、 素 EXEヘッダ領域、
i EXE ヘッダ領域、 セ ク ショ ンディ レク ト リ領域、 及びセク シ ョ ン領域などのそれぞれの論理 的な領域毎に、 旧 E X E フ ァ イ ルと新 E X Eフア イ ルとで差分抽出処理を実行する こ とができ る。
15 この場合、 例えば 素 EXEヘッダ領域内の各種 情報を判定する こ とによ り、 前述した好適実施例に おける図 5 のステップ S 5 0 1 〜 S 5 0 4 と同じよ うなチュ ッ クを行う こ とができ る。
次に、 f EXE ヘッダ領域の先頭ア ド レス
20 は、 EXEヘッダ領域に設定されているオフセ ッ トア ド レスにより取得でき、 EXE へッ ダ領域の範囲は、 その領域内に設定されているへッ ダサイ ズを参照するこ とにより取得できる。
また、 上述の f EXE ヘッダ領域に続く領
25 域と してセ ク シ ョ ンディ レク ト リ領域の先頭ァ ド レ
According PCT Article 21(6) this part should be omitted. (^) page Z^.
line /; ^ , / , / / , /f- / £ 1 スを取得でき、 EXE ヘッダ領域内に設定 されているセク ショ ン数を参照する こ とにより、 セ ク シヨ ンディ レク ト リ領域の範囲を取得できる。 更に、 セク ショ ンディ レク ト リ領域の情報を使つ
5 て、 複数のセク ショ ン領域のそれぞれの位置を取得 できる。
以上のようにして取得された各領域毎に、 前述し た好適実施例における図 3 に示される差分抽出処理 部 3 0 4 と同様のモジュールを起動する こ とによつ
10 て、 旧 E X Eファ イ ルと新 E X Eファ イ ルとで差分 抽出処理を実行するこ とができる。
そのほか、 上述のファ ィ ルに各種テーブルゃリ ソ 一スが追加されるような場合においても、 前述した 好適実施例の場合と同様の処理によって、 各論理単
15 位間の対応付けを行った上で、 旧 E X Eファ イ ルと 新 E X Eファ イ ルとで差分抽出処理を実行する こ と ができる。
産業 上 の 利 用 可 能 性
20 以上説明したように、 本発明によれば、 差分抽出 処理が実行される場合に、 論理単位毎に、 対応付け が行われた上で差分抽出処理が実行されるため、 旧 実行ファ ィ ルと新実行ファ ィ ルとの間で、 各領域の データが一致する確率が高 く なり、 その結果、 生成
25 される更新フ ァ イ ルのサイ ズを大幅に削滅する こ と
According PCT Article 21(6) this part should be omitted.
page 一 7
line I が可能となる。
これにより、 例えばネ ッ ト ワークを介して更新フ ァ ィ ルが配信される場合などで、 新 E X Eファ イ ル がそのまま配信される場合に比較して回線の使用効 率を大幅に向上させるこ とが可能となる。

Claims

請 求 の 範 面
1 . 旧実行フア イ ル ( 3 0 5 ) を新実行フ ア イ ル ( 3 0 6 ) に更新するための更新ファ イ ル ( 3 0 7 ) を、 新実行フア イ ル ( 3 0 6 ) の旧実行フ ア イ ル ( 3 0 5 ) に対する差分と して抽出する実行フ ア イ ル差分抽出装置であって、
前記旧実行フ ァ イ ル ( 3 0 5 ) 及び前記新実行フ ア イ ル ( 3 0 6 ) のそれぞれを、 所定の論理単位毎 に複数の領域に分割する領域分割手段 ( 3 0 1 ) と、 該領域分割手段 ( 3 0 1 ) によって分割された前 記旧実行フ ァ イ ル ( 3 0 5 ) の複数の領域と前記新 実行フ ァ イ ル ( 3 0 6 ) の複数の領域との間で、 互 いに対応する領域同士を対応付けする領域対応付け 手段 ( 3 0 2、 3 0 3 ) と、
該領域対応付け手段 ( 3 0 2、 3 0 3 ) によって 対応付けされた前記旧実行フ ア イ ル ( 3 0 5 ) の領 域と前記新実行フア イ ル ( 3 0 6 ) の領域との間で、 前記旧実行ファ イ ル ( 3 0 5 ) の領域のデータに対 する前記新実行フ ァ イ ル ( 3 0 6 ) の領域のデータ の差分情報を抽出する差分抽出処理手段 ( 3 0 4 ) と、
該差分抽出処理手段 ( 3 0 4 ) において抽出され た差分情報を前記更新フア イ ル ( 3 0 7 ) に格納す る と共に、 前記領域対応付け手段 ( 3 0 2、 3 0 3 ) において対応付けが行われなかった前記旧実行ファ ィノレ ( 3 0 5 ) の領域又は前記新実行フア イル ( 3 0 6 ) の領域に対応する差分情報を抽出しそれを前 記更新フ ァ イ ル ( 3 0 7 ) に格納する更新フ ァ イ ル 生成手段 ( 3 0 4、 3 0 2、 3 0 3 ) と、
を舍むことを特徴とする実行フ ァ イ ル差分抽出装
2. ク レーム 1 に記載の装置であって、
前記論理単位は、 前記旧実行フア イル ( 3 0 5 ) 又は前記新実行フ ァ イ ル ( 3 0 6 ) のデータ属性の 単位であるセグメ ン ト、 リ ソース、 ヘッダ、 又はテ 一ブルである、
ことを特徴とする実行フ ァ ィル差分抽出装置。
3. ク レーム 1 に記載の装置であって、
前記論理単位は、 前記旧実行フア イル ( 3 0 5 ) 又は前記新実行フア イル ( 3 0 6 ) のデータ属性の 単位であるセク ショ ン、 セク ショ ンディ レク ト リ、 又はヘッダである、
ことを特徴とする実行フア イル差分抽出装置。
4. ク レーム 1 に記載の装置であって、
前記差分情報は、 前記新実行フ ァ イ ル ( 3 0 6 ) において前記旧実行フ ァ イ ル ( 3 0 5 ) に対してデ ータ の挿入、 削除、 又は置換が行われる旨の属性情 報、 その対象となるデータの長さ情報、 及びその対 象となるデータ とから構成される、 こ とを特徴とする実行フ ァ イ ル差分抽出装置。
5. ク レーム 1 に記載の旧実行フ ァ イ ル ( 3 0 5 ) 及び更新フア イ ル ( 3 0 7 ) とから新実行フア イ ル
( 3 0 6 ) を生成する実行フ ァ イ ル更新装置であつ て、
前記更新フ ァ イ ル ( 3 0 7 ) から前記差分情報を 順次取り出し、 該差分情報と前記旧実行フ ァ イ ル ( 3 0 5 ) とから、 前記新実行フア イ ル ( 3 0 6 ) を生成するフ ァ イ ル更新手段を舍む、
こ とを特徴とする実行フア イ ル更新装置。
6. 新実行フ ァ イ ル ( 3 0 6 ) の旧実行フ ア イ ノレ ( 3 0 5 ) に対する差分が抽出されて更新フ ァ イ ル ( 3 0 7 ) とされ、 旧実行フ ア イ ル ( 3 0 5 ) と更 新フ ァ イ ル ( 3 0 7 ) とから新実行フ ァ イ ル ( 3 0 6 ) が生成される実行フ ァ イ ル差分抽出 更新装置 において、
前記旧実行フ ァ イ ル ( 3 0 5 ) 及び前記新実行フ ア イ ル ( 3 0 6 ) のそれぞれを、 所定の論理単位毎 に複数の領域に分割する領域分割手段 ( 3 0 1 ) と 該領域分割手段 ( 3 0 1 ) によって分割された前 記旧実行フ ァ イ ル ( 3 0 5 ) の複数の領域と前記新 実行フア イ ル ( 3 0 6 ) の複数の領域との間で、 互 いに対応する領域同士を対応付けする領域対応付け 手段 ( 3 0 2、 3 0 3 ) と、
該領域対応付け手段 ( 3 0 2、 3 0 3 ) によって 対応付けされた前記旧実行フア イル ( 3 0 5 ) の領 域と前記新実行フア イ ル ( 3 0 6 ) の領域との間で、 前記旧実行フ ァ イ ル ( 3 0 5 ) の領域のデータに対 する前記新実行フア イル ( 3 0 6 ) の領域のデータ の差分情報を抽出する差分抽出処理手段 ( 3 0 4 ) と、
該差分抽出処理手段 ( 3 0 4 ) において抽出され た差分情報を前記更新フ ア イ ル ( 3 0 7 ) に格納す ると共に、 前記領域対応付け手段 ( 3 0 2、 3 0 3 ) において対応付けが行われなかつた前記旧実行ファ ィ ル ( 3 0 5 ) の領域又は前記新実行フ ァ イ ル ( 3 0 6 ) の領域に対応する差分情報を抽出しそれを前 記更新フ ア イ ル ( 3 0 7 ) に格納する更新フ ア イ ル 生成手段 ( 3 0 4、 3 0 2、 3 0 3 ) と、
前記更新フ ァ ィ ル ( 3 0 7 ) から前記差分情報を 順次取り出し、 該差分情報と前記旧実行フア イル ( 3 0 5 ) とから、 前記新実行フア イル ( 3 0 6 ) を生成するフ ァ イ ル更新手段と、
を舍むことを特徴とする実行フ ァ イ ル差分抽出ノ 更新装置。
7. 旧実行フ ァ イ ルを新実行フ ァ イ ルに更新するた めの更新フ ァ イ ルを、 新実行フ ァ イ ルの旧実行フ 7 ィ ルに対する差分として抽出する実行フア イ ル差分 抽出方法であつて、
前記旧実行フ ァ イ ル及び前記新実行フ ァ イ ルのそ れぞれを、 所定の論理単位毎に複数の領域に分割し 該領域の分割によって分割された前記旧実行フ ァ ィ ルの複数の領域と前記新実行フ ァ イ ルの複数の領 域との間で、 互いに対応する領域同士を対応付けし 該領域の対応付けによって対応付けされた前記旧 実行フ ァ ィ ルの領域と前記新実行ファ ィ ルの領域と の間で、 前記旧実行フ ァ イ ルの領域のデータに対す る前記新実行フ ァ イ ルの領域のデータ の差分情報を 抽出し、
該抽出された差分情報を前記更新ファ ィ ルに格納 する と共に、 前記領域の対応付けにおいて対応付け が行われなかつた前記旧実行フ ァ イ ルの領域又は前 記新実行フ ァ イ ルの領域に対応する差分情報を抽出 しそれを前記更新フ ァ イ ルに格納する、
こ とを特徴とする実行フ ァ イ ル差分抽出方法。
PCT/JP1994/000454 1993-03-22 1994-03-22 Apparatus and method for extracting and updating finite difference in executable file WO1994022086A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
GB9423581A GB2281990B (en) 1993-03-22 1994-03-22 Executable file difference extraction/update system and executable file difference extraction method
US08/343,444 US5752039A (en) 1993-03-22 1994-03-22 Executable file difference extraction/update system and executable file difference extraction method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP5062181A JPH06274384A (ja) 1993-03-22 1993-03-22 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
JP5/62181 1993-03-22

Publications (1)

Publication Number Publication Date
WO1994022086A1 true WO1994022086A1 (en) 1994-09-29

Family

ID=13192711

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP1994/000454 WO1994022086A1 (en) 1993-03-22 1994-03-22 Apparatus and method for extracting and updating finite difference in executable file

Country Status (3)

Country Link
US (1) US5752039A (ja)
JP (1) JPH06274384A (ja)
WO (1) WO1994022086A1 (ja)

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760840B1 (en) * 1994-03-15 2004-07-06 Kabushiki Kaisha Toshiba File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing
TW344178B (en) * 1996-12-16 1998-11-01 Toshiba Co Ltd Information presentation device and method
WO1999004336A1 (en) * 1997-07-15 1999-01-28 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
US6115720A (en) * 1997-12-15 2000-09-05 International Business Machines Corportion Method and apparatus for performing a health check on a database system
US6182285B1 (en) * 1997-12-15 2001-01-30 International Business Machines Corporation Method and apparatus for generating a default list
JP3204206B2 (ja) * 1998-03-13 2001-09-04 日本電気株式会社 部分抽出型リモートメンテナンス方式
IL125846A0 (en) * 1998-08-19 1999-04-11 Emony Incremental program update
GB2341462B (en) * 1998-09-12 2003-06-11 Ibm Method for deployment of incremental versions of applications
JP2000137604A (ja) * 1998-10-30 2000-05-16 Oki Electric Ind Co Ltd データ引き継ぎシステム
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6654746B1 (en) 1999-05-03 2003-11-25 Symantec Corporation Methods and apparatuses for single-connection file synchronization workgroup file update
DE29913057U1 (de) 1999-07-30 2000-09-07 Siemens Ag Visualisierungssystem für technische Prozessdaten
US6789128B1 (en) * 2000-03-11 2004-09-07 Oracle International Corporation System and method for reducing network traffic between two computing devices
US7146305B2 (en) * 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US7725889B2 (en) 2003-01-13 2010-05-25 Hewlett-Packard Development Company, L.P. Mobile handset capable of updating its update agent
US8875116B2 (en) * 2000-11-17 2014-10-28 Hewlett-Packard Development Company, L.P. Network for updating firmware and / or software in wireless communication devices
US20040068721A1 (en) * 2000-11-17 2004-04-08 O'neill Patrick Network for updating firmware and / or software in wireless communication devices
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US7401320B2 (en) * 2000-11-17 2008-07-15 Hewlett-Packard Development Company, L.P. Operator network that routes customer care calls based on subscriber/device profile and CSR skill set
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US7082549B2 (en) * 2000-11-17 2006-07-25 Bitfone Corporation Method for fault tolerant updating of an electronic device
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
JP2002236583A (ja) * 2001-02-07 2002-08-23 Fujitsu Ten Ltd 組込み用ソフトウェアモジュール
JP2002278592A (ja) * 2001-03-21 2002-09-27 Fujitsu Ltd データ照合プログラム、データ照合方法およびデータ照合装置
JP4205350B2 (ja) * 2002-02-28 2009-01-07 富士通株式会社 差分データ生成方法、プログラム、記録媒体及び装置
US20040194081A1 (en) * 2002-03-23 2004-09-30 Iyad Qumei Update system for facilitating firmware/software update in a mobile handset
US7369851B2 (en) * 2002-04-19 2008-05-06 Hewlett-Packard Development Company, L.P. Communications network capable of determining SIM card changes in electronic devices
US8233893B2 (en) * 2002-08-22 2012-07-31 Hewlett-Packard Development Company, L.P. Mobile handset update package generator that employs nodes technique
US7340736B2 (en) * 2002-08-22 2008-03-04 Hewlett-Packard Development Company, L.P. Electronic device with an update agent that employs preprocessing techniques for update
US7669197B1 (en) 2002-09-12 2010-02-23 Hewlett-Packard Development Company, L.P. Embedded system employing component architecture platform
US7472380B1 (en) 2002-09-23 2008-12-30 Hewlett-Packard Development Company, L.P. Processing system with component architecture platform support
US7461372B2 (en) * 2002-10-11 2008-12-02 Hewlett-Packard Development Company, L.P. System for optimizing distribution of information employing a universal dictionary
WO2004038546A2 (en) * 2002-10-21 2004-05-06 Bitfone Corporation System with required enhancements to syncml dm environment to support firmware updates
US7984435B2 (en) * 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US20040093592A1 (en) 2002-11-13 2004-05-13 Rao Bindu Rama Firmware update in electronic devices employing SIM card for saving metadata information
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US6996818B2 (en) * 2002-11-22 2006-02-07 Bitfone Corporation Update system for facilitating software update and data conversion in an electronic device
US7434216B1 (en) 2002-11-25 2008-10-07 Hewlett-Packard Development Company, L.P. Update package generator that employs genetic evolution to determine bank order
JP4302970B2 (ja) 2002-12-16 2009-07-29 富士通株式会社 差分更新方法、プログラム及び装置
AU2003300431A1 (en) * 2002-12-31 2004-07-29 Bitfone Corporation Management of service components installed in an electronic device in a mobile services network
US7890427B1 (en) 2003-01-09 2011-02-15 Hewlett-Packard Development Company, L.P. Authentication of notifications received in an electronic device in a mobile services network
US7480907B1 (en) 2003-01-09 2009-01-20 Hewlett-Packard Development Company, L.P. Mobile services network for update of firmware/software in mobile handsets
WO2004066091A2 (en) * 2003-01-21 2004-08-05 Bitfone Corporation Update system capable of updating software across multiple flash chips
JP4153324B2 (ja) * 2003-01-31 2008-09-24 松下電器産業株式会社 差分データ生成装置及び方法、更新後データ復元装置及び方法、並びにプログラム
WO2004072773A2 (en) * 2003-02-11 2004-08-26 Bitfone Corporation Electronic device supporting multiple update agents
US8082339B2 (en) 2003-02-28 2011-12-20 Hewlett-Packard Development Company, L.P. Electronic device network having graceful denial of service
US20040230965A1 (en) * 2003-02-28 2004-11-18 Harri Okkonen Mobile handset network that facilitates interaction between a generic intelligent responsive agent and a service broker server
US7689981B1 (en) 2003-02-28 2010-03-30 Hewlett-Packard Development Company, L.P. Mobile handset with efficient interruption point detection during a multiple-pass update process
US7881745B1 (en) 2003-03-10 2011-02-01 Hewlett-Packard Development Company, L.P. Electronic device network employing provisioning techniques to update firmware and/or software in electronic devices
US7356727B1 (en) 2003-03-10 2008-04-08 Hewlett-Packard Development Company, L.P. Electronic device employing efficient fault tolerance
US7548986B1 (en) 2003-03-17 2009-06-16 Hewlett-Packard Development Company, L.P. Electronic device network providing streaming updates
US7657884B2 (en) * 2003-03-24 2010-02-02 Hewlett-Packard Development Company, L.P. Electronic device supporting multiple update agents
US7587411B2 (en) * 2003-03-27 2009-09-08 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7975147B1 (en) 2003-03-31 2011-07-05 Hewlett-Packard Development Company, L.P. Electronic device network supporting enciphering and deciphering and update generation in electronic devices
US7143115B2 (en) * 2003-04-15 2006-11-28 Pocket Soft, Inc. Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files
US7987449B1 (en) 2003-05-22 2011-07-26 Hewlett-Packard Development Company, L.P. Network for lifecycle management of firmware and software in electronic devices
US7644404B2 (en) * 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7747994B1 (en) 2003-06-04 2010-06-29 Hewlett-Packard Development Company, L.P. Generator based on multiple instruction streams and minimum size instruction set for generating updates to mobile handset
US7584466B1 (en) 2003-06-16 2009-09-01 Hewlett-Packard Development Company, L.P. Management tree management in a mobile handset
US8046753B1 (en) 2003-06-18 2011-10-25 Hewlett-Packard Development Company, L.P. Mobile handset with symbian OS and update agent
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
EP2273361B1 (en) * 2003-06-23 2012-09-19 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
WO2005001665A2 (en) * 2003-06-27 2005-01-06 Bitfone Corporation System and method for downloading update packages into a mobile handset in a carrier network
US7343443B1 (en) * 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
WO2005008940A2 (en) * 2003-07-09 2005-01-27 Bitfone Corporation Carrier network capable of conducting remote diagnostics in a mobile handset
US7366125B1 (en) 2003-07-24 2008-04-29 Bbn Technologies Corp. Extensible satellite communication system
US7861211B2 (en) * 2003-07-29 2010-12-28 Hewlett-Packard Development Company, L.P. Mobile handset with update agent implemented in hardware
US7886093B1 (en) 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
EP1660996A2 (en) * 2003-09-03 2006-05-31 Bitfone Corporation Tri-phase boot process in electronic devices
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7668612B1 (en) 2003-09-18 2010-02-23 Hewlett-Packard Development Company, L.P. System and method for efficient manufacture and update of electronic devices
US7694293B2 (en) * 2003-09-26 2010-04-06 Hewlett-Packard Development Company, L.P. Update package catalog for update package transfer between generator and content server in a network
ATE539567T1 (de) * 2003-10-03 2012-01-15 Hewlett Packard Development Co Netzwerk und verfahren zur anmeldung mobiler geräte und zur verwaltung der mobilen geräte
US7716276B1 (en) 2003-11-17 2010-05-11 Hewlett-Packard Development Company, L.P. Network that supports user-initiated device management
US20050125412A1 (en) * 2003-12-09 2005-06-09 Nec Laboratories America, Inc. Web crawling
US20050132351A1 (en) * 2003-12-12 2005-06-16 Randall Roderick K. Updating electronic device software employing rollback
US7797693B1 (en) 2003-12-12 2010-09-14 Hewlett-Packard Development Company, L.P. NAND mobile devices capable of updating firmware or software in a manner analogous to NOR mobile devices
US9323515B1 (en) 2004-01-16 2016-04-26 Qualcomm Incorporated Network with broker for device management
US8838754B1 (en) 2004-01-26 2014-09-16 Qualcomm Incorporated Mobile device with a management forest in a device management network
US7984485B1 (en) 2004-01-29 2011-07-19 Hewlett-Packard Development Company, L.P. Ingestion interface for transferring update package containers into a distribution network
WO2005079334A2 (en) * 2004-02-12 2005-09-01 Bitfone Corporation Device management network that facilitates selective billing
JP4497957B2 (ja) * 2004-03-05 2010-07-07 株式会社日立製作所 記憶制御システム
US7318070B2 (en) * 2004-03-11 2008-01-08 International Business Machines Corporation Method and apparatus for maintaining compatibility within a distributed systems management environment with a plurality of configuration versions
US8589564B2 (en) * 2004-03-11 2013-11-19 International Business Machines Corporation Method and apparatus for maintaining compatibility within a distributed systems management environment with a plurality of configuration versions
US20050204347A1 (en) * 2004-03-12 2005-09-15 International Business Machines Corporation Method for generating XSLT documents from multiple versions of a UML model or XML schemas created from multiple versions of a UML model
US8578359B2 (en) * 2004-03-15 2013-11-05 Red Bend Ltd. Method and apparatus for reliable in-place update
US7739679B2 (en) * 2004-04-06 2010-06-15 Hewlett-Packard Development Company, L.P. Object ordering tool for facilitating generation of firmware update friendly binary image
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
US7971199B1 (en) 2004-05-03 2011-06-28 Hewlett-Packard Development Company, L.P. Mobile device with a self-updating update agent in a wireless network
US7689982B1 (en) 2004-05-07 2010-03-30 Hewlett-Packard Development Company, L.P. Transparent linker profiler tool with profile database
US7543118B1 (en) 2004-05-07 2009-06-02 Hewlett-Packard Development Company, L.P. Multiple variance platform for the management of mobile devices
US7657886B1 (en) 2004-06-03 2010-02-02 Hewlett-Packard Development Company, L.P. Mobile device with a MMU for faster firmware updates in a wireless network
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7711706B2 (en) * 2004-11-08 2010-05-04 Innopath Software, Inc. Reorganizing images in static file system differencing and updating
US20060175271A1 (en) * 2005-01-31 2006-08-10 Emrey David A Apparatus and method of holding a golf score card and writing instrument, and golf bag and system incorporating the same
US7761766B2 (en) * 2005-11-15 2010-07-20 I365 Inc. Methods and apparatus for modifying a backup data stream including logical partitions of data blocks to be provided to a fixed position delta reduction backup application
US7676509B2 (en) * 2006-02-01 2010-03-09 I365 Inc. Methods and apparatus for modifying a backup data stream including a set of validation bytes for each data block to be provided to a fixed position delta reduction backup application
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
US20080079539A1 (en) * 2006-08-15 2008-04-03 Daley Robert C Friends Finder Service for a Mobile Device in a Network
US8219595B2 (en) * 2008-02-14 2012-07-10 Hewlett-Packard Development Company, L.P. System and method for efficient remote data access for server management
US8255885B2 (en) * 2008-06-16 2012-08-28 Software Analysis And Forensic Engineering Corp. Detecting copied computer source code by examining computer object code
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
CN103761095B (zh) * 2014-01-23 2020-01-07 上海斐讯数据通信技术有限公司 一种生成通用的升级文件头部数据信息的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59106063A (ja) * 1982-12-03 1984-06-19 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション フアイル更新方法
JPS6376031A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd フアイル差分算出処理方式
JPH04165434A (ja) * 1990-10-29 1992-06-11 Nec Corp ファイル比較方式
JPH04362735A (ja) * 1991-06-10 1992-12-15 Mitsubishi Heavy Ind Ltd ソースプログラム照合システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3711863A (en) * 1972-01-21 1973-01-16 Honeywell Inf Systems Source code comparator computer program
JPS62100834A (ja) * 1985-10-28 1987-05-11 Nec Corp プログラムの版数管理方式
US5191646A (en) * 1986-11-20 1993-03-02 Hitachi, Ltd. Display method in software development support system
JPH02141823A (ja) * 1988-11-24 1990-05-31 Nec Corp アドレス指定コンペア方式
JPH02168321A (ja) * 1988-12-22 1990-06-28 Nec Corp プログラム差分抽出方式
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59106063A (ja) * 1982-12-03 1984-06-19 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション フアイル更新方法
JPS6376031A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd フアイル差分算出処理方式
JPH04165434A (ja) * 1990-10-29 1992-06-11 Nec Corp ファイル比較方式
JPH04362735A (ja) * 1991-06-10 1992-12-15 Mitsubishi Heavy Ind Ltd ソースプログラム照合システム

Also Published As

Publication number Publication date
JPH06274384A (ja) 1994-09-30
US5752039A (en) 1998-05-12

Similar Documents

Publication Publication Date Title
WO1994022086A1 (en) Apparatus and method for extracting and updating finite difference in executable file
CN101855620B (zh) 数据处理设备和数据处理方法
AU763524B2 (en) Data file synchronisation
CN1753368B (zh) 为远程差异压缩标识对象的方法和系统
JP5309015B2 (ja) データ圧縮技術およびデータ格納技術
CA2161360A1 (en) Efficient and secure update of software and data
US8341197B2 (en) Encoder, decoder, their methods, programs thereof, and recording media having programs recorded thereon
CN102999543A (zh) 利用了数据段的相似度的高效数据存储
JP2007243959A (ja) データ圧縮方法及びシステム
US9002800B1 (en) Archive and backup virtualization
US20090070367A1 (en) Multi-version control method for data documents and device thereof
CN108416040A (zh) 一种数据库修复方法、装置、终端设备及存储介质
US9098513B1 (en) Methods and systems for differencing orderly dependent files
WO2015139381A1 (zh) 一种终端软件升级方法及装置
JP2006092725A (ja) 圧縮システム及び方法
CN104915270A (zh) 用于压缩与解压缩的同步历史数据的系统和方法
US8417730B2 (en) Block compression algorithm
CN105045783A (zh) 含冗余的数据压缩与解压缩的系统和方法
WO2021252227A1 (en) Systems and methods for compression and encryption of data
US8464097B1 (en) Method and apparatus for efficiently creating backup files with less redundancy
Watkins et al. Teleporter: An analytically and forensically sound duplicate transfer system
US20170048303A1 (en) On the fly statistical delta differencing engine
KR101028904B1 (ko) 데이터 처리 장치 및 방법
CA3126012A1 (en) Method and system for content agnostic file indexing
US9882768B1 (en) Methods and apparatus for file synchronization over a computer network

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): GB US

WWE Wipo information: entry into national phase

Ref document number: 08343444

Country of ref document: US