WO2021040168A1 - 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 - Google Patents
신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 Download PDFInfo
- Publication number
- WO2021040168A1 WO2021040168A1 PCT/KR2020/003495 KR2020003495W WO2021040168A1 WO 2021040168 A1 WO2021040168 A1 WO 2021040168A1 KR 2020003495 W KR2020003495 W KR 2020003495W WO 2021040168 A1 WO2021040168 A1 WO 2021040168A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- delta
- information
- sub
- difference
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/213—Schema design and management with details for schema evolution support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Definitions
- the present invention relates to a data structuring method and a device for the difference between old and new data, and more particularly, to update software data including a program installed in a client device such as an autonomous vehicle or a smart phone, a kernel, and a file system.
- the present invention relates to a data structuring method and a device for generating and transmitting a difference indicating a difference between an old version and a new version of software data when a harmful difference is to be generated and transmitted.
- the information technology industry which puts emphasis on indirect value creation that encompasses tangible and intangible technologies necessary for information means such as computers, software, Internet, multimedia, management innovation, and administrative reform, is called the IT (Information Technology) industry, and is referred to as business data and voice. It includes conversations, photos, videos and multimedia, as well as all forms of technology needed to develop, store and exchange information.
- the software installed in the wireless communication terminal also has many bugs, and as the user's request for function addition increases, the software patch and function update of the wireless communication terminal There is a need to perform it from time to time.
- a data structure for the difference representing the difference between the software data of the old version and the new version used when updating software data including a kernel and a file system, a program installed in a client device including an autonomous vehicle or a smart phone, is structured.
- a method and a device for the same are to be presented.
- the present invention provides a delta header including differential version information, the number of partitions, a delta size for each partition, and patch information for a normal or resume, and a partition and at least one sub-delta included in the partition.
- a delta data structure which is a differential data string including a delta body including data about data, can be created, and a method for generating a delta data structure differently for each program, kernel, and file system is proposed.
- Korean Patent Registration No. 1542323 (2015.08.05.) relates to an update data processing method for efficiently tracking update data in a computing device, and a computing device therefor, including an effective flag area, a virtual address base area, and a physical address.
- a configuration of an update data management table including at least one of a base area and a next update address information area is presented.
- the prior art describes a method and apparatus for efficiently tracking update data through an update data management table including a valid flag area, a virtual address base area, a physical address base area, and a next update address information area.
- Korean Patent Publication No. 2008-0037450 (2008.04.30.) relates to a system and method for updating a software execution module, including header information and update information on at least one partition, and the header information includes terminal and software
- the configuration of the update package including identification information of, or discrimination information indicating whether the update package was created through file-to-file comparison, program image of terminal software and new version software, or checksum information.
- the prior art describes a system and method capable of improving update efficiency by dramatically reducing the amount of data transmitted between the mobile terminal and the update server.
- the version information of the difference, the number of partitions, and each Delta which is a difference data string including a delta header including a delta size for a partition and patch information on normal or resume, and a delta body including data on a partition and at least one sub-delta included in the partition ( delta) creates a data structure, and in particular describes a method and device for generating a delta data structure differently for each program, kernel, and file system. Therefore, the prior art does not describe or suggest such a technical feature of the present invention.
- the present invention was created to solve the above problems, and provides a method and device for structuring the difference used when updating software data installed in a client device such as an autonomous vehicle or a smart phone.
- a client device such as an autonomous vehicle or a smart phone.
- the present invention provides a delta data structure (i.e., a difference data string) for the difference representing the difference between the old and new software data in the version information of the difference, the number of partitions, the delta size for each partition, and a normal or resume.
- a delta header including patch information for the partition and a delta body including data on at least one sub-delta included in the partition and the partition are generated, and the delta body includes a sub-delta header and block information included in each partition.
- Another object of the present invention is to provide a data structuring method and a device for generating a data structure including a sub-delta body including at least one sub-delta body.
- the present invention is a data structuring method for the difference between old and new data that can be generated differently by dividing the delta data structure (i.e., the difference data string) for the difference representing the difference between the old version and the new version software data by program, kernel, and file system. And it is another object to provide the device.
- the delta data structure i.e., the difference data string
- the data structuring method for the difference between old and new data includes, in a difference generation processor, the version information of the difference, the number of partitions, and each of the partitions in order to generate a difference for the software data of the old and new version.
- sub-delta header is generated differently for each program, kernel, and file system.
- the sub-delta header includes information on the type of the sub-delta, information on the presence or absence of compression of the sub-delta body, information on the size of the sub-delta body, information on the number of the sub-delta bodies, a checksum of an old version program, and a checksum of a new version program. It is characterized by that.
- the sub-delta header includes information on the type of the sub-delta, information on the presence or absence of compression of the sub-delta body, information on the size of the sub-delta body, information on the number of the sub-delta bodies, the compression checksum of the old kernel and the compression checksum of the new kernel. It characterized in that it includes.
- the sub-delta header includes a file system header and a file system sub-header
- the file system header includes type information of the sub-delta and information on the number of files
- the file system sub-header includes path information of a file, status information of file addition, modification, and deletion, general information of file, attribute information of symbolic and link, presence or absence of compression of file, size information of the sub-delta body, checksum of old version file, and new version of file. And information on the number of the checksum and the sub-delta body.
- the block header includes information about the same (Equal) and modified (Mod) length data size of the block body, information about the size of modified data of the block body, information about the size of insert data of the block body, and insertion of the block body.
- the modified actual data is modified binary data
- the same (Equal) and modified (Mod) length data are sequentially stored as much as a modified (Mod) length
- the inserted actual data is , Is inserted binary data, and is sequentially stored as long as the insert length from the insert length data
- the insert length data includes length information of the insert data and the insert It includes location information of the same (Equal) data following data processing
- the same (Equal) and modified (Mod) length data includes the same (Equal) and modified (Mod) length data information and the insert. Characterized in that it includes a data separator.
- the data structuring device for the difference between the old and the new data in order to generate a difference for the software data of the old and old version, the version information of the difference, the number of partitions, the delta for each of the partitions.
- the generated delta body includes a sub-delta header and at least one sub-delta body including block information included in each partition, and the sub-delta body includes a block header and a block body for specific block information. It is done.
- the difference generation processor is characterized in that the sub-delta header is generated differently by dividing the sub-delta header for each program, kernel, and file system.
- the difference generation processor includes information on the type of the sub-delta, information on the presence or absence of compression of the sub-delta body, and information on the size of the sub-delta body, information on the number of the sub-delta bodies, a checksum of an old version program, and a checksum of a new version program. It is characterized by generating a sub-delta header.
- the difference generation processor includes information on the type of the sub-delta, information on the presence or absence of compression of the sub-delta body, information on the size of the sub-delta body, information on the number of sub-delta bodies, the compression checksum of the old kernel, and the compression checksum of the new kernel. And generating the sub-delta header including.
- the difference generation processor generates the sub-delta header including a file system header and a file system sub-header, and the file system header includes information on the type of the sub-delta and the number of files.
- the file system sub-header includes path information of a file, status information of addition, modification, and deletion of files, general information of a file, attribute information of symbolic and link, presence or absence of compression of a file, size information of the sub-delta body, and old version files. And information on the number of the sub-delta bodies, the checksum of the new version file, and the checksum of the new version file.
- the difference generation processor when generating the block header, includes information on the data size of the same (Equal) and modified (Mod) length of the block body, information on the size of the modified data of the block body, and insert of the block body.
- Data size information, insert length data size information of the block body, data type information of the block body, block size information, a checksum of an old block and a checksum of a new block are generated, and the block body is generated.
- it is characterized in that it is generated by including modified actual data, inserted actual data, equal and modified length data, and insert length data.
- the difference generation processor allows the same (Equal) and modified (Mod) length data to be sequentially stored as much as a modified (Mod) length, and the inserted actual data
- the insert length data is sequentially stored as long as the insert length, and in the case of the insert length data, length information of the insert data and the insert data It is generated by including the location information of the same (Equal) data following the processing of, and in the case of the same (Equal) and modified (Mod) length data, the same (Equal) and modified (Mod) length data information and the insertion ( Insert) It is characterized in that it is generated including a delimiter of data.
- a kernel and a file system is performed.
- a delta data structure Differential data string
- a difference representing the difference between old and new software data can be accurately and quickly generated, and the difference can be used.
- the present invention does not require a client device user to directly visit a service center or a designated place to update software data, thereby improving time, economic efficiency and convenience, and software data for changes in laws or systems, bugs and defects. Since it is possible to actively manage the client device, it has the effect of improving the system stability of the client device.
- 1 is a diagram for explaining the configuration of an entire system to which data structuring for differences between old and new data is applied according to an embodiment of the present invention.
- FIG. 2 is a diagram showing a hardware structure of a difference engine for structuring a data on a difference between old and new data according to an embodiment of the present invention.
- FIG. 3 is a detailed diagram illustrating a delta data structure (differential data sequence) according to an embodiment of the present invention.
- FIG. 4 is a diagram illustrating in detail a data structure of a delta header according to an embodiment of the present invention.
- FIG. 5 is a diagram showing in detail a data structure of a sub-delta header (binary) according to an embodiment of the present invention.
- FIG. 6 is a diagram illustrating in detail a data structure of a sub-delta header according to an embodiment of the present invention.
- FIG. 7 is a diagram illustrating in detail a data structure of a sub-delta header (filesystem) according to an embodiment of the present invention.
- FIG. 8 is a detailed diagram illustrating a data structure of a sub-delta body according to an embodiment of the present invention.
- FIG. 9 is a detailed diagram illustrating a data structure of a block body according to an embodiment of the present invention.
- FIG. 10 is a flowchart illustrating in detail an operation process of a data structuring method for a difference between old and new data 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.
- 1 is a diagram for explaining the configuration of an entire system to which data structuring for differences between old and new data is applied according to an embodiment of the present invention.
- the present invention relates to data structuring for the difference representing the difference between the old version and the new version software data, and is installed in various electronic devices owned by the user using the difference generated through a specific data structure. Update the existing software data.
- the present invention includes a difference engine 100, an update management server 200, a client device 300, an update agent 400, a database 500, and the like.
- the difference engine 100 is a difference generating device, and when software data including a program, a kernel, and a file system is changed through operations such as modification, insertion, and deletion, new and old data are requested by the update management server 200.
- a difference is generated by selecting only the difference between the parts (that is, the part in which correction, insertion, deletion, etc. is made), and the generated difference is provided to the client device 300 through the update management server 200, and the client It is possible to perform software data update simply and quickly through the update agent 400 provided in the device 300 or independently provided in the device 300.
- the difference engine 100 selects only the difference part, without having to provide the entire software data changed through operations such as modification, insertion, deletion, etc. to the client device 300, and selects it from the client device 300. ) To perform the update, as well as reducing the cost of data generation due to the transmission of the new version of the software data, improving the update speed of the software data, and improving the stability of the system related to the software data update.
- the difference engine 100 when generating a difference between old and new data, the difference engine 100 generates a difference based on a delta data structure (ie, a difference data sequence) including a delta header and a delta body.
- a delta data structure ie, a difference data sequence
- the data structure for the difference will be described in more detail with reference to FIGS. 3 to 9.
- the difference engine 100 may be implemented as an independent device as shown in FIG. 1 and used by being integrated in the update management server 200 in addition to a method of communicating and connecting with the update management server 200.
- the update management server 200 is a computer operated by a business operator that updates and manages software data used in the client device 300, and when the software data is newly created, the difference engine 100 has an old version and a new version. Request to create a difference between software data.
- the update management server 200 transmits the difference to the corresponding client device 300 through the network and transmits the difference to the update agent 400. ), and when the update completion information is received from the client device 300, update information of software data is stored and managed in the database 500.
- the client device 300 is a wireless communication terminal such as a smartphone, a map, a satellite navigation system (GPS), various sensors, etc. It is an electronic device that is driven based on software data.
- a wireless communication terminal such as a smartphone, a map, a satellite navigation system (GPS), various sensors, etc. It is an electronic device that is driven based on software data.
- GPS satellite navigation system
- the client device 300 receives a difference obtained by comparing the software data of the old version and the new version from the update management server 200, the difference is provided to the update agent 400 to provide the old version of the software data to the new version of the software.
- update completion information is generated and then transmitted to the update management server 200 through a network.
- the update agent 400 is built-in or independently provided in the client device 300, and the old version of software data previously installed in the client device 300 based on the difference provided from the update management server 200 Is patched with the new version of the software data.
- the update agent 400 when the update agent 400 is forcibly terminated in the process of patching the software data of the new version based on the difference (for example, an event such as an execution of an application program is stopped by a user or a battery is exhausted, etc.) Occurs), it provides a resume patch function that proceeds with the patch from the point when the patch is completed without re-patching from the beginning.
- the update agent 400 checks the normally completed position with reference to the block checksum information when the next patch is executed again, and restarts from the position where the patch is completed. By allowing the patch to proceed, the fast and stable patch work can be achieved.
- the database 500 stores and manages the difference between comparing the software data of the old version and the new version generated by the difference engine 100, as well as the device type, software data version, and update history of the client device 300. .
- the difference engine 100 generates a difference between the old version and the new version of software data at the request of the update management server 200 (1), and outputs the generated difference to the update management server 200.
- the difference engine 100 includes a delta header including version information of the difference, the number of partitions, a delta size for each partition, and patch information for a normal or resume, and at least one partition and at least one of the partitions.
- the difference is generated based on the delta data structure composed of the delta body including the sub-delta data.
- the update management server 200 transmits the difference provided from the difference engine 100 to the client device 300 to be updated through a network (2), and the client device 300 transmits the difference. And outputs it to the update agent 400 (3).
- the update agent 400 updates the old version of software data with the new version of software data based on the difference transmitted from the update management server 200 (4).
- the client device 300 When the update of the previously installed software data is completed through the difference, the client device 300 generates update completion information of the software data, and transmits the update completion information of the generated software data to the update management server 200 through a network. ) To (5).
- the update management server 200 stores the update information of the software data for each client device 300 in the database 500 by referring to the update completion information of the software data provided from the client device 300 and updates it. Finish the work (6).
- FIG. 2 is a diagram showing a hardware structure of a difference engine to which a data structuring for differences between old and new data is applied according to an embodiment of the present invention.
- the hardware structure of the difference engine 100 includes a difference generation processor 110, an input/output interface 120, and a network card. It is configured to include a (network card) 130, a memory 140, and the like.
- the difference engine 100 may additionally include a power supply unit for supplying operating power to each component, an input unit for inputting data for various functions, and the like.
- the difference engine 100 programs a data structure for recording a difference between old and new data or information for generating a difference based on the data structure through various programming languages such as Java, and has a memory address. ), and performs a function for each of the components according to the call of the difference generation processor 110.
- the difference generation processor 110 processes the generation of a difference by comparing the software data of the old version and the new version based on a data structure including a delta header and a delta body, and calls a program stored in the memory 140 as necessary. It is possible to create a difference based on the data structure.
- the input/output interface 120 performs a function of exchanging data with a manager terminal provided by a manager managing the difference engine 100, including inputting information on the operation of the difference engine 100.
- the network card 130 is a part that provides an interface for communication between the difference engine 100 and the update management server 200, and may be configured to simultaneously support wired communication and wireless communication.
- the memory 140 stores various operation programs used by the difference engine 100. For example, information on a specific data structure for recording the difference or a program for generating the difference is stored.
- the memory 140 temporarily stores a difference obtained by comparing old and new data generated by the difference generation processor 110 through the data structure.
- the system bus connects each of the components constituting the hardware of the difference engine 100 including the difference generation processor 110, the input/output interface 120, the network card 130, and the memory 140 , So that data can be transmitted between each of the components.
- FIG. 3 is a detailed diagram illustrating a delta data structure (differential data sequence) according to an embodiment of the present invention.
- a delta data structure 600 which is a data structure for difference applied to the present invention, includes a delta header 610 and a delta body 620.
- the delta body 620 includes at least one partition and at least one sub-delta 630 including information included in each partition. That is, the sub-delta 630 is generated as many as the number of partitions.
- the sub-delta 630 includes a sub-delta header 640 and at least one sub-delta body 650 including block information included in each partition, and the sub-delta body 650 is as shown in FIG. It includes a block header 660 and a block body 670 for specific block information.
- the sub-delta header 640 may be generated differently by dividing each program, kernel, and file system as shown in FIGS. 5 to 7.
- 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 preset block size in the case of the program (binary) and the kernel, and data obtained by dividing each file data constituting the file system by the block size in the case of the file system.
- FIG. 4 is a diagram illustrating in detail a data structure of a delta header according to an embodiment of the present invention.
- the delta header 610 has Delta Version, Sub Delta Count, and Signature as essential items, and is generated by adding Delta Size items. At this time, each item has a size of 4 bytes.
- the Delta Version item is a part in which version information of the difference between the version of the delta data structure 600 and the difference for checking the validity of the delta version when performing a patch is recorded, and the Sub Delta Count item contains information on the number of partitions. It is a recorded part, and the Signature item is a part in which patch information for normal or resume is recorded, and the Delta Size item is a part in which size information of the delta body 620 is recorded.
- the Signature item includes a checksum (CRC 32) value (A) and a Signature value (B) of the delta header, and the Signature value (B) is in the process of performing a patch based on the difference in the update agent 400.
- CRC 32 checksum
- B Signature value
- the update agent 400 performs a patch based on the difference, if the A value and the B value are the same, it can be checked as a normal patch, and if the A value and the B value are not the same, it can be checked as a restart patch.
- FIG. 5 is a diagram showing in detail a data structure of a sub-delta header (binary) according to an embodiment of the present invention.
- the program sub-delta header 640a has Sub Delta Type, Is Compressed, Sub Delta Body Size, Sub Delta Body Count, Original Checksum, and New Checksum as mandatory items, and Body Checksum, Partition Name, It is created by adding the items of Original Size and New Size. At this time, each item has a size of 4 bytes.
- the Sub Delta Type item is a part in which type information of the sub-delta header 640 (here, as a program, the program type performs a normal patch) is recorded, and the Is Compressed item is whether the sub-delta body 650 is compressed.
- the Sub Delta Body Size item is a part where the total size information of the sub-delta body 650 is recorded (if compressed, the compressed size is recorded), and the Sub Delta Body Count item is the sub-delta It is a part in which the number information of the body 650 (that is, the number of blocks of the partition) is recorded, and the Original Checksum item is a part in which a checksum (CRC 32) of an old version program for checking the validity of target data before patching is recorded, and the New Checksum item is a part in which a checksum (CRC 32) of a new version program for checking the validity of whether the old version data after the patch has been properly patched is recorded.
- the Body Checksum item is a part where the entire checksum (CRC 32) of the sub-delta body 650 is recorded
- the Partition Name item is a part where the partition name is recorded
- the Original Size item is the size of the old version data.
- the New Size item is a part in which the size of the new version data is recorded.
- FIG. 6 is a diagram illustrating in detail a data structure of a sub-delta header according to an embodiment of the present invention.
- the kernel sub-delta header 640b has Sub Delta Type, Is Compressed, Sub Delta Body Size, Sub Delta Body Count, Original Kernel Compress Checksum, and New Kernel Compress Checksum as mandatory items, and Body Checksum , Partition Name, Original Kernel Gzip Size, Original Kernel Compress Size, Original Kernel Size, Original Kernel Checksum, New Kernel Gzip Size, New Kernel Compress Size, New Kernel Size and New Kernel Checksum.
- each item has a size of 4 bytes.
- the Sub Delta Type item is a part in which type information of the sub-delta header 640 (here, as a kernel, the kernel type is compressed, normal patching after decompression and compression again) is recorded, and the Is Compressed item is the
- the sub-delta body 650 is a part recorded whether or not the sub-delta body 650 is compressed
- the sub-delta body size item is a part in which the total size information of the sub-delta body 650 is recorded (if compressed, the compressed size is recorded)
- the The Sub Delta Body Count item is a part in which information on the number of the sub-delta bodies 650 (that is, the number of blocks of the partition) is recorded, and the Original Kernel Compress Checksum item is of an old kernel to check the validity of target data before patching.
- a compressed checksum (CRC 32) is recorded
- the New Checksum item is a compressed checksum (CRC 32) of a newer version kernel to check whether or not the old version data after the patch has been properly patch
- the Body Checksum item is a part where the entire checksum (CRC 32) of the sub-delta body 650 is recorded
- the Partition Name item is a part where the partition name is recorded
- the Original Kernel Gzip Size item is an old kernel Gzip size.
- the Original Kernel Compress Size item is a part where the old version kernel compression size is recorded
- the Original Kernel Size item is a part where the size of the old version kernel is recorded
- the Original Kernel Checksum item is the checksum of the old version kernel ( CRC 32) is recorded
- the New Kernel Gzip Size item is a new version kernel Gzip size is recorded
- the New Kernel Compress Size item is a new version kernel compression size is recorded
- the New Kernel Size item is a new version.
- the size of the kernel is recorded
- the New Kernel Checksum item is a portion in which the checksum (CRC 32) of the new version of the kernel is recorded.
- FIG. 7 is a diagram illustrating in detail a data structure of a sub-delta header (filesystem) according to an embodiment of the present invention.
- the file system sub-delta header 640c is generated including the file system header 640c-1 and the file system sub-header 640c-2 as shown in FIG. 7A.
- the file system header 640c-1 has Sub Delta Type and File Count as essential items, and is created by adding the items of Target System and Partition Name, as shown in (b) of FIG. 7. At this time, the required item has a size of 4 bytes.
- the Sub Delta Type item is a part in which type information of the sub-delta header 640 (here, as a file system, a file system type performs normal patching in units of files), and the File Count item indicates the number of files. This is the recorded part.
- Target System item is a part where information of the system type (eg, Linux, QNX, etc., and the mounting method varies according to the type of system) is recorded
- Partition Name item is a part where the partition name is recorded.
- the file system sub-header 640c-2 includes File Path, Operation, File type, Is Compressed, Sub Delta Body Size, Original Checksum, New Checksum, and Sub Delta Body Count, as shown in FIG. 7(c).
- Required items Access Time, Change Time, Modify Time, Create Time, Delete Time, Access ExTime, Change ExTime, Modify ExTime, Create ExTime, Permission, Owner, Group, Sub Delta Body Checksum, Original Size, New Size and APK It is created by adding an item of Size. At this time, each item has a size of 4 bytes.
- the File Path item is a part in which path information of a file is recorded
- the Operation item is a part in which addition, modification, and deletion status information of a file is recorded
- the File type item is a general, symbolic, and link property information of a file. It is a recorded part
- the Is Compressed item is a part in which whether or not the file is compressed
- the Sub Delta Body Size item is a part in which the total size information of the sub-delta body 650 is recorded
- the Original Checksum item is before the patch.
- the checksum (CRC 32) of the old version file to check the validity of the target data is recorded
- the New Checksum item is the checksum of the new version file (CRC 32) to check whether the old version data after the patch has been properly patched. This is a recorded part
- the Sub Delta Body Count item is a part in which information on the number of sub-delta bodies 650 (that is, the number of blocks in a file) is recorded.
- the Access Time item is a part in which the access time (in seconds) of the file is recorded
- the Change Time item is a part in which the time (in seconds) when the properties of the file are modified
- the Modify Time item is a part where the file is modified.
- the created time (in seconds) is recorded
- the Create Time item is the time when the file was created (in seconds)
- the Delete Time item is the time when the file was deleted (in seconds).
- the Access ExTime item is a part in which the access time (in nanoseconds) of the file is recorded
- the Change ExTime item is a part in which the time (in nanoseconds) when the property of the file is modified is recorded
- the Modify ExTime item is The modified time (in nanosecond units) is recorded
- the Create ExTime item is a portion where the file creation time (in nanosecond units) is recorded
- the permission item is a portion in which permission information of the file is recorded
- the Owner item Is a part in which owner information of a file is recorded
- the Group item is a part in which group information of a file is recorded
- the Sub Delta Body Checksum item is a part in which the entire checksum (CRC 32) of the sub-delta body 650 is recorded.
- the Original Size item is a part in which size information of the old version data is recorded
- the New Size item is a part in which size information of the new version data is recorded
- the APK Size item is a part in which size information of the APK decompressed data is recorded. Part.
- FIG. 8 is a detailed diagram illustrating a data structure of a sub-delta body according to an embodiment of the present invention.
- the sub-delta body 650 is generated including a block header 660 and a block body 670 for specific block information.
- the block header 660 has Equal/Mod Length Data Size, Insert Length Data Size, Modify Data Size, Insert Data Size, Body Block Data Type, Block Size, Original Block Checksum, and New Block Checksum as mandatory items, and Block Body It is created by adding an item of Size. At this time, each item has a size of 4 bytes.
- the Equal/Mod Length Data Size item is a part in which Equal and Modified length data size information of the block body 670 is recorded
- the Insert Length Data Size item is the insertion of the block body 670 (Insert) is a part in which length data size information is recorded
- the Modify Data Size item is a part in which Mod data size information of the block body 670 is recorded
- the Insert Data Size item is Insert length data size information is recorded
- the Body Block Data Type item is a part where data type information of the block body 670 is recorded
- the Block Size item is a block that is a reference for difference generation or patch
- the size information is recorded
- the Original Block Checksum item is a part where the checksum of the old version block (CRC 32) is recorded to check the validity of the target data before patching
- the New Block Checksum item is the old version data after patching.
- the checksum (CRC 32) of the new version block for checking the validity of whether the patch has been normally patched is recorded
- the Body Block Data Type item is the length of the individual data of the block body 670, and when the difference is generated, the optimal data length is set according to the size of the individual data (for example, 2 bytes, 4 bytes, 8 bytes, etc.) do.
- 0xFEFF small type
- 0xFCFDFEFF normal type
- 0xF8F9FAFBFCFDFEFF big type
- the difference is obtained by setting the size of the data to 4 bytes. If it is greater than 0xFFFFFFFF, the difference is obtained by setting the size of the data to 8 bytes.
- block body 670 is generated with Modify Data, Insert Data, Equal/Mod Length Data, and Insert Length Data as essential items.
- the Modify Data item is a part in which modified actual data is recorded
- the Insert Data item is a part in which inserted actual data is recorded
- the Equal/Mod Length Data item is equal and modified. (Mod) This is a part in which length data is recorded
- the Insert Length Data item is a part in which insert length data is recorded.
- FIG. 9 is a detailed diagram illustrating a data structure of a block body according to an embodiment of the present invention.
- the Modify Data 671 of the block body 670 is generated as a Modify Binary Data item, as shown in (a) of FIG. 9, and is sequentially stored as much as Mod Length in Equal/Mod Length Data.
- Insert Data 672 of the block body 670 is generated as an Insert Binary Data item, as shown in (b) of FIG. 9, and is sequentially stored as much as the Insert Length in the Insert Length Data.
- the Insert Length Data 673 of the block body 670 is an Insert Length item in which length information of the inserted data is recorded and an Equal Offset in which position information of the next same data is recorded, as shown in FIG. 9(c). It is created as an item.
- the data of Insert Length Data is processed, and Insert Length The data is sequentially read from the Insert Data and stored in the new version block, and the current position of the old version block is moved for the next Equal as much as the Equal Offset.
- the Equal/Mod Length Data 674 of the block body 670 is an Equal Length item in which length (2 bytes) information of the same data is recorded, as shown in (d) of FIG. (Mod) It is created with the Mod Length item in which data length (in units of 2 bytes) is recorded and the 0xFEFF item in which the identifier is recorded.
- the update agent 400 updates the software data using the Equal/Mod Length Data 674 as follows. First, data is processed by sequentially reading 2 bytes from Equal/Mod Length Data, and the current position of the old version block starts from 0.
- FIG. 10 is a flowchart illustrating in detail an operation process of a data structuring method for a difference between old and new data according to an embodiment of the present invention.
- the update management server 200 updates the software data to the client device 300 by the difference engine ( 100) is requested to generate a difference between old and new data (S100).
- the difference engine 100 generates a difference between old and new data based on the request of the update management server 200, and the delta data structure (difference data) including the delta header and the delta header described in FIGS. Column), the difference between the old version and the new version of the software data is generated.
- the difference engine 100 is a delta including version information of the difference, the number of partitions, a delta size for each of the partitions, and patch information for a normal or restart according to the request of the update management server 200.
- a delta head generation step of generating a header is performed (S200).
- the difference engine 100 After generating the delta header through the step S200, the difference engine 100 performs a delta body generation step of generating a delta body including data on the partition and at least one sub-delta included in the partition ( S300).
- the sub-delta includes a sub-delta header for each program, kernel, and file system, and at least one sub-delta body including block information included in each partition, and the sub-delta body includes a block header and a block body.
- the difference engine 100 determines the generated difference to the update management server 200 ) To provide (S400).
- the update management server 200 receiving the difference between old and new data from the difference engine 100 through the step S400 transmits the difference generated by the difference engine 100 to the client device 300 through a network. (S500).
- the client device 300 provides the difference to the update agent 400 provided by itself or independently, and the update agent 400 converts the old version of the software data into the new version of the software data based on the difference. It is updated (S600).
- the client device 300 transmits the update completion information of the software data to the update management server 200 through a network (S700), and the update management server 200 transmits each update completion information of the software data.
- the update information of the software data for each client device 300 is stored in the database 500 and the update operation is completed (S800).
- a difference used when updating software data including a program installed in a client device, a kernel, and a file system can be generated as a delta data structure including a delta header and a delta body (that is, a difference data sequence).
- a delta data structure including a delta header and a delta body (that is, a difference data sequence).
- the present invention does not require a user to directly visit a service center or a designated place to update software data, thereby improving time and economic efficiency and convenience, and managing software data for changes in laws or systems, bugs, and defects. You can improve the system stability of the client device by actively performing it.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스에 관한 것으로, 자율주행차량, 스마트폰 등의 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행하기 위해 차분을 생성하여 송신하고자 할 때, 구버전과 신버전의 소프트웨어 데이터에 대한 차이를 나타내는 차분을 생성하여 송신하는데 필요한 데이터 구조화 방법 및 그 디바이스에 관한 것이다.
Description
본 발명은 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스에 관한 것으로, 더욱 상세하게는 자율주행차량, 스마트폰 등의 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행하기 위해 차분을 생성하여 송신하고자 할 때, 구버전과 신버전의 소프트웨어 데이터에 대한 차이를 나타내는 차분을 생성하여 송신하는데 필요한 데이터 구조화 방법 및 그 디바이스에 관한 것이다.
컴퓨터, 소프트웨어, 인터넷, 멀티미디어, 경영혁신, 행정쇄신 등 정보화 수단에 필요한 유형 및 무형기술을 아우르는 간접적인 가치 창출에 무게를 두고 있는 정보기술 산업을 IT(Information Technology) 산업이라 하며, 업무용 데이터, 음성 대화, 사진, 동영상 및 멀티미디어는 물론, 정보를 개발, 저장 및 교환하는데 필요한 모든 형태의 기술을 포함한다.
상기 IT 산업은 간접적인 가치 창출에서 벗어나, 최근에는 직접적인 유형 가치를 창출하는 데 중점을 두는 전통적인 제조업인 자동차 산업으로 이어지고 있으며, 특히 스스로의 위치 및 주변 상황을 판단하면서 자율적으로 주행하는 자율주행차량이 개발되면서 더욱 관심이 고조되고 있다.
상기 자율주행차량은 방대한 양의 데이터를 처리하기 위한 하드웨어 장치는 물론, 지속적인 소프트웨어 관리능력이 매우 중요하다. 즉 하드웨어 장치의 버그 및 결함을 지속적으로 해결하고, 변화하는 법률 및 제도에 발빠르게 대응하기 위해서는 소프트웨어의 지속적인 업데이트가 필수적으로 수행되어야 하는 것이다.
한편 스마트폰과 같은 무선통신단말의 기능이 복잡해지고, 상기 무선통신단말에 탑재되는 소프트웨어 또한 많은 버그를 가지고 있고, 기능 추가에 대한 사용자의 요구가 더해짐에 따라 상기 무선통신단말의 소프트웨어 패치 및 기능 업데이트를 수시로 수행할 필요성이 있다.
그러나, 상술한 바와 같은 종래의 자율주행차량의 경우 소프트웨어를 업데이트하기 위해서는 서비스 센터나 딜러샵에 방문하여야 하므로 시간적, 경제적으로 비효율적이었다.
또한 무선통신단말의 경우에도 소프트웨어 패치나 기능 업데이트를 수행하기 위해서는 네트워크를 통해 소프트웨어를 다운받아야 하므로 데이터의 양이 크면 다운로드에 많은 시간이 소요되고 대용량의 트래픽이 발생하는 것은 물론, 데이터 사용에 따른 비용이 증가되었으며, 소프트웨어를 다운받는 동안에는 다른 작업을 수행하지 못하는 등 무선 자원을 효율적으로 활용하지 못하였다.
즉 상기 자율주행차량이나 무선통신단말에서 사용하는 소프트웨어를 효율적으로 업데이트 하기 위해서는, 가급적 작은 크기의 업데이트 파일을 사용하는 것이 필수적이라 할 것이다.
이를 위해서 업데이트 파일을 보다 효율적으로 생성하기 위한 데이터 구조의 필요성이 점차 높아지고 있다.
따라서 본 발명에서는 자율주행차량이나 스마트폰을 포함한 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행할 때 사용되는 구버전 및 신버전의 소프트웨어 데이터의 차이를 나타내는 차분에 대한 데이터 구조화를 위한 방법 및 그 디바이스를 제시하고자 한다.
특히, 본 발명은 차분의 버전 정보, 파티션의 개수, 각 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더, 및 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 포함하는 차분 데이터열인 델타(delta) 데이터 구조를 생성할 수 있으며, 또한 프로그램, 커널 및 파일시스템별로 서로 다르게 델타 데이터 구조를 생성할 수 있는 방안을 제시하고자 한다.
다음으로 본 발명의 기술분야에 존재하는 선행기술에 대하여 간단하게 설명하고, 이어서 본 발명이 상기 선행기술에 비해서 차별적으로 이루고자 하는 기술적 사항에 대해서 기술하고자 한다.
먼저 한국등록특허 제1542323호(2015.08.05.)는 컴퓨팅 장치에서 업데이트 데이터를 효율적으로 추적할 수 있는 업데이트 데이터 처리 방법 및 이를 위한 컴퓨팅 장치에 관한 것으로, 유효 플래그 영역, 가상주소 베이스 영역, 물리주소 베이스 영역, 다음 업데이트 주소정보 영역 중 적어도 하나 이상을 포함하는 업데이트 데이터 관리 테이블에 대한 구성을 제시하고 있다.
즉 상기 선행기술은 유효 플래그 영역, 가상주소 베이스 영역, 물리주소 베이스 영역, 다음 업데이트 주소정보 영역을 포함하는 업데이트 데이터 관리 테이블을 통해 업데이트 데이터를 효율적으로 추적할 수 있는 방법 및 장치에 대해 기재하고 있다.
또한 한국공개특허 제2008-0037450호(2008.04.30.)는 소프트웨어 실행모듈의 업데이트 시스템 및 방법에 관한 것으로, 헤더정보 및 적어도 하나 이상의 파티션에 대한 업데이트 정보를 포함하고, 상기 헤더정보에는 단말 및 소프트웨어의 식별정보나, 업데이트 패키지가 파일 대 파일 비교를 통해 생성된 것인지, 단말 소프트웨어의 프로그램 이미지와 신버전 소프트웨어 비교를 통해 생성된 것인지를 나타내는 구별 정보, 또는 체크섬 정보 등이 포함되는 업데이트 패키지에 대한 구성을 제시하고 있다.
즉 상기 선행기술은 모바일 단말과 업데이트 서버간에 전송되는 데이터의 양을 획기적으로 줄임으로써 업데이트 효율을 제고할 수 있는 시스템 및 방법을 기재하고 있다.
이상에서 선행기술들을 검토한 결과, 대부분의 선행기술들은 업데이트 데이터 관리 테이블을 통해 업데이트 데이터를 효율적으로 추적하는 구성, 업데이트 패키지를 통해 모바일 단말과 업데이트 서버간에 전송되는 데이터의 양을 획기적으로 줄이는 구성에 대한 기술적 개념만을 기재하고 있을 뿐이다.
이에 반하여 본 발명은 클라이언트 디바이스에서 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행할 때 사용하는 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더, 및 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 포함하는 차분 데이터열인 델타(delta) 데이터 구조를 생성하며, 특히 프로그램, 커널 및 파일시스템별로 서로 다르게 델타 데이터 구조를 생성하는 방법 및 디바이스에 대해 기재하고 있는 것이다. 따라서 상기 선행기술들은 본 발명의 이러한 기술적 특징을 기재하거나 시사하고 있지 않다.
본 발명은 상기와 같은 문제점을 해결하기 위해 창작된 것으로서, 자율주행차량이나 스마트폰 등의 클라이언트 디바이스에 설치된 소프트웨어 데이터의 업데이트를 수행할 때 사용되는 차분에 대한 데이터 구조화 방법 및 그 디바이스를 제공하는 것을 목적으로 한다.
또한 본 발명은 구버전 및 신버전의 소프트웨어 데이터간의 차이를 나타내는 차분에 대한 델타 데이터 구조(즉 차분 데이터열)를 차분의 버전 정보, 파티션의 개수, 각 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더, 및 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 포함하여 생성하며, 상기 델타 바디는 서브 델타 헤더와 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하는 서브 델타 바디를 포함하여 생성하는 데이터 구조화 방법 및 그 디바이스를 제공하는 것을 다른 목적으로 한다.
또한 본 발명은 구버전 및 신버전 소프트웨어 데이터간의 차이를 나타내는 차분에 대한 델타 데이터 구조(즉 차분 데이터열)를 프로그램, 커널 및 파일시스템별로 구분하여 서로 다르게 생성할 수 있는 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스를 제공하는 것을 또 다른 목적으로 한다.
본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화 방법은, 차분생성 프로세서에서, 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더를 생성하는 델타 헤더 생성 단계; 및 상기 차분생성 프로세서에서, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 델타 바디 생성 단계;를 포함하며, 상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며, 상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하는 것을 특징으로 한다.
또한 상기 서브 델타 헤더는, 프로그램, 커널 및 파일시스템별로 구분하여 서로 다르게 생성하는 것을 특징으로 한다.
또한 상기 서브 델타 헤더는, 상기 프로그램의 경우, 상기 서브 델타의 타입 정보, 상기 서브 델타 바디의 압축 유무 및 사이즈 정보, 상기 서브 델타 바디의 개수 정보, 구버전 프로그램의 체크섬 및 신버전 프로그램의 체크섬을 포함하는 것을 특징으로 한다.
또한 상기 서브 델타 헤더는, 상기 커널의 경우, 상기 서브 델타의 타입 정보, 상기 서브 델타 바디의 압축 유무 및 사이즈 정보, 상기 서브 델타 바디의 개수 정보, 구버전 커널의 압축 체크섬 및 신버전 커널의 압축 체크섬을 포함하는 것을 특징으로 한다.
또한 상기 서브 델타 헤더는, 상기 파일시스템의 경우, 파일시스템 헤더 및 파일시스템 서브 헤더를 포함하고, 상기 파일시스템 헤더는, 상기 서브 델타의 타입 정보 및 파일의 개수 정보를 포함하며, 상기 파일시스템 서브 헤더는, 파일의 경로 정보, 파일의 추가, 수정 및 삭제 상태 정보, 파일의 일반, 심볼릭 및 링크의 속성 정보, 파일의 압축 유무, 상기 서브 델타 바디의 사이즈 정보, 구버전 파일의 체크섬, 신버전 파일의 체크섬 및 상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 한다.
또한 상기 블록 헤더는, 상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보, 상기 블록 바디의 수정 데이터 사이즈 정보, 상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보, 상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보, 상기 블록 바디의 데이터 타입 정보, 블록 사이즈 정보, 구버전 블록의 체크섬 및 신버전 블록의 체크섬을 포함하며, 상기 블록 바디는, 수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터 및 삽입(Insert) 길이 데이터를 포함하는 것을 특징으로 한다.
또한 상기 수정(Mod)된 실제 데이터는, 수정된 바이너리 데이터이고, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이만큼 순차적으로 저장되며, 상기 삽입(Insert)된 실제 데이터는, 삽입된 바이너리 데이터이고, 상기 삽입(Insert) 길이 데이터에서 삽입(Insert) 길이만큼 순차적으로 저장되며, 상기 삽입(Insert) 길이 데이터는, 상기 삽입(Insert) 데이터의 길이 정보 및 상기 삽입(Insert) 데이터의 처리 다음의 동일(Equal) 데이터의 위치 정보를 포함하며, 상기 동일(Equal) 및 수정(Mod) 길이 데이터는, 상기 동일(Equal) 및 수정(Mod) 길이 데이터 정보 및 상기 삽입(Insert) 데이터의 구분자를 포함하는 것을 특징으로 한다.
아울러, 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화 디바이스는, 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더와, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 차분생성 프로세서;를 포함하며, 상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며, 상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 서브 델타 헤더를 프로그램, 커널 및 파일시스템별로 구분하여 서로 다르게 생성하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 프로그램의 경우, 상기 서브 델타의 타입 정보, 상기 서브 델타 바디의 압축 유무 및 사이즈 정보, 상기 서브 델타 바디의 개수 정보, 구버전 프로그램의 체크섬 및 신버전 프로그램의 체크섬을 포함한 상기 서브 델타 헤더를 생성하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 커널의 경우, 상기 서브 델타의 타입 정보, 상기 서브 델타 바디의 압축 유무 및 사이즈 정보, 상기 서브 델타 바디의 개수 정보, 구버전 커널의 압축 체크섬 및 신버전 커널의 압축 체크섬을 포함한 상기 서브 델타 헤더를 생성하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 파일시스템의 경우, 파일시스템 헤더 및 파일시스템 서브 헤더를 포함한 상기 서브 델타 헤더를 생성하고, 상기 파일시스템 헤더는, 상기 서브 델타의 타입 정보 및 파일의 개수 정보를 포함하며, 상기 파일시스템 서브 헤더는, 파일의 경로 정보, 파일의 추가, 수정 및 삭제 상태 정보, 파일의 일반, 심볼릭 및 링크의 속성 정보, 파일의 압축 유무, 상기 서브 델타 바디의 사이즈 정보, 구버전 파일의 체크섬, 신버전 파일의 체크섬 및 상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 블록 헤더를 생성할 때, 상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보, 상기 블록 바디의 수정 데이터 사이즈 정보, 상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보, 상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보, 상기 블록 바디의 데이터 타입 정보, 블록 사이즈 정보, 구버전 블록의 체크섬 및 신버전 블록의 체크섬을 포함하여 생성하며, 상기 블록 바디를 생성할 때, 수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터 및 삽입(Insert) 길이 데이터를 포함하여 생성하는 것을 특징으로 한다.
또한 상기 차분생성 프로세서는, 상기 수정(Mod)된 실제 데이터의 경우, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이만큼 순차적으로 저장되도록 하며, 상기 삽입(Insert)된 실제 데이터의 경우, 상기 삽입(Insert) 길이 데이터에서 삽입(Insert) 길이만큼 순차적으로 저장되도록 하며, 상기 삽입(Insert) 길이 데이터의 경우, 상기 삽입(Insert) 데이터의 길이 정보 및 상기 삽입(Insert) 데이터의 처리 다음의 동일(Equal) 데이터의 위치 정보를 포함하여 생성하며, 상기 동일(Equal) 및 수정(Mod) 길이 데이터의 경우, 상기 동일(Equal) 및 수정(Mod) 길이 데이터 정보 및 상기 삽입(Insert) 데이터의 구분자를 포함하여 생성하는 것을 특징으로 한다.
이상에서와 같이 본 발명의 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스에 따르면, 자율주행차량이나 스마트폰 등의 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행할 때 사용되는 차분을 델타 헤더와 델타 바디를 포함하는 델타 데이터 구조(차분 데이터열)로 생성하도록 함으로써, 구버전 및 신버전의 소프트웨어 데이터간의 차이를 나타내는 차분을 정확하고 신속하게 생성할 수 있으며, 상기 차분을 이용하여 상기 클라이언트 디바이스의 소프트웨어 데이터의 업데이트를 간편하게 수행할 수 있는 효과가 있다.
또한 본 발명은 클라이언트 디바이스 사용자가 소프트웨어 데이터의 업데이트를 위해 서비스 센터나 지정된 장소를 직접 방문할 필요가 없어 시간적, 경제적 효율성 및 편의성을 높일 수 있으며, 법률이나 제도의 변화, 버그 및 결함에 대한 소프트웨어 데이터의 관리를 적극적으로 수행할 수 있으므로 클라이언트 디바이스의 시스템 안정성을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화가 적용되는 전체 시스템의 구성을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화를 위한 차분 엔진의 하드웨어 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 델타 데이터 구조(차분 데이터열)를 상세하게 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 델타 헤더의 데이터 구조를 상세하게 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 서브 델타 헤더(binary)의 데이터 구조를 상세하게 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 서브 델타 헤더(kernel)의 데이터 구조를 상세하게 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 서브 델타 헤더(filesystem)의 데이터 구조를 상세하게 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따른 서브 델타 바디의 데이터 구조를 상세하게 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 블록 바디의 데이터 구조를 상세하게 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화 방법의 동작과정을 상세하게 나타낸 순서도이다.
이하, 첨부한 도면을 참조하여 본 발명의 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스에 대한 바람직한 실시 예를 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 또한 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는 것이 바람직하다.
먼저 본 발명에서 생성되는 차분을 이용한 업데이트 대상은 프로그램, 커널, 파일시스템을 포함한 소프트웨어 데이터로서, 상기 소프트웨어 데이터는 바이너리 데이터인 것을 원칙으로 하나, 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), 업데이트 에이전트(update agent)(400), 데이터베이스(500) 등을 포함하여 구성된다.
상기 차분 엔진(100)은 차분 생성 장치로서, 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터가 수정, 삽입, 삭제 등의 작업을 통해 변경되는 경우, 상기 업데이트 관리서버(200)의 요청에 의해 신구 데이터간에 차이나는 부분(즉 수정, 삽입, 삭제 등이 이루어진 부분)만을 선별한 차분을 생성하고, 상기 생성한 차분을 상기 업데이트 관리서버(200)를 통해 상기 클라이언트 디바이스(300)로 제공하여, 상기 클라이언트 디바이스(300)에 자체적으로 구비되거나 독립적으로 구비된 상기 업데이트 에이전트(400)를 통해 소프트웨어 데이터의 업데이트를 간편하고 빠르게 수행할 수 있도록 한다.
즉 상기 차분 엔진(100)은 수정, 삽입, 삭제 등의 작업을 통해 변경된 해당 소프트웨어 데이터 전체를 상기 클라이언트 디바이스(300)로 제공할 필요없이, 상기 차이나는 부분만을 선별하고, 이를 상기 클라이언트 디바이스(300)에 제공하여 업데이트를 수행하도록 함으로써, 신버전의 소프트웨어 데이터 전송에 따른 데이터 발생 비용을 줄이는 것은 물론, 소프트웨어 데이터의 업데이트 속도를 향상시키며, 소프트웨어 데이터의 업데이트와 관련된 시스템의 안정성을 높일 수 있도록 하는 것이다.
이때 상기 차분 엔진(100)은 신구 데이터간의 차분을 생성할 때, 델타 헤더와 델타 바디를 포함한 델타 데이터 구조(즉 차분 데이터열)를 토대로 차분을 생성한다. 상기 차분에 대한 데이터 구조에 대해서는 도 3 내지 도 9를 통해 보다 상세하게 설명하기로 한다.
한편 상기 차분 엔진(100)은 도 1에 나타낸 것처럼 독립적인 장치로 구현하여 상기 업데이트 관리서버(200)와 통신 접속하는 방식 이외에, 상기 업데이트 관리서버(200) 내에 일체로 구축하여 사용할 수 있다.
상기 업데이트 관리서버(200)는 상기 클라이언트 디바이스(300)에서 사용되는 소프트웨어 데이터의 업데이트 및 관리를 수행하는 사업자가 운영하는 컴퓨터로서, 소프트웨어 데이터가 새로 생성되면 상기 차분 엔진(100)에 구버전 및 신버전의 소프트웨어 데이터 사이의 차분 생성을 요청한다.
또한 상기 업데이트 관리서버(200)는 상기 차분 엔진(100)으로부터 구버전 및 신버전의 소프트웨어 데이터를 비교한 차분이 입력되면, 상기 차분을 네트워크를 통해 해당 클라이언트 디바이스(300)로 전송하여 상기 업데이트 에이전트(400)를 통해 업데이트하도록 하며, 상기 클라이언트 디바이스(300)로부터 업데이트 완료정보가 수신되면 소프트웨어 데이터의 업데이트 정보를 상기 데이터베이스(500)에 저장하여 관리한다.
상기 클라이언트 디바이스(300)는 스마트폰 등의 무선통신단말이나, 지도, 위성항법시스템(GPS), 각종 센서 등을 사용하여 주변상황을 파악해 목적지까지 스스로 찾아가는 자율주행차량(self-driving car) 등의 소프트웨어 데이터를 기반으로 구동하는 전자 장치이다.
또한 상기 클라이언트 디바이스(300)는 상기 업데이트 관리서버(200)로부터 구버전 및 신버전의 소프트웨어 데이터를 비교한 차분이 수신되면, 상기 차분을 상기 업데이트 에이전트(400)에 제공하여 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 업데이트하도록 하며, 소프트웨어 데이터의 업데이트가 완료되면 업데이트 완료정보를 생성한 다음 네트워크를 통해 상기 업데이트 관리서버(200)로 전송한다.
상기 업데이트 에이전트(400)는 상기 클라이언트 디바이스(300)에 내장되거나 또는 독립적으로 구비되며, 상기 업데이트 관리서버(200)로부터 제공받은 차분을 토대로 상기 클라이언트 디바이스(300)에 기 설치되어 있는 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 패치한다.
이때 상기 업데이트 에이전트(400)는 상기 차분을 토대로 신버전의 소프트웨어 데이터를 패치하는 과정에서 패치가 강제로 종료되는 경우(예를 들어 사용자에 의해 어플리케이션 프로그램의 실행이 중단되거나, 배터리가 소진되는 등의 이벤트가 발생되는 경우), 처음부터 패치를 다시 진행하지 않고 패치가 완료된 시점부터 패치를 진행하는 재시작(resume) 패치 기능을 제공한다.
즉 상기 업데이트 에이전트(400)는 패치가 진행되는 과정에서 상기 패치가 강제적으로 중단되면, 다음 번 패치가 다시 수행될 때 정상적으로 완료된 위치를 블록 체크섬 정보를 참조하여 확인하고, 패치가 완료된 위치부터 재시작하여 패치를 진행하도록 함으로써, 빠르고 안정적인 패치 작업이 이루어질 수 있도록 하는 것이다.
상기 데이터베이스(500)는 상기 차분 엔진(100)에서 생성한 구버전 및 신버전의 소프트웨어 데이터를 비교한 차분은 물론, 상기 클라이언트 디바이스(300)의 디바이스 종류, 소프트웨어 데이터 버전, 업데이트 이력 등을 저장하여 관리한다.
이처럼, 본 발명에서 제시한 데이터 구조를 이용한 구버전 및 신버전의 소프트웨어 데이터간의 차분 생성과 상기 차분을 토대로 상기 클라이언트 디바이스(300)에 설치된 소프트웨어 데이터를 업데이트하는 과정을 상세하게 설명하면 다음과 같다.
상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청에 따라 구버전 및 신버전의 소프트웨어 데이터간의 차분을 생성하고(①), 상기 생성한 차분을 상기 업데이트 관리서버(200)로 출력한다. 이때 상기 차분 엔진(100)은 차분의 버전 정보, 파티션의 개수, 각 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더와, 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디로 구성된 델타 데이터 구조를 토대로 차분을 생성한다.
그러면 상기 업데이트 관리서버(200)에서는 상기 차분 엔진(100)으로부터 제공받은 상기 차분을 네트워크를 통해 업데이트 대상이 되는 상기 클라이언트 디바이스(300)로 전송하며(②), 상기 클라이언트 디바이스(300)에서는 상기 차분을 수신하여 상기 업데이트 에이전트(400)로 출력한다(③).
이에 따라 상기 업데이트 에이전트(400)는 상기 업데이트 관리서버(200)로부터 전송받은 상기 차분을 토대로 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 업데이트한다(④).
상기 차분을 통해 기 설치된 소프트웨어 데이터의 업데이트가 완료되면, 상기 클라이언트 디바이스(300)는 소프트웨어 데이터의 업데이트 완료정보를 생성하고, 상기 생성한 소프트웨어 데이터의 업데이트 완료정보를 네트워크를 통해 상기 업데이트 관리서버(200)로 전송한다(⑤).
또한 상기 업데이트 관리서버(200)는 상기 클라이언트 디바이스(300)로부터 제공받은 소프트웨어 데이터의 업데이트 완료정보를 참조하여, 상기 클라이언트 디바이스(300)별 소프트웨어 데이터의 업데이트 정보를 상기 데이터베이스(500)에 저장하고 업데이트 작업을 마무리한다(⑥).
도 2는 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화가 적용된 차분 엔진의 하드웨어 구조를 나타낸 도면이다.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 차분 엔진(100)의 하드웨어 구조는, 차분생성 프로세서(processor)(110), 입출력 인터페이스(input/output interface)(120), 네트워크 카드(network card)(130), 메모리(140) 등을 포함하여 구성된다.
또한 상기 차분 엔진(100)은 도면에 도시하지는 않았지만, 각 구성 부분에 동작전원을 공급하는 전원부, 각종 기능에 대한 데이터 입력을 위한 입력부 등을 추가로 포함할 수 있다. 또한 상기 차분 엔진(100)은 신구 데이터간의 차분을 기록하기 위한 데이터 구조나 상기 데이터 구조를 토대로 차분을 생성하기 위한 정보를 자바 등과 같은 다양한 프로그래밍 언어를 통해 프로그래밍하여, 메모리 주소를 가지고 상기 메모리(140)에 저장하고 있으며, 상기 차분생성 프로세서(110)의 호출에 따라 상기 각 구성부분에 대한 기능을 수행하게 된다.
상기 차분생성 프로세서(110)는 델타 헤더 및 델타 바디를 포함하는 데이터 구조를 토대로 구버전 및 신버전의 소프트웨어 데이터를 비교한 차분의 생성을 처리하며, 필요에 따라 상기 메모리(140)에 저장된 프로그램을 호출하여 상기 데이터 구조를 토대로 차분을 생성할 수 있도록 한다.
상기 입출력 인터페이스(120)는 상기 차분 엔진(100)의 동작에 대한 정보의 입력 등을 포함하여, 상기 차분 엔진(100)을 관리하는 관리자가 구비한 관리자 단말과 데이터를 교환하는 기능을 수행한다.
상기 네트워크 카드(130)는 상기 차분 엔진(100)과 상기 업데이트 관리서버(200) 사이의 통신을 위한 인터페이스를 제공하는 부분으로서, 유선 통신 및 무선 통신을 동시에 지원하도록 구성할 수 있다.
상기 메모리(140)는 상기 차분 엔진(100)에서 사용하는 각종 동작프로그램이 저장되어 있다. 예를 들어, 상기 차분을 기록하기 위한 특정 데이터 구조에 대한 정보나 상기 차분을 생성하기 위한 프로그램을 저장하고 있다.
또한 상기 메모리(140)는 상기 차분생성 프로세서(110)에서 상기 데이터 구조를 통해 생성한 신구 데이터간을 비교한 차분을 임시로 저장한다.
한편 상기 시스템 버스는 상기 차분생성 프로세서(110), 입출력 인터페이스(120), 네트워크 카드(130) 및 메모리(140)를 포함하는 상기 차분 엔진(100)의 하드웨어를 구성하는 각각의 구성요소들을 연결하여, 상기 각 구성요소 간에 데이터를 전송할 수 있도록 한다.
다음에는 상기 차분에 대한 데이터 구조와 관련하여 도 3 내지 도 9를 참조하여 보다 상세하게 설명한다. 이때 도 4 내지 도 9에 설명되는 데이터 구조의 각 항목에서 굵게 표시된 부분이 필수 항목이다.
도 3은 본 발명의 일 실시예에 따른 델타 데이터 구조(차분 데이터열)를 상세하게 나타낸 도면이다.
도 3에 도시된 바와 같이, 본 발명에 적용되는 차분에 대한 데이터 구조인 델타 데이터 구조(600)는 델타 헤더(610)와 델타 바디(620)를 포함한다.
이때 상기 델타 바디(620)는 파티션과 각 파티션에 포함된 정보를 포함한 서브 델타(630)를 적어도 하나 이상 포함하고 있다. 즉 상기 서브 델타(630)는 파티션의 개수만큼 생성되는 것이다.
또한 상기 서브 델타(630)는 서브 델타 헤더(640) 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디(650)를 포함하며, 상기 서브 델타 바디(650)는 도 8에서와 같이 특정 블록 정보에 대한 블록 헤더(660) 및 블록 바디(670)를 포함한다. 이때 상기 서브 델타 헤더(640)는 도 5 내지 도 7에서와 같이 프로그램, 커널 및 파일시스템별로 구분하여 서로 다르게 생성할 수 있다.
이때 상기 파티션은 프로그램, 커널 또는 파일시스템에 따라 서로 다른 파티션으로 구분되는 데이터로서, 적어도 하나 이상의 블록을 포함할 수 있다.
또한 상기 블록은 상기 프로그램(바이너리) 및 커널의 경우 전체 데이터를 기 설정된 블록 사이즈로 나눈 데이터이며, 상기 파일시스템의 경우 상기 파일시스템을 구성하는 각각의 파일 데이터를 상기 블록 사이즈로 나눈 데이터이다.
도 4는 본 발명의 일 실시예에 따른 델타 헤더의 데이터 구조를 상세하게 나타낸 도면이다.
도 4에 도시된 바와 같이, 상기 델타 헤더(610)는 Delta Version, Sub Delta Count 및 Signature를 필수 항목으로 하며, Delta Size의 항목을 추가하여 생성된다. 이때 각 항목은 4바이트(byte)의 크기를 가진다.
상기 Delta Version 항목은 상기 델타 데이터 구조(600)의 버전과 패치를 수행할 때 델타 버전의 유효성을 체크하기 위한 차분의 버전 정보가 기록된 부분이고, 상기 Sub Delta Count 항목은 파티션 개수에 대한 정보가 기록된 부분이고, 상기 Signature 항목은 노멀이나 재시작(resume)에 대한 패치 정보가 기록된 부분이며, Delta Size 항목은 상기 델타 바디(620)의 사이즈 정보가 기록된 부분이다.
이때 상기 Signature 항목은 델타 헤더의 체크섬(CRC 32) 값(A)과 Signature 값(B)을 포함하는데, Signature 값(B)은 상기 업데이트 에이전트(400)에서 상기 차분을 토대로 패치를 진행하는 과정에서 중단될 경우 이를 나타내는 특정 값이 기록된다. 이에 따라 상기 업데이트 에이전트(400)에서 차분을 토대로 패치를 수행할 때 A값과 B값이 동일하면 노멀 패치로 확인할 수 있으며, A값과 B값이 동일하지 않으면 재시작 패치로 확인할 수 있다.
도 5는 본 발명의 일 실시예에 따른 서브 델타 헤더(binary)의 데이터 구조를 상세하게 나타낸 도면이다.
도 5에 도시된 바와 같이, 프로그램 서브 델타 헤더(640a)는 Sub Delta Type, Is Compressed, Sub Delta Body Size, Sub Delta Body Count, Original Checksum 및 New Checksum을 필수 항목으로 하며, Body Checksum, Partition Name, Original Size 및 New Size의 항목을 추가하여 생성된다. 이때 각 항목은 4바이트의 크기를 가진다.
상기 Sub Delta Type 항목은 상기 서브 델타 헤더(640)의 타입 정보(여기서는 프로그램으로서, 프로그램 형태는 노멀 패치를 수행함)가 기록된 부분이고, 상기 Is Compressed 항목은 상기 서브 델타 바디(650)의 압축 유무가 기록된 부분이고, 상기 Sub Delta Body Size 항목은 상기 서브 델타 바디(650)의 전체 사이즈 정보가 기록된 부분(압축되어 있으면 압축된 사이즈가 기록됨)이고, 상기 Sub Delta Body Count 항목은 상기 서브 델타 바디(650)의 개수 정보(즉 파티션의 블록 개수)가 기록된 부분이고, 상기 Original Checksum 항목은 패치 전에 대상 데이터가 맞는지 유효성을 체크하기 위한 구버전 프로그램의 체크섬(CRC 32)이 기록된 부분이며, 상기 New Checksum 항목은 패치 후의 구버전 데이터가 정상적으로 패치되었지 유효성을 체크하기 위한 신버전 프로그램의 체크섬(CRC 32)이 기록된 부분이다.
또한 상기 Body Checksum 항목은 상기 서브 델타 바디(650)의 전체 체크섬(CRC 32)이 기록된 부분이고, 상기 Partition Name 항목은 파티션 이름이 기록된 부분이고, 상기 Original Size 항목은 구버전 데이터의 사이즈가 기록된 부분이며, 상기 New Size 항목은 신버전 데이터의 사이즈가 기록된 부분이다.
도 6은 본 발명의 일 실시예에 따른 서브 델타 헤더(kernel)의 데이터 구조를 상세하게 나타낸 도면이다.
도 6에 도시된 바와 같이, 커널 서브 델타 헤더(640b)는 Sub Delta Type, Is Compressed, Sub Delta Body Size, Sub Delta Body Count, Original Kernel Compress Checksum 및 New Kernel Compress Checksum을 필수 항목으로 하며, Body Checksum, Partition Name, Original Kernel Gzip Size, Original Kernel Compress Size, Original Kernel Size, Original Kernel Checksum, New Kernel Gzip Size, New Kernel Compress Size, New Kernel Size 및 New Kernel Checksum의 항목을 추가하여 생성된다. 이때 각 항목은 4바이트의 크기를 가진다.
상기 Sub Delta Type 항목은 상기 서브 델타 헤더(640)의 타입 정보(여기서는 커널로서, 커널 형태는 압축되어 있어서 압축 해제 후 노멀 패치를 하고 다시 압축함)가 기록된 부분이고, 상기 Is Compressed 항목은 상기 서브 델타 바디(650)의 압축 유무가 기록된 부분이고, 상기 Sub Delta Body Size 항목은 상기 서브 델타 바디(650)의 전체 사이즈 정보가 기록된 부분(압축되어 있으면 압축된 사이즈가 기록됨)이고, 상기 Sub Delta Body Count 항목은 상기 서브 델타 바디(650)의 개수 정보(즉 파티션의 블록 개수)가 기록된 부분이고, 상기 Original Kernel Compress Checksum 항목은 패치 전에 대상 데이터가 맞는지 유효성을 체크하기 위한 구버전 커널의 압축 체크섬(CRC 32)이 기록된 부분이며, 상기 New Checksum 항목은 패치 후의 구버전 데이터가 정상적으로 패치되었지 유효성을 체크하기 위한 신버전 커널의 압축 체크섬(CRC 32)이 기록된 부분이다.
또한 상기 Body Checksum 항목은 상기 서브 델타 바디(650)의 전체 체크섬(CRC 32)이 기록된 부분이고, 상기 Partition Name 항목은 파티션 이름이 기록된 부분이고, 상기 Original Kernel Gzip Size 항목은 구버전 커널 Gzip 사이즈가 기록된 부분이고, 상기 Original Kernel Compress Size 항목은 구버전 커널 압축 사이즈가 기록된 부분이고, 상기 Original Kernel Size 항목은 구버전 커널의 사이즈가 기록된 부분이고, 상기 Original Kernel Checksum 항목은 구버전 커널의 체크섬(CRC 32)이 기록된 부분이고, 상기 New Kernel Gzip Size 항목은 신버전 커널 Gzip 사이즈가 기록된 부분이고, 상기 New Kernel Compress Size 항목은 신버전 커널 압축 사이즈가 기록된 부분이고, 상기 New Kernel Size 항목은 신버전 커널의 사이즈가 기록된 부분이며, 상기 New Kernel Checksum 항목은 신버전 커널의 체크섬(CRC 32)이 기록된 부분이다.
도 7은 본 발명의 일 실시예에 따른 서브 델타 헤더(filesystem)의 데이터 구조를 상세하게 나타낸 도면이다.
파일시스템 서브 델타 헤더(640c)는 도 7의 (a)에 도시된 바와 같이 파일시스템 헤더(640c-1) 및 파일시스템 서브 헤더(640c-2)를 포함하여 생성된다.
상기 파일시스템 헤더(640c-1)는 도 7의 (b)에 도시된 바와 같이, Sub Delta Type 및 File Count를 필수 항목으로 하며, Target System 및 Partition Name의 항목을 추가하여 생성된다. 이때 상기 필수 항목은 4바이트의 크기를 가진다.
상기 Sub Delta Type 항목은 상기 서브 델타 헤더(640)의 타입 정보(여기서는 파일 시스템으로서, 파일시스템 형태는 파일 단위로 노멀 패치를 수행함)가 기록된 부분이며, 상기 File Count 항목은 파일의 개수 정보가 기록된 부분이다.
또한 Target System 항목은 시스템 타입(예를 들어 Linux, QNX 등으로서 시스템의 종류에 따라 마운트 방법이 달라짐)의 정보가 기록된 부분이며, 상기 Partition Name 항목은 파티션 이름이 기록된 부분이다.
상기 파일시스템 서브 헤더(640c-2)는 도 7의 (c)에 도시된 바와 같이, File Path, Operation, File type, Is Compressed, Sub Delta Body Size, Original Checksum, New Checksum 및 Sub Delta Body Count를 필수 항목으로 하며, Access Time, Change Time, Modify Time, Create Time, Delete Time, Access ExTime, Change ExTime, Modify ExTime, Create ExTime, Permission, Owner, Group, Sub Delta Body Checksum, Original Size, New Size 및 APK Size의 항목을 추가하여 생성된다. 이때 각 항목은 4바이트의 크기를 가진다.
상기 File Path 항목은 파일의 경로 정보가 기록된 부분이고, 상기 Operation 항목은 파일의 추가, 수정 및 삭제 상태 정보가 기록된 부분이고, 상기 File type 항목은 파일의 일반, 심볼릭 및 링크의 속성 정보가 기록된 부분이고, Is Compressed 항목은 파일의 압축 유무가 기록된 부분이고, 상기 Sub Delta Body Size 항목은 상기 서브 델타 바디(650)의 전체 사이즈 정보가 기록된 부분이고, 상기 Original Checksum 항목은 패치 전에 대상 데이터가 맞는지 유효성을 체크하기 위한 구버전 파일의 체크섬(CRC 32)이 기록된 부분이고, 상기 New Checksum 항목은 패치 후의 구버전 데이터가 정상적으로 패치되었지 유효성을 체크하기 위한 신버전 파일의 체크섬(CRC 32)이 기록된 부분이며, 상기 Sub Delta Body Count 항목은 상기 서브 델타 바디(650)의 개수 정보(즉 파일의 블록 개수)가 기록된 부분이다.
또한 상기 Access Time 항목은 파일의 액세스 시간(초 단위)이 기록된 부분이고, 상기 Change Time 항목은 파일의 속성이 수정된 시간(초 단위)이 기록된 부분이고, 상기 Modify Time 항목은 파일이 수정된 시간(초 단위)이 기록된 부분이고, 상기 Create Time 항목은 파일이 생성된 시간(초 단위)이 기록된 부분이고, 상기 Delete Time 항목은 파일이 삭제된 시간(초 단위)이 기록된 부분이고, 상기 Access ExTime 항목은 파일의 액세스 시간(나노초 단위)이 기록된 부분이고, 상기 Change ExTime 항목은 파일의 속성이 수정된 시간(나노초 단위)이 기록된 부분이고, 상기 Modify ExTime 항목은 파일이 수정된 시간(나노초 단위)이 기록된 부분이고, 상기 Create ExTime 항목은 파일이 생성된 시간(나노초 단위)이 기록된 부분이고, 상기 Permission 항목은 파일의 퍼미션 정보가 기록된 부분이고, 상기 Owner 항목은 파일의 소유자 정보가 기록된 부분이고, 상기 Group 항목은 파일의 그룹 정보가 기록된 부분이고, 상기 Sub Delta Body Checksum 항목은 상기 서브 델타 바디(650)의 전체 체크섬(CRC 32)이 기록된 부분이고, 상기 Original Size 항목은 구버전 데이터의 사이즈 정보가 기록된 부분이고, 상기 New Size 항목은 신버전 데이터의 사이즈 정보가 기록된 부분이며, 상기 APK Size 항목은 APK 압축 해제된 데이터의 사이즈 정보가 기록된 부분이다.
도 8은 본 발명의 일 실시예에 따른 서브 델타 바디의 데이터 구조를 상세하게 나타낸 도면이다.
도 8에 도시된 바와 같이, 상기 서브 델타 바디(650)는 특정 블록 정보에 대한 블록 헤더(660) 및 블록 바디(670)를 포함하여 생성된다.
상기 블록 헤더(660)는 Equal/Mod Length Data Size, Insert Length Data Size, Modify Data Size, Insert Data Size, Body Block Data Type, Block Size, Original Block Checksum 및 New Block Checksum을 필수 항목으로 하며, Block Body Size의 항목을 추가하여 생성된다. 이때 각 항목은 4바이트의 크기를 가진다.
상기 Equal/Mod Length Data Size 항목은 상기 블록 바디(670)의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보가 기록된 부분이고, 상기 Insert Length Data Size 항목은 상기 블록 바디(670)의 삽입(Insert) 길이 데이터 사이즈 정보가 기록된 부분이고, 상기 Modify Data Size 항목은 블록 바디(670)의 수정(Mod) 데이터 사이즈 정보가 기록된 부분이고, 상기 Insert Data Size 항목은 블록 바디(670)의 삽입(Insert) 길이 데이터 사이즈 정보가 기록된 부분이고, 상기 Body Block Data Type 항목은 블록 바디(670)의 데이터 타입 정보가 기록된 부분이고, 상기 Block Size 항목은 차분 생성이나 패치에 기준이 되는 블록 사이즈 정보가 기록된 부분이고, 상기 Original Block Checksum 항목은 패치 전에 대상 데이터가 맞는지 유효성을 체크하기 위한 구버전 블록의 체크섬(CRC 32)이 기록된 부분이고, 상기 New Block Checksum 항목은 패치 후의 구버전 데이터가 정상적으로 패치되었지 유효성을 체크하기 위한 신버전 블록의 체크섬(CRC 32)이 기록된 부분이며, 상기 Block Body Size 항목은 블록 바디(670)의 사이즈 정보가 기록된 부분이다.
이때 상기 Body Block Data Type 항목은 상기 블록 바디(670)의 개별 데이터의 길이로서, 차분 생성시 개별 데이터의 크기에 따라 최적의 데이터 길이를 설정(예를 들어 2바이트, 4바이트, 8바이트 등)한다. 또한 데이터 길이가 2바이트의 경우 0xFEFF(스몰 타입), 데이터 길이가 4바이트의 경우 0xFCFDFEFF(노멀 타입), 데이터 길이가 8바이트의 경우 0xF8F9FAFBFCFDFEFF(빅 타입)의 구분자를 사용한다. 예를 들어 Equal Length의 값이 0xFFFFFF 보다 크다면 데이터의 크기를 4바이트로 설정해서 차분을 구하며, 0xFFFFFFFF 보다 크다면 데이터의 크기를 8바이트로 설정해서 차분을 구한다.
또한 상기 블록 바디(670)는 Modify Data, Insert Data, Equal/Mod Length Data 및 Insert Length Data를 필수 항목으로 하여 생성된다.
상기 Modify Data 항목은 수정(Mod)된 실제 데이터가 기록된 부분이고, 상기 Insert Data 항목은 삽입(Insert)된 실제 데이터가 기록된 부분이고, 상기 Equal/Mod Length Data 항목은 동일(Equal) 및 수정(Mod) 길이 데이터가 기록된 부분이며, 상기 Insert Length Data 항목은 삽입(Insert) 길이 데이터가 기록된 부분이다.
도 9는 본 발명의 일 실시예에 따른 블록 바디의 데이터 구조를 상세하게 나타낸 도면이다.
상기 블록 바디(670)의 Modify Data(671)는 도 9의 (a)에 도시된 바와 같이, Modify Binary Data 항목으로 생성되며, Equal/Mod Length Data에서 Mod Length만큼 순차적으로 저장된다.
또한 상기 블록 바디(670)의 Insert Data(672)는 도 9의 (b)에 도시된 바와 같이, Insert Binary Data 항목으로 생성되며, Insert Length Data에서 Insert Length만큼 순차적으로 저장된다.
또한 상기 블록 바디(670)의 Insert Length Data(673)는 도 9의 (c)에 도시된 바와 같이, 삽입 데이터의 길이 정보가 기록된 Insert Length 항목 및 다음 동일 데이터의 위치 정보가 기록된 Equal Offset 항목으로 생성된다. 이때 상기 업데이트 에이전트(400)에서 Insert Length Data(673)를 사용하여 소프트웨어 데이터의 업데이트를 수행할 때, 상기 Equal/Mod Length Data에서 구분자(0xFEFF)를 만나면 Insert Length Data의 데이터를 처리하고, Insert Length만큼 Insert Data에서 데이터를 순차적으로 읽어서 신버전 블록에 저장하며, Equal Offset만큼 다음 Equal을 위해 구버전 블록의 현재 위치를 이동시킨다.
또한 상기 블록 바디(670)의 Equal/Mod Length Data(674)는 도 9의 (d)에 도시된 바와 같이, 동일(Equal) 데이터의 길이(2바이트 단위) 정보가 기록된 Equal Length 항목, 수정(Mod) 데이터의 길이(2바이트 단위) 정보가 기록된 Mod Length 항목 및 구분자가 기록된 0xFEFF 항목으로 생성된다. 이때 상기 업데이트 에이전트(400)에서 Equal/Mod Length Data(674)를 사용하여 소프트웨어 데이터의 업데이트를 다음과 같이 수행한다. 먼저 Equal/Mod Length Data에서 순차적으로 2바이트씩 읽어서 데이터를 처리하는데, 구버전 블록의 현재 위치는 0부터 시작한다. 그리고 Equal Length의 값이 있으면 구버전 블록의 현재 위치 부터 Equal Length 만큼 데이터를 읽어서 신버전 블록에 복사(구버전 블록의 현재 위치는 Equal Length 값 만큼 증가함)하며, Mod Length의 값이 있으면 Modify Data에서 Mod Length 만큼 데이터를 읽어서 신버전 블록에 복사(구버전 블록의 현재 위치는 Mod Length 값 만큼 증가함)한다. 이처럼 Equal Length 또는 Mod Length 만큼 데이터를 읽어서 신버전 블록에 복사하는 단계를 반복하는 과정에서, 삽입 데이터가 있다는 것과 다음 Equal 데이터의 위치를 알려주는 구분자(0xFEFF)를 만나면(⑤), Insert Length Data에서 Insert Length 만큼 Insert Data에서 데이터를 읽어서 신버전 블록에 복사하고, Insert Length Data에서 Equal Offset 만큼 구버전 블록의 현재 위치를 이동시킨다. 이러한 소프트웨어 데이터의 업데이트는 상기 Equal/Mod Length Data(674)의 정보가 모두 처리될 때까지 반복하여 수행된다.
다음에는, 이와 같이 구성된 본 발명에 따른 신구 데이터간의 차분에 대한 데이터 구조화 방법의 일 실시예를 도 10을 참조하여 상세하게 설명한다. 이때 본 발명의 방법에 따른 각 단계는 사용 환경이나 당업자에 의해 순서가 변경될 수 있다.
도 10은 본 발명의 일 실시예에 따른 신구 데이터간의 차분에 대한 데이터 구조화 방법의 동작과정을 상세하게 나타낸 순서도이다.
도 10에 도시된 바와 같이, 상기 업데이트 관리서버(200)는 신버전의 프로그램, 커널, 파일시스템을 포함한 소프트웨어 데이터가 생성되면, 상기 소프트웨어 데이터를 상기 클라이언트 디바이스(300)에 업데이트하기 위하여 상기 차분 엔진(100)에 신구 데이터간의 차분 생성을 요청한다(S100).
이에 따라 상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청을 토대로 신구 데이터간의 차분을 생성하게 되는데, 상기 도 3 내지 도 9에서 설명한 델타 헤더 및 델타 헤더를 포함한 델타 데이터 구조(차분 데이터열)를 토대로 구버전 및 신버전의 소프트웨어 데이터를 비교한 차분을 생성한다.
즉 상기 차분 엔진(100)은 상기 업데이트 관리서버(200)의 요청에 따라 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더를 생성하는 델타 헤드 생성 단계를 수행한다(S200).
상기 S200 단계를 통해 델타 헤더를 생성한 다음, 상기 차분 엔진(100)은 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 델타 바디 생성 단계를 수행한다(S300).
이때 상기 서브 델타는 프로그램, 커널 및 파일시스템별 서브 델타 헤더와 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며, 상기 서브 델타 바디는 블록 헤더와 블록 바디를 포함하고 있다.
이와 같이 상기 S200 단계 및 S300 단계를 통해 차분에 대한 델타 헤더와 델타 바디의 데이터 구조를 토대로 신구 데이터간의 차분을 생성한 이후, 상기 차분 엔진(100)은 상기 생성한 차분을 상기 업데이트 관리서버(200)로 제공한다(S400).
상기 S400 단계를 통해 상기 차분 엔진(100)으로부터 신구 데이터간의 차분을 제공받은 상기 업데이트 관리서버(200)는 상기 차분 엔진(100)에서 생성한 차분을 네트워크를 통해 상기 클라이언트 디바이스(300)로 전송한다(S500).
그러면 상기 클라이언트 디바이스(300)는 자체적으로 구비되거나 독립적으로 구비된 상기 업데이트 에이전트(400)로 상기 차분을 제공하여, 상기 업데이트 에이전트(400)에서 상기 차분을 토대로 구버전의 소프트웨어 데이터를 신버전의 소프트웨어 데이터로 업데이트한다(S600).
이후 상기 클라이언트 디바이스(300)는 소프트웨어 데이터의 업데이트 완료정보를 네트워크를 통해 상기 업데이트 관리서버(200)로 전송하고(S700), 상기 업데이트 관리서버(200)는 상기 소프트웨어 데이터의 업데이트 완료정보를 토대로 각 클라이언트 디바이스(300)별 소프트웨어 데이터의 업데이트 정보를 상기 데이터베이스(500)에 저장하고 업데이트 작업을 마무리한다(S800).
이상에서와 같이 본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 기술적 보호범위는 아래의 특허청구범위에 의해서 판단되어야 할 것이다.
본 발명은 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행할 때 사용되는 차분을 델타 헤더와 델타 바디를 포함하는 델타 데이터 구조(즉 차분 데이터열)로 생성할 수 있으므로, 상기 차분을 정확하고 신속하게 생성하는 것은 물론, 상기 클라이언트 디바이스의 소프트웨어 데이터의 업데이트를 간편하게 수행할 수 있다.
또한 본 발명은 사용자가 소프트웨어 데이터의 업데이트를 위해 서비스 센터나 지정된 장소를 직접 방문할 필요가 없어 시간적, 경제적 효율성 및 편의성을 높일 수 있으며, 법률이나 제도의 변화, 버그 및 결함에 대한 소프트웨어 데이터의 관리를 적극적으로 수행하여 클라이언트 디바이스의 시스템 안정성을 향상시킬 수 있다.
Claims (12)
- 차분생성 프로세서에서, 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더를 생성하는 델타 헤더 생성 단계; 및상기 차분생성 프로세서에서, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 델타 바디 생성 단계;를 포함하며,상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며,상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하며,상기 블록 바디는,수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터, 및 삽입(Insert) 길이 데이터를 포함하며,상기 수정(Mod)된 실제 데이터는, 수정된 바이너리 데이터이고, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이 데이터가 지정하는 수정(Mod) 길이만큼 순차적으로 저장되며,상기 삽입(Insert)된 실제 데이터는, 삽입된 바이너리 데이터이고, 상기 삽입(Insert) 길이 데이터에서 상기 삽입(Insert) 길이 데이터가 지정하는 삽입(Insert) 길이만큼 순차적으로 저장되며,상기 동일(Equal) 및 수정(Mod) 길이 데이터는, 동일한 바이너리 데이터의 길이 정보인 동일(Equal) 길이, 수정된 바이너리 데이터의 길이 정보인 수정(Mod) 길이, 및 상기 삽입된 바이너리 데이터의 존재를 알려주는 구분자를 포함하며,상기 삽입(Insert) 길이 데이터는, 상기 삽입된 바이너리 데이터의 길이 정보인 삽입(Insert) 길이, 및 다음의 동일한 바이너리 데이터의 위치 정보인 동일 오프셋을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 청구항 1에 있어서,상기 서브 델타 헤더는,프로그램, 커널 및 파일시스템별로 구분하여 각각 다르게 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 청구항 2에 있어서,상기 서브 델타 헤더는,상기 프로그램의 경우,상기 서브 델타의 타입 정보,상기 서브 델타 바디의 압축 유무 및 사이즈 정보,상기 서브 델타 바디의 개수 정보,구버전 프로그램의 체크섬, 및신버전 프로그램의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 청구항 2에 있어서,상기 서브 델타 헤더는,상기 커널의 경우,상기 서브 델타의 타입 정보,상기 서브 델타 바디의 압축 유무 및 사이즈 정보,상기 서브 델타 바디의 개수 정보,구버전 커널의 압축 체크섬, 및신버전 커널의 압축 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 청구항 2에 있어서,상기 서브 델타 헤더는,상기 파일시스템의 경우,파일시스템 헤더, 및파일시스템 서브 헤더를 포함하여 생성하며,상기 파일시스템 헤더는,상기 서브 델타의 타입 정보, 및파일의 개수 정보를 포함하며,상기 파일시스템 서브 헤더는,파일의 경로 정보,파일의 추가, 수정 및 삭제 상태 정보,파일의 일반, 심볼릭 및 링크의 속성 정보,파일의 압축 유무,상기 서브 델타 바디의 사이즈 정보,구버전 파일의 체크섬,신버전 파일의 체크섬, 및상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 청구항 1에 있어서,상기 블록 헤더는,상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보,상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보,상기 블록 바디의 수정(Mod) 데이터 사이즈 정보,상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보,상기 블록 바디의 데이터 타입 정보,블록 사이즈 정보,구버전 블록의 체크섬, 및신버전 블록의 체크섬을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
- 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더와, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 차분생성 프로세서;를 포함하며,상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며,상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하며,상기 블록 바디는,수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터, 및 삽입(Insert) 길이 데이터를 포함하며,상기 수정(Mod)된 실제 데이터는, 수정된 바이너리 데이터이고, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이 데이터가 지정하는 수정(Mod) 길이만큼 순차적으로 저장되며,상기 삽입(Insert)된 실제 데이터는, 삽입된 바이너리 데이터이고, 상기 삽입(Insert) 길이 데이터에서 상기 삽입(Insert) 길이 데이터가 지정하는 삽입(Insert) 길이만큼 순차적으로 저장되며,상기 동일(Equal) 및 수정(Mod) 길이 데이터는, 동일한 바이너리 데이터의 길이 정보인 동일(Equal) 길이, 수정된 바이너리 데이터의 길이 정보인 수정(Mod) 길이, 및 상기 삽입된 바이너리 데이터의 존재를 알려주는 구분자를 포함하며,상기 삽입(Insert) 길이 데이터는, 상기 삽입된 바이너리 데이터의 길이 정보인 삽입(Insert) 길이, 및 다음의 동일한 바이너리 데이터의 위치 정보인 동일 오프셋을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
- 청구항 7에 있어서,상기 차분생성 프로세서는,상기 서브 델타 헤더를 프로그램, 커널 및 파일시스템별로 구분하여 각각 다르게 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
- 청구항 8에 있어서,상기 차분생성 프로세서는,상기 서브 델타 헤더를 생성할 때, 상기 프로그램의 경우,상기 서브 델타의 타입 정보,상기 서브 델타 바디의 압축 유무 및 사이즈 정보,상기 서브 델타 바디의 개수 정보,구버전 프로그램의 체크섬, 및신버전 프로그램의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
- 청구항 8에 있어서,상기 차분생성 프로세서는,상기 서브 델타 헤더를 생성할 때, 상기 커널의 경우,상기 서브 델타의 타입 정보,상기 서브 델타 바디의 압축 유무 및 사이즈 정보,상기 서브 델타 바디의 개수 정보, 구버전 커널의 압축 체크섬, 및신버전 커널의 압축 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
- 청구항 8에 있어서,상기 차분생성 프로세서는,상기 서브 델타 헤더를 생성할 때, 상기 파일시스템의 경우,파일시스템 헤더, 및파일시스템 서브 헤더를 포함하여 생성하며,상기 파일시스템 헤더는,상기 서브 델타의 타입 정보, 및파일의 개수 정보를 포함하며,상기 파일시스템 서브 헤더는,파일의 경로 정보,파일의 추가, 수정 및 삭제 상태 정보,파일의 일반, 심볼릭 및 링크의 속성 정보,파일의 압축 유무,상기 서브 델타 바디의 사이즈 정보,구버전 파일의 체크섬,신버전 파일의 체크섬, 및상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
- 청구항 7에 있어서,상기 차분생성 프로세서는,상기 블록 헤더를 생성할 때,상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보,상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보,상기 블록 바디의 수정(Mod) 데이터 사이즈 정보,상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보,상기 블록 바디의 데이터 타입 정보,블록 사이즈 정보,구버전 블록의 체크섬, 및신버전 블록의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20788975.9A EP3812916A4 (en) | 2019-08-27 | 2020-03-13 | DATA STRUCTURING METHOD FOR DISTINGUISHING OLD FROM NEW DATA AND APPARATUS THEREOF |
US17/051,435 US20210349855A1 (en) | 2019-08-27 | 2020-03-13 | Method of data structuring for difference between old and new data and device thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190105338A KR102088170B1 (ko) | 2019-08-27 | 2019-08-27 | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 |
KR10-2019-0105338 | 2019-08-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021040168A1 true WO2021040168A1 (ko) | 2021-03-04 |
Family
ID=69803063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2020/003495 WO2021040168A1 (ko) | 2019-08-27 | 2020-03-13 | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210349855A1 (ko) |
EP (1) | EP3812916A4 (ko) |
KR (1) | KR102088170B1 (ko) |
WO (1) | WO2021040168A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102088170B1 (ko) * | 2019-08-27 | 2020-03-12 | 루나 주식회사 | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 |
KR20230072185A (ko) * | 2021-11-17 | 2023-05-24 | 엘지전자 주식회사 | 기능 업그레이드가 가능한 전자 기기, 전자 기기의 기능을 업그레이드하는 서버, 및 전자 기기의 기능을 업그레이드하는 방법 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100390867B1 (ko) * | 2000-05-30 | 2003-07-10 | 주식회사 마이크로랩스 | 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법 |
KR20080037450A (ko) | 2006-10-26 | 2008-04-30 | 웹싱크 주식회사 | 소프트웨어 실행모듈의 업데이트 시스템 및 방법 |
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 | 현대엠엔소프트 주식회사 | 내비게이션 자동 업데이트 장치 및 방법 |
KR101552323B1 (ko) | 2013-08-09 | 2015-09-14 | 한국과학기술원 | 페리틴을 이용한 나노 촉매를 포함하는 다공성 금속산화물 반도체 나노 구조체를 이용한 가스 센서용 부재, 가스 센서 및 그 제조 방법 |
KR101822485B1 (ko) * | 2017-09-07 | 2018-01-26 | 업데이트씽(주) | 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법 |
KR102088170B1 (ko) * | 2019-08-27 | 2020-03-12 | 루나 주식회사 | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681382B1 (en) * | 2000-09-18 | 2004-01-20 | Cisco Technology, Inc. | Method and system for using virtual labels in a software configuration management system |
US6766334B1 (en) * | 2000-11-21 | 2004-07-20 | Microsoft Corporation | Project-based configuration management method and apparatus |
US7058667B2 (en) * | 2000-12-27 | 2006-06-06 | Microsoft Corporation | Method and system for creating and maintaining version-specific properties in a file |
US20020099726A1 (en) * | 2001-01-23 | 2002-07-25 | International Business Machines Corporation | Method and system for distribution of file 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 |
US7031972B2 (en) * | 2003-07-21 | 2006-04-18 | Innopath Software, Inc. | Algorithms for block-level code alignment of software binary files |
US20060112113A1 (en) * | 2004-11-08 | 2006-05-25 | Jinsheng Gu | Static file system differencing and updating |
KR102070096B1 (ko) * | 2013-06-27 | 2020-01-29 | 삼성전자주식회사 | 광원 모듈 및 이를 구비하는 조명 장치 |
KR101599133B1 (ko) * | 2014-06-09 | 2016-03-15 | 주식회사 엔지스테크널러지 | 네비게이션 장치의 지도 데이터 제공 방법 및 시스템 |
EP3303996A1 (en) * | 2015-06-04 | 2018-04-11 | HERE Global B.V. | Incremental update of compressed navigational databases |
US10481901B2 (en) * | 2017-04-24 | 2019-11-19 | Amzetta Technologies, Llc | System and method for performing firmware update by patching |
US11481929B2 (en) * | 2020-03-16 | 2022-10-25 | Meta Platforms Technologies, Llc | System and method for compressing and decompressing images using block-based compression format |
-
2019
- 2019-08-27 KR KR1020190105338A patent/KR102088170B1/ko active IP Right Grant
-
2020
- 2020-03-13 US US17/051,435 patent/US20210349855A1/en active Pending
- 2020-03-13 WO PCT/KR2020/003495 patent/WO2021040168A1/ko unknown
- 2020-03-13 EP EP20788975.9A patent/EP3812916A4/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100390867B1 (ko) * | 2000-05-30 | 2003-07-10 | 주식회사 마이크로랩스 | 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법 |
KR20080037450A (ko) | 2006-10-26 | 2008-04-30 | 웹싱크 주식회사 | 소프트웨어 실행모듈의 업데이트 시스템 및 방법 |
JP2012190075A (ja) * | 2011-03-08 | 2012-10-04 | Clarion Co Ltd | 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム |
KR20150005164A (ko) * | 2013-07-04 | 2015-01-14 | 주식회사 미르코퍼레이션 | Fota 시스템 및 그 실행 방법 |
KR101552323B1 (ko) | 2013-08-09 | 2015-09-14 | 한국과학기술원 | 페리틴을 이용한 나노 촉매를 포함하는 다공성 금속산화물 반도체 나노 구조체를 이용한 가스 센서용 부재, 가스 센서 및 그 제조 방법 |
KR20150089591A (ko) * | 2014-01-28 | 2015-08-05 | 현대엠엔소프트 주식회사 | 내비게이션 자동 업데이트 장치 및 방법 |
KR101822485B1 (ko) * | 2017-09-07 | 2018-01-26 | 업데이트씽(주) | 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법 |
KR102088170B1 (ko) * | 2019-08-27 | 2020-03-12 | 루나 주식회사 | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 |
Also Published As
Publication number | Publication date |
---|---|
KR102088170B1 (ko) | 2020-03-12 |
EP3812916A4 (en) | 2022-04-20 |
US20210349855A1 (en) | 2021-11-11 |
EP3812916A1 (en) | 2021-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021040166A1 (ko) | 소프트웨어 업데이트를 위한 신구 데이터간의 차분 생성 방법 및 그 장치 | |
WO2021040167A1 (ko) | 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법 | |
WO2018135766A1 (ko) | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 | |
US7287068B1 (en) | System and method for updating devices that execute an operating system or application program directly from nonvolatile storage | |
CN1141641C (zh) | 安装被许可应用程序的方法及装置 | |
WO2021040168A1 (ko) | 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 | |
WO2021045428A1 (en) | Method and apparatus for improving runtime performance after application update in electronic device | |
WO2020062640A1 (zh) | 终端应用动态文案的语言切换方法、服务器及存储介质 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
WO2012159436A1 (zh) | 一种在windows下调整磁盘分区的方法及装置 | |
WO2019039706A1 (ko) | 전자 장치 및 그의 데이터 운용 방법 | |
CN107025122B (zh) | 一种轻应用接入方法及*** | |
US20140222876A1 (en) | File system extended attribute support in an operating system with restricted extended attributes | |
WO2018014581A1 (zh) | 数值转移记录的核对方法、装置、服务器和存储介质 | |
US6976133B1 (en) | System and method for updating devices using limited amounts of random access memory | |
WO2020190079A1 (en) | Electronic device for searching for file information stored in external device and operation method thereof | |
CN113190244A (zh) | 无线模组升级的方法、装置、计算机设备和存储介质 | |
WO2022114899A1 (ko) | 다중파일 트랜잭션을 위한 커밋 블럭 구조 및 장치 | |
WO2022114754A1 (ko) | 파일 시스템 기반 차량 진단 이벤트 메모리 관리 장치 및 방법 | |
JPH05120023A (ja) | プログラムローデイング方式 | |
WO2022114898A1 (ko) | 다중파일 트랜잭션의 파일 관리 기법 및 장치 | |
WO2022065704A1 (ko) | 비 파괴 편집 컨텐츠 관리 방법 및 장치 | |
WO2019062100A1 (zh) | Raid管理方法、装置及计算机可读存储介质 | |
CN117111987A (zh) | 软件自动更新并自重启的方法、***、设备及存储介质 | |
JP2001297005A (ja) | クライアントサーバシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2020788975 Country of ref document: EP Effective date: 20201020 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |