KR102088170B1 - 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 - Google Patents

신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 Download PDF

Info

Publication number
KR102088170B1
KR102088170B1 KR1020190105338A KR20190105338A KR102088170B1 KR 102088170 B1 KR102088170 B1 KR 102088170B1 KR 1020190105338 A KR1020190105338 A KR 1020190105338A KR 20190105338 A KR20190105338 A KR 20190105338A KR 102088170 B1 KR102088170 B1 KR 102088170B1
Authority
KR
South Korea
Prior art keywords
data
delta
sub
information
difference
Prior art date
Application number
KR1020190105338A
Other languages
English (en)
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 KR1020190105338A priority Critical patent/KR102088170B1/ko
Application granted granted Critical
Publication of KR102088170B1 publication Critical patent/KR102088170B1/ko
Priority to US17/051,435 priority patent/US20210349855A1/en
Priority to PCT/KR2020/003495 priority patent/WO2021040168A1/ko
Priority to EP20788975.9A priority patent/EP3812916A4/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

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

신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스{METHOD OF DATA STRUCTURING FOR DIFFERENCE BETWEEN OLD AND NEW DATA AND DEVICE THEREOF}
본 발명은 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스에 관한 것으로, 더욱 상세하게는 자율주행차량, 스마트폰 등의 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행하기 위해 차분을 생성하여 송신하고자 할 때, 구버전과 신버전의 소프트웨어 데이터에 대한 차이를 나타내는 차분을 생성하여 송신하는데 필요한 데이터 구조화 방법 및 그 디바이스에 관한 것이다.
컴퓨터, 소프트웨어, 인터넷, 멀티미디어, 경영혁신, 행정쇄신 등 정보화 수단에 필요한 유형 및 무형기술을 아우르는 간접적인 가치 창출에 무게를 두고 있는 정보기술 산업을 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).
이처럼, 본 발명은 클라이언트 디바이스에 설치된 프로그램, 커널 및 파일시스템을 포함한 소프트웨어 데이터의 업데이트를 수행할 때 사용되는 차분을 델타 헤더와 델타 바디를 포함하는 델타 데이터 구조(즉 차분 데이터열)로 생성할 수 있으므로, 상기 차분을 정확하고 신속하게 생성하는 것은 물론, 상기 클라이언트 디바이스의 소프트웨어 데이터의 업데이트를 간편하게 수행할 수 있다.
또한 본 발명은 사용자가 소프트웨어 데이터의 업데이트를 위해 서비스 센터나 지정된 장소를 직접 방문할 필요가 없어 시간적, 경제적 효율성 및 편의성을 높일 수 있으며, 법률이나 제도의 변화, 버그 및 결함에 대한 소프트웨어 데이터의 관리를 적극적으로 수행하여 클라이언트 디바이스의 시스템 안정성을 향상시킬 수 있다.
이상에서와 같이 본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 기술적 보호범위는 아래의 특허청구범위에 의해서 판단되어야 할 것이다.
100 : 차분 엔진 110 : 차분생성 프로세서
120 : 입출력 인터페이스 130 : 네트워크 카드
140 : 메모리 200 : 업데이트 관리서버
300 : 클라이언트 디바이스 400 : 업데이트 에이전트
500 : 데이터베이스 600 : 델타 데이터 구조
610 : 델타 헤더 620 : 델타 바디
630 : 서브 델타 640 : 서브 델타 헤더
650 : 서브 델타 바디 660 : 블록 헤더
670 : 블록 바디

Claims (14)

  1. 차분생성 프로세서에서, 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더를 생성하는 델타 헤더 생성 단계; 및
    상기 차분생성 프로세서에서, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 델타 바디 생성 단계;를 포함하며,
    상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며,
    상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하며,
    상기 블록 바디는,
    수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터, 및 삽입(Insert) 길이 데이터를 포함하며,
    상기 수정(Mod)된 실제 데이터는, 수정된 바이너리 데이터이고, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이 데이터가 지정하는 수정(Mod) 길이만큼 순차적으로 저장되며,
    상기 삽입(Insert)된 실제 데이터는, 삽입된 바이너리 데이터이고, 상기 삽입(Insert) 길이 데이터에서 상기 삽입(Insert) 길이 데이터가 지정하는 삽입(Insert) 길이만큼 순차적으로 저장되며,
    상기 동일(Equal) 및 수정(Mod) 길이 데이터는, 동일한 바이너리 데이터의 길이 정보인 동일(Equal) 길이, 수정된 바이너리 데이터의 길이 정보인 수정(Mod) 길이, 및 상기 삽입된 바이너리 데이터의 존재를 알려주는 구분자를 포함하며,
    상기 삽입(Insert) 길이 데이터는, 상기 삽입된 바이너리 데이터의 길이 정보인 삽입(Insert) 길이, 및 다음의 동일한 바이너리 데이터의 위치 정보인 동일 오프셋을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  2. 청구항 1에 있어서,
    상기 서브 델타 헤더는,
    프로그램, 커널 및 파일시스템별로 구분하여 각각 다르게 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  3. 청구항 2에 있어서,
    상기 서브 델타 헤더는,
    상기 프로그램의 경우,
    상기 서브 델타의 타입 정보,
    상기 서브 델타 바디의 압축 유무 및 사이즈 정보,
    상기 서브 델타 바디의 개수 정보,
    구버전 프로그램의 체크섬, 및
    신버전 프로그램의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  4. 청구항 2에 있어서,
    상기 서브 델타 헤더는,
    상기 커널의 경우,
    상기 서브 델타의 타입 정보,
    상기 서브 델타 바디의 압축 유무 및 사이즈 정보,
    상기 서브 델타 바디의 개수 정보,
    구버전 커널의 압축 체크섬, 및
    신버전 커널의 압축 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  5. 청구항 2에 있어서,
    상기 서브 델타 헤더는,
    상기 파일시스템의 경우,
    파일시스템 헤더, 및
    파일시스템 서브 헤더를 포함하여 생성하며,
    상기 파일시스템 헤더는,
    상기 서브 델타의 타입 정보, 및
    파일의 개수 정보를 포함하며,
    상기 파일시스템 서브 헤더는,
    파일의 경로 정보,
    파일의 추가, 수정 및 삭제 상태 정보,
    파일의 일반, 심볼릭 및 링크의 속성 정보,
    파일의 압축 유무,
    상기 서브 델타 바디의 사이즈 정보,
    구버전 파일의 체크섬,
    신버전 파일의 체크섬, 및
    상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  6. 청구항 1에 있어서,
    상기 블록 헤더는,
    상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보,
    상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보,
    상기 블록 바디의 수정(Mod) 데이터 사이즈 정보,
    상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보,
    상기 블록 바디의 데이터 타입 정보,
    블록 사이즈 정보,
    구버전 블록의 체크섬, 및
    신버전 블록의 체크섬을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 방법.
  7. 삭제
  8. 신구 버전의 소프트웨어 데이터에 대한 차분을 생성하기 위해서, 상기 차분의 버전 정보, 파티션의 개수, 각 상기 파티션에 대한 델타 크기 및 노멀이나 재시작(resume)에 대한 패치 정보를 포함한 델타 헤더와, 상기 파티션과 상기 파티션에 포함된 적어도 하나 이상의 서브 델타에 대한 데이터를 포함한 델타 바디를 생성하는 차분생성 프로세서;를 포함하며,
    상기 생성한 델타 바디는, 서브 델타 헤더 및 각 파티션에 포함된 블록 정보를 포함한 적어도 하나 이상의 서브 델타 바디를 포함하며,
    상기 서브 델타 바디는, 특정 블록 정보에 대한 블록 헤더 및 블록 바디를 포함하며,
    상기 블록 바디는,
    수정(Mod)된 실제 데이터, 삽입(Insert)된 실제 데이터, 동일(Equal) 및 수정(Mod) 길이 데이터, 및 삽입(Insert) 길이 데이터를 포함하며,
    상기 수정(Mod)된 실제 데이터는, 수정된 바이너리 데이터이고, 상기 동일(Equal) 및 수정(Mod) 길이 데이터에서 수정(Mod) 길이 데이터가 지정하는 수정(Mod) 길이만큼 순차적으로 저장되며,
    상기 삽입(Insert)된 실제 데이터는, 삽입된 바이너리 데이터이고, 상기 삽입(Insert) 길이 데이터에서 상기 삽입(Insert) 길이 데이터가 지정하는 삽입(Insert) 길이만큼 순차적으로 저장되며,
    상기 동일(Equal) 및 수정(Mod) 길이 데이터는, 동일한 바이너리 데이터의 길이 정보인 동일(Equal) 길이, 수정된 바이너리 데이터의 길이 정보인 수정(Mod) 길이, 및 상기 삽입된 바이너리 데이터의 존재를 알려주는 구분자를 포함하며,
    상기 삽입(Insert) 길이 데이터는, 상기 삽입된 바이너리 데이터의 길이 정보인 삽입(Insert) 길이, 및 다음의 동일한 바이너리 데이터의 위치 정보인 동일 오프셋을 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  9. 청구항 8에 있어서,
    상기 차분생성 프로세서는,
    상기 서브 델타 헤더를 프로그램, 커널 및 파일시스템별로 구분하여 각각 다르게 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  10. 청구항 9에 있어서,
    상기 차분생성 프로세서는,
    상기 서브 델타 헤더를 생성할 때, 상기 프로그램의 경우,
    상기 서브 델타의 타입 정보,
    상기 서브 델타 바디의 압축 유무 및 사이즈 정보,
    상기 서브 델타 바디의 개수 정보,
    구버전 프로그램의 체크섬, 및
    신버전 프로그램의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  11. 청구항 9에 있어서,
    상기 차분생성 프로세서는,
    상기 서브 델타 헤더를 생성할 때, 상기 커널의 경우,
    상기 서브 델타의 타입 정보,
    상기 서브 델타 바디의 압축 유무 및 사이즈 정보,
    상기 서브 델타 바디의 개수 정보, 구버전 커널의 압축 체크섬, 및
    신버전 커널의 압축 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  12. 청구항 9에 있어서,
    상기 차분생성 프로세서는,
    상기 서브 델타 헤더를 생성할 때, 상기 파일시스템의 경우,
    파일시스템 헤더, 및
    파일시스템 서브 헤더를 포함하여 생성하며,
    상기 파일시스템 헤더는,
    상기 서브 델타의 타입 정보, 및
    파일의 개수 정보를 포함하며,
    상기 파일시스템 서브 헤더는,
    파일의 경로 정보,
    파일의 추가, 수정 및 삭제 상태 정보,
    파일의 일반, 심볼릭 및 링크의 속성 정보,
    파일의 압축 유무,
    상기 서브 델타 바디의 사이즈 정보,
    구버전 파일의 체크섬,
    신버전 파일의 체크섬, 및
    상기 서브 델타 바디의 개수 정보를 포함하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  13. 청구항 8에 있어서,
    차분생성 프로세서는,
    상기 블록 헤더를 생성할 때,
    상기 블록 바디의 동일(Equal) 및 수정(Mod) 길이 데이터 사이즈 정보,
    상기 블록 바디의 삽입(Insert) 길이 데이터 사이즈 정보,
    상기 블록 바디의 수정(Mod) 데이터 사이즈 정보,
    상기 블록 바디의 삽입(Insert) 데이터 사이즈 정보,
    상기 블록 바디의 데이터 타입 정보,
    블록 사이즈 정보,
    구버전 블록의 체크섬, 및
    신버전 블록의 체크섬을 포함하여 생성하는 것을 특징으로 하는 신구 데이터간의 차분에 대한 데이터 구조화 디바이스.
  14. 삭제
KR1020190105338A 2019-08-27 2019-08-27 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스 KR102088170B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190105338A KR102088170B1 (ko) 2019-08-27 2019-08-27 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
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
PCT/KR2020/003495 WO2021040168A1 (ko) 2019-08-27 2020-03-13 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
EP20788975.9A EP3812916A4 (en) 2019-08-27 2020-03-13 DATA STRUCTURING METHOD FOR DISTINGUISHING OLD FROM NEW DATA AND APPARATUS THEREOF

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190105338A KR102088170B1 (ko) 2019-08-27 2019-08-27 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스

Publications (1)

Publication Number Publication Date
KR102088170B1 true KR102088170B1 (ko) 2020-03-12

Family

ID=69803063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190105338A KR102088170B1 (ko) 2019-08-27 2019-08-27 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스

Country Status (4)

Country Link
US (1) US20210349855A1 (ko)
EP (1) EP3812916A4 (ko)
KR (1) KR102088170B1 (ko)
WO (1) WO2021040168A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021040168A1 (ko) * 2019-08-27 2021-03-04 루나 주식회사 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
WO2023090866A1 (ko) * 2021-11-17 2023-05-25 엘지전자 주식회사 기능 업그레이드가 가능한 전자 기기, 전자 기기의 기능을 업그레이드하는 서버, 및 전자 기기의 기능을 업그레이드하는 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390867B1 (ko) * 2000-05-30 2003-07-10 주식회사 마이크로랩스 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법
JP2012190075A (ja) * 2011-03-08 2012-10-04 Clarion Co Ltd 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
KR20150008959A (ko) * 2013-06-27 2015-01-26 삼성전자주식회사 광원 모듈 및 이를 구비하는 조명 장치
KR101822485B1 (ko) * 2017-09-07 2018-01-26 업데이트씽(주) 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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
WO2006052897A2 (en) * 2004-11-08 2006-05-18 Innopath Software, Inc. Reorganizing images in static file system differencing and updating
KR20080037450A (ko) 2006-10-26 2008-04-30 웹싱크 주식회사 소프트웨어 실행모듈의 업데이트 시스템 및 방법
KR101541112B1 (ko) * 2013-07-04 2015-07-31 주식회사 미르코퍼레이션 Fota 시스템 및 그 실행 방법
KR101552323B1 (ko) 2013-08-09 2015-09-14 한국과학기술원 페리틴을 이용한 나노 촉매를 포함하는 다공성 금속산화물 반도체 나노 구조체를 이용한 가스 센서용 부재, 가스 센서 및 그 제조 방법
KR102107123B1 (ko) * 2014-01-28 2020-05-06 현대엠엔소프트 주식회사 내비게이션 자동 업데이트 장치 및 방법
KR101599133B1 (ko) * 2014-06-09 2016-03-15 주식회사 엔지스테크널러지 네비게이션 장치의 지도 데이터 제공 방법 및 시스템
US11334605B2 (en) * 2015-06-04 2022-05-17 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
KR102088170B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390867B1 (ko) * 2000-05-30 2003-07-10 주식회사 마이크로랩스 네트웍상에서 소프트웨어를 효율적으로 갱신하는 방법
JP2012190075A (ja) * 2011-03-08 2012-10-04 Clarion Co Ltd 更新差分データ作成装置、データ更新システムおよび更新差分データ作成プログラム
KR20150008959A (ko) * 2013-06-27 2015-01-26 삼성전자주식회사 광원 모듈 및 이를 구비하는 조명 장치
KR101822485B1 (ko) * 2017-09-07 2018-01-26 업데이트씽(주) 차량용 소프트웨어 원격 업데이트시 전원 차단 후 복구 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021040168A1 (ko) * 2019-08-27 2021-03-04 루나 주식회사 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
WO2023090866A1 (ko) * 2021-11-17 2023-05-25 엘지전자 주식회사 기능 업그레이드가 가능한 전자 기기, 전자 기기의 기능을 업그레이드하는 서버, 및 전자 기기의 기능을 업그레이드하는 방법

Also Published As

Publication number Publication date
EP3812916A4 (en) 2022-04-20
EP3812916A1 (en) 2021-04-28
US20210349855A1 (en) 2021-11-11
WO2021040168A1 (ko) 2021-03-04

Similar Documents

Publication Publication Date Title
EP1519268B1 (en) Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US11379216B2 (en) Software update agent device and software patching method through the same
US11775288B2 (en) Method and apparatus for generating difference between old and new versions of data for updating software
KR100680296B1 (ko) 무선 네트워크를 통한 대용량 컨텐츠 이어받기 서비스 제공방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체
KR102088170B1 (ko) 신구 데이터간의 차분에 대한 데이터 구조화 방법 및 그 디바이스
CN111638894A (zh) 一种软件升级方法、装置及计算机存储介质
JP2007528064A (ja) 無線装置オペレーティング環境における未検証プログラムの実行
CN107577506B (zh) 一种数据预加载的方法和系统
JP2012088765A (ja) プログラム起動制御方法、プログラム起動制御プログラム、携帯端末、ネットワークシステム
US9053108B2 (en) File system extended attribute support in an operating system with restricted extended attributes
CN111737223B (zh) 一种文件拷贝方法、装置、设备及存储介质
CN114064100A (zh) 配置信息处理方法、系统和装置
CN109857719B (zh) 分布式文件处理方法、装置、计算机设备以及存储介质
CN109325057B (zh) 中间件管理方法、装置、计算机设备以及存储介质
CN112748943A (zh) 一种非智能交互电子白板的升级方法及升级系统
CN112596733A (zh) 编译和获取文件的方法、装置、存储介质、电子设备
CN110825406A (zh) 一种软件升级的方法及相关设备
KR100693551B1 (ko) 소프트웨어의 부분 업데이트를 위한 통신단말기 및 통신네트워크 시스템, 소프트웨어의 부분 업데이트 방법 및 이를 위한 소프트웨어 생성 장치 및 방법
WO2021128269A1 (zh) 文件处理方法、文件处理装置、移动终端及服务器
CN106021367B (zh) 一种查找备份数据的方法及终端
CN117111987A (zh) 软件自动更新并自重启的方法、系统、设备及存储介质
CN117032755A (zh) 一种电动车仪表ota升级方法、装置及存储介质
CN118034895A (zh) 一种文件预览方法和相关装置
CN116795294A (zh) 一种文件写入方法、装置、计算机设备及存储介质
CN116974699A (zh) 用于虚拟化平台的虚拟机镜像文件管理方法及系统

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant