WO2021040166A1 - 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치 - Google Patents

소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치 Download PDF

Info

Publication number
WO2021040166A1
WO2021040166A1 PCT/KR2020/003493 KR2020003493W WO2021040166A1 WO 2021040166 A1 WO2021040166 A1 WO 2021040166A1 KR 2020003493 W KR2020003493 W KR 2020003493W WO 2021040166 A1 WO2021040166 A1 WO 2021040166A1
Authority
WO
WIPO (PCT)
Prior art keywords
difference
block
data
new
generating
Prior art date
Application number
PCT/KR2020/003493
Other languages
English (en)
French (fr)
Inventor
강동수
이동환
이태호
백승욱
Original Assignee
루나 주식회사
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 루나 주식회사 filed Critical 루나 주식회사
Priority to EP20788973.4A priority Critical patent/EP3812889B1/en
Priority to US17/051,433 priority patent/US11775288B2/en
Publication of WO2021040166A1 publication Critical patent/WO2021040166A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Definitions

  • the present invention relates to a method and apparatus for generating a difference between old and new data for software update, and more particularly, when updating a software program and related data to a client device such as an autonomous vehicle or a smartphone, in an update management server.
  • the present invention relates to a method and apparatus for generating a difference by comparing software data of an old version and a new version, and providing the generated difference to the client device to perform software data update simply and quickly.
  • the IT (Information Technology) industry is an information technology industry that places weight on indirect value creation that encompasses tangible and intangible technologies necessary for information means such as computers, software, Internet, multimedia, management innovation, and administrative renewal.
  • the IT industry includes not only business data, voice conversations, photos, videos, and multimedia, but also media in a form that has not yet appeared, and includes all types of technologies required to develop, store, and exchange information.
  • This IT industry is leading to the automobile industry, a traditional manufacturing industry that focuses on creating direct tangible value, and in recent years, self-driving vehicles that autonomously drive while judging their location and surroundings are being developed, and interest is increasing. .
  • the wireless communication terminal downloads the software through a network and performs the update.
  • radio resources cannot be efficiently utilized, such as an increase in data usage costs, and inability to perform other tasks while downloading software.
  • an update management server compares old and new data to generate a difference, and provides the generated difference to a client device such as an autonomous vehicle or a smart phone to update software data including programs, kernels, and file systems.
  • Korean Patent Registration No. 0632904 (October 16, 2006) provides a method and system for generating a compact difference result between an old program and a new program.
  • Each program is a reference for inquiring another entry in the program. It contains a reference entry containing.
  • this method since the difference result is generated according to the search result of the entry, there is a problem in that it takes a lot of processing time because the difference result cannot be collectively generated.
  • the present invention divides old and new software data into partitions and blocks and processes them, determines the size of the block in advance, and then generates a difference, so that the processing speed is fast, and only the part in which the old and new software data is changed within the block. Since the difference is generated, the size of the difference data is also reduced.
  • data strings of a predetermined length for a specific block are all compared with the old and new versions of software data, if only the data related to the specific function block included in the specific block is changed, only the data of the corresponding function block has changed. Since the and data are generated, only the difference information is generated for the unchanged portion, and the difference data is not generated, the processing speed is fast and the size of the difference data is reduced.
  • Korean Patent Registration No. 1541112 (2015.07.31.) relates to a FOTA system and its execution method, a communication unit for performing data communication with the FOTA server and receiving a download file, and reception of the download file through the communication unit.
  • the download unit to control, the socket layer constituting the function library for the FOTA server and the network connection and data IO, and the download file of the download unit and the currently installed file are compared to extract the difference file to generate and install an update file. It is characterized in that it comprises a control unit and a memory unit for storing the update file.
  • Korean Patent Laid-Open Publication No. 2004-0022020 (2004.03.11.) relates to a remote firmware upgrade method and a display device thereof.
  • the server receives the firmware provided according to the display status and stores it in a first storage area.
  • the technical feature includes the process of storing, testing the stored firmware and determining whether to upgrade the firmware according to the result, and updating the existing firmware by storing the stored firmware in a second storage area when determining the upgrade. .
  • the update management proposed by the present invention When the server compares the software data of the old and the new version to generate the difference, the data string of a predetermined length for the block is compared with the software data of the old and new version, so that the processing speed is fast and the size of the difference data is reduced. It does not describe or suggest.
  • the present invention was created to solve the above problems, and provides a method and apparatus for efficiently updating software data including programs, kernels, and file systems to client devices such as autonomous vehicles or smartphones.
  • the purpose is a method and apparatus for efficiently updating software data including programs, kernels, and file systems to client devices such as autonomous vehicles or smartphones.
  • the present invention creates a difference for a part (correction, insertion, deletion, etc.) that differs by comparing between the old version and the new version software data, and the software data update in the client device is simple and fast based on the generated difference. It is another object to provide a method and apparatus that can be performed.
  • the present invention can reduce processing time and cost due to transmission of a large amount of data, increase user convenience, and increase system stability through software data update of the client device using the difference between old and new software data.
  • Another object is to provide a method and an apparatus therefor.
  • a method for generating a difference between old and new data for software update is, in a difference generating apparatus, parses software data of a specific new and old version, and extracts information on partitions and blocks of the software data of the old and new version. The step of doing; Checking the number of partitions and the block size from the extracted information, by the difference generating device; And generating, by the difference generating apparatus, a difference between data for the blocks included in each of the partitions, based on the identified number of partitions and a block size.
  • the partition is data divided into different partitions according to a program, a kernel, or a file system, and includes at least one block, and the block includes, in the case of the program and the kernel, the entire data of the partition as the block size. It is divided data, and in the case of the file system, it is characterized in that it is data obtained by dividing each file data constituting the file system by the block size.
  • the step of generating the difference may include comparing a data string of a predetermined length with respect to the new and old version software data included in the block to determine one of the same (Equal), insert (Insert), or modified (Mod) to make the difference. It characterized in that it includes listing in a data string.
  • the step of generating the difference further includes generating a compressed data string by compressing the listed difference data string, and generating the compressed data string one-dimensionally arranging the difference data string to increase redundancy.
  • the compressed data string is generated, and the compression is lossless compression, and the compressed data string is , It characterized in that it further comprises compression information including a condition for performing the compression.
  • the difference generation method may include determining, in the difference generation apparatus, whether the size of an available memory can process the blocks of each of the partitions identified from the extracted information; And if, as a result of the determination by the difference generating device, the size of the available memory cannot process the block of the partition, each block of the identified partition until the available memory can process the block of the partition. It characterized in that it further comprises a; step of reducing the block size for.
  • generating the difference may include: arranging all old version blocks from the extracted information; Generating a first difference data sequence between the sorted all old version blocks and a first new version block; Generating an n-1th difference data sequence between an n-1th new version block and an old version block obtained by subtracting a first new version block from the sorted all old version blocks; And generating an n-th difference data sequence between an n-th new version block and an old version block obtained by subtracting a first new version block to an n-1th new version block from the sorted all old version blocks, and generating the difference data sequence.
  • Generation is characterized in that it is repeatedly performed until all blocks included in the corresponding partition are processed.
  • the apparatus for generating a difference between old and new data for software update is a parsing unit that parses software data of a specific old and new version and extracts information on partitions and blocks of the old and new version of software data. ; An information checking unit that checks the number of partitions and the block size from the extracted information; And a difference generator for generating a difference between data for the blocks included in each of the partitions based on the identified number of partitions and the block size.
  • the partition is data divided into different partitions according to a program, a kernel, or a file system, and includes at least one block, and the block includes, in the case of the program and the kernel, the entire data of the partition as the block size. It is divided data, and in the case of the file system, it is characterized in that it is data obtained by dividing each file data constituting the file system by the block size.
  • the difference generation unit compares a data sequence of a predetermined length with respect to the new and old version software data included in the block to determine one of the same (Equal), insert (Insert), or modified (Mod) as a difference data sequence. It characterized in that it includes listing.
  • the difference generation device further includes a difference compression unit for compressing the listed difference data sequence to generate a compressed data sequence, wherein the generation of the compressed data sequence includes one-dimensional arrangement of the difference data sequence.
  • the compression is lossless compression
  • the compressed data string Is characterized in that it further includes compression information including a condition for performing the compression.
  • the information checking unit determines whether the size of the available memory can process the block of each partition identified from the extracted information, and as a result of the determination, the size of the available memory can process the block of the partition. If not present, reducing the block size of each block of the identified partition until the available memory can process the block of the partition.
  • the difference generator aligns the old version blocks from the extracted information, generates a first difference data sequence between the aligned all old version blocks and the first new version block, and subtracts the first new version block from the all aligned old version blocks.
  • An old version block and an nth new version block obtained by subtracting the first new version block to the n-1th new version block from the all old version blocks that are sorted by generating the n-1th difference data sequence between one old version block and the n-1th new version block
  • the method further comprises generating an n-th difference data sequence between, and generating the difference data sequence is performed repeatedly until all blocks included in the corresponding partition are processed.
  • the update management server generates a difference by comparing data between the old version and the new version, and the generated difference is determined by an autonomous vehicle or an autonomous vehicle. Since it is provided to a client device such as a smartphone to perform software data update simply and quickly, there is an effect of reducing the update processing time and the cost of data transmission because it is not necessary to transmit all of the new version of the software data.
  • the present invention compares all data strings of a predetermined length for a predetermined block with respect to new and old versions of software data, when only a specific functional block included in the block is changed, only the corresponding functional block is changed and the difference information and data are Since only the difference information is generated and the difference data is not generated in the generated and unchanged portion, there is an effect that the processing speed of generating the difference is fast and the size of the difference data is reduced.
  • the present invention has an effect of improving the system stability of a client device by continuously managing software for changes in laws or institutions, bugs, and defects in the update management server.
  • FIG. 1 is a diagram illustrating a configuration of an apparatus for generating a difference between old and new data for software update according to an embodiment of the present invention.
  • FIG. 2 is a view showing in more detail the configuration of a differential engine according to an embodiment of the present invention.
  • 3 is a diagram for explaining the concept of generating a difference between old and new data applied to the present invention.
  • FIG. 4 is a diagram for explaining a method of generating a difference between old and new data applied to the present invention.
  • FIG. 5 is a flowchart illustrating in detail a process of updating software data according to an embodiment of the present invention.
  • FIG. 6 is a flow chart showing in more detail an operation process of a method for generating a difference between old and new data for software update according to an embodiment of the present invention.
  • the update target using the difference generated in the present invention is software data including a program, a kernel, and a file system.
  • the software data is binary data, but it is natural to support any data format including ASCII. That is, it is preferable that each of the program, kernel, and file system is composed of binary data.
  • the present invention is a principle to update binary data for individual files while maintaining the folder structure of a specific file system.
  • the difference is not generated for files that have not been changed in the new version file system, and the difference is generated only for the changed files, not only the cost of data generation is reduced, but also the update speed of the file system is improved, and the system related to the update is It can increase the stability.
  • the program refers to an application program, a system program, and the like, and refers to data that determines the operation of the program or is recorded according to a certain format.
  • the kernel is the most important core of a computer operating system, an interrupt handler that handles all requests competingly for kernel services such as terminated input/output operations, and which programs share the kernel processing time in what order. It includes a scheduler that determines the process, and a supervisor that actually gives each process the right to use the computer after the schedule is over. It manages the address space of the operating system in memory or storage devices, and manages them in all peripheral devices. It has a memory manager that evenly distributes the files and services of the kernel to other users who use them.
  • the file system is a set of rules of preparation for reading, writing, and searching data on a hard disk drive in advance in order to record data in a computer.
  • the computer files are named, and logically for storage or retrieval. It refers to a system that indicates where to place them, etc. All OSs such as DOS, Windows, OS/2, Macintosh, and Unix are always equipped. For example, in the case of Windows, there are FAT16, FAT32, and NTFS, and in the case of Linux, there are ext2, reiserFS, and ext3. It also stores files in a directory and names new files, limits the length of the file name, indicates which characters can be used, and limits the length of the file name extension. It also includes a format for setting the path to a file through the directory structure. Sometimes it refers to a part of an OS or additional program that supports organizing files. NFS (Network file system) and AFS (Andrew file system) are typical.
  • FIG. 1 is a diagram illustrating a configuration of an apparatus for generating a difference between old and new data for software update according to an embodiment of the present invention.
  • the present invention includes a difference engine 100, an update management server 200, a client device 300, a database 400, and the like.
  • the difference engine 100 is a difference generating device for generating a difference between old and new software data, and when software data (that is, a program, kernel, or file system) is changed through operations such as modification, insertion, or deletion, the corresponding software data Without the need to provide the entire client device 300 to be updated, only the differences (that is, portions in which modifications, insertions, deletions, etc. have been made) are selected, and then the client device ( 300), so that the client device 300 can perform the software data update simply and quickly.
  • software data that is, a program, kernel, or file system
  • the difference engine 100 generates a difference for a part that differs rather than the entire new version of software data, and provides the difference to the client device 300, thereby reducing the cost of data generation as well as reducing the cost of software data. It improves the update speed and improves the stability of the system related to the update of software data.
  • the difference engine 100 is The software data information is parsed to extract information on the partition (data) and block (data) of the software data (1).
  • old and new software data information managed by the XML created by the developer old and new data including the number of partitions, location (start and end), name and type, block size, etc. Extracting information on at least one or more partitions and information on at least one or more blocks included in each of the partitions, such as an old version block, a new version block, and a block size.
  • the partition is data divided into different partitions according to a program, a kernel, or a file system, and may include at least one or more blocks.
  • the block is data obtained by dividing all data by a block size in the case of the program (binary) and the kernel, and in the case of the file system, data obtained by dividing each file data constituting the file system by a block size.
  • the difference engine 100 checks the number of partitions, block size, etc. from the extracted partition and block information (2).
  • the difference engine 100 generates a difference in data for blocks included in each of the partitions based on the identified number of partitions, block size, and the like (3). That is, by comparing data strings of a predetermined length with respect to the new and old versions of software data included in the block, one of equal, insert, or modified data is determined and arranged as a differential data string.
  • the difference engine 100 generates a difference in data for blocks included in each partition, compresses the generated difference (4), and performs a process of combining the compressed differences for each block (5). ).
  • the compression of the difference is to generate a compressed data sequence by compressing the listed difference data sequence, which is lossless compression, and includes compression information related to a condition for performing compression.
  • generating the compressed data sequence may reduce redundancy by arranging the difference data sequence one-dimensionally, or by arranging the difference data sequence two-dimensionally to reduce redundancy, or through a combination thereof, To generate the compressed data string.
  • Such difference generation is performed repeatedly until all blocks included in the corresponding partition are processed, and when the difference generation, compression, and merging for each partition block are all completed, the new and old versions of software data are compared and generated.
  • the difference is output to the update management server 200.
  • the update management server 200 transmits the difference between the old version and the new version software data provided from the difference engine 100 to the client device 300 to be updated through the network (6), and the client device 300 In ), the old version software data is updated to the new version software data based on the difference transmitted from the update management server 200 (7).
  • the difference engine 100 may be implemented as an independent device as shown in FIG. 1, and may be integrated and used in the update management server 200, in addition to the method of using by communicating with the update management server 200. have.
  • the update management server 200 is a computer operated by a business operator that generates and manages new versions of software data used in the client device 300, and when a new version of the software data is generated, it is stored in the difference engine 100. Request to create a difference between data.
  • the update management server 200 uses the difference generated by the difference engine 100 to a corresponding client device ( 300), and when the update completion information is received from the client device 300, the update operation of the software data is terminated.
  • the client device 300 uses a wireless communication terminal such as a smartphone with various application programs installed, a map, a satellite navigation system (GPS), various sensors, etc.
  • a device that is driven based on software such as a driving car
  • the client device 300 receives the difference between the new and old version software data generated by the difference engine 100 from the update management server 200 through the network, and the old version based on the difference.
  • the software data is updated with the new version of software data, and when the software data is updated, update completion information is generated and then transmitted to the update management server 200 through a network.
  • the database 400 stores and manages various software used by the client device 300.
  • the database 400 stores and manages the device type, software version, and update history for each of the client devices 300, and stores and manages the difference between the new and old version software data generated by the difference engine 100. do.
  • FIG. 2 is a view showing in more detail the configuration of a differential engine according to an embodiment of the present invention.
  • the difference engine 100 includes a parsing unit 110, an information confirmation unit 120, a difference generation unit 130, a difference compression unit 140, a difference summation unit 150, and a difference. It is configured to include an output unit 160, a memory 170, and the like.
  • a power supply for supplying operating power to each component, an input for inputting data for various functions, and collectively controlling each component of the differential engine 100 may further include a main control unit and the like.
  • the parsing unit 110 parses old and new software data information provided by the update management server 200, extracts information on partitions and blocks of the software data, and extracts partitions and blocks of the software data. Information on is stored in the memory 170. As is generally known, the parsing is to translate a series of character strings representing software data information into a meaningful unit of meaning by translating them into machine language.
  • the parsing unit 110 parses old and new software data information managed in XML created by a developer, and at least one partition such as old and new version data including the number of partitions, location, name and type, block size, etc. It extracts information on at least one block included in each of the partitions, such as the old version block, the new version block, and the block size.
  • the information verification unit 120 includes a partition information verification unit 121, a block information verification unit 122, and a block size determination unit 123, and a partition of software data parsed and extracted by the parsing unit 110 and From the block information, the number of partitions, block size, etc. for the old and new software data are checked.
  • the partition information checking unit 121 is the number and location of partitions from the partition information of the software data parsed and extracted by the parsing unit 110 so that the difference generating unit 130 can generate a difference as much as the number of partitions. , Check the old and new version data, including the name and type, and the block size.
  • the block information verification unit 122 is from the information on the block of software data parsed and extracted by the parsing unit 110 so that the difference generation unit 130 can generate a difference based on the block included in the partition. Check the old version block, the new version block, and the block size.
  • the block size determination unit 123 compares the block size with the available memory, and determines an optimal block size to be processed by the difference generation unit 130 based on the comparison result.
  • the block size determination unit 123 determines whether the size of the available memory can process the block of the partition checked by the partition information verification unit 121, and as a result of the determination, the available memory processes the block. If not, the block size for each block of the partition checked by the partition information checking unit 121 is reduced until the available memory can process the block of the partition, and then the reduced block size is referenced. As a result, the difference generator 130 determines an optimal block size to be processed.
  • the process of determining the optimal block size will be described in more detail, until the size of the available memory is able to process the block of the partition checked by the partition information checking unit 121. If the block size is reduced or it is determined that the available memory can process the block of the partition checked by the partition information checking unit 121, the remaining size of the new version data of the corresponding partition of the new version software data is the block size. Determine if it is greater than. As a result of the determination, if the remaining size of the new version data is larger than the block size, the block size determination unit 123 determines the block size as an optimal block size to be processed by the difference generation unit 130.
  • the block size determination unit 123 determines the remaining size of the new version data as an optimal block size to be processed by the difference generator 130. This is for processing when the remaining size of the new version data is less than or equal to the block size in the process of repeatedly generating the difference for each block of a specific partition (that is, processing the last block data of the corresponding partition). .
  • the difference generation unit 130 generates a difference between blocks of the old and new versions of software data included in the partition based on data on blocks included in each partition checked by the block information checking unit 122. In this case, a detailed method of generating the difference will be described in more detail with reference to FIGS. 3 and 4.
  • the difference compression unit 140 performs compression to reduce the size of the difference generated by the difference generation unit 130.
  • the compression of the difference is to compress the listed difference data string to generate a compressed data string, and the difference data string is arranged one-dimensionally to reduce redundancy, or the difference data string is arranged two-dimensionally. Compressed data streams are generated through redundancy reduction or a combination thereof.
  • the compression is lossless compression
  • the compressed data stream may include compression information including conditions for performing the compression.
  • the difference compression can be performed when the generation of the difference for each partition is ended, or when generation of the difference for all partitions of the new version software data is ended.
  • the difference summing unit 150 performs a function of combining the difference compressed by the difference compression unit 140 in units of blocks or partitions.
  • the difference output unit 160 is a component that performs an interface function for inputting and outputting data to and from the update management server 200, and the difference summing unit 150 sums the difference in block units or partition units to the update management server. Output as (200).
  • the memory 170 stores various operation programs used by the difference engine 100.
  • the memory 170 stores software data information parsed and extracted by the parsing unit 110, information on partitions and blocks checked by the information checking unit 120, and the difference generated by the difference generating unit 130. Performs a function to save temporarily.
  • 3 is a diagram for explaining the concept of generating a difference between old and new data applied to the present invention.
  • the difference engine 100 generates a difference by comparing blocks constituting the partition of the old software data and the blocks constituting the partition of the new version software data.
  • the following describes a partition with 4 blocks as an example.
  • the difference engine 100 sorts all old version blocks of a specific partition so that it is easy to search, and then, as shown in FIG. 3(a), the first between all the sorted old version blocks and the first new version block (block #1).
  • Step 1 of generating the first difference data sequence (delta #1) is performed.
  • the delta denotes a difference data sequence in which one of the same (Equal), insert (Insert) or modified (Mod) is determined by comparing a data sequence of a predetermined length with respect to the new and old versions of software data included in the block.
  • the difference engine 100 subtracts the first new version block (block #1) from the aligned all old version blocks, and the second version block (all blocks-new block #1).
  • a second step of generating a second differential data sequence (delta #2) between the new version blocks (block #2) is performed.
  • the difference engine 100 subtracts the first new version block (block #1) and the second new version block (block #2) from the sorted all old version blocks (all Block-Step 3 is performed to generate the third difference data string (delta #3) between (new block #1 + new block #2)) and the third new version block (block #3).
  • the difference engine 100 is a first new version block (block #1), a second new version block (block #2), and a third new version block (block #2) of the sorted all old version blocks, as shown in (d) of FIG.
  • the fourth difference data string (delta #4) between the old version block (all blocks-(new block#1 + new block#2 + new block#3)) and the fourth new version block (block #4) minus #3) By performing the 4 steps of generating a, the difference generation is finished.
  • FIG. 4 is a diagram for explaining a method of generating a difference between old and new data applied to the present invention.
  • the difference engine 100 is #1 to #9 as shown in Fig. 4(b) in order to conveniently search for blocks constituting the partition of the old version software data shown in Fig. 4(a). Sort by blocks of.
  • the present invention has been described as an example of classifying and arranging the blocks into nine types, the number of categorized blocks may decrease or increase according to the block configuration.
  • the difference engine 100 compares and searches the blocks constituting the partition of the new version software data shown in FIG. 4(c) with the sorted old version blocks shown in FIG. 4(b), Based on the results of comparison and search, as shown in Fig. 4(d), the same data between the old version block and the new version block is equal (Equal), partially modified data is modified (Mod), and newly added data is inserted ( The difference data sequence (delta) to be inserted) is created.
  • the difference data sequence shown in (d) of FIG. 4 represents length information for each block of the new version block, and data length information that is divided into equal, modified, and inserted data ( That is, difference information) and actual data (ie, difference data) including modified data and inserted data.
  • Equal indicates only data length information
  • Mod includes data length information and actual data
  • Insert indicates data length information, actual data, and the position of the next Equal. Include information.
  • the difference engine 100 checks through an indicator (for example, set to 0xFEFF).
  • the data length information means E#110 (meaning that there are 10 data of block #1, which is equal data), M3 (three data are modified (Mod)), as shown in (d) of FIG. ), E#44, M3, A10 (meaning that 10 pieces of data are newly inserted), E#616, M4, E#320, E#812, A10, E#58, and the like.
  • FIG. 5 is a flowchart illustrating in detail a process of updating software data according to an embodiment of the present invention.
  • the update management server 200 transmits the new and old data to the difference engine 100 in order to update the new version of the software data to the client device 300.
  • a request is made to generate a difference between (S100).
  • the difference engine 100 generates a difference between the old version and the new version of software data based on the request of the update management server 200, and provides the generated difference to the update management server 200 (S200). .
  • the difference generation will be described in detail with reference to FIG. 6.
  • the update management server 200 receiving the difference between old and new data from the difference engine 100 through the step S200 transmits the difference generated by the difference engine 100 to the client device 300 through a network. (S300).
  • the client device 300 updates the software data of the old version to the software data of the new version based on the difference received from the client device 300 through an update agent (S400), and updates completion information of the update management server 200 ).
  • S400 update agent
  • the update management server 200 ends the software data update operation of the client device 300 based on the update completion information received from the client device 300.
  • FIG. 6 is a flowchart illustrating in more detail an operation process of a method for generating a difference between old and new data for updating software data according to an embodiment of the present invention.
  • the difference engine 100 parses information on partitions (data) and blocks (data) of old and new versions of software data according to the request of the update management server 200. It performs (S205). That is, the difference engine 100 parses the XML created by the developer, so that at least one or more of the number of partitions, the location (start and end), the old and new data including the name and type, and the block size. The information on the partition and information on at least one or more blocks included in each of the partitions, such as an old version block, a new version block, and a block size, are extracted.
  • the difference engine 100 determines whether the number of partitions of the software data is 0 or more (S210), and if the determination result is that the number of partitions of the software data is 0 or more, the step S205 The step of confirming the old version data including the location, name, and type, and the block size from the partition information of the software data parsed through is performed (S215).
  • the difference engine 100 After checking information on a partition such as a block size through the step S215, the difference engine 100 compares the checked block size with available memory to determine a block size to be processed. That is, the optimal block size required for the difference generation is determined.
  • the difference engine 100 determines whether the available memory can process the block of the partition identified in step S215 (S220).
  • step S220 if the available memory cannot process the block of the partition, the difference engine 100 determines the partition checked in step S215 until the available memory can process the block of the partition.
  • the block size for each block of is reduced (S225).
  • the difference engine 100 reduces the block size until the size of the available memory can process the block of the partition through the step S225, or, as a result of the determination in step S220, the usable memory If the block of the partition can be processed, it is determined whether the remaining size of the new version data of the corresponding partition of the new version software data is larger than the block size (S230).
  • step S230 if the remaining size of the new version data is larger than the block size, the difference engine 100 determines the block size as an optimal block size for generating a difference (S235).
  • step S230 if the remaining size of the new version data is less than or equal to the block size, the difference engine 100 determines the remaining size of the new version data as an optimal block size for generating a difference (S240).
  • the step S240 is a step of processing the last part of the remaining size of the new version data (the same as the block data or smaller in size than the block data) in the process of repeating the generation of the difference for each block of a specific partition. to be.
  • the difference engine 100 determines the old version block from the information on the block of software data parsed in the step S205 according to the determined block size. , Checking at least one block information including a new version block and a block size is performed (S245).
  • the difference engine 100 performs a step of generating a difference between the old version data and the new version data according to the block information checked in step S245 (S250).
  • the step S250 of generating the difference is a step of aligning all old version blocks identified from the parsed software data information, as described in FIG. 3, a first difference data sequence between the aligned all old version blocks and a first new version block Generating an n-1 difference data sequence between the old version block minus the first new version block from the aligned all old version blocks and the n-1 new version block, and the first difference data sequence from the aligned all old version blocks
  • the step of generating the n-th difference data sequence between the old version block and the n-th new version block subtracting the new version block to the n-1th new version block is sequentially performed, and generating the difference data sequence includes a block included in the corresponding partition. It is performed repeatedly until all have been processed.
  • the difference is data length information indicating length information of each block of a new version block, and actual data including partially modified data (Mod) and the newly added data (Insert), as described in FIG. 4. It is composed.
  • the data length information the same data between the old version block and the new version block is equal (Equal), partially modified data is modified (Mod), and newly added data is separated and stored.
  • the difference engine 100 compresses the generated difference (S255), combines the compressed difference (S260), and calculates the remaining size of the new version data in the block. It is reduced by the size (S265).
  • the difference engine 100 determines whether the remaining size of the new version data is greater than 0 (S270), and if the remaining size of the new version data is greater than 0 as a result of the determination, the remaining size of the new version data of the corresponding partition of the new version software data After the step S230 of determining whether is greater than the block size is repeatedly performed.
  • step S270 if the remaining size of the new version data is equal to or smaller than 0, the difference engine 100 repeats step S210 to determine whether the number of partitions is equal to or greater than 0.
  • step S210 if the number of partitions is 0 as a result of the determination in step S210 (that is, when the difference generation is terminated), the difference engine 100 generates, compresses, and sums the difference through the steps S250 to S260 to the update management server. Output as (200).
  • the update management server 200 compares the difference transmitted from the difference engine 100 (that is, a data sequence of a predetermined length for the old and new versions of software data to be equal, insert), or modify (Mod ) Is determined and arranged as a differential data string) to the client device 300 to be updated so that the software data is updated.
  • the difference engine 100 that is, a data sequence of a predetermined length for the old and new versions of software data to be equal, insert
  • Mod modify
  • the present invention generates a difference by comparing data between old and new software in an update management server, and provides the generated difference to a client device such as an autonomous vehicle or a smartphone to perform software data update simply and quickly. Since it is not necessary to transmit all of the data, it is possible to reduce the update processing time and the cost associated with data transmission.
  • the present invention compares all data strings of a predetermined length for a predetermined block with respect to new and old versions of software data, when only a specific functional block included in the block is changed, only the corresponding functional block is changed and the difference information and data are Since only the difference information is generated and the difference data is not generated in the generated and unchanged portion, the processing speed of generating the difference is fast, and the size of the difference data is reduced.
  • the present invention can improve system stability of a client device through continuous software management for bugs and defects, as well as responding to changes in laws and systems in the update management server.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치에 관한 것으로, 소프트웨어 프로그램 및 이와 관련된 데이터를 자율주행차량, 스마트폰 등의 클라이언트 디바이스에 업데이트할 때, 업데이트 관리서버에서 구버전 및 신버전의 소프트웨어 데이터를 비교하여 차분(difference)을 생성하고, 상기 생성한 차분을 상기 클라이언트 디바이스로 제공하여 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행하도록 하는 방법 및 그 장치에 관한 것이다.

Description

소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
본 발명은 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치에 관한 것으로, 더욱 상세하게는 소프트웨어 프로그램 및 이와 관련된 데이터를 자율주행차량, 스마트폰 등의 클라이언트 디바이스에 업데이트할 때, 업데이트 관리서버에서 구버전 및 신버전의 소프트웨어 데이터를 비교하여 차분(difference)을 생성하고, 상기 생성한 차분을 상기 클라이언트 디바이스로 제공하여 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행하도록 하는 방법 및 그 장치에 관한 것이다.
IT(Information Technology) 산업이란 컴퓨터, 소프트웨어, 인터넷, 멀티미디어, 경영혁신, 행정쇄신 등 정보화 수단에 필요한 유형 및 무형기술을 아우르는 간접적인 가치 창출에 무게를 두고 있는 정보기술 산업이다.
상기 IT 산업은 업무용 데이터, 음성 대화, 사진, 동영상, 멀티미디어는 물론, 아직 출현하지 않은 형태의 매체까지 포함하며, 정보를 개발, 저장 및 교환하는 데 필요한 모든 형태의 기술까지도 포함한다.
이러한 IT 산업은 직접적인 유형 가치를 창출하는 데 중점을 두는 전통적인 제조업인 자동차 산업으로 이어지고 있으며, 최근들어 스스로의 위치 및 주변 상황을 판단하면서 자율적으로 주행하는 자율주행차량이 개발되면서 더욱 관심이 고조되고 있다.
특히, 상기 자율주행차량의 경우 스스로의 위치 및 주변 상황을 판단하기 위해서는 방대한 양의 데이터를 처리하기 위한 하드웨어 장치는 물론, 지속적인 소프트웨어 관리능력이 매우 중요하다. 즉 하드웨어 장치의 버그 및 결함을 지속적으로 해결하고, 변화하는 법률 및 제도에 발빠르게 대응하기 위해서는 소프트웨어의 지속적인 업데이트가 필수적으로 수행되어야 한다.
한편 스마트폰과 같은 무선통신단말의 기능이 복잡해지면서 탑재되는 소프트웨어 또한 많은 버그를 가지고 있고, 기능 추가에 대한 사용자의 요구가 더해지고 있다. 이에 따라 무선통신단말의 소프트웨어 패치 및 기능 업데이트를 수행할 필요성이 있다.
그러나, 상술한 바와 같은 종래의 자율주행차량의 경우 소프트웨어를 업데이트하기 위해서는 서비스 센터나 딜러샵에 방문하여야 하기 때문에, 시간적, 경제적으로 비효율적인 문제점이 있었다.
또한 무선통신단말의 소프트웨어 패치나 기능 업데이트를 수행할 경우, 종래에는 무선통신단말에서 네트워크를 통해 상기 소프트웨어를 다운받아 업데이트를 수행하기 때문에, 데이터의 양이 커 다운로드에 많은 시간이 소요되고 대용량의 트래픽이 발생하는 것은 물론, 데이터 사용에 따른 비용이 증가되었으며, 소프트웨어를 다운받는 동안에는 다른 작업을 수행하지 못하는 등 무선 자원을 효율적으로 활용하지 못하는 문제점이 있었다.
따라서 본 발명에서는 업데이트 관리서버에서 신구 데이터간을 비교하여 차분을 생성하고, 상기 생성한 차분을 자율주행차량이나 스마트폰 등의 클라이언트 디바이스로 제공하여 프로그램, 커널, 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행하도록 함으로써, 많은 양의 데이터 전송으로 인한 처리시간과 비용발생을 줄이고, 사용자의 편의를 증가시키며, 시스템 안정성을 높일 수 있는 방안을 제시하고자 한다.
다음으로 본 발명의 기술분야에 존재하는 선행기술에 대하여 간단하게 설명하고, 이어서 본 발명이 상기 선행기술에 비해서 차별적으로 이루고자 하는 기술적 사항에 대해서 기술하고자 한다.
먼저 한국등록특허 제0632904호(2006.10.16.)는 구 프그램과 신 프로그램 간에서의 컴팩트한 차이 결과를 생성하기 위한 방법 및 시스템을 제공하는 것으로, 각 프로그램은 프로그램 내의 다른 엔트리를 조회하는 참조를 포함하는 참조 엔트리를 포함한다. 이 방법은 상기 엔트리의 조회 결과에 따라 차이 결과를 생성하므로, 일괄적으로 차이 결과를 생성하지 못하여, 처리 시간이 많이 소요되는 문제가 있다.
반면에 본 발명은 신구 소프트웨어 데이터를 파티션과 블록으로 나누어 처리하고, 상기 블록의 사이즈를 미리 정한 다음 차분을 생성하므로, 처리 속도가 빠르고, 또한 상기 블록 내에서 신구 버전의 소프트웨어 데이터가 변경된 부분에 대해서만 차분을 생성하기 때문에 차분 데이터의 크기도 줄어드는 장점이 있다. 즉, 특정 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교하기 때문에, 상기 특정 블록에 포함된 특정 기능블록과 관련한 데이터만 변경된 경우, 해당 기능블록의 데이터만 변경된 것으로 차분 정보와 데이터가 생성되고, 변경되지 않은 부분은 차분정보만 생성되고, 차분 데이터는 생성되지 않기 때문에, 처리 속도가 빠르고, 차분 데이터의 크기가 줄어들게 된다.
또한 한국등록특허 제1541112호(2015.07.31.)는 FOTA 시스템 및 그 실행 방법에 관한 것으로, FOTA 서버와 데이터 통신을 수행하고 다운로드 파일을 수신하는 통신부와, 상기 통신부를 통한 상기 다운로드 파일의 수신을 제어하는 다운로드부와, 상기 FOTA 서버와 네트워크 연결 및 데이터 IO에 대해 함수 라이브러리를 구성하는 소켓층과, 상기 다운로드부의 다운로드 파일과 현재 설치된 파일을 비교하여 차분 파일을 추출하여 업데이트 파일을 생성하여 설치하는 제어부 및 상기 업데이트 파일을 저장하는 메모리부를 포함하는 것을 기술적 특징으로 한다.
그러나 상기 선행기술은 FOTA 단말기에서 다운로드받은 펌웨어를 이전 펌웨어와 비교하여 추가되는 부분을 추출하여 새로운 펌웨어를 생성하여 업그레이드하는 구성이기 때문에, 본 발명에서 제시하는 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교함으로써, 처리 속도가 빠르고, 차분 데이터의 크기가 줄어드는 기술적 구성과 차이점이 분명하다.
또한 한국공개특허 제2004-0022020호(2004.03.11.)는 원격 펌웨어 업그레이드 방법 및 그 디스플레이 장치에 관한 것으로, 네트워크가 연결되면 상기 서버에서 디스플레이 상태에 따라 제공되는 펌웨어를 수신하여 제1저장 영역에 저장하는 과정, 저장된 펌웨어를 테스트하여 그 결과에 따라 펌웨어 업그레이드 여부를 판단하는 과정, 업그레이드 결정시 상기 저장된 펌웨어를 제2저장 영역에 저장하여 기존의 펌웨어를 업데이트하는 과정을 포함하는 것을 기술적 특징으로 한다.
그러나 상기 선행기술은 펌웨어 갱신을 인터넷을 통해 자동으로 구현하고, 펌웨어를 다운로드한 후 테스트를 통해 설치 여부를 결정하여 업그레이드시에 발생할 수 있는 오동작을 방지하는 구성이기 때문에, 본 발명에서 제시하는 업데이트 관리서버에서, 신구 버전의 소프트웨어 데이터를 비교하여 차분을 생성할 때, 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교함으로써, 처리 속도가 빠르고, 차분 데이터의 크기가 줄어드는 기술적 특징을 기재하거나 시사하고 있지 않다.
본 발명은 상기와 같은 문제점을 해결하기 위해 창작된 것으로서, 프로그램, 커널, 파일시스템을 포함한 소프트웨어 데이터를 자율주행차량이나 스마트폰 등의 클라이언트 디바이스에 효율적으로 업데이트할 수 있는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 구버전 및 신버전 소프트웨어 데이터간을 비교하여 차이나는 부분(수정, 삽입, 삭제 등)에 대한 차분을 생성하고, 상기 생성한 차분을 토대로 상기 클라이언트 디바이스에서의 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행할 수 있는 방법 및 장치를 제공하는 것을 다른 목적으로 한다.
또한 본 발명은 구버전 및 신버전 소프트웨어 데이터간의 차분을 이용한 상기 클라이언트 디바이스의 소프트웨어 데이터 업데이트를 통해 많은 양의 데이터 전송으로 인한 처리시간과 비용발생을 줄이고, 사용자의 편의를 증가시키며, 시스템 안정성을 높일 수 있는 방법 및 그 장치를 제공하는 것을 또 다른 목적으로 한다.
본 발명의 일 실시예에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법은, 차분 생성 장치에서, 특정 신구 버전의 소프트웨어 데이터를 파싱하여, 상기 신구 버전의 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 추출하는 단계; 상기 차분 생성 장치에서, 상기 추출한 정보로부터 상기 파티션의 수와 블록 사이즈를 확인하는 단계; 및 상기 차분 생성 장치에서, 상기 확인한 상기 파티션의 수와 블록 사이즈를 토대로, 각 상기 파티션에 포함된 상기 블록에 대한 데이터의 차분을 생성하는 단계;를 포함하는 것을 특징으로 한다.
또한 상기 파티션은, 프로그램, 커널 또는 파일시스템에 따라 서로 다른 파티션으로 구분되는 데이터이고, 적어도 하나 이상의 블록을 포함하며, 상기 블록은, 상기 프로그램 및 커널의 경우 상기 파티션의 전체 데이터를 상기 블록 사이즈로 나눈 데이터이며, 상기 파일시스템의 경우 상기 파일시스템을 구성하는 각각의 파일 데이터를 상기 블록 사이즈로 나눈 데이터인 것을 특징으로 한다.
또한 상기 차분을 생성하는 단계는, 상기 블록에 포함된 상기 신구 버전의 소프트웨어 데이터에 대한 소정 길이의 데이터열을 비교하여 동일(Equal), 삽입(Insert) 또는 수정(Mod) 중 하나를 결정하여 차분 데이터열로 나열하는 것을 포함하는 것을 특징으로 한다.
또한 상기 차분을 생성하는 단계는, 상기 나열한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 것을 더 포함하며, 상기 압축 데이터열을 생성하는 것은, 상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나, 상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는 이들의 조합을 통해서, 상기 압축 데이터열을 생성하는 것이며, 상기 압축은, 무손실 압축이며, 상기 압축 데이터열은, 상기 압축을 수행하는 조건을 포함한 압축정보를 더 포함하는 것을 특징으로 한다.
또한 상기 차분 생성 방법은, 상기 차분 생성 장치에서, 사용 가능한 메모리의 사이즈가 상기 추출한 정보로부터 확인한 각 상기 파티션의 상기 블록을 처리할 수 있는지 판단하는 단계; 및 상기 차분 생성 장치에서, 상기 판단한 결과, 상기 사용 가능한 메모리의 사이즈가 상기 파티션의 블록을 처리할 수 없으면, 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 있을 때까지 상기 확인한 파티션의 각 블록에 대한 블록 사이즈를 감소시키는 단계;를 더 포함하는 것을 특징으로 한다.
또한 상기 차분을 생성하는 단계는, 상기 추출한 정보로부터 전체 구버전 블록을 정렬하는 단계; 상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록 간의 첫 번째 차분 데이터열을 생성하는 단계; 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록을 차감한 구버전 블록과 n-1번째 신버전 블록 간의 n-1번째 차분 데이터열을 생성하는 단계; 및 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록 내지 n-1번째 신버전 블록을 차감한 구버전 블록과 n번째 신버전 블록 간의 n번째 차분 데이터열을 생성하는 단계;를 더 포함하며, 상기 차분 데이터열을 생성하는 것은, 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행되는 것을 특징으로 한다.
아울러, 본 발명의 일 실시예에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치는, 특정 신구 버전의 소프트웨어 데이터를 파싱하여, 상기 신구 버전의 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 추출하는 파싱부; 상기 추출한 정보로부터 상기 파티션의 수와 블록 사이즈를 확인하는 정보 확인부; 및 상기 확인한 상기 파티션의 수와 블록 사이즈를 토대로, 각 상기 파티션에 포함된 상기 블록에 대한 데이터의 차분을 생성하는 차분 생성부;를 포함하는 것을 특징으로 한다.
또한 상기 파티션은, 프로그램, 커널 또는 파일시스템에 따라 서로 다른 파티션으로 구분되는 데이터이고, 적어도 하나 이상의 블록을 포함하며, 상기 블록은, 상기 프로그램 및 커널의 경우 상기 파티션의 전체 데이터를 상기 블록 사이즈로 나눈 데이터이며, 상기 파일시스템의 경우 상기 파일시스템을 구성하는 각각의 파일 데이터를 상기 블록 사이즈로 나눈 데이터인 것을 특징으로 한다.
또한 상기 차분 생성부는, 상기 블록에 포함된 상기 신구 버전의 소프트웨어 데이터에 대한 소정 길이의 데이터열을 비교하여 동일(Equal), 삽입(Insert) 또는 수정(Mod) 중 하나를 결정하여 차분 데이터열로 나열하는 것을 포함하는 것을 특징으로 한다.
또한 상기 차분 생성 장치는, 상기 나열한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 차분 압축부;를 더 포함하며, 상기 압축 데이터열을 생성하는 것은, 상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나, 상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는 이들의 조합을 통해서, 압축 데이터열을 생성하는 것이며, 상기 압축은, 무손실 압축이며, 상기 압축 데이터열은, 상기 압축을 수행하는 조건을 포함한 압축정보를 더 포함하는 것을 특징으로 한다.
또한 상기 정보 확인부는, 사용 가능한 메모리의 사이즈가 상기 추출한 정보로부터 확인한 각 상기 파티션의 상기 블록을 처리할 수 있는지 판단하고, 상기 판단한 결과, 상기 사용 가능한 메모리의 사이즈가 상기 파티션의 블록을 처리할 수 없으면, 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 있을 때까지 상기 확인한 파티션의 각 블록에 대한 블록 사이즈를 감소시키는 것을 더 포함하는 것을 특징으로 한다.
또한 상기 차분 생성부는, 상기 추출한 정보로부터 구버전 블록을 정렬하고, 상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록 간의 첫 번째 차분 데이터열을 생성하고, 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록을 차감한 구버전 블록과 n-1번째 신버전 블록 간의 n-1번째 차분 데이터열을 생성하고, 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록 내지 n-1번째 신버전 블록을 차감한 구버전 블록과 n번째 신버전 블록 간의 n번째 차분 데이터열을 생성하는 것을 더 포함하며, 상기 차분 데이터열을 생성하는 것은, 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행되는 것을 특징으로 한다.
이상에서와 같이 본 발명의 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치에 따르면, 업데이트 관리서버에서 구버전 및 신버전 소프트웨어 데이터간을 비교하여 차분을 생성하고, 상기 생성한 차분을 자율주행차량이나 스마트폰 등의 클라이언트 디바이스로 제공하여 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행하도록 함으로써, 신버전의 소프트웨어 데이터 전부를 전송하지 않아도 되므로 업데이트 처리시간과 데이터 전송에 따른 비용을 줄일 수 있는 효과가 있다.
특히 본 발명은 소정의 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교하기 때문에, 상기 블록에 포함된 특정 기능블록만 변경된 경우, 해당 기능블록만 변경된 것으로 차분 정보와 데이터가 생성되고, 변경되지 않은 부분은 차분정보만 생상되고 차분 데이터는 생성되지 않으므로, 차분 생성의 처리 속도가 빠르고, 차분 데이터의 크기가 줄어드는 효과가 있다.
또한 본 발명은 사용자가 소프트웨어 업데이트를 위해 서비스 센터나 지정된 장소를 직접 방문할 필요가 없으므로 시간적, 경제적 효율성 및 편의성을 높일 수 있는 효과가 있다.
또한 본 발명은 업데이트 관리서버에서 법률이나 제도의 변화, 버그 및 결함에 대하여 지속적인 소프트웨어 관리를 수행함으로써, 클라이언트 디바이스의 시스템 안정성을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치의 구성을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 차분 엔진의 구성을 보다 상세하게 나타낸 도면이다.
도 3은 본 발명에 적용된 신구 데이터간의 차분 생성의 개념을 설명하기 위한 도면이다.
도 4는 본 발명에 적용된 신구 데이터간의 차분 생성의 방식을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 소프트웨어 데이터의 업데이트 과정을 상세하게 나타낸 순서도이다.
도 6은 본 발명의 일 실시예에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법의 동작과정을 보다 상세하게 나타낸 순서도이다.
이하, 첨부한 도면을 참조하여 본 발명의 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치에 대한 바람직한 실시 예를 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 또한 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는 것이 바람직하다.
먼저 본 발명에서 생성되는 차분을 이용한 업데이트 대상은 프로그램, 커널, 파일시스템을 포함한 소프트웨어 데이터로서, 상기 소프트웨어 데이터는 바이너리 데이터인 것을 원칙으로 하나, ASCII를 포함한 임의의 데이터 포맷을 지원하는 것은 당연하다. 즉, 프로그램, 커널, 파일시스템 각각은 바이너리 데이터로 구성되는 것이 바람직하다.
한편, 본 발명은 특정 파일시스템의 폴더 구조를 유지한 채로 각 폴더에 있는 각각의 파일들을 바이너리 데이터로 업데이트하는 것과, 상기 특정 파일시스템 전체에 대한 바이너리 데이터를 업데이트하는 것이 가능하다.
그러나 본 발명에서는 특정 파일시스템의 폴더 구조를 유지한 채로 개별적인 파일에 대한 바이너리 데이터를 업데이트하는 것을 원칙으로 한다. 이 경우 신버전 파일시스템에서 변경되지 않은 파일에 대해서는 차분이 발생하지 않고, 변경된 파일에 대해서만 차분이 생성되므로, 데이터 발생 비용을 줄이는 것은 물론, 파일시스템의 업데이트 속도를 향상시키며, 상기 업데이트와 관련된 시스템의 안정성을 높일 수 있다.
반면에 특정 파일시스템 전체에 대해서 바이너리 데이터를 업데이트하면, 신버전 파일시스템에 추가된 정보가 있으면, 그 다음부터 변경되지 않은 파일에 대해서도 차분을 생성하여 비효율적이다. 따라서 이 경우 별도로 변경된 부분과 그렇지 않은 부분을 구분하여 처리하는 것이 바람직하다.
상기 프로그램은 어플리케이션 프로그램, 시스템 프로그램 등을 의미하는 것으로서, 프로그램의 동작을 결정하는 것, 또는 일정한 포맷에 따라 기록되는 데이터를 말한다.
상기 커널(kernel)은 컴퓨터 운영체계의 가장 중요한 핵심으로서, 종료된 입출력연산 등 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러, 그리고 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 슈퍼바이저(supervisor) 등이 포함되어 있으며, 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리관리자를 가지고 있다.
상기 파일시스템(file system)은 컴퓨터에서 데이터를 기록하기 위해서 미리 하드디스크드라이브에 데이터를 읽고, 쓰고, 찾기 위한 준비의 규칙을 정리해 놓은 것으로서, 컴퓨터 파일에 이름을 붙이고, 저장이나 검색을 위해 논리적으로 그것들을 어디에 위치시켜야 하는지 등을 나타내는 체계를 의미한다. 도스나 윈도우, OS/2, 매킨토시, 유닉스 등 모든 OS가 반드시 갖추고 있으며, 예를 들어 윈도우의 경우 FAT16, FAT32, NTFS 등이 있으며, 리눅스의 경우 ext2, reiserFS, ext3 등이 있다. 또한 파일을 디렉터리에 저장시키며 새로 생긴 파일에 이름을 붙이는데, 파일명의 길이를 제한하기도 하고, 어떤 문자들이 사용될 수 있는지를 나타내기도 하며, 파일명 확장자의 길이를 제한하기도 한다. 또한 디렉터리 구조를 통하여 파일까지 가는 경로를 설정하는 형식을 포함한다. 때로는 파일을 체계적으로 정리할 수 있게 지원하는 OS나 부가 프로그램의 일부를 의미하기도 한다. NFS(Network file system)나 AFS(Andrew file system)가 대표적이다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치의 구성을 설명하기 위한 도면이다.
도 1에 도시된 바와 같이, 본 발명은 차분 엔진(difference engine)(100), 업데이트 관리서버(200), 클라이언트 디바이스(300), 데이터베이스(400) 등을 포함하여 구성된다.
상기 차분 엔진(100)은 신구 소프트웨어 데이터간의 차분을 생성하기 위한 차분 생성 장치로서, 소프트웨어 데이터(즉 프로그램, 커널 또는 파일시스템)가 수정, 삽입, 삭제 등의 작업을 통해 변경되는 경우, 해당 소프트웨어 데이터 전체를 업데이트 대상의 클라이언트 디바이스(300)로 제공할 필요없이, 차이나는 부분(즉 수정, 삽입, 삭제 등이 이루어진 부분)만을 선별한 다음, 이를 상기 업데이트 관리서버(200)를 통해 상기 클라이언트 디바이스(300)로 제공하여, 상기 클라이언트 디바이스(300)에서 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행할 수 있도록 한다.
즉 상기 차분 엔진(100)은 신버전의 소프트웨어 데이터 전체가 아닌, 차이나는 부분에 대한 차분을 생성하고, 상기 차분을 상기 클라이언트 디바이스(300)로 제공함으로써, 데이터 발생 비용을 줄이는 것은 물론, 소프트웨어 데이터의 업데이트 속도를 향상시키며, 소프트웨어 데이터의 업데이트와 관련된 시스템의 안정성을 높일 수 있도록 하는 것이다.
예를 들어 자율주행차량의 경우 종래에는 서비스 센터나 딜러샵 방문을 통해 소프트웨어를 업데이트하여야 하였지만, 본 발명의 방식을 통하면 네트워크를 통해 자동으로 신버전의 소프트웨어 데이터를 업데이트할 수 있으므로 시간적, 경제적인 이점을 얻을 수 있게 된다.
또한 스마트폰과 같은 무선통신단말의 경우에도 종래에는 신버전의 소프트웨어 데이터 전체를 다운받아 업데이트를 수행하므로 다운로드에 많은 시간과 대용량의 트래픽이 발생하였으나, 본 발명의 방식을 통하면 용량이 적은 차분 정보만을 다운로드받아 소프트웨어를 업데이트할 수 있어 데이터 사용에 따른 비용을 줄이고, 빠른 업데이트를 통해 무선 자원을 효율적으로 활용할 수 있게 된다.
이처럼, 신버전의 소프트웨어 데이터를 자율주행차량이나 스마트폰을 포함한 상기 클라이언트 디바이스(300)에 효율적으로 업데이트하기 위해서, 상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청에 따라 구버전 및 신버전의 소프트웨어 데이터 정보를 파싱(parsing)하여 상기 소프트웨어 데이터의 파티션(데이터) 및 블록(데이터)에 대한 정보를 추출한다(①).
예를 들어 개발자가 작성한 XML로 관리되는 구버전 및 신버전의 소프트웨어 데이터 정보를 파싱함으로써, 파티션 수, 위치(시작과 끝), 이름 및 타입을 포함한 구버전(old) 및 신버전(new) 데이터, 블록 사이즈 등의 적어도 하나 이상의 파티션에 대한 정보와, 구버전 블록, 신버전 블록, 블록 사이즈 등의 각 상기 파티션에 포함된 적어도 하나 이상의 블록에 대한 정보를 추출하는 것이다.
이때 상기 파티션은 프로그램, 커널 또는 파일시스템에 따라 서로 다른 파티션으로 구분되는 데이터로서, 적어도 하나 이상의 블록을 포함할 수 있다. 또한 상기 블록은 상기 프로그램(바이너리) 및 커널의 경우 전체 데이터를 블록 사이즈로 나눈 데이터이며, 상기 파일시스템의 경우 상기 파일시스템을 구성하는 각각의 파일 데이터를 블록 사이즈로 나눈 데이터이다.
또한 상기 차분 엔진(100)은 상기 추출한 파티션 및 블록에 대한 정보로부터 파티션의 수, 블록 사이즈 등을 확인한다(②).
또한 상기 차분 엔진(100)은 상기 확인한 파티션의 수, 블록 사이즈 등을 토대로, 각 상기 파티션에 포함된 블록에 대한 데이터의 차분을 생성한다(③). 즉 상기 블록에 포함된 신구 버전의 소프트웨어 데이터에 대한 소정 길이의 데이터열을 비교하여 동일(Equal), 삽입(Insert) 또는 수정(Mod) 중 하나를 결정하여 차분 데이터열로 나열하는 것이다.
이는 본 발명의 주요한 특징 중 하나로서, 특정 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교하기 때문에, 예를 들어 상기 특정 블록에 포함된 특정 기능블록과 관련한 데이터만 변경된 경우, 해당 기능블록의 데이터만 변경된 것으로 차분 정보와 데이터가 생성되고, 변경되지 않은 부분은 차분정보만 생성되고, 차분 데이터는 생성되지 않는다. 그러므로 차분 생성의 처리 속도가 매우 빠르고, 차분 데이터의 크기를 줄일 수 있게 된다.
또한 상기 차분 엔진(100)은 각 파티션에 포함된 블록에 대한 데이터의 차분을 생성한 다음, 상기 생성한 차분을 압축하며(④), 상기 압축된 블록별 차분을 합치는 과정을 수행한다(⑤). 이때 상기 차분의 압축은 상기 나열한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 것으로서, 무손실 압축이며, 압축을 수행하는 조건에 관련된 압축정보가 포함된다. 또한 압축 데이터열을 생성하는 것은, 상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나, 상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는 이들의 조합을 통해서, 상기 압축 데이터열을 생성하는 것이다.
이러한 상기 차분의 생성은 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행되며, 각 파티션별 블록에 대한 차분 생성, 압축 및 합치기가 모두 종료되면, 신구 버전의 소프트웨어 데이터를 비교하여 생성한 상기 차분을 상기 업데이트 관리서버(200)로 출력한다.
이에 따라 상기 업데이트 관리서버(200)에서는 상기 차분 엔진(100)으로부터 제공받은 구버전 및 신버전 소프트웨어 데이터 간의 차분을 네트워크를 통해 업데이트 대상의 클라이언트 디바이스(300)로 전송하며(⑥), 상기 클라이언트 디바이스(300)에서는 상기 업데이트 관리서버(200)로부터 전송받은 차분을 토대로 구버전 소프트웨어 데이터를 신버전 소프트웨어 데이터로 업데이트한다(⑦).
한편 상기 차분 엔진(100)은 도 1에 나타낸 것처럼 독립적인 장치로 구현하고, 상기 업데이트 관리서버(200)와 통신 접속하여 사용하는 방식 이외에, 상기 업데이트 관리서버(200) 내에 일체로 구축하여 사용할 수 있다.
상기 업데이트 관리서버(200)는 상기 클라이언트 디바이스(300)에서 사용되는 소프트웨어 데이터의 신버전 생성 및 업데이트 관리를 수행하는 사업자가 운영하는 컴퓨터로서, 신버전의 소프트웨어 데이터가 생성되면 상기 차분 엔진(100)에 신구 데이터간의 차분 생성을 요청한다.
또한 상기 업데이트 관리서버(200)는 상기 차분 엔진(100)으로부터 신구 버전의 소프트웨어 데이터를 비교하여 생성한 차분이 입력되면, 상기 차분 엔진(100)에서 생성한 상기 차분을 네트워크를 통해 해당 클라이언트 디바이스(300)로 전송하고, 상기 클라이언트 디바이스(300)로부터 업데이트 완료정보가 수신되면 소프트웨어 데이터의 업데이트 작업을 종료한다.
상기 클라이언트 디바이스(300)는 각종 애플리케이션 프로그램이 설치된 스마트폰 등의 무선통신단말이나, 지도, 위성항법시스템(GPS), 각종 센서 등을 사용하여 주변상황을 파악해 목적지까지 스스로 찾아가는 자율주행차량(self-driving car) 등의 소프트웨어를 기반으로 구동하는 장치로서, 소프트웨어 데이터의 업데이트를 수행하는 업데이트 에이전트(update agent)가 내부에 포함되거나, 독립적으로 설치되어 있다.
즉 상기 클라이언트 디바이스(300)는 네트워크를 통해 상기 업데이트 관리서버(200)로부터 상기 차분 엔진(100)에서 생성한 신구 버전의 소프트웨어 데이터간의 차분을 전송받고, 상기 업데이트 에이전트를 통해 상기 차분을 토대로 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 업데이트하며, 소프트웨어 데이터의 업데이트가 완료되면 업데이트 완료정보를 생성한 다음 네트워크를 통해 상기 업데이트 관리서버(200)로 전송한다.
상기 데이터베이스(400)는 상기 클라이언트 디바이스(300)에서 사용하는 각종 소프트웨어를 저장하여 관리한다.
또한 상기 데이터베이스(400)는 상기 각 클라이언트 디바이스(300)별로 디바이스 종류, 소프트웨어 버전, 업데이트 이력 등을 저장하여 관리하며, 상기 차분 엔진(100)에서 생성한 신구 버전의 소프트웨어 데이터간의 차분을 저장하여 관리한다.
도 2는 본 발명의 일 실시예에 따른 차분 엔진의 구성을 보다 상세하게 나타낸 도면이다.
도 2에 도시된 바와 같이, 상기 차분 엔진(100)은 파싱부(110), 정보 확인부(120), 차분 생성부(130), 차분 압축부(140), 차분 합산부(150), 차분 출력부(160), 메모리(170) 등을 포함하여 구성된다.
또한 상기 차분 엔진(100)은 도면에 도시하지는 않았지만, 각 구성 부분에 동작전원을 공급하는 전원부, 각종 기능에 대한 데이터 입력을 위한 입력부, 상기 차분 엔진(100)의 각 구성 부분을 총괄적으로 제어하는 주 제어부 등을 추가로 포함할 수 있다.
상기 파싱부(110)는 상기 업데이트 관리서버(200)에서 제공되는 구버전 및 신버전의 소프트웨어 데이터 정보를 파싱하여, 상기 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 추출하고, 상기 추출한 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 상기 메모리(170)에 저장한다. 상기 파싱은 일반적으로 알려진 것처럼, 소프트웨어 데이터 정보를 나타낸 일련의 문자열이 기계어로 번역되어 유의미한 의미 단위가 되도록 하는 것이다.
즉 상기 파싱부(110)는 개발자가 작성한 XML로 관리되는 구버전 및 신버전의 소프트웨어 데이터 정보의 파싱을 통해, 파티션 수, 위치, 이름 및 타입을 포함한 구버전 및 신버전 데이터, 블록 사이즈 등의 적어도 하나 이상의 파티션에 대한 정보와, 구버전 블록, 신버전 블록, 블록 사이즈 등의 각 상기 파티션에 포함된 적어도 하나 이상의 블록에 대한 정보를 추출하는 것이다.
상기 정보 확인부(120)는 파티션 정보 확인부(121), 블록 정보 확인부(122) 및 블록 사이즈 결정부(123)를 포함하며, 상기 파싱부(110)에서 파싱하여 추출한 소프트웨어 데이터의 파티션 및 블록에 대한 정보로부터 신구 버전의 소프트웨어 데이터에 대한 파티션의 수, 블록 사이즈 등을 확인한다.
상기 파티션 정보 확인부(121)는 상기 차분 생성부(130)에서 파티션의 개수만큼 차분을 생성할 수 있도록, 상기 파싱부(110)에서 파싱하여 추출한 소프트웨어 데이터의 파티션에 대한 정보로부터 파티션 수, 위치, 이름 및 타입을 포함한 구버전 데이터 및 신버전 데이터, 블록 사이즈 등을 확인한다.
상기 블록 정보 확인부(122)는 상기 차분 생성부(130)에서 상기 파티션에 포함된 블록을 토대로 차분을 생성할 수 있도록, 상기 파싱부(110)에서 파싱하여 추출한 소프트웨어 데이터의 블록에 대한 정보로부터 구버전 블록, 신버전 블록, 블록 사이즈 등을 확인한다.
상기 블록 사이즈 결정부(123)는 상기 블록 사이즈와 사용 가능한 메모리를 비교하고, 비교결과를 토대로 상기 차분 생성부(130)에서 처리할 최적의 블록 사이즈를 결정한다.
이때 상기 블록 사이즈 결정부(123)는 사용 가능한 메모리의 사이즈가 상기 파티션 정보 확인부(121)에서 확인한 파티션의 블록을 처리할 수 있는지를 판단하고, 상기 판단한 결과 상기 사용 가능한 메모리가 상기 블록을 처리할 수 없으면, 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 있을 때까지 상기 파티션 정보 확인부(121)에서 확인한 파티션의 각 블록에 대한 블록 사이즈를 감소시킨 다음, 상기 감소시킨 블록 사이즈를 기준으로 상기 차분 생성부(130)에서 처리할 최적의 블록 사이즈를 결정한다.
상기 최적의 블록 사이즈 결정과정을 보다 구체적으로 설명하면, 상기 블록 사이즈 결정부(123)는 사용 가능한 메모리의 사이즈가 상기 파티션 정보 확인부(121)에서 확인한 파티션의 블록을 처리할 수 있을 때까지 상기 블록 사이즈를 감소시키거나, 또는 사용 가능한 메모리가 상기 파티션 정보 확인부(121)에서 확인한 파티션의 블록을 처리할 수 있다고 판단된 경우, 신버전 소프트웨어 데이터의 해당 파티션의 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 큰지를 판단한다. 그리고 상기 판단한 결과, 상기 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 크면, 상기 블록 사이즈 결정부(123)는 상기 블록 사이즈를 상기 차분 생성부(130)에서 처리할 최적의 블록 사이즈로 결정한다.
그러나 상기 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 작거나 같으면, 상기 블록 사이즈 결정부(123)는 상기 신버전 데이터의 남은 사이즈를 상기 차분 생성부(130)에서 처리할 최적의 블록 사이즈로 결정한다. 이는 특정 파티션의 각 블록별 차분을 생성하는 과정을 반복적으로 수행하는 과정에서 신버전 데이터의 남은 사이즈가 상기 블록 사이즈와 같거나 적은 경우의 처리(즉 해당 파티션의 제일 마지막 블록 데이터의 처리)를 위해서이다.
상기 차분 생성부(130)는 상기 블록 정보 확인부(122)에서 확인한 각 파티션에 포함된 블록에 대한 데이터를 토대로 상기 파티션에 포함된 상기 신구 버전의 소프트웨어 데이터의 블록에 대한 차분을 생성한다. 이때 차분 생성의 구체적인 방식은 도 3과 도 4에서 보다 상세하게 설명하기로 한다.
상기 차분 압축부(140)는 상기 차분 생성부(130)에서 생성한 차분의 사이즈를 줄이기 위한 압축을 수행한다.
이때 상기 차분의 압축은 상기 나열한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 것이며, 상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나, 상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는 이들의 조합을 통해서 압축 데이터열을 생성한다.
또한 상기 압축은 무손실 압축이며, 상기 압축 데이터열은 상기 압축을 수행하는 조건을 포함한 압축정보가 포함될 수 있다.
한편 상기 차분의 압축은 각 파티션별 차분 생성이 종료될 때 수행하거나, 또는 신버전 소프트웨어 데이터의 모든 파티션에 대한 차분 생성이 종료될 때 수행할 수 있음을 밝혀둔다.
상기 차분 합산부(150)는 상기 차분 압축부(140)에서 압축된 차분을 블록 단위 또는 파티션 단위로 합치는 기능을 수행한다.
상기 차분 출력부(160)는 상기 업데이트 관리서버(200)와 데이터를 입출력하는 인터페이스 기능을 수행하는 구성으로서, 상기 차분 합산부(150)에서 블록 단위 또는 파티션 단위로 합산한 차분을 상기 업데이트 관리서버(200)로 출력한다.
상기 메모리(170)는 상기 차분 엔진(100)에서 사용하는 각종 동작프로그램이 저장되어 있다.
또한 상기 메모리(170)는 상기 파싱부(110)에서 파싱하여 추출한 소프트웨어 데이터 정보, 상기 정보 확인부(120)에서 확인한 파티션 및 블록에 대한 정보, 상기 차분 생성부(130)에서 생성한 차분 등을 임시로 저장하는 기능을 수행한다.
도 3은 본 발명에 적용된 신구 데이터간의 차분 생성의 개념을 설명하기 위한 도면이다.
도 3에 도시된 바와 같이, 상기 차분 엔진(100)에서는 구버전 소프트웨어 데이터의 파티션을 구성하는 블록과 신버전 소프트웨어 데이터의 파티션을 구성하는 블록을 상호간에 비교하여 차분을 생성하게 되는데, 신버전 소프트웨어 데이터의 특정 파티션에 4개의 블록이 있는 것을 예로하여 설명하면 다음과 같다.
먼저 상기 차분 엔진(100)은 특정 파티션의 전체 구버전 블록을 검색이 용이하도록 정렬한 다음, 도 3의 (a)에 나타낸 것처럼 상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록(block #1) 간의 첫 번째 차분 데이터열(delta #1)을 생성하는 1단계를 수행한다. 이때 상기 delta는 블록에 포함된 신구 버전의 소프트웨어 데이터에 대한 소정 길이의 데이터열을 비교하여 동일(Equal), 삽입(Insert) 또는 수정(Mod) 중 하나를 결정하여 나열한 차분 데이터열을 의미한다.
또한 상기 차분 엔진(100)은 도 3의 (b)에 나타낸 것처럼 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록(block #1)을 차감한 구버전 블록(전체 블록 - new block#1)과 두 번째 신버전 블록(block #2) 간의 두 번째 차분 데이터열(delta #2)을 생성하는 2단계를 수행한다.
또한 상기 차분 엔진(100)은 도 3의 (c)에 나타낸 것처럼 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록(block #1) 및 두 번째 신버전 블록(block #2)을 차감한 구버전 블록(전체 블록 - (new block #1 + new block #2))과 세 번째 신버전 블록(block #3) 간의 세 번째 차분 데이터열(delta #3)을 생성하는 3단계를 수행한다.
또한 상기 차분 엔진(100)은 도 3의 (d)에 나타낸 것처럼 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록(block #1), 두 번째 신버전 블록(block #2) 및 세 번째 신버전 블록(block #3)을 차감한 구버전 블록(전체 블록 - (new block#1 + new block#2 + new block#3))과 네 번째 신버전 블록(block #4) 간의 네 번째 차분 데이터열(delta #4)을 생성하는 4단계를 수행함으로써, 차분 생성을 마무리한다.
도 4는 본 발명에 적용된 신구 데이터간의 차분 생성의 방식을 설명하기 위한 도면이다.
도 4에 도시된 바와 같이, 상기 차분 엔진(100)은 도 4의 (a)에 나타낸 구버전 소프트웨어 데이터의 파티션을 구성하는 블록을 편하게 검색하기 위해서 도 4의 (b)와 같이 #1 내지 #9의 블록으로 정렬(sort)한다. 이때 본 발명에서는 상기 블록을 9가지로 분류하여 정렬한 것을 예로 하여 설명하였지만, 블록 구성에 따라 분류되는 수가 줄어들거나 늘어날 수 있다.
이후 상기 차분 엔진(100)은 도 4의 (c)에 나타낸 신버전 소프트웨어 데이터의 파티션을 구성하는 블록(즉 신버전 블록)을 상기 도 4의 (b)에 나타낸 정렬된 구버전 블록과 비교, 검색하고, 비교, 검색한 결과를 토대로 도 4의 (d)에 나타낸 것처럼 상기 구버전 블록과 상기 신버전 블록 간에 동일한 데이터는 동일(Equal), 부분적으로 수정된 데이터는 수정(Mod), 새롭게 추가된 데이터는 삽입(Insert)으로 하는 차분 데이터열(delta)을 생성한다.
이때 상기 도 4의 (d)에 나타낸 차분 데이터열은, 상기 신버전 블록의 각 블록별 길이 정보를 나타낸 것으로서 동일(Equal), 수정(Mod), 삽입(Insert)으로 구분하여 저장되는 데이터 길이 정보(즉 차분 정보)와, 수정(Mod)된 데이터 및 삽입(Insert)된 데이터를 포함하는 실제 데이터(즉 차분 데이터)로 구성된다.
여기서, 상기 동일(Equal)은 데이터 길이 정보만 표시되고, 상기 수정(Mod)은 데이터 길이 정보와 실제 데이터를 포함하며, 삽입(Insert)은 데이터 길이 정보, 실제 데이터 및 다음 동일(Equal)의 위치 정보를 포함한다. 그리고 삽입(Insert)의 경우, 상기 차분 엔진(100)은 지시자(예를 들어 0xFEFF로 설정됨)를 통해 확인한다.
또한 상기 데이터 길이 정보는 상기 도 4의 (d)에 나타낸 것처럼 E#110(동일(Equal) 데이터인 블록 #1의 데이터가 10개인 것을 의미), M3(데이터 3개가 수정(Mod)된 것을 의미), E#44, M3, A10(데이터 10개가 새롭게 삽입(Insert)된 것을 의미), E#616, M4, E#320, E#812, A10, E#58 등으로 나타낼 수 있다.
다음에는, 이와 같이 구성된 본 발명에 따른 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법의 일 실시예를 도 5와 도 6을 참조하여 상세하게 설명한다. 이때 본 발명의 방법에 따른 각 단계는 사용 환경이나 당업자에 의해 순서가 변경될 수 있다.
도 5는 본 발명의 일 실시예에 따른 소프트웨어 데이터의 업데이트 과정을 상세하게 나타낸 순서도이다.
도 5에 도시된 바와 같이, 상기 업데이트 관리서버(200)는 신버전의 소프트웨어 데이터가 생성되는 경우, 상기 신버전의 소프트웨어 데이터를 상기 클라이언트 디바이스(300)에 업데이트하기 위하여 상기 차분 엔진(100)에 신구 데이터간의 차분 생성을 요청한다(S100).
이에 따라 상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청을 토대로 구버전 및 신버전의 소프트웨어 데이터간의 차분을 생성하고, 상기 생성한 차분을 상기 업데이트 관리서버(200)로 제공한다(S200). 이때 상기 차분 생성에 대한 구체적인 설명은 도 6에서 상세하게 설명하기로 한다.
상기 S200 단계를 통해 상기 차분 엔진(100)으로부터 신구 데이터간의 차분을 제공받은 상기 업데이트 관리서버(200)는 상기 차분 엔진(100)에서 생성한 차분을 네트워크를 통해 상기 클라이언트 디바이스(300)로 전송한다(S300).
또한 상기 클라이언트 디바이스(300)에서는 업데이트 에이전트를 통해 상기 클라이언트 디바이스(300)로부터 수신한 차분을 토대로 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 업데이트하고(S400), 업데이트 완료정보를 상기 업데이트 관리서버(200)로 전송한다.
그러면 상기 업데이트 관리서버(200)는 상기 클라이언트 디바이스(300)로부터 수신한 업데이트 완료정보를 토대로 해당 클라이언트 디바이스(300)의 소프트웨어 데이터 업데이트 작업을 종료한다.
도 6은 본 발명의 일 실시예에 따른 소프트웨어 데이터의 업데이트를 위한 신구 데이터간의 차분 생성 방법의 동작과정을 보다 상세하게 나타낸 순서도이다.
도 6에 도시된 바와 같이, 상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청에 따라 구버전 및 신버전의 소프트웨어 데이터의 파티션(데이터) 및 블록(데이터)에 대한 정보를 파싱하는 단계를 수행한다(S205). 즉 상기 차분 엔진(100)은 개발자가 작성한 XML 파싱을 수행함으로써, 파티션 수, 위치(시작과 끝), 이름 및 타입을 포함한 구버전(old) 및 신버전(new) 데이터, 블록 사이즈 등의 적어도 하나 이상의 파티션에 대한 정보와, 구버전 블록, 신버전 블록, 블록 사이즈 등의 각 상기 파티션에 포함된 적어도 하나 이상의 블록에 대한 정보를 추출하는 것이다.
상기 S205 단계를 통해 XML 파싱을 수행한 이후, 상기 차분 엔진(100)은 소프트웨어 데이터의 파티션 개수가 0 이상인지를 판단하고(S210), 판단결과 소프트웨어 데이터의 파티션 개수가 0 이상이면, 상기 S205 단계를 통해 파싱한 소프트웨어 데이터의 파티션에 대한 정보로부터 위치, 이름 및 타입을 포함한 구버전 데이터 및 신버전 데이터, 블록 사이즈를 확인하는 단계를 수행한다(S215).
상기 S215 단계를 통해 블록 사이즈 등의 파티션에 대한 정보를 확인한 이후, 상기 차분 엔진(100)은 상기 확인한 블록 사이즈와 사용 가능한 메모리를 비교하여, 처리할 블록 사이즈를 결정하는 단계를 수행한다. 즉 차분 생성에 필요한 최적의 블록 사이즈를 결정하는 것이다.
차분 생성에 필요한 최적의 블록 사이즈를 결정하는 것을 보다 구체적으로 설명하면, 상기 차분 엔진(100)은 사용 가능한 메모리가 상기 S215 단계에서 확인한 파티션의 블록을 처리할 수 있는지를 판단한다(S220).
상기 S220 단계의 판단결과 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 없다면, 상기 차분 엔진(100)은 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 있을 때까지 상기 S215 단계에서 확인한 파티션의 각 블록에 대한 블록 사이즈를 감소시킨다(S225).
또한 상기 차분 엔진(100)은 상기 S225 단계를 통해 상기 사용 가능한 메모리의 사이즈가 상기 파티션의 블록을 처리할 수 있을 때까지 상기 블록 사이즈를 감소시키거나, 또는 상기 S220 단계의 판단결과 상기 사용 가능한 메모리가 상기 파티션의 블록을 처리할 수 있으면, 신버전 소프트웨어 데이터의 해당 파티션의 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 큰지를 판단한다(S230).
상기 S230 단계의 판단결과 상기 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 크면, 상기 차분 엔진(100)은 상기 블록 사이즈를 차분 생성을 위한 최적의 블록 사이즈로 결정한다(S235).
또한 상기 S230 단계의 판단결과 상기 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 작거나 같으면, 상기 차분 엔진(100)은 상기 신버전 데이터의 남은 사이즈를 차분 생성을 위한 최적의 블록 사이즈로 결정한다(S240). 즉 상기 S240 단계는 특정 파티션의 각 블록별 차분을 생성하는 것을 반복하는 과정에서 상기 신버전 데이터의 남은 사이즈의 제일 마지막 부분(상기 블록 데이터와 동일하거나 상기 블록 데이터보다 사이즈가 작음)을 처리하기 위한 단계이다.
이처럼 상기 S235 단계 또는 S240 단계를 통해 차분 생성을 위한 최적의 블록 사이즈를 결정한 이후, 상기 차분 엔진(100)은 상기 결정한 블록 사이즈에 따라 상기 S205 단계에서 파싱한 소프트웨어 데이터의 블록에 대한 정보로부터 구버전 블록, 신버전 블록 및 블록 사이즈를 포함한 적어도 하나 이상의 블록 정보를 확인하는 단계를 수행한다(S245).
또한 상기 차분 엔진(100)은 상기 S245 단계에서 확인한 블록 정보에 따라 상기 구버전 데이터와 신버전 데이터의 차분을 생성하는 단계를 수행한다(S250).
이때 상기 차분을 생성하는 S250 단계는 상기 도 3에서 설명한 것과 같이, 상기 파싱한 소프트웨어 데이터 정보로부터 확인한 전체 구버전 블록을 정렬하는 단계, 상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록 간의 첫 번째 차분 데이터열을 생성하는 단계, 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록을 차감한 구버전 블록과 n-1번째 신버전 블록 간의 n-1번째 차분 데이터열을 생성하는 단계, 상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록 내지 n-1번째 신버전 블록을 차감한 구버전 블록과 n번째 신버전 블록 간의 n번째 차분 데이터열을 생성하는 단계를 순차적으로 수행하며, 상기 차분 데이터열을 생성하는 것은 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행된다.
또한 상기 차분은 상기 도 4에서 설명한 것과 같이, 신버전 블록의 각 블록별 길이 정보를 나타낸 데이터 길이 정보, 및 부분적으로 수정된 데이터(Mod)와 상기 새롭게 추가된 데이터(Insert)를 포함하는 실제 데이터로 구성된다. 그리고 상기 데이터 길이 정보는 구버전 블록과 신버전 블록 간에 동일한 데이터는 동일(Equal), 부분적으로 수정된 데이터는 수정(Mod), 새롭게 추가된 데이터는 삽입(Insert)으로 구분하여 저장된다.
이제, 상기 S250 단계를 통해 차분을 생성한 이후, 상기 차분 엔진(100)은 상기 생성한 차분을 압축하고(S255), 상기 압축한 차분을 합치며(S260), 신버전 데이터의 남은 사이즈를 상기 블록 사이즈만큼 감소시킨다(S265).
또한 상기 차분 엔진(100)은 상기 신버전 데이터의 남은 사이즈가 0보다 큰지를 판단하고(S270), 판단결과 상기 신버전 데이터의 남은 사이즈가 0보다 크면, 신버전 소프트웨어 데이터의 해당 파티션의 신버전 데이터의 남은 사이즈가 상기 블록 사이즈보다 큰지를 판단하는 상기 S230 단계 이후를 반복하여 수행한다.
상기 S270 단계의 판단결과 상기 신버전 데이터의 남은 사이즈가 0과 같거나 작으면, 상기 차분 엔진(100)은 파티션 개수가 0 이상인지를 판단하는 S210 단계 이후를 반복하여 수행한다.
한편, 상기 차분 엔진(100)은 상기 S210 단계의 판단결과 파티션 개수가 0이면(즉 상기 차분 생성이 종료되면), 상기 S250 단계 내지 S260 단계를 통해 생성, 압축 및 합산한 차분을 상기 업데이트 관리서버(200)로 출력한다.
이에 따라 상기 업데이트 관리서버(200)는 상기 차분 엔진(100)으로부터 전송받은 차분(즉 신구 버전의 소프트웨어 데이터에 대한 소정 길이의 데이터열을 비교하여 동일(Equal), 삽입(Insert) 또는 수정(Mod) 중 하나를 결정하여 차분 데이터열로 나열한 것)을 업데이트 대상의 클라이언트 디바이스(300)로 전송하여 소프트웨어 데이터 업데이트가 이루어지도록 한다.
이상에서와 같이 본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 기술적 보호범위는 아래의 특허청구범위에 의해서 판단되어야 할 것이다.
본 발명은 업데이트 관리서버에서 신구 소프트웨어 데이터간을 비교하여 차분을 생성하고, 상기 생성한 차분을 자율주행차량이나 스마트폰 등의 클라이언트 디바이스로 제공하여 소프트웨어 데이터 업데이트를 간편하고 빠르게 수행하기 때문에, 신버전 소프트웨어 데이터 전부를 전송하지 않아도 되어 업데이트 처리시간과 데이터 전송에 따른 비용을 줄일 수 있다. 특히 본 발명은 소정의 블록에 대해서 소정 길이의 데이터열을 신구 버전의 소프트웨어 데이터에 대해서 전부 비교하기 때문에, 상기 블록에 포함된 특정 기능블록만 변경된 경우, 해당 기능블록만 변경된 것으로 차분 정보와 데이터가 생성되고, 변경되지 않은 부분은 차분정보만 생상되고 차분 데이터는 생성되지 않으므로, 차분 생성의 처리 속도가 빠르고, 차분 데이터의 크기가 줄어든다.
또한 본 발명은 사용자가 소프트웨어 데이터 업데이트를 위해 서비스 센터나 지정된 장소를 직접 방문할 필요가 없으므로 시간적, 경제적 효율성 및 편의성을 높일 수 있다.
또한 본 발명은 업데이트 관리서버에서 법률이나 제도의 변화에 대응함은 물론, 버그 및 결함에 대한 지속적인 소프트웨어 관리를 통해 클라이언트 디바이스의 시스템 안정성을 향상시킬 수 있다.

Claims (8)

  1. 차분 생성 장치에서, 특정 신구 버전의 소프트웨어 데이터를 파싱하여, 상기 신구 버전의 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 추출하는 단계;
    상기 차분 생성 장치에서, 상기 추출한 정보로부터 상기 파티션의 수와 블록 사이즈를 확인하는 단계; 및
    상기 차분 생성 장치에서, 상기 확인한 상기 파티션의 수와 블록 사이즈를 토대로, 각 상기 파티션에 포함된 상기 블록에 대한 상기 신구 버전의 소프트웨어 데이터의 차분을 생성하는 단계;를 포함하며,
    상기 파티션은, 적어도 하나 이상의 블록을 포함하며, 프로그램, 커널 또는 파일시스템에 따라 구분되며,
    상기 블록은, 상기 프로그램 및 커널의 경우, 상기 파티션의 전체 데이터를 기 설정된 블록 사이즈로 나눈 데이터이고, 상기 파일시스템의 경우, 상기 파일시스템을 구성하는 각각의 파일 데이터를 상기 블록 사이즈로 나눈 데이터이며,
    상기 차분 생성 장치에서, 상기 신구 버전의 소프트웨어 데이터에 대해서 서로 대응하는 각 블록을 비교하여, 동일(Equal), 수정(Mod) 및 삽입(Insert) 중 하나를 결정하고, 상기 결정에 따라 적어도 하나 이상의 블록에 대해 차분 데이터열을 생성하는 것을 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법.
  2. 청구항 1에 있어서,
    상기 차분을 생성하는 단계는,
    상기 생성한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 것을 더 포함하며,
    상기 압축 데이터열을 생성하는 것은,
    상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나,
    상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는
    이들의 조합을 통해서 상기 압축 데이터열을 생성하는 것이며,
    상기 압축은, 무손실 압축이며,
    상기 압축 데이터열은, 상기 압축을 수행하는 조건을 포함한 압축정보를 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법.
  3. 청구항 1에 있어서,
    상기 차분 생성 방법은,
    상기 차분 생성 장치에서, 사용 가능한 메모리의 사이즈가 상기 추출한 파티션 및 블록에 대한 정보로부터 확인한 각 파티션의 블록을 처리할 수 있는지 판단하는 단계; 및
    상기 판단한 결과, 상기 사용 가능한 메모리의 사이즈가 상기 각 파티션의 블록을 처리할 수 없으면, 상기 사용 가능한 메모리가 상기 각 파티션의 블록을 처리할 수 있을 때까지 상기 블록 사이즈를 감소시키는 단계;를 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법.
  4. 청구항 1에 있어서,
    상기 차분을 생성하는 단계는,
    상기 추출한 파티션 및 블록에 대한 정보로부터 전체 구버전 블록을 정렬하는 단계;
    상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록 간의 첫 번째 차분 데이터열을 생성하는 단계;
    상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록을 차감한 구버전 블록과 n-1번째 신버전 블록 간의 n-1번째 차분 데이터열을 생성하는 단계; 및
    상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록 내지 n-1번째 신버전 블록을 차감한 구버전 블록과 n번째 신버전 블록 간의 n번째 차분 데이터열을 생성하는 단계;를 더 포함하며,
    상기 차분 데이터열을 생성하는 것은, 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행되는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법.
  5. 특정 신구 버전의 소프트웨어 데이터를 파싱하여, 상기 신구 버전의 소프트웨어 데이터의 파티션 및 블록에 대한 정보를 추출하는 파싱부;
    상기 추출한 정보로부터 상기 파티션의 수와 블록 사이즈를 확인하는 정보 확인부; 및
    상기 확인한 상기 파티션의 수와 블록 사이즈를 토대로, 각 상기 파티션에 포함된 상기 블록에 대한 상기 신구 버전의 소프트웨어 데이터의 차분을 생성하는 차분 생성부;를 포함하며,
    상기 파티션은, 적어도 하나 이상의 블록을 포함하며, 프로그램, 커널 또는 파일시스템에 따라 구분되며,
    상기 블록은, 상기 프로그램 및 커널의 경우, 상기 파티션의 전체 데이터를 기 설정된 블록 사이즈로 나눈 데이터이고, 상기 파일시스템의 경우, 상기 파일시스템을 구성하는 각각의 파일 데이터를 상기 블록 사이즈로 나눈 데이터이며,
    상기 차분 생성부는, 상기 신구 버전의 소프트웨어 데이터에 대해서 서로 대응하는 각 블록을 비교하여, 동일(Equal), 수정(Mod) 및 삽입(Insert) 중 하나를 결정하고, 상기 결정에 따라 적어도 하나 이상의 블록에 대해 차분 데이터열을 생성하는 것을 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치.
  6. 청구항 5에 있어서,
    상기 차분 생성 장치는,
    상기 생성한 차분 데이터열을 압축하여 압축 데이터열을 생성하는 차분 압축부;를 더 포함하며,
    상기 압축 데이터열을 생성하는 것은,
    상기 차분 데이터열을 1차원적으로 나열하여 중복성을 감소시키거나,
    상기 차분 데이터열을 2차원적으로 나열하여 중복성을 감소시키거나, 또는
    이들의 조합을 통해서 상기 압축 데이터열을 생성하는 것이며,
    상기 압축은, 무손실 압축이며,
    상기 압축 데이터열은, 상기 압축을 수행하는 조건을 포함한 압축정보를 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치.
  7. 청구항 5에 있어서,
    상기 정보 확인부는,
    사용 가능한 메모리의 사이즈가 상기 추출한 파티션 및 블록에 대한 정보로부터 확인한 각 파티션의 블록을 처리할 수 있는지 판단하고, 상기 판단한 결과, 상기 사용 가능한 메모리의 사이즈가 상기 각 파티션의 블록을 처리할 수 없으면, 상기 사용 가능한 메모리가 상기 각 파티션의 블록을 처리할 수 있을 때까지 상기 블록 사이즈를 감소시키는 것을 더 포함하는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치.
  8. 청구항 5에 있어서,
    상기 차분 생성부는,
    상기 추출한 파티션 및 블록에 대한 정보로부터 전체 구버전 블록을 정렬하고,
    상기 정렬한 전체 구버전 블록과 첫 번째 신버전 블록 간의 첫 번째 차분 데이터열을 생성하고,
    상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록을 차감한 구버전 블록과 n-1번째 신버전 블록 간의 n-1번째 차분 데이터열을 생성하고,
    상기 정렬한 전체 구버전 블록에서 첫 번째 신버전 블록 내지 n-1번째 신버전 블록을 차감한 구버전 블록과 n번째 신버전 블록 간의 n번째 차분 데이터열을 생성하는 것을 더 포함하며,
    상기 차분 데이터열을 생성하는 것은, 해당 파티션에 포함된 블록이 모두 처리될 때까지 반복하여 수행되는 것을 특징으로 하는 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 장치.
PCT/KR2020/003493 2019-08-27 2020-03-13 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치 WO2021040166A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP20788973.4A EP3812889B1 (en) 2019-08-27 2020-03-13 Method for generating difference between new and old data in order to update software, and device therefor
US17/051,433 US11775288B2 (en) 2019-08-27 2020-03-13 Method and apparatus for generating difference between old and new versions of data for updating software

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190105324A KR102088164B1 (ko) 2019-08-27 2019-08-27 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
KR10-2019-0105324 2019-08-27

Publications (1)

Publication Number Publication Date
WO2021040166A1 true WO2021040166A1 (ko) 2021-03-04

Family

ID=69803061

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/003493 WO2021040166A1 (ko) 2019-08-27 2020-03-13 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치

Country Status (4)

Country Link
US (1) US11775288B2 (ko)
EP (1) EP3812889B1 (ko)
KR (1) KR102088164B1 (ko)
WO (1) WO2021040166A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102088164B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
US20220206786A1 (en) * 2020-12-30 2022-06-30 International Business Machines Corporation Code library selection management
US11880224B2 (en) 2021-02-24 2024-01-23 Cisco Technology, Inc. Providing tailored software update relevance information for deployed software
KR102592995B1 (ko) 2021-10-27 2023-10-24 경북대학교 산학협력단 소프트웨어의 오동작 패치정보 생성시스템 및 소프트웨어의 오동작 패치정보 생성방법
KR102592997B1 (ko) 2021-10-27 2023-10-24 경북대학교 산학협력단 이진화 이미지를 이용한 소프트웨어의 오동작 검출방법
KR102662335B1 (ko) 2021-10-27 2024-05-03 경북대학교 산학협력단 비교 신경망 학습을 이용한 소프트웨어의 오동작 검출시스템 및 소프트웨어의 오동작 검출방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390867B1 (ko) * 2000-05-30 2003-07-10 주식회사 마이크로랩스 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법
KR20040022020A (ko) 2002-09-06 2004-03-11 삼성전자주식회사 원격 펌웨어 업그레이드 방법 및 그 디스플레이 장치
KR100632904B1 (ko) 1998-08-19 2006-10-16 레드 밴드 리미티드 구 프로그램과 신 프로그램 간에서의 컴팩트한 차이 결과를 생성하기 위한 방법 및 시스템
JP2012190075A (ja) * 2011-03-08 2012-10-04 Clarion Co Ltd 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
KR20150005164A (ko) * 2013-07-04 2015-01-14 주식회사 미르코퍼레이션 Fota 시스템 및 그 실행 방법
KR20150089591A (ko) * 2014-01-28 2015-08-05 현대엠엔소프트 주식회사 내비게이션 자동 업데이트 장치 및 방법
KR101822485B1 (ko) * 2017-09-07 2018-01-26 업데이트씽(주) 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법
KR102088164B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
EP1005674A4 (en) * 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US7159214B2 (en) * 2001-07-26 2007-01-02 Kyocera Wireless Corp. System and method for compacting field upgradeable wireless communication device software code sections
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
KR100772399B1 (ko) * 2006-02-28 2007-11-01 삼성전자주식회사 패치 파일 생성 방법 및 그 방법을 수행하는 프로그램을기록한 컴퓨터 판독 가능한 기록매체
JP5342302B2 (ja) * 2009-03-30 2013-11-13 株式会社日立ソリューションズ ファームウェア更新システム、ファームウェア配信サーバ、及びプログラム
CA2786613A1 (en) * 2010-01-12 2011-07-21 Google Inc. Operating system auto-update procedure
US8498965B1 (en) * 2010-02-22 2013-07-30 Trend Micro Incorporated Methods and apparatus for generating difference files
US8862555B1 (en) * 2011-05-16 2014-10-14 Trend Micro Incorporated Methods and apparatus for generating difference files
CN103473099B (zh) * 2013-09-13 2017-02-01 惠州Tcl移动通信有限公司 一种移动终端的软件升级方法和系统
EP3358465B1 (en) * 2015-09-29 2024-04-17 Hitachi Astemo, Ltd. In-vehicle control device, program update system, and program update software

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100632904B1 (ko) 1998-08-19 2006-10-16 레드 밴드 리미티드 구 프로그램과 신 프로그램 간에서의 컴팩트한 차이 결과를 생성하기 위한 방법 및 시스템
KR100390867B1 (ko) * 2000-05-30 2003-07-10 주식회사 마이크로랩스 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법
KR20040022020A (ko) 2002-09-06 2004-03-11 삼성전자주식회사 원격 펌웨어 업그레이드 방법 및 그 디스플레이 장치
JP2012190075A (ja) * 2011-03-08 2012-10-04 Clarion Co Ltd 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
KR20150005164A (ko) * 2013-07-04 2015-01-14 주식회사 미르코퍼레이션 Fota 시스템 및 그 실행 방법
KR101541112B1 (ko) 2013-07-04 2015-07-31 주식회사 미르코퍼레이션 Fota 시스템 및 그 실행 방법
KR20150089591A (ko) * 2014-01-28 2015-08-05 현대엠엔소프트 주식회사 내비게이션 자동 업데이트 장치 및 방법
KR101822485B1 (ko) * 2017-09-07 2018-01-26 업데이트씽(주) 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법
KR102088164B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치

Also Published As

Publication number Publication date
KR102088164B1 (ko) 2020-03-12
US11775288B2 (en) 2023-10-03
EP3812889B1 (en) 2024-05-01
EP3812889A4 (en) 2022-01-05
EP3812889A1 (en) 2021-04-28
US20210373882A1 (en) 2021-12-02

Similar Documents

Publication Publication Date Title
WO2021040166A1 (ko) 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치
WO2021040167A1 (ko) 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법
US7840961B1 (en) Method and system for installing software on multiple computing systems
US7600225B2 (en) System and method for intra-package delta compression of data
CN108037961A (zh) 一种应用程序配置方法、装置、服务器和存储介质
WO2010123168A1 (ko) 데이터베이스 관리 방법 및 시스템
US20030163802A1 (en) Method, apparatus, and program for constructing an execution environment, and computer readable medium recording program thereof
CN108279922A (zh) 差分文件生成方法、基于该差分文件的升级方法及系统
WO2021141294A1 (ko) 데이터의 하이브리드 저장을 이용한 데이터 아카이빙 방법 및 시스템
CN107797823B (zh) 业务规则管理方法、装置、存储介质和计算机设备
CN1886976B (zh) 用于使用动作列表及版本控制对一无线装置执行动作的方法及设备
WO2021040168A1 (ko) 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
US20140359077A1 (en) Method and apparatus for transmitting symbol files
US7770167B1 (en) Method and system for installing software
WO2021141292A1 (ko) 하이브리드 클라우드 기반의 실시간 데이터 아카이빙 방법 및 시스템
WO2024090932A1 (ko) 수집 데이터 자동 처리를 위한 데이터 적재 프로파일링 장치 및 방법
US10445084B1 (en) Method and system for installing software
WO2019074155A1 (ko) 데이터베이스 간의 실시간 통합 복제 시스템
US8566820B1 (en) Method and system for installing software
CN112783514B (zh) 一种web前端项目部署管理的方法与系统
CN114860228A (zh) 基于Module Federation技术实现的模块中心化共享系统
WO2013077552A1 (ko) 서브셋/풀셋 폰트를 이용한 메시지 서비스 시스템 및 방법
WO2022059941A1 (ko) 기업분할 시 조직 데이터를 선별하여 이관하는 방법 및 시스템
JPH05120023A (ja) プログラムローデイング方式
WO2024048907A1 (ko) 아이템 원부 플랫폼을 위한 방법, 컴퓨터 장치, 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2020788973

Country of ref document: EP

Effective date: 20201020

NENP Non-entry into the national phase

Ref country code: DE