KR101438215B1 - 저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템 - Google Patents

저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템 Download PDF

Info

Publication number
KR101438215B1
KR101438215B1 KR1020057024876A KR20057024876A KR101438215B1 KR 101438215 B1 KR101438215 B1 KR 101438215B1 KR 1020057024876 A KR1020057024876 A KR 1020057024876A KR 20057024876 A KR20057024876 A KR 20057024876A KR 101438215 B1 KR101438215 B1 KR 101438215B1
Authority
KR
South Korea
Prior art keywords
version
content
modified
previous
delta
Prior art date
Application number
KR1020057024876A
Other languages
English (en)
Other versions
KR20060069361A (ko
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 레드 밴드 리미티드
Publication of KR20060069361A publication Critical patent/KR20060069361A/ko
Application granted granted Critical
Publication of KR101438215B1 publication Critical patent/KR101438215B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하기 위한 시스템. 상기 시스템은 이전 버전 및 새로운 버전과 연관된 변환 요소를 생성하는 변환 요소 생성기를 포함한다. 이전 버전들에 상기 변환 요소를 적용하는 것을 포함하는 수정된 버전을 생성하는 수정 버전 생성기. 상기 콤팩트한 갱신 패키지는 상기 변환 요소와, 수정된 버전과 새로운 버전을 기반으로한 수정된 델타(modified delta)를 포함한다.
버전 갱신, 갱신 패키지

Description

저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및 시스템 {METHOD AND SYSTEM FOR UPDATING VERSIONS OF CONTENT STORED IN A STORAGE DEVICE}
본 발명은 저장기기에 저장된 콘텐츠의 콤팩트한 갱신 버전을 생성하는 것에 관한 것이다.
미합중국 특허 제6,546,552호는 이전 프로그램과 새로운 프로그램 간의 콤팩트한 차이 결과를 생성하는 방법을 개시하고 있다. 각 프로그램은 그 프로그램 내의 다른 엔트리를 참조하는 참조지시자를 가지고 있는 참조 엔트리를 포함하고 있다. 상기 방법은, 이전 프로그램을 스캐닝하고, 각 참조 엔트리에 대하여 엔트리의 참조 지시자를 독특한 표식 부호로 대체함으로써, 수정된 이전 프로그램이 생성되는 단계들을 포함하고 있다. 새로운 프로그램을 스캐닝하고, 각 참조 엔트리에 대하여 엔트리의 참조 지시자를 독특한 표식부호로 대체함으로써, 수정된 새로운 프로그램이 생성되는 단계들이 보다 더 제공되고 있다. 또한 상기 수정된 이전 프로그램과 수정된 새로운 프로그램을 직접적 혹은 간접적으로 활용하여 특정한 차이 결과 생성하는 단계를 보다 더 개시하고 있다.
본 발명은 이전 버전 콘텐츠와 새로운 버전 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하는 방법에 있어서, 상기 방법이:
(i) 상기 이전 버전 및 새로운 버전과 연관된 변환 요소를 생성하는 단계;
(ii) 상기 버전들 중 어느 하나에 상기 변환 요소를 적용하는 것을 포함하는 수정된 버전을 생성하는 단계;
(iii) 상기 변환 요소와, 적어도 상기 수정된 버전과 (ii)에서 규정된 상기 하나의 버전 이외의 버전을 기반으로한 수정된 델타(modified delta)를 포함하는 상기 콤팩트한 갱신 패키지를 생성하는 단계를 포함하는 방법을 제공한다.
본 발명은 또한 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신하는 방법에 있어서, 상기 방법이:
(i) 콤팩트한 갱신 패키지를 얻어내는 단계로서, 상기 콤팩트한 갱신 패키지가: 상기 이전 버전 및 새로운 버전과 연관된 변환 요소, 수정된 델타, 그리고 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하는 것을 특징으로하는 단계;
(ii) 전방 갱신 표시의 경우에는,
a. 상기 이전 버전에 변환 요소를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
b. 상기 수정된 버전에 상기 수정된 델타를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계;
(iii) 후방 갱신 표시의 경우에는,
a. 상기 이전 버전에 수정된 델타를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
(iii)(a)에서 규정된 수정된 버전에 상기 변환 요소를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계를 포함하는 방법을 제공한다.
또한 본 발명은 저장기기에 저장된 콘텐츠의 버전을 갱신할 수 있게 하고, 상기 콘텐츠의 이전 버전을 그것의 새로운 버전으로 갱신하도록하는 갱신 패키지를 생성하는 방법에 있어서, 상기 방법이:
상기 이전 버전의 참조 항목들 내의 참조된 항목들의 주소들의 표시 값들을 결정하는 단계;
상기 이전 버전 내의 참조된 항목들의 수정 시프트(modification shift)들을 결정하는 단계;
상기 수정 시프트들에 따라서 상기 참조 항목의 수정을 가능하게 하는 정수 시프트 법칙들을 정하는 단계를 포함하는 방법을 제공한다.
본 발명은 또한 장치에 의해 판독이 가능하고, 이전 버전 콘텐츠와 새로운 버전 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하는 방법의 단계들을 수행하는 장치에 의해 실행가능한 명령어들의 프로그램을 명확히 내장시키는 프로그램 저장기기에 있어서, 상기 방법의 단계들이:
(i) 상기 이전 버전 및 새로운 버전과 연관된 변환 요소를 생성하는 단계;
(ii) 상기 버전들 중 어느 하나에 상기 변환 요소를 적용하는 것을 포함하는 수정된 버전을 생성하는 단계;
(iii) 상기 콤팩트한 갱신 패키지를 생성하는 단계로서, 상기 콤팩트한 갱신 패키지가, 상기 변환 요소와, 적어도 상기 수정된 버전과 (ii)에서 규정된 상기 하나의 버전 이외의 버전을 기반으로한 수정된 델타(modified delta)를 포함하는 것을 특징으로 하는 단계를 포함하는 프로그램 저장기기를 제공한다.
본 발명은 또한 장치에 의해 판독이 가능하고, 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신하는 방법의 단계들을 수행하는 장치에 의해 실행가능한 명령어들의 프로그램을 명확히 내장시키는 프로그램 저장기기에 있어서, 상기 방법의 단계들이:
(i) 콤팩트한 갱신 패키지를 얻어내는 단계로서, 상기 콤팩트한 갱신 패키지가, 상기 이전 버전 및 새로운 버전과 연관된 변환 요소, 수정된 델타, 그리고 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하는 것을 특징으로하는 단계;
(ii) 전방 갱신 표시의 경우에는,
a) 상기 이전 버전에 변환 요소를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
b) 상기 수정된 버전에 상기 수정된 델타를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계;
(iii) 후방 갱신 표시의 경우에는,
a) 상기 이전 버전에 수정된 델타를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
b) (iii)(a)에서 규정된 수정된 버전에 상기 변환 요소를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계를 포함하는 프로그램 저장기기를 제공한다.
다른 측면에 있어서 본 발명은 이전 버전 콘텐츠와 새로운 버전 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하기 위한 시스템에 있어서, 상기 시스템이:
상기 이전 버전 및 새로운 버전과 연관된 변환 요소를 생성하는 변환 요소 생성기;
상기 버전들 중 어느 하나에 상기 변환 요소를 적용하는 것을 포함하는 수정된 버전을 생성하는 수정 버전 생성기;
상기 변환 요소와, 적어도 상기 수정된 버전과 상기 하나의 버전 이외의 버전을 기반으로한 수정된 델타(modified delta)를 포함하는 상기 콤팩트한 갱신 패키지를 생성하는 갱신 패키지 생성기를 포함하는 시스템을 제공한다.
본 발명은 또한 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신하기 위한 시스템에 있어서, 상기 시스템이:
콤팩트한 갱신 패키지를 얻어내도록 설정된 입력 모듈로서, 상기 콤팩트한 갱신 패키지가: 상기 이전 버전 및 새로운 버전과 연관된 변환 요소, 수정된 델타, 그리고 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하는 것을 특징으로하는 입력 모듈;
프로세서로서, 상기 프로세서가:
전방 갱신 표시의 경우에는,
a) 상기 이전 버전에 변환 요소를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
b) 상기 수정된 버전에 상기 수정된 델타를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계;
또는 후방 갱신 표시의 경우에는,
a) 상기 이전 버전에 수정된 델타를 적용하는 것을 포함하는, 수정된 버전을 생성하는 단계;
b) (iii)(a)에서 규정된 수정된 버전에 상기 변환 요소를 적용하는 것을 포함하는, 상기 새로운 버전을 생성하는 단계를 수행하도록 설정된 프로세서를 포함하는 시스템을 제공한다.
본 발명을 이해하고 본 발명이 실제로 어떻게 수행될 수 있는지를 알기 위해, 관련된 도면들을 참조하여 바람직한 실시예가 개시될 예정이나, 이는 실시예에만 제한되지 않고, 그 그림들 중에서:
도1은 본 발명의 한 실시예를 따르는, 휴대전화 망에서 버전의 갱신을 제공하는 시스템의 개괄적인 도식이고;
도2는 이전 버전 콘텐츠를 새로운 버전으로 갱신하기에 적합하게 된 갱신 패키지의 개괄적인 도식이며;
도3은 본 발명의 한 실시예를 따르는, 하나의 항목을 나타내는 정수값의 개괄적인 도식이고;
도4는 정수 표기법을 사용하여 도2의 갱신 패키지의 일부를 본 발명의 한 실 시예를 따라서 도식화하고 있으며;
도5는 본 발명의 한 실시예를 따르는, 이전 버전과 그것의 갱신을 통해 받은 새로운 버전의 개괄적인 도식이고;
도6은 도5의 이전 버젼을 그것의 새로운 버전으로 갱신하기 위해 사용되는 갱신 패키지의 일부를 도식화하고 있으며;
도7은 본 발명의 한 실시예를 따르는, 갱신 패키지 내의 숫자 시프트 법칙의 생성을 자세히 기술하는 플로우 차트이고;
도8은 예시용 콘텐츠 및 연관된 메타 데이터를 본 발명의 한 실시예에 따라서 도식화하고 있으며;
도9는 본 발명의 한 실시예를 따르는, 이전 버전과 그것의 갱실을 통해 받은 새로운 버전의 개괄적인 도식이고;
도9A는 본 발명의 한 실시예에 따르는, 도9의 이전 버전 및 새로운 버전과 연관된 메타 데이터의 개괄적인 도식이며;
도10은 차이점 테이블과 그에 대응하는, 도9의 예를 따른 참조 시프트 법칙을 본 발명의 한 실시예에 따라서 도식하고 있고;
도11은 본 발명의 한 실시예를 따르는, 도9의 이전 버전 및 새로운 버전과 연관된 부분적인 메타 데이터의 개괄적인 도식이며;
도12는 차이점 테이블과 그에 대응하는, 도9와 도11의 예에 따른 참조 시프트 법칙을 본 발명의 한 실시예에 따라서 도식화하고 있고;
도13은 본 발명의 한 실시예를 따르는, 갱신 패키지 내의 참조 시프트 법칙 의 생성을 자세히 기술하는 플로우 차트이며;
도14는 본 발명의 한 실시예를 따르는, 콘텐츠의 버전을 갱신시키는 반복적 단계들(iterations)의 개괄적인 도식이고;
도15는 본 발명의 실시예의 반복적 단계들을 자세히 기술하는 플로우 차트이며;
도16은 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신을 기술한 플로우 차트이고;
도17은 이전 버전 콘텐츠와 새로운 버전 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하기 위한 시스템을 본 발명의 한 실시예에 따라서 도식화하고 있으며; 그리고
도18은 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신하기 위한 시스템을 본 발명의 한 실시예에 따라서 도식화하고 있다.
도1은 본 발명의 한 실시예를 따르는, 휴대전화 망에서 버전의 갱신을 제공하는 시스템 101의 개괄적인 도식이다. 기억장치들과 결합되어 있는 휴대전화기 102들은 그들 자신이 동작하게 하는 프로그램을 실행시킨다. 휴대전화기들 상에서 현재 실행되고 있는 프로그램의 버전을 이후로 이전 버전이라 칭한다. 가끔씩 전화기 102가 새로운 버전의 프로그램을 실행시키기 위하여 그 프로그램을 갱실할 필요가 있다. 이 새로운 버전은 개인용 컴퓨터(PC)와 같은 버전 생성기 105 상에서 생성이 된다. 상기 새로운 버전은 서버 103에 저장되고, 트랜스미터 104를 통하여 휴대전화기 102에 전달된다.
도1에서 도식되고 있는 시스템 101은 예시로만 제한되지 않으며, 본 발명은 휴대전화망 또는 프로그램들의 갱신에 국한되지는 않는다는 것을 주의해야 한다. 저장기기 내의 데이터들과 같은 많은 다른 종류의 콘텐츠들은 갱신을 필요로 한다. 예를 들면, 개인용 컴퓨터(PC), 또는 다른 어떤 컴퓨터든지 그 동작에 필요하거나 또는 그 위에서 실행되는 프로그램들의 동작을 위한 데이터(이를 테면, 당 기술 분야에 숙달된 사람들에게 알려진 "정보 파일"들)를 포함하는 파일들을 저장할 수 있다. 때로는 통신회선, 예를 들면, 인터넷을 통하여 이 데이터를 갱신하는 것이 필요하다.
따라서, 이하에서 "콘텐츠"라는 용어는 "프로그램"을 대신하여 사용된다. 동일한 방식으로, "저장기기"라는 용어는 도1의 휴대전화의 기억장치를 대신하여 사용된다.
저장기기들에 저장되어 있는 콘텐츠를 갱신하기 위해서 갱신 패키지들이 생성되어 서버에 저장되고 상기 저장기기들 또는 그와 결합된 다른 기기들에 전송된다.
저장기기는 내장 기기(embedded device)와 연관될 수 있다는 점을 주목해야 한다. 예를 들어 내장기기는, 이를 테면 휴대전화기들 및/또는 가전기기들을 포함하는 군(group)의 한 구성원이 될 수 있다.
도2는 이전 버전 콘텐츠 202를 새로운 버전 203으로 갱신하기에 적합하게 된 갱신 패키지 201의 개괄적인 도식이다. 이전 버전 콘텐츠(이를 테면 이전 버전 202)은 또한 줄여서 "이전 버전"이라고 칭한다. 이와 같이 새로운 버전 콘텐츠(이를 테면 새로운 버전 203)은 또한 줄여서 "새로운 버전"이라고 칭한다.
갱신 패키지 201는 당 기술 분야에 숙달된 사람들에게 그 자체로 알려진 방법에 따라서 생성될 수 있음을 주의해야 한다. 비슷하게, 상기 이전 버전 202를 상기 새로운 버전 203으로 갱신하기 위하여 이 갱신 패키지를 적용하는 방법들 또한 알려져 있다.
갱신 패키지는 때로는 "델타 파일(delta file)", "차이 파일(difference file)" 또는 줄여서 "델타" 또는 "차이"라고 언급되기도 함을 또한 주의해야 하고, 여기서 델타는 이전 버전을 새로운 버전으로 갱신하는 동안에 발생하는 수정 사항의 집합을 의미한다. 따라서, 당 기술 분야에 숙달된 사람은 갱신 패키지가 델타 파일을 의미하거나, 또는 대신에 그것이 델타 파일 및 기타 부가적인 정보를 포함할 수 있음을 인지할 수 있다.
상기 이전 버전 202는 다섯 항목들로 이루어진 블록 204을 포함하는데, 각 항목은 적어도 한 워드(word) 크기, 즉 하나 이상의 바이트(bytes) 또는 다른 어떤 적용 가능한 측정단위의 크기가 될 수 있다. 상기 블록 204 다음에 이를 테면 500개 항목들로 이루어진 두 번째 블록 205가 위치한다. 그 다음에는, 두 번째 블록 205 내의 특정 항목 207에 대한 적어도 하나의 참조 지시자(reference)(이를 테면 포인터)를 포함하는 항목 206이 상기 이전 버전 202에 포함되어 있다. 적어도 하나의 참조 지시자를 포함하는 항목들은 이후부터 "참조 항목(reference item)"이라 언급된다. 예를 들면, 참조 항목 206은 207에 대한 절대 참조 지시자와 연관된 명 령어, 이를 테면 "항목 207의 절대 주소로 분기(jump)"와 같은 명령어를 포함할 수 있다.
만약 상기 이전 버전과 새로운 버전(이를 테면 202 및 203)으로 표기된 콘텐츠가 예를 들어 컴퓨터 프로그램이라면, 블록은 당 기술 분야에 숙달된 사람들에게 알려진 바와 같이 프로그램 함수를 의미하게 된다고 인식해야 한다.
참조 항목 206 이후에는 두 번째 블록 205 내의 다른 항목 209에 대한 참조 지시자를 포함하고 있는 다른 참조 항목 208이 위치한다. 상기 참조 항목 208 이후에는 두 번째 블록 205 이내의 항목들에 대한 참조 지시자들을 포함하는 다른 모든 참조 항목들이 위치하고, 참조 항목 210이 그들 중 마지막이 된다. 상기 도면에는 보여지지 않았지만 예시에 따르면 참조항목 206과 참조항목 210 사이에는 예를 들어 100개의 참조 항목이 존재한다.
이전 버전 202는 비참조 항목들(non-reference items), 즉 참조 지시자를 포함하지 않는 항목들을 또한 포함할 수 있다고 인식된다. 상기 항목 211은 비 참조 항목의 예시이다. 특별한 언급이 있지 않는다면, "항목"이라는 용어는 이후로 참조 항목과 비참조 항목을 동시에 가리킨다.
또한 상기 이전 버전 202는 이를 테면 상기 콘텐츠 외부의 항목들에 대한 참조 지시자들과 같은, 상기 이전 버전 202에 포함되지 않은 다른 항목들에 대한 참조 항목들을 포함할 수 있다. 예를 들어, 만약 상기 이전 버전이, 실행기간 동안 컴퓨터의 RAM에 로딩이 된 컴퓨터 프로그램을 의미한다면, 이러한 참조 항목은 상기 프로그램을 저장하기 위하여 사용되는 외부 영역인 RAM의 일부에 저장된 다른 항목을 참조할 수 있다.
이후에는 콘텐츠에 포함된 항목에 대한 적어도 한 참조 지시자를 포함하고 있는 참조 항목은 "명시적 참조 항목"으로 호칭하며, 콘텐츠 외부의 항목에 대한 적어도 한 참조 지시자를 포함하고 있는 참조 항목은 "암시적 참조 항목"으로 호칭한다.
도2를 다시 보면, 도면에는 나타나지 않지만 마지막 참조 항목 210에 이어서 70개의 항목들이 존재한다. 편의를 고려하여 (항목 211을 포함하여) 상기 70개의 항목들은 이후부터 "종지 항목(terminating items)"으로 지칭된다. 상기 70개의 항목들은 (예를 들어 항목 211과 같은) 비참조 항목들 및/또는 (예를 들어 항목 213과 같은) 암시적 참조 항목들을 포함한다. 본 예시에 따라서 갱신되는 임의의 콘텐츠의 크기는 제한되어 있지 않으며, 따라서 상기 콘텐츠에 수반되는 임의의 블록의 크기도 역시 제한되어 있지 않음을 명시해야 한다.
도2에는 보이지 않았지만, 비참조 항목들은 참조 항목들 사이에 위치할 수 있으며, 참조 항목들이 연속적이어야 하는 요구사항은 없다. 예를 들어, 하나 이상의 비참조 항목들이 참조 항목들 206, 208, ..., 210 사이의 어딘가에 위치할 수 있다.
상기 갱신 패키지 201은 콘텐츠의 새로운 버전 203을 생성하도록 콘텐츠의 이전 버전 202을 수정하기에 적합하게 되어 있다. 갱신 프로세스는 이 새로운 버전 203을 생성하기 위한 갱신 패키지 201에 따라서 동작한다.
본 예시에서 이전 버전 202와 새로운 버전 203 사이의 하나의 차이는, 상기 새로운 버전 203에는 블록 204가 없어서, 두 번째 블록 205이 후방(backward)으로 시프트(shift)하고 저장기기 상의 상기 블록 204를 점유하게 된다는 것이다. 본 예시에 따르면, 블록 204는 다섯 개의 항목들을 포함하고 있으므로, 따라서 상기 두 번째 블록 205은 다섯 개 항목을 후방으로 시프트(shift)시킨다. 따라서 블록 205의 후방 시프트에 더하여, 그 블록 안에 포함된 모든 항목들이 (다섯 개 항목만큼) 그 만큼 시프트(shift)되는 것을 인식할 수 있다. 예를 들어 항목들 207 및 209 (그리고 그들에 대응하는 항목들인 새로운 버전의 207' 및 209')들도 동일한 경우이다. 항목 206은 항목 207에 대한 참조 지시자를 포함하고 있다는 것을 주의해야 한다. 항목 206을 항목 206'을 생성하기 위해 후방으로 시프트 시킨 후에도 이 항목은 여전히 항목 207을 참조하고 있으며, 예를 들며 이전 버전내의 207의 주소를 참조하고 있는 게 된다. 항목 206'의 내용을 새로운 버전 내의 새로운 위치에 있는 항목 207'을 참조하도록 대체하는 것이 필요하다.
어느 참조 지시자도 포함하고 있지 않는 비참조 항목 211의 내용과 암시적 참조 항목 213의 내용은, 그들의 위치가 다섯 개 항목만큼 상향 시프트 되더라도, 이 경우에는 수정이 필요하지 않음을 주의해야 한다. 명세서 전반에 있어서 명시적 참조 항목들에 적용되는 예시들은, 다른 언급이 있지 않다면, 암시적 참조 항목들에 대하여도 적용가능 함을 또한 주의해야 한다.
상기 갱신 패키지 201를 돌이켜 보면, 상기 갱신 패키지는 상기 이전 버전 202를 상기 새로운 버전 203으로 갱신하기 위한 명령어들을 포함하고 있다. 현재의 예시에서는 명령어는 상기 이전 콘텐츠를 갱신함으로써 실행되는 하나 이상의 동작을 나타내는 (이를 테면 "복사", "대체" 등과 같은) 문자열들로 도식화 되어 있다. 하지만, 명령어들을 나타내는 다른 방법들도 또한 적용 가능하며, 예로서 (줄여서 오피코드(op-code)로 언급되는) 오퍼레이션 코드(operation code)가 있어서, 각 명령어들이 각각에게 지정된 미리 정해진 오피코드를 가지고 있게 된다. 게다가 때로는 명령어들은 201에 도식화된 바와 같이 다른 방식들로 표현되기도 한다. 예를 들어 "대체" 명령어는 삽입된 내용이 기존의 내용을 대체하는 삽입 명령어를 이용하여 표현될 수도 있다.
보는 바와 같이 패키지 201내의 첫 명령어는 다섯 개의 항목들을 삭제하는 것으로서, 이에 의해 블록 204에 해당하는 102내의 처음 다섯 개의 항목들을 삭제한다. 다음에, 상기 갱신 패키지는 500개의 항목들을 새로운 버전의 처음에 복사하는 명령어를 포함하고 있으며, 이로 인해 블록 205 다섯 개 항목은 후방 시프트하며 블록 205'를 발생시킨다.
블록 205를 복사한 이후, 항목 206, 208, ..., 210의 위치가 다섯 개 블록 위로 시프트하여 그에 대응하는 항목 206', 208', ..., 210'을 발생시키는 동안에, 206, 208, ..., 210을 복사할 필요가 있는 것으로 보인다. 하지만, 이전에 설명되었듯이, 항목 206', 208', ..., 210'의 포함된 참조 지시자들은 207, 209, ... 대신에 207', 209'를 참조하도록 갱신될 필요가 있다. 즉, 이 참조 항목들 또는 적어도 그들의 일부는 대체될 필요가 있다. 참조 항목을 복사하고 그 다음에 이를 시프트된 참조 지시자로 대체하는 대신에, 복사 오퍼레이션을 절약하기 위하여 그 항목을 우선 대체하는 것도 가능하다. 상기 갱신 패키지 201은 따라서 각각 참조 항목 206, 208, ..., 210을 이에 대응하는 항목 206', 208', ..., 210'으로 대체하기 위하여 각각을 위하여 100개의 대체 명령어를 포함하고 있다.
100개의 대체 명령어들 이후에 상기 갱신 패키지 201은, 상기 새로운 버전내의 대체된 100개의 참조 항목들 이후에 위치시키도록, 예를 들면 새로운 버전 203 내에서 후방으로 다섯 개 항목만큼 시프트된 (항목 211' 및 213'을 발생시키는 항목 211 및 213을 포함하는) 70개의 항목들과 같은 70개의 종지 항목들 212를 복사하는 복사 명령어를 포함하고 있다.
당 기술 분야에 숙달된 사람은 상기 예시내의 상기 갱신 패키지 201가 각 명령어가 대체 항목을 포함하고 있는 100개의 대체 명령어들을 다른 것들 중에서 포함하고 있음을 인식할 수 있다. 즉, 상기 갱신 패키지 201은 100개의 대체 항목들을 포함하고 있다. 갱신 패키지들은 예를 들어 인터넷 또는 휴대전화망과 같은 제한된 대역폭의 통신 회선들 통해 전송되어야 한다는 점을 고려하면, 갱신 패키지들의 크기를 줄이는 것이 유익할 것이다.
따라서, 당 기술 분야에서 갱신 패키지를 생성하고 적용하는 현존하는 방법과 달리 본 발명은 보다 효율적인 갱신 패키지 또는 "콤팩트(compact)한 갱신 패키지"(이후로는 이와 같이 지칭)들을 생성할 수 있는 다른 방법들을 개시한다. 이러한 효과적인 갱신 패키지를 생성하기 위한 하나의 실시예는 이후로는 '정수 표기식 실시예(integer notation embodiment)'로 칭하는데, 이 실시예는 '정수 시프트 법칙(integer shift fules)'를 생성하는 것이다. 정수 시프트 법칙들을 설명하는 배경은 도2와 도3을 참고하여 아래에 예시되어 있다.
본 발명의 어떤 실시예들에 따르면 이전 콘텐츠와 새로운 콘텐츠 (각각 202와 203) 내에서 항목들을 나타내기 위하여 정수 값을 사용하는 것이 가능하다는 것을 인식해야 한다. 항목들은 디스크나 메모리와 같은 저장기기 상에 저장된 데이터라는 것을 인식할 수 있다. 만약 한 항목의 크기가 4 바이트라면 그 4 바이트를 점유하고 있는 항목 내에 저장된 데이터를 정수로서 시각화하는 것이 가능하다. 도3은 본 발명의 한 실시예를 따르는, 4 바이트 항목 301을 나타내는 정수 표현의 개괄적인 도식이다. 최상위 바이트 (제일 왼쪽 바이트) 302는 이진 값 00001011 (16진수 0x0B), 두 번째 바이트 303은 이진 값 10011101 (16진수 0x9D), 세 번째 바이트 304는 값 11110111 (16진수 0xF7), 그리고 최하위 바이트 305는 값 10000101 (16진수 0x85)가 차지하고 있다. 상기 4 바이트들은 따라서 16진수 값 0x0B9DF785을 가지는 하나의 정수 해석될 수 있다. 즉, 정수 0x0B9DF785는 항목 301의 정수 표현이며 이후로는 int(301)로 지칭한다. int는 정수를 나타냄을 주의해야 한다.
비참조 항목들을 포함하여 임의의 항목은 역시 정수들로 표현될 수 있고, 따라서 예를 들면 int(211)은 항목 211의 정수 표현임을 주의 해야 한다.
도2를 다시 보면, 예를 들어 명시적 참조 항목 206은 "항목 207의 절대 주소로 분기"라는 프로그램 명령문(program instruction)을 포함할 수 있다. 만약 항목 207의 절대 주소가 0x9DF785이면, 항목 206내에 포함된 명령문은 "0x9DF785로 분기"와 동일한 의미를 가지게 된다. 프로그램 명령문들은 미리 정해진 오피코드들에 의해 표현될 수 있다. 따라서, "~로 분기"에 해당하는 오피코드는 예를 들어 10진수 정수 '11' (또는 16진수 0xB)가 될 수 있다. 도3과 관련하여 이전에 설명되었듯이, 본 예시에 따르는 항목 206의 정수 표기는 0x0B9DF785이다. 이 경우에 오피코드는 바이트 302에 의해 표현되며, 바이트 303, 304, 305는 참조된 항목을 나타낸다. 즉, 바이트 303, 304, 305는 함께 참조된 항목의 표시어(indicative)이며 이후로는 ind(207)으로 지칭한다. 'ind'는 표시어를 나타냄을 주의해야 한다.
이와는 달리 전체 정수를 참조된 항목의 표시어로 바라볼 수 있다. 본 예시에 의하면, 만약 항목 206이 "항목 207로 분기"라는 명령문을 포함하고 있는 경우에 정수 0x0B9DF785는 이전 실시예에서 0x9DF785만 표시어 값으로 인식되었던 것과는 달리 ind(207)로 인식될 수 있다. "항목 207을 호출(call)"과 같이 호출 명령문에 해당하는 오피코드가 정수 값 27(또는 16진수 0x1B)인, 도2에서 보여지지 않은 다른 참조 항목들이 있을 수 있음을 인식해야 한다. 이 예시에 따르면, int(참조 항목)은 0x1B9DF785이다. 또한, 0x1B9DF785는 이 경우에 있어서 ind(참조된 항목) 또는 ind(207)으로서 참조될 수 있다. 즉, 이 실시예에 따르면 참조된 항목의 주소에 대하여 하나 이상의 표시어가 있을 수 있다.
표시어들은 한 항목의 정수 표기의 (전체를 포함하여) 어느 일부분이 될 수 있음을 보다 더 인식할 수 있다. 또한, 본 예시는 4 바이트 크기의 항목을 언급하였다. 이 크기는 여기에서 (그리고 이후에 다시) 오로지 예로서만 사용되었고, 어떠한 적용 가능한 항목 크기라도 사용될 수 있다. 숫자를 정수로서 표현하는 것은 오로지 제한하지 않는 예시일 뿐이며, 그리고 달리 그 자체로 알려져 있는 숫자 표기들도 적용이 가능함을 또한 주의해야 한다.
참조 항목 및/또는 비참조 항목을 포함하는 어느 항목은 정수 값으로 표현될 수 있음을 고려하여, 도2를 다시 살펴보면, 갱신 패키지 201내의 대체 명령어들은 정수로서 표시하는 것이 가능하다. 예를 들어, "대체 int(206), int(206')"은 갱신 패키지 201의 일부인 "대체 206, 206'"과 동일한 값을 갖는다.
도4는 정수 표기법을 사용하여 도2의 갱신 패키지의 일부를 본 발명의 한 실시예를 따라서 도식화하고 있다. 401부분은 대체 명령어들을 포함하는 갱신 패키지 201의 일부이다. 401부분은 공지 기술에 따른 것이다. 본 예시 내의 임의의 대체 명령어는 두 참조 항목들, 즉 이전 버전의 하나 및 새로운 버전의 하나와 연관 되어 있음을 주의 해야 한다. 상기 두 참조 항목들은 이후로는 "대체 쌍(replacement pair)"으로 지칭한다.
당 기술 분야에 숙달된 사람은 본 발명의 한 실시예에 따라서 대체 명령어들이 정수 표기를 사용하여 표현되어 402가 401부분과 동등하다는 것을 인식할 수 있다. 정수 표기를 사용할 때에는 각 대체 명령어와 연관된 두 정수들이 있다. 상기 두 정수들은 이후로는 "정수 대체 쌍(integer replacement pair)"으로 지칭한다. 정수 대체 쌍 내의 한 정수는 (이전 버전 내의 항목을 나타내는) "수정전 정수(pre-modification integer)"로, 그리고 두 번째 정수는 (새로운 버전 내의 항목을 나타내는) "수정후 정수(post-modification intenger)"로 지칭된다.
이전 버전 202 내의 명시적 참조 항목들에 대한 정수 대체 쌍들을 보면, 즉 402 내의 정수 대체 쌍들을 보면, 정수 값들은 참조된 항목들의 시프트를 의미함을 알 수가 있다. 예를 들면, 항목 208 및 208'이 각각 항목 209 및 209'을 참조할 때에 정수 대체 쌍 <int(208), int(208')>을 볼 수 있다. 만약 항목의 크기가 4 바이트인 항목 209가 애초에 주소 0x9DF785에 위치하고 있었다면, 항목 209의 내용을 항목 209'를 얻기 위해 5개의 항목들만큼 후방으로 (즉, 20바이트만큼 후방으로) 시프트한 후에, 이 항목 209'는 주소 0x9DF771에 위치하게 될 것이다. 참조 항목의 최하위 바이트들이 참조된 항목의 주소의 표시값을 포함한다는 것을 고려하면, 참조 항목 208을 나타내는 정수의 최하위 바이트들는 0x9DF785(즉, 항목 208이 항목 209를 참조함)이고, 참조 항목 208'의 최하위 바이트들은 0x9DF771(즉, 항목 208'이 항목 209'를 참조함)임을 이해할 수 있다. 정수 대체 쌍을 함께 구성하는 두 정수들 사이의 차이는 따라서 이전 버전 202를 새로운 버전 203으로 갱신하는 동안에 수행된 시프트를 의미한다. 이 차이는 이후로는 "수정 차이(modification difference)"라 지칭된다. 수정 차이는 diff(208)과 같이 수정된 정수와 함께 diff를 이용하여 표기된다.
따라서, 정수 대체 쌍 내의 수정전 정수와 수정후 정수를 연관시키는 대신에, 수정전 정수 또는 수정후 정수를 수정 차이와 연관 시키는 것이 가능하다. 수정전 정수를 수정 차이와 연관시킨 쌍을 이후로는 "정수 시프트 쌍(integer shift pair)"라 지칭한다.
도4를 돌이켜 보아, 403은 정수 시프트 쌍 표기를 사용하는 401 및 402 부분들과 동등한 부분이다.
도3과 도4에 관련된 설명에서 이후로는 '정수 표기 실시예(integer notation embodiment)'라 지칭할 정수 표기를 사용하는 본 발명의 실시예에 대한 이해를 위 해 배경을 설명하였다.
도5는 이전과 새로운 버전의 (도2에서 도식화된 이전 및 새로운 버전과 비교하여) 보다 복잡한 예시를, 정수 표기 실시예를 예시하고 설명하기 위하여 도식화하고 있다. 본 도면에서는, 이전 버전 501이 새로운 버전 502를 만들어 내기 위해 갱신된다. 따라서, 상기 이전 버전 501은 상기 새로운 버전 502를 생성하는 동안에 삭제되는 블록 503을 포함하고 있다. 삭제된 블록의 크기는 이후로는 size(503)으로 지칭된다. 도2의 예시에 이어서, 블록 503의 삭제 이후에 새로운 버전의 항목들은 size(503) 만큼 후방으로 항목들이 시프트 될 것을 예상할 수 있다.
이전 버전 내에서는 블록 504는 블록 503에 이어져 있다. 6개의 항목들(505, 506, 507, 508, 509 및 510)은 블록 504안에 표시되어 있다. 상기 항목들이 시작하는 주소가 표시되어 있고, 이는 이후로는 addr(항목), 예를 들어 addr(505), addr(506) 및 addr(507)으로 지칭한다. 항목 508, 509 및 510은 명시적 참조 항목들이다. 항목 509는 항목 507을 참조하고, 항목 508, 510은 각각 511, 512를 참조한다. 항목 511 과 512는 이전 버전의 일부이며, 블록 504보다 전방(forward)에 위치하고 있음을 주의해야 한다. 따라서 명시적 참조 항목들 508, 509 및 510은 각각 addr(511), addr(507) 및 addr(512)의 표시 값들을 포함하고 있다.
새로운 버전 502 내에는 블록 504'가 블록 504에 대응된다. 예상대로 상기 블록 504'는 size(503)만큼 후방으로 시프트된다.
블록 504에 이어서 상기 이전 버전 501은 블록 513으로 표시된 한 항목 514 가 있는 블록 513을 포함하고 있다. 항목 514는 항목 506을 참조하는 명시적 참조 항목이며, 예를 들어 참조 항목 514는 주소 addr(506)의 표시 값을 포함하고 있다. 새로운 버전 내에서는 블록 513'은 블록 513에 대응되며 항목 514'는 항목 514에 대응된다. 하지만 하나 이상의 항목들의 새로운 블록 515가 블록 513'안에 항목 514'앞에 삽입된다. 즉, size(513') > size(513)이다. 본 예시에 따르면, size(515)는 size(503) 보다 작고 따라서 항목 514'는 size(503)- size(515)만큼 후방으로 시프트 된다.
이전 버전 501로 돌아가면, 블록 513에 이어서 세 번째 블록 516이 있다. 다섯 가지의 항목들, 517, 518, 519, 511 및 512인 항목들이 블록 안에 표시되어 있다. 항목 517과 518은 항목 519와 505를 참조하고 있는 명시적 참조 항목들이고, 즉 항목 517과 518은 각각 참조된 항목 519 와 505의 표시 값 또는 다른 말로는 addr(519)와 addr(505)의 각각의 표시어들을 포함하고 있다.
새로운 버전 내에는, 블록 516'이 블록 516에 대응된다. 이와 비슷하게, 항목 517', 518', 519', 511' 그리고 512'는 각각 항목 517, 518, 519, 511 그리고 512에 대응된다. 블록 513'에 블록 515를 삽입함에 따라, 블록 516' 내의 항목들은 후방으로 size(503) - size(515)만큼 후방으로 시프트 된다.
도5의 예시는 또한 새로운 버전 내의 블록 517'에 대응되는 이전 버전 내의 종지 블록 517을 도식화 하고 있다. 갱신 프로세스는 블록 517'에 하나 이상의 항목들인 새로운 블록 520을 삽입한다. 본 예시에 따르면, 새로운 블록 520의 크기는 size(503) - size(515)이고, 따라서 새로운 버전 502의 총 크기는 실질적으로 이전 버전 501의 총 크기와 유사하다.
도5에 관한 예시에만 제한되지 아니함을 주목해야 한다. 임의의 콘텐츠의 이전 또는 새로운 버전은 임의의 수의 블록들로 구성될 수 있으며, 각 블록은 가능한 임의의 수의 항목들을 포함하고 있다. 유사하게, 이전 버전을 새로운 버전으로 갱신하는 동안, 갱신 프로세스는 삽입, 삭제, 대체 그리고/또는 다른 필요한 동작을 필요한 횟수만큼 수행할 수 있으며, 여기서 항목들이나 블록들의 크기는 특정 응용에 따라서 가변적이다.
항목의 크기는 역시 제한되지 않으나, 이후로는 도5에 도식화된 콘텐트 내의 항목의 크기는 4 바이트로 기술된다.
당 기술 분야에 숙달된 사람들은 이전 버전 501을 새로운 버전 502로 갱신시키기 위하여 본 실시예를 따라 블록 504와 블록 514의 첫 번째 부분을 새로운 버전에 복사하고, 새로운 블록 515를 삽입하고, 그리고 블록 514의 두 번째 부분을 블록 516 및 517과 함께 새로운 버전에 복사하는 것이 가능함을 인식할 수 있다. 하지만, 도5와 관련되어 이미 설명되었듯이, 그렇게 함에 있어서, 새로운 버전내의 명시적 참조 항목들은 이전 버전 내에 있던 것처럼 그 원래 주소들 내의 항목들을 참조할 것이다. 예를 들어, 이전 버전 내의 명시적 참조 항목 508은 항목 511을 참조하고 따라서 항목 508의 최하위 바이트들은 addr(511)을 의미하는 값을 포함하고 있다. 이전 버전 내에서 508은 addr(508)에 위치하고 있다. 블록 504를 새로운 버전에 복사한 이후에, 항목 508이 본 예시에서는 addr(508)보다 후방에 있는 addr(508')에 위치하는 것을 인식할 수 있다. 그러나, 항목 508은 addr(511)을 포 함하고 있어서 항목 511'의 참조 지시자를 포함할 것으로 예상되지만, 아직 항목 511에 대한 참조 지시자, 즉 addr(511)을 포함하고 있다. 따라서, 본 실시예를 e다라서 이전 버전으로부터 새로운 버전으로 콘텐츠를 복사한 이후에, 그리고 (블록 515와 같은) 새로운 블록들을 삽입한 이후에, 갱신 패키지는 참조 항목들을 대체하라는 명령어들을 포함할 수 있으며, 이 명령어들은 예를 들어 "508' 내의 addr(511)의 표시값을, addr(511')의 표시값 값으로 대체하라" 또는 짧게 "대체 508, 508'"로 되어 있다.
위의 도3과 도4에 관련된 정수 표기식 실시예와 도5의 예시적인 이전 버전 및 새로운 버전에 대한 기본 논의를 고려하여 볼 때, 정수 표기식 실시예에 따라서 갱신 패키지의 일부를 얻는 방법을 종래 기술에 따라 얻어지는 갱신 패키지의 동등한 부분과 비교하여 예시화한 (도6과 관련된) 상세 설명이 이어서 개시된다. 상세 설명으로부터 분명해지듯이 본 발명의 본 실시예에 따라 얻어진 부분은 공지 기술에서 알려진 방법들에 따라 얻어진 것과 비교하여 현저히 작아질 수 있다.
도6을 돌이켜보아, 601 부분은 도5에서 도식화 되고 있는 명시적 참조 항목들을 갱신하기 위한 대체 명령문들을 담고 있다. 601 부분은 도5의 이전 버전과 새로운 버전에 종래의 디프(diff) 방법들을 적용하여 얻어진 것임을 나타낸다. 또한 601은 이전 버전 501을 새로운 버전 502로 갱신시키기 위해 사용된 전체적인 갱신 패키지의 일부임을 나타낸다(전체 갱신 패키지는 도식화되지 않았다). 상기 부분은 삽입 그리고/또는 삭제와 같은 다른 명령어는 생략된 반면에 오직 대체 명령어들만을 포함하고 있다. 도5의 예시에서 여섯 개의 참조 항목이 있고, 따라서 601 부분에 여섯 개의 대체 명령어가 있음을 주의해야 한다. 도3과 도4의 상세 설명에 따라 참조 항목에 대하여 용어 'int(항목)'이 그에 의한 참조 주소를 의미하는 것으로 이해될 수 있으므로, 602 부분은 정수 대체 쌍으로 표시되어 601과 동등한 부분이다.
도4에 관하여는, 정수 대체 쌍의 표기법을 사용하는 대신에 정수 시프트 쌍 형식으로 대체 명령어를 표현하는 것이 가능하다고 보다더 설명이 되어 있다. 즉, 참조 항목을 대체하는 대신에, 오피코드와 같은 그 안에 저장된 다른 정보와 관계 없이, 참조된 항목의 위치 내의 시프트를 반영하도록 그 안에 포함된 참조 지시자를 수정하는 것이 가능하다.
본 예시의 일부 항목들의 수정 차이가 size(503)이며, 반면에 다른 항목들은 수정 차이 (size(503)-size(515))를 특징으로 한다는 것이 도5에서 나타난다. 따라서 602 부분을 변경하는 것이 가능하며, 이는 대체 명령어들을 사용하지 않는 대신에, 603에서 도식화 된 것처럼 수정전 정수 시프트 쌍 표기식을 사용한 수정 명령어들을 사용하는 것이 가능하다.
정수 시프트 쌍 내의 수정차이는 참조항의 시프트를 나타내지 않고 참조된 항목의 시프트를 나타낸다.
604에는 갱신 패키지의 동일 부분이 도식화 되어 있으며, 여기게는 수정 명령어들이 수정 차이들에 따라서 정렬이 되어 있다. 정렬된 부분 604는 두 개의 군을 포함하고 있다는 것을 인식해야 한다. 하나의 군은 int(509), int(514) 그리고 int(518)을 수정하는 명령어들을 포함하고 있으며, 여기서 수정 차이는 size(503) 이다. 두 번째 군은 int(508), int(510) 그리고 int(517)을 수정하기 위한 명령어를 포함하고 있으며, 여기서 수정 차이는 (size(503)-size(510))이다.
정수 또는 그 일부가 참조된 항목의 주소를 나타내는 것을 상기시킬 필요가 있다. 참조 항목을 갱신하는 동안에 참조 지시자는 오피코드 또는 그와 관련된 다른 어떤 정보에 관계 없이 수정될 필요가 있다는 것을 또한 고려해야 한다. 따라서, 정수 시프트 쌍에서 정수를 참조하는 대신에 참조된 항목의 표시 값 또는 'ind(참조된 항목)'을 참조하는 것이 가능하다. ind(참조된 항목)과 그와 관련된 수정 차이로 이루어진 쌍은 이후로는 "표시 시프트 쌍(indicative shift pair)"으로 지칭한다.
도5와 도6에 보여지지 않았더라도 때로는 동일한 참조된 항목을 참조하는 하나 이상의 참조지시자가 있다는 것에 주의해야 한다. 만약 참조된 항목들의 표시 값들이 참조 항목들의 정수 표기의 일부라면, 이들 모든 참조 항목들은 때로는 비슷한 표시 값으로 표현될 수 있다. 만약 전체 정수가 참조된 항목의 표시 값으로 사용된다면, 참조 항목을 나타내는 하나 이상의 표시 값이 있을 수 있다.
예를 들어, 참조된 항목의 주소가 0x5F8B23이다. 네 개의 참조 항목들은 이 항목을 그 주소를 지정함으로써 참조한다. 첫 번째는 오피코드 0xA2, 두 번째는 오피코드 0x0F 그리고 세 번째는 0x1B를 가진다. 네 번째 참조 항목은 첫 번째(예를 들어, 0xA2)와 유사한 오피코드를 가지고 있다. 만약 표시 값이 세 개의 최하위 바이트에 의하여 표기된다면 모든 네 개의 참조 항목들은 ind(0x5F8B23)으로 표기될 것이다. 반대로, 전체 정수가 표시 값으로 사용된다면 네 참조 항목들을 나 타내는 세 개의 다른 표시값을 가질 것이다. 첫 번째 및 네 번째 참조 항목들은 ind(0xA25F8B23)로 표현되고, 두 번째는 ind(0x0F5F8B23), 그리고 세 번째는 ind(0x1B5F8B23)으로 표기될 것이다.
도6으로 되돌아가서, 604와 동등한 605 내의 정렬된 부분이 표시 시프트 쌍 표기법을 사용하여 도식화된다. 605는 블록 504내의 항목들을 참조하고 있는 참조 항목들을 시프트시킬 때, 그 표시 값들은 size(503)의 시프트를 반영하도록 수정되어야 하는 것으로 도식하고 있다. 블록 516 내의 항목들을 참조하는 참조 항목들을 시프트시킬 때, 그 표시 값들은 (size(503)-size(515))의 시프트를 반영하도록 수정되어야만 한다.
605 내에 두 개의 군이 존재하는 점을 볼 때, 각 군을 내부에서 ind(참조된 항목)에 따라서 정렬하고, 결과적으로 606을 생성하게 하는 것이 가능하다. 블록 504내의 항목들을 나타내는 값들을 가진 참조 항목들을 수정하기 위한 세 가지 수정 명령들을 갖는 대신에, size(503)의 시프트를 반영하도록 블록 504내의 항목들을 나타내는 모든 값들을 갱신하도록 하는 하나의 집합된 수정 명령어를 생성하는 것이 가능하다. 또 다른 말로, 만약 참조 항목이 505와 507 사이의 항목의 표시 값을 포함한다면, 이 값은 size(503)의 시프트를 반영하도록 수정되어야만 한다. 동일한 방식으로 블록 516 내의 항목들을 나타내는 값들을 가진 참조 항목들을 수정하기 위한 세 가지 수정 명령어들을 갖는 대신에, (size(503)-size(515)의 시프트를 반영하도록 블록 516 내의 항목들을 나타내는 모든 값들을 갱신하기 위한 하나의 집합적 수정 명령어를 생성시키는 것이 가능하다. 또 다른 말로는, 만약 참 조 항목이 511과 519 사이의 항목의 표시 값을 포함한다면, 607 내에서 도식화 되었듯이 이 값은 (size(503)-size(515))의 시프트를 반영하도록 수정되어야 한다. 이러한 집합적 수정 명령어는 이후로는 정수 시프트 법칙(integer shift rule)이라 칭한다. 즉, 607은 도5의 예시에 나오는 명시적 참조 항목들을 갱신하기 위하여 적용될 수 있는 두 정수 시프트 법칙들을 설명하고 있다.
따라서 상기 부분 607은 정수 시프트 법칙을 사용하여 대체 명령어들을 사용하는 601 부분과 동등함을 인식할 수 있다. 하지만, 607 부분은 601에 포함되어 있는 여섯 개의 대체 명령어들을 사용하는 대신에 단지 두 개의 정수 시프트 법칙들을 포함하고 있다. 그래서 607 부분을 포함하고 있는 갱신 패키지는 601 부분을 포함하는 갱신 패키지와 동등하다. 만약 정수 시프트 법칙을 저장하기 위한 공간 요구가 이와 동등한 대체 명령어들을 저장하기 위한 공간 요구보다 작다면, 동등한 정수 시프트 법칙을 사용함으로써 갱신 패키지의 크기를 줄이는 것이 가능하다.
갱신 패키지 크기의 감소는 상당할 수 있다. 예를 들어 휴대전화기들 상의 소프트웨어의 버전을 갱신하는 제한 없는 응용을 고려하여, 정수 시프트 법칙은 때로는 심지어 수 만개의 대체 명령어들을 절약할 수 있다.
정수 시프트 법칙들을 사용하는 대신에, 임의의 숫자 시프트 법칙도 또한 적용가능하며 이후로는 "숫자 시프트 법칙(numeral shift rule)"이라 칭한다.
도7은 본 발명의 한 실시예를 따르는, 갱신 패키지 내의 숫자 시프트 법칙의 생성을 자세히 기술하는 플로우 차트이다. 갱신 패키지와 숫자 시프트 법칙들을 생성하기 위해서 이전 버전과 새로운 버전 사이의 차이들을 찾아내기 위한 디프 (diff)가 (701, 그 자체로 알려진 임의의 방법에 의해) 활용되어야 한다는 것을 인식해야 한다. 예를 들어 유닉스 디프 프로그램과 같은 버전들간의 차이들을 찾아내기 위해 오늘날 활용가능한 많은 도구들이 있다. 디프는 이전 버전과 새로운 버전 사이의 차이점들중 대체 쌍이 될 수 있는 것들의 쌍을 생성시킨다. 만약 디프가 대체 쌍들을 포함한다면(702), 적어도 그들 중 일부는 따라서 예를 들면 도6의 601부분과 같은 부분을 생성시켜서 디프의 일부를 형성시키도록 서로 그룹화 할 수 있다(703). 다음에는(704), 대체 쌍들이 정수 대체 쌍을 형성하도록 도4와 도6에 관련되어 이전에 예시화한 것과 같은 (402와 602를 참조) 정수 표기법을 사용하여 변환된다.
대체 쌍들을 정수 변환 쌍으로 변환한 후에 정수 변환 쌍은 정수 시프트 쌍이 되도록 수정전 정수들을 그들의 수정 차이와 연관시킴으로써 변환 되며(705), 이는 도4(403)과 도6(603)과 관련하여 이전에 예시하였던 단계이다. 정수 시프트 쌍들은 도6 내의 수정 차이들, 블록 604에 따라 정렬된다(706).
정렬 이후에, 상기 정수 시프트 쌍 내부의 상기 수정전 정수는 표시 시프트 쌍을 형성하도록 각각의 참조된 항목들의 표시값들로 대체되며(707), 이는 도6(605)과 관련되어 이전에 예시되었던 단계이다. 동일한 수정 차이를 갖는(708) 몇 개의 표시 시프트 쌍들이 있는 이러한 경우에는, 이러한 표시 시프트 쌍들은 그들의 표시 값에 따라서 정렬된다(709)는 것을 주의해야 한다. 정수 전체가 참조된 항목들의 표시 값으로 인식되는 이러한 경우에는, 블록 707이 불필요한 부분이고 건너 뛸 수 있게 됨을 알수 있으며, 반면에 법칙의 생성 프로세스 전반에 걸쳐 ind 대신에 int 값이 사용된다. 도6의 블록 606 는 현 도면 내의 블록 709의 예시이다.
만약에 동일한 수정 차이를 가지는 하나 이상의 표시 시프트 쌍들을 포함하는 군들이 있다면, 한 그룹 내의 표시 시프트 쌍은, 도6(607)과 관련하여 이전에 예시하였듯이, 첫 번째 와 마지막 참조된 항목들의 상기 그룹 내의 표시 값들을 가리키는 숫자 시프트 법칙과 그들을 특정하는 수정 차이를 생성하도록 결합할 수 있다(710).
때로는 보다 더 최적화가 가능하다는 것을 알 수 있다. 예를 들어, 만약에 동일한 수정 차이를 가지는 두 개의 숫자 시프트 법칙들이 있고, 여기에서 첫 번째 법칙의 마지막 참조된 항목의 표시값과 두번째 법칙의 첫번째 참조된 항목의 표시값이 충분히 가깝다면, 상기 두 개의 법칙들은 하나의 결합된 숫자 시프트 법칙을 형성하기 위하여 결합될 수 있다. 결합된 숫자 시프트 법칙은 첫번째 숫차 시프트 법칙의 첫 번째 참조된 항목들의 표시 값과 두 번째 숫자 시프트 법칙의 마지막 참조된 항목들의 표시 값을 그들을 특정하는 수정 차이와 함께 가리킨다. 두 개의 조절하지 않는 숫자 시프트 법칙들이 결합할 때, 그들 간의 숫자 시프트 법칙 (또는 표시 시프트 쌍)은 결합된 법칙에 의해 사라지고, 따라서 그들의 수정전 참조 항목들은 오류가 있는 갱신을 하기가 쉬워진다(즉, 오류가 있는 시프트의 영향을 받도록 갱신될 수 있다).
본 발명은 도7에 설명된 정수 시프트 법칙들을 얻기 위한 특정한 연속적인 동작 및 방법, 또는 도6의 607 부분 내에서 사용되는 정수 시프트 법칙 용어에 구속되지 않는다는 것을 주의해야 한다.
또한, 지금까지 도시화된 실시예들은 숫자 시프트 법칙들을 사용하고, 따라서 콤팩트한 갱신 패키지를 생성함으로써 갱신 패키지의 크기를 감소시킨다. 갱신 패키지를 설명하기 위하여 예를 들면 "델타" 또는 "디프"의 "차이"와 같은 다른 용어들을 경우에 있어서, 상기 콤팩트한 갱신 패키지도 예를 들면 "콤팩트한 차이점"과 같이 명명될 수도 있다는 것을 알 수 있다.
다른 실시예에 따르면, 때때로 콘텐츠가 연관된 설명 데이터와 수반될 수도 있으며, 이후로는 이를 '메타 데이터'로 지칭한다. 메타 데이터를 규정하는 일반적인 형태는 컴퓨터 프로그램들을 기술하기 위해 사용되는 심볼 테이블(symbol tables), 디버그 테이블(debug tables) 그리고 링커 맵(linker map)이다. 하지만 메타 데이터는 컴퓨터 프로그램들에 국한 되지 않고 다른 형태의 콘텐트도 메타 데이터를 가질 수 있다. 연관된 메타 데이터는 예를 들어 다른 파일이나 데이터 베이스에 저장함으로써 콘텐트와 분리될 수 있음을 주의해야 한다. 이와는 달리, 적용가능한 경우로서 메타 데이터는 콘텐츠의 일부로 저장될 수도 있다.
도8은 예시용 콘텐츠 및 연관된 메타 데이터를 도식화하고 있다. 콘텐츠 801은 네 개의 블록들 802, 803, 804 그리고 805를 포함한다. 블록 803은 addr(803) 주소에서 시작하고, 블록 804는 addr(804) 주소에서 시작하고, 블록 805는 addr(805) 주소에서 시작한다. 연관된 메타 데이터 806은 콘텐츠와 그 블록들을 기술하고, 여기서 각 블록에 대하여 메타 데이터 806이 시작 주소와 블록의 길이를 제공한다. 하지만, 이는 예시에만 제한되는 것이 아니며, 메타 데이터는 각 블록의 시작 주소와 길이 대신에 다른 데이터를 포함할 수 있다.
이전 버전의 콘텐츠를 그 것의 새로운 버전으로 갱신시키고자 하는 갱신 패키지를 생성할 때에, 만약 메타 데이터가 콘텐트와 연관되어 있다면, 메타 데이터를 도9 및 도10과 관련하여 아래에서 설명할 것과 같이 참조 지시자의 수정을 인코딩하기 위해 사용할 수 있다.
도8의 예시와 설명은 본 발명의 다른 실시예에 따라서 소위 '참조 시프트 법칙'을 얻는 법을 이해하는 기초를 제공하고 있으며, 이는 본 발명의 한 실시예에 따라서 이전 버전과 그것의 갱신을 통해 받은 새로운 버전의 개괄적인 도식인 도9와, 도9의 이전 버전 및 새로운 버전과 연관된 메타 데이터와 차이점 테이블(각각 9A01, 9A02, 9A03)의 개괄적인 도식인 도9A와 관련하여 보다 더 상세하게 설명될 예정이다.
이전 버전 901은 네 개의 블록들(905, 906, 907 그리고 708)을 포함하고 있고, 그들 각각의 시작 변수들은 addr(905), addr(906), addr(907) 그리고 addr(908)이다. 새로운 버전에서는 적어도 한 항목의 새로운 블록 909가 블록 905에 추가 되었고, 따라서 대응하는 블록 905'를 생성시켰다. 블록 905'의 크기는 따라서 size(909)만큼 블록 905의 크기보다 크다는 것을 인식할 수 있다. 또한, 콘텐츠에 항목들을 추가로 추가하거나 콘텐츠로부터 항목들을 제거하는 것이 추가적으로 갱신 프로세스 동안에 발생하지 않는다면, 새로운 블록 909보다 전방에 있는 항목들은 size(909)만큼 전방으로 시프트될 것으로 기대된다.
블록 905'의 전방에 블록 906'이 블록 906에 대응하고 있고, 블록 907'이 블록 907에 대응하고 있으며, 블록 908'이 블록 708에 대응하고 있다. 하나 이상의 항목들로 구성된 새로운 블록 910은 또한 블록 907'에 삽입된다. 이 새로운 블록의 크기는 size(910)이다. 따라서 상기 새로운 항목 910 전방에 있는 항목은 (size(909)+size(910))만큼 전방으로 시프트된다.
이전 버전에서는, 블록 906은 적어도 각각 914, 915 그리고 916에 대응되는 세 개의 명시적 참조 항목들 911, 912, 그리고 913을 포함하고 있다. 참조되는 항목 914는 블록 908 내부에 있고, 참조되는 항목 915는 블록 907의 내부에 있으며, 그리고 참조되는 항목 916은 블록 906 내부에 있다. 따라서, 블록 908은 항목 918을 참조하는 적어도 하나의 명시적 참조 항목 917을 포함하고 있다. 참조되는 항목 915와 같이, 참조되는 항목 918은 또한 블록 907 내부에 있다.
이전 버전 901과 연관이 있는 메타 데이터 9A01은 네 가지의 블록들, 그들의 각각 시작 주소, 그리고 그들의 길이를 기술하고 있다. 새로운 버전 902와 연관이 있는 메타 데이터 9A02는 그안에 포함되어 있는 블록들을 기술하고 있다. 메타 데이터 9A01를 메타 데이터 9A02와 비교함으로써 이 경우의 블록 905'의 시작 주소가 이전 버전의 블록 905의 주소와 유사함을 증명할 수 있다. 하지만, 블록 906'의 시작 주소는 (addr(906)+size(909))이다. 이와 마찬가지로, 블록 907의 시작 주소는, 이전 버전의 블록 907의 시작 주소와 비교했을 때, size(909)의 시크트를 반영하여, 즉 addr(907') = addr(907) + size(909)가 된다. 다른 한편으로는, 블록 908'의 시작 주소는 (size(909)+size(910)의 시프트를 증명하며, 즉 addr(908') = addr(908) + size(909) + size(910)이 된다.
참조 시프트 법칙들을 얻는 방법에 대한 설명은 도9의 구체적인 예시에 대하 여 아래에 기술할 것이나, 도9, 도9A 그리고 도10의 예시에만 제한되지 않음을 주목해야 한다. 이전 버전과 새로운 버전들은 임의의 적용 가능한 수의 블록들 가질 수 있고, 새로운 블록들과 항목들은 이전 버전에서 새로운 버전으로 갱신되는 동안에 어느 위치에든 삽입되거나 삭제될 수 있다. 이전 버전 내의 주소들을 이용하고, 적용가능할 때에 삽입된 블록들의 크기를 더하여서 새로운 버전의 메타 데이터 9A02를 표시할 수 있다는 것을 인식해야 한다. 그 결과는 수정 차이 (즉, 이전 버전의 각 블록과 새로운 버전의 그 대응 블록의 시작 주소를 특징지우는 시프트)와 함께 "차이점 테이블(difference table)"이라고 지칭된다. 이는 1000 내에 도식화 되어 있고(도10 참조), 메타 데이터 9A01과 9A02에 대응하는 차이점 테이블이다.
참조 시프트 법칙은 차이점 테이블 1000과 연관되어 생성될 수 있음을 인식할 수 있다. 만약에 참조 항목이 예를 들어 블록 906' 내의 다른 항목을 참조하고 차이점 테이블 내의 정보가 이어진다면, 새로운 버전 내부에서 그에 대응하는 참조 항목이 참조되는 항목들 위치의 size(909)의 시프트를 반영하도록 수정되어야 만 하는 것을 인지할 수 있다. 동일한 방식으로 만약에 두 번째 참조 항목이 블록 908' 내부의 다른 항목을 참조한다면, 새로운 버전 내의 그에 대응하는 참조 항목은 참조되는 항목들 위치의 size(909) + size(910)의 시프트를 반영하도록 수정되어야 하는 것을 인지할 수 있다.
일반적으로 말하여, 차이점 테이블은 따라서 참조 시프트 법칙들을 반영한다. 예를 들어, 블록 906'내의 각 참조되는 항목에 대하여 특유한 시프트는 size(909)이다. 블록 908' 내부의 각 참조되는 항목에 대한 특유의 시프트는 size(909) + size(910)인 반면에 블록 907' 내의 각 참조되는 항목들에 대하여 특유의 시프트는 동일한 방식으로 또한 size(909)이다.
차이점 테이블에서 나타나는 블록들의 시작 주소와 길이에 따라서 특정 블록 내부에 있는 다른 항목을 참조 항목이 참조하는지를 결정하는 것이 가능하다. 따라서 참조 시프트 법칙은 예시적 표기법 "수정 <addr(참조되는 블록), size(참조되는 블록)>, 시프트"에 의해 표기될 수 있다.
도9A의 예시에서, 블록들 906'과 907' 모두는 동일한 시프트로 특징된다는 것을 알 수 있다. 블록 906'과 907'은 연속되고 있음을 고려하여, 그 두 참조 시프트 법칙들은 "수정 <addr(906'), size(906')+size(907')>, size(909)"인 하나의 참조 시프트 법칙을 형성하도록 결합될 수 있음을 인식할 수 있다.
도10에서 블록 1001은 차이점 테이블 1000을 기반으로하여 참조 시프트 법칙을 예시화 하고 있다. 이 경우에는 세 가지 참조 시프트 법칙들 (1002, 1003 그리고 1004)가 도식화 된다.
하지만, 때로는 그 자체로 알려진 바와 같이, 메타 데이터는 켄텐트의 하나 이상의 블록을 기술하지 않는다. 예를 들어 도9와 도 11을 참조하라. 도 11에는 도9의 이전 버전 901의 메타 데이터 1101과 도9의 새로운 버전 902의 메타 데이터가 도식화되어 있다. 데타 데이터 1101과 1102는 일부분이며, 즉 블록 907과 그에 대응하는 블록 907'은 기술되지 않는다는 것이 알려져 있다. 그러므로 도12의 차이점 테이블 1201 내부에는 블록 907'에 대한 차이들이 역시 기술되어 있지 않는 다는 것을 인식할 수 있다. 이는 1202 내에서 도식화된 참조 시프트 법칙들의 생 성에 영향을 준다. 현 예시 내에서 도9와 도10의 이전 예와 같이 세 가지 참조 시프트 법칙들 1203, 1204 그리고 1205가 또한 존재한다. 하지만, 블록 904'이 기술되지 않았으므로, 두 번째 법칙 1204는 이전 예시의 두 번째 법칙 1003과 비교하여 더 작은 블록에 대응한다. 따라서, 블록 907' 내의 다른 항목을 참조하고 있는 참조 항목은 이 경우에서 참조 시프트 법칙들에 따라서 수정될 수 없다.
그럼에도 불구하고, 위의 도5, 도6 그리고 도7에 대한 숫자 시프트 법칙의 설명에 이어서 당 기술 분야에 숙달된 사람은 참조 시프트 법칙이 적용 가능하지 않는 곳에 숫자 시프트 법칙들을 시도하고 적용해 보는 것이 가능함을 인식할 수 있다. 돌이켜보아, 숫자 시프트 법칙들을 활용하는 방법은 메타 데이터를 필요로 하지 않으며 따라서 숫자 시프트 법칙들은 이 경우에 적용 가능하다.
도13은 본 발명의 한 실시예를 따르는, 갱신 패키지 내의 참조 시프트 법칙의 생성을 자세히 기술하는 플로우 차트이다. 이전과 새로운 버전 각각의 메타 데이터를 수신한 후에(1301) (예를 들어 도10의 차이점 테이블 1000과 같은) 차이점 테이블이 생성된다(1302). 차이점 테이블은 적어도 이전 버전 내의 블록들에 대한 (예를 들어 그들의 시작 주소와 같은) 정보로서 새로운 버전 내의 그들 각각에 대응되는 블록들에 대한 (예를 들어 그들의 시작 주소들과 같은) 정보들과 연관된 정보들을 포함하고 있다. 대안으로는, 차이점 테이블은 적어도 이전 버전 내의 블록들에 대한 정보로서 그들 각각의 수정 차이들에 대한 (예를 들어 그들의 시프트 값과 같은) 정보들과 연관된 정보들을 포함하고 있다. 예를 들어 적어도 새로운 버전 내의 블독들에 대한 정보 정보로서 그들 각각의 수정 차이들에 대한 정보와 연 관된 정보들을 포함하여 다른 대안들도 역시 허용된다.
차이점 테이블 내에 기술된 각 블록에 대하여 참조 시프트 법칙이 생성된다(1304). 인접하는 블록들을 참조하는 다음 참조 시프트 법칙들은 결합된다. 본 발명은 도13에 기술된 것과 같은 참조 시프트 법칙들을 얻기 위한 특정한 연속적인 동작이나 방법에 국한 되지 아니함을 주의 해야 한다.
참조 시프트 법칙을 기술하기 위해 사용된 표기법은 비 구속적이고 다른 표기법들도 또한 적용 가능하다. 예를 들어, 상기 법칙에 의해 적용을 받는 블록 또는 블록들(다른 말로 "섹션(section)")의 첫 번째 항목과 길이를 지정하는 대신에, 상기 섹션 내의 처음과 마지막 항목들을 지정하는 것이 가능하다. 후자는 또한 도7에 대하여 필요한 변경을 가하여 기술된 숫자 시프트 법칙들에 또한 적용이 가능함을 주의해야 한다.
상기 상세한 설명은 이전 버전을 새로운 버전으로 갱신하는 도중에 참조 항목들 내의 참조 지시자들을 갱신하기 위한 숫자 및 참조 시프트 법칙들을 생성하는 실시예들을 기술한다. 본 발명은 위에서 설명된 특정 숫자 시프트 법칙과 참조 시프트 법칙들에 의하여 구속되지 아니한다는 것을 주의 하여야 한다. 보다 일반적으로 "시프트 법칙"이라는 용어는 새로운 버전 내의 참조 항목들의 시프트에 영향을 미치기 위하여 참조 항목들의 갱신에 해당하는 것이다.
이후로는, '변환 요소'는 갱신 패키지와 연관된 시프트 법칙들의 집합을 지칭하기 위하여 사용되는 용어이다. 즉, 변환 요소는 적어도 하나의 숫자 시프트 법칙, 그리고/또는 적어도 하나의 참조 시프트 법칙, 그리고/또는 이전 버전을 새 로운 버전으로 갱신하는 도중에 적용 가능한 다른 어떤 시프트 법칙을 포함할 수 있다. 따라서 상기 설명에 따르면, 당 기술 분야에 숙달된 사람은 적어도 하나의 변환 요소를 담고 있는 갱신 패키지가 콤팩트한 갱신 패키지임을 인식할 수 있다.
변환 요소를 이전 버전에 적용할 때에, 때로는 참조 항목들이 오류를 발생시키며 갱신될 수 있음을 인식해야 한다. 예를 들어 도9에서 도식화된, 삽입된 항목 910이 항목 915'의 후방에 블록 907 내로 삽입되는 예시를 고려할 수 있다. 이 예에서의 이 변화는 차이점 테이블 1000에 영향을 미치지 않을 것이고 따라서 참조 시프트 법칙들은 도10에 기술된 것과 비슷하게 될 것이다(1001 참조). 하지만, 항목 915'와 918'은 차이점 테이블 1000에 의해 예측되는 바와 같이 size(909)만큼이 아니라 (size(909) + size(910))만큼 전방으로 시프트 된다. 따라서 1001의 참조 시프트 법칙에 의해 알수 있는 바와 달리, 참조 항목들 912'와 917'은 size(909) 대신에 (size(909)+size(910))의 시프트를 반영하도록 수정되어야 한다.
이후로, 본 발명의 "수정된" 실시예로 지칭될 본 발명의 한 실시예에 따르면, 도10의 1001의 참조 변환 법칙들을 포함하는 변환 요소를 적용하여 그로 인해 수정된 버전을 생성하는 것이 가능하고, 후에 수정된 버전과 새로운 버전 사이에 디프 유틸리티를 적용함으로써 이 변환요소에 의해 영향을 받은 오류가 있는 참조 항목들에 대한 치료법을 제공한다. 이 디프 절차는 자주 "디프"로 줄여서 지칭하며, 수정된 버전과 새로운 버전 사이를 비교하는 것은 이후로는 "수정된 디프(modified diff)"로 지칭하고, 여기에서 첫 번째 디프로서 이전과 새로운 버전 사이를 비교하여 변환 요소를 생성하도록 활용되는 것을 이후로는 "완전 디프 (complete diff)"로 지칭한다. 완전 디프의 결과는 "완전 델타(complete delta)"로 지칭하며, 반면에 수정된 디프의 결과를 "수정된 델타(modified delta)"라고 지칭한다.
일반적으로, 완전 디프가 이전 버전과 새로운 버전들 사이에 존재하는 모든 변경, 예를 들어 대체 쌍(즉, 위에서 설명된 바와 같은 시프트된 명시적 참조 항목들)과 추가된 항목들과 삭제된 항목들과 같은 다른 변경들을 포함하여 검출할 수 있는 반면에, 수정된 디프는 가능한 오류가 있는 대체 쌍들과 다른 변경들과 함께 실제적으로 적은 대체 사항들을 검출한다. 따라서 수정된 델타는 완전 델타와 비교하여 크기가 더 작다.
하지만, 변환 요소와 함께 수정된 델타는 이전 버전을 갱신할 수 있고 그 새로운 버전을 생성하는 갱신 패키지를 함께 구성할 수 있다. 적어도 하나의 변환 요소와 수정된 델타로 구성된 그러한 결과 패키지는 이후로는 "집합적 갱신 패키지(composite update package)"라고 지칭한며, 이는 완전 델타를 포함하고 변환 요소는 없는 "단순 갱신 패키지(simple update package)"와는 서로 상이하다. 변환요소가 그와 동등한 대체 명령어들과 비교하여 크기가 더 작을 수 있다는 것을 고려하면, 집합적 갱신 패키지의 결과는 단순 갱신 패키지로 알려진 그 자체에 비교하여 크기면에서 항상 더 작다. 그러므로, 집합적 갱신 패키지는 이후로는 콤팩트한 갱신 패키지로 여긴다. 본 발명의 한 실시예에 따르면 콤팩트한 갱신 패키지는 적어도 하나의 변환 요소와 그와 연관된 수정된 델타를 포함한다.
변환 요소 그리고 이후에는 콤팩트한 갱신 패키지 내에서 그와 연관된 수정 된 디프를 적용함으로써("전방 변환 순서(forward conversion order)" 또는 다른 말로는 "전방 갱신 지시자(forward update indicator)"), 새로운 버전이 생성되는데 여기서 변환 요소에 의해 오류가 있게 수정된 항목들은 수정된 델타에 의해 교체가 되고 새로운 버전 내의 그들의 적절한 콘텐츠를 수신하는 방식으로 수정된다(갱신 패키지의 적용에 대한 절차는 아래에서 자세히 설명된다). 하지만 때로는 수정된 디프는 변환 요소 전에 적용되어야 하며, 이를 이후로는 "후방 변환 순서(backward conversion order)"라 지칭한다. 후방 변환 순서는 아래에서 자세히 설명될 것이다.
하지만, 콤팩트한 갱신 패키지를 생성하기 위하여 수정된 델타를 변환 요소에 결합하는 대신에, 부가적인 변환 요소들을 수정된 델타에서 추출하여, 이전 변환 요소에 기여하거나 또는 이전 것과 함께 그리고 더욱 작은 콤팩트한 갱신 패키지를 형성하기 위해 델타와 연관 되도록 부가적인 변환 요소를 생성하는 것이 가능하다. 따라서 "반복 단계적인 실시예(iterations embodiment)"라 지칭하는 본발명의 다른 실시예는 이후에 도14와 관련되어 설명된다.
도14는 본 발명의 한 반복 단계적인 실시예를 따르는, 콘텐츠의 버전을 갱신하는 반복적 단계의 예시적인 괘괄적 도시이다. 버전 1401은 이전 버전이며, 반면에 버전 1402는 새로운 버전이다. 본 도면은 본 발명의 반복 단계적인 실시예에 따라서 이전 버전 1401을 새로운 버전 1402로 갱신하기 위한 콤팩트한 갱신 패키지의 생성을 도식화하고 있다. 이전 버전 1401은 블록 1403을 포함한다. 블록 1403에서 더하여, 적어도 약간의 명시적 참조 항목들 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413 그리고 1414를 포함하는 다른 블록 1404가 있다. 블록 1404는 또한 비참조 항목 1415를 포함한다.
새로운 버전 1402 내에서, 블록 1403'과 1404'는 블록 1403과 1404에 대응하는 반면, 항목 1405', 1406', 1407', 1408', 1409', 1410', 1411', 1412', 1413', 1414' 그리고 1415'는 각각 항목 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414 그리고 1415에 대응한다. 적어도 한 항목 1416은 블록 1403' 안으로 삽입되었고, 따라서 그 크기를 size(1416)만큼 확대하였으며, 적어도 한 항목, 크기 size(1417)의 1417은 블록 1404'내에 항목 1405' 후방으로 삽입되었다.
참조 항목 1405, 1411 그리고 1414의 내용은 실제적으로 동일하고, 따라서 그에 대응하는 참조 항목들 1405', 1411' 그리고 1414'의 내용 역시 본질적으로 동일하다. 유사하게, 1406, 1412 그리고 1414는 실제적으로 동일하고, 따라서 그에 대응하는 참조 항목들 1406', 1412' 그리고 1414'의 내용 역시 본질적으로 동일하다.
항목들 1405', 1406', ..., 1410'는 명시적 참조 항목들이며, 그 내용들은 이전 버전과 비교하여 새로운 버전에서 수정되었다(즉, 그들의 참조된 항목들은 이동되었다). 동일한 사항이 또한 명시적 참조 항목들 1411', 1412', 1413' 그리고 1414'에 적용된다. 하지만, 본질적으로 알려진 디프 유틸리티는 항목 1417이 새로운 버전 1402에 삽입된 새로운 항목이며 반면에 항목 1405', 1406', ..., 1410', ...들은 시프트된 항목들임을 인지하지 못하고, 따라서 디프 유틸리티는 항목 1417이 항목 1405를 대체함을 오류가 있게 감지한다. 보다 더 나아가 디프 유틸리티는 항목 1415'가 항목 1415와 동일(따라서 그 복사본과도 동일)한 것으로 확인하고, (이번에는 올바르게) 항목 1411'이 항목 1411을 대체하는 등을 감지하도록 동기화 한다.
따라서, 완전 디프에 이어서, (오류를 부분적으로 포함하여) 다음을 지적하면서 완전 델타가 생성된다:
1417는 1405를 대체;
1405'는 1406를 대체;
1406'는 1407를 대체;
1407'는 1408를 대체;
1408'는 1409를 대체;
1409'는 1410를 대체;
1415'는 1415의 복사본;
1411'는 1411를 대체;
1412'는 1412를 대체;
1413'는 1413를 대체; 그리고
1414'는 1414를 대체.
이 완전 델타에 기초하여 변환 요소가 생성되는데, 이는 예를 들어 위의 도7과 도13에서 도식화된 방법들에 따른 것이다.
본질적으로 동일한 항목 1406, 1412 그리고 1414 (그들의 대응되는 항목도 역시 동일) 뿐아니라 항목 1405, 1411 그리고 1414가 본질적으로 동일(그리고 그들 의 대응하는 항목들도 역시 동일)하다는 것을 돌이켜보고, 1411'이 1411을 대체하고 1413'이 1413을 대체하는 것을 감지한 이후에, 변환 요소는 1405가 1405'로 대체되어야 함을 미루어 짐작할 수 있다. 유사하게 1412'가 1412를 대체하고 1414'가 1414를 대체하는 것을 검출함으로써 변환 요소는 1406이 1406'에 의해 대체되어야 함을 미루어 짐작할 수 있다.
이 변환 요소는 이전 버전 1401에 적용되어, 수정된 버전 1418을 생성시킨다. 변환 요소는 이전 버전에서는 여러번 수정 (또는 변환)되었으나, 항목들의 삭제 그리고/또는 삽입과 같은 다른 임의의 변형을 다루는 것을 주의해야 한다. 따라서 수정된 버전 1418은 이전 버전 1401과의 관계에서 시프트되지 않는다.
본 발명의 한 수정된 실시예에 따르면, 수정된 디프가 수정된 버전 1418과 새로운 버전 1402 사이에 비교를 수행하면서 활용될 수 있다. 그 결과적인 수정된 델타는 항목들 1407, 1408, 1409 그리고 1410 사이에서 변환 요소로 다루어지지 못하는 부가적인 요소들의 삽입, 다른 요소들의 삭제 그리고 나머지의 대체를 인식하게 된다. 이 수정된 델타는, 변환 요소와 함께, 콤팩트한 갱신 패키지를 생성하기 위한 기초로 동작을 한다.
이와는 다르게 본 발명의 반복 단계적 실시예에 따르면 콤팩트한 갱신 패키지를 생성하는 대신에, 수정된 델타는 부가적인 새로운 변환 요소들의 생성의 기초로 예를 들어 위의 도7과 도13에서 도식화된 방법들에 따라서 동작을 해야만 한다. 이러한 새로운 변환 요소는, 이전 반복적 단계에서 생성된 것과 함께 집합적 변환 요소를 함께 구성하게 된다. 새로운 변환 요소는 (보이지 않은) 다른 수정된 버전 을 생성하여 새로운 버전 1402에 대한 수정된 디프에 의해 비교가 가능하도록 수정된 버전 1418에 적용될 수 있다. 반복적 단계를 멈추기 위한 하나의 예시적인 종료 조건은, 한 반복적 단계에서 생성된 수정된 델타의 크기와 새로운 변환 요소의 크기를 함께하여 그것이 이전 수정된 델타의 크기 및 이전 집합적 변환 요소의 크기가 함께한 값보다 크거나 같은 것이다. 반복적 단계가 멈출 때 콤팩트한 갱신 패키지는 집합적 변환 요소와 수정된 델타를 기반으로 하여 생성된다.
반복적 단계의 실시예가 도15의 플로우 차트에 관하여 일반적인 용어로 아래에 설명이 이루어질 예정이나, 이는 도14의 예시에만 제한되지 않음을 주목해야 한다. 이전 버전과 새로운 버전은 임의의 적용 가능한 수의 블록을 가질수 있고, 새로운 블록들과 항목들은 이전 버전을 새로운 버전으로 갱신하는 도중에 어느 위치에 삽입되거나 삭제될 수 있고, 임의의 수의 반복 단계가 수행될 수 있으며 임의의 적용가능한 종료 조건(또는 "종료 기준(stop criterion)"이 반복적 단계를 종료하도록 사용될 수 있다. 즉, 프로세스는 종료 기준이 만족되지 않는다면 다음 반복 단계로 진입한다.
도15는 본 발명의 반복 단계적 실시예를 자세히 설명하고 있는 플로우 차트이다. 이 플로우 차트에 따라서 생성된 갱신 패키지는 전방 변환 순서임을 주목해야 한다.
시작 후에, 기술된 방법은 적어도 이전 그리고 갱신될 새로운 버전의 콘텐트, 그리고 존재한다면 메타 데이터를 수신한다. 두 버전들과 메타 데이터는 변환 요소의 생성(1501)과 초기 델타 크기를 결정하는(1502) 기초로 작용을 하며, 여기 서 처음에 집합적 변환 요소는 1501에서 생성된 변환 요소와 동일함(1503)을 주목할 수 있다. 이 변환 요소는 이전 버전에 적용되고(1504), 그 수정된 버전을 생성한다. 수정된 디프를 수정된 버전과 새로운 버전에 활용하는 동안에, 다음에 수정된 델타가 생성되고(1505), 수정된 델타는 새로운 변환 요소의 생성(1506)의 기초로서 작용한다. 이 새로운 변환 요소의 크기가 결정된다(1507).
새로운 변환 요소가 집합적 변환 요소로 병합된다(1508). 새로운 변환 요소의 크기가 결정되고(1509) 수정된 델타의 크기가 결정된다(1510).
만약에 델타 크기와 합하여 집합적 변환 요소의 크기가 수정된 델타의 크기와 합한 새로운 변환 요소의 크기보다 작으면(1511), 새로운 변환 요소는 변환 요소가 되고(1512), 델타 크기는 새로운 델타 크기가 되며(1513), 새로운 변환 요소가 수정된 버전에 적용되고(1514) 그로 인해 새로운 수정버전을 생성하게 된다. 1505로 돌아가서 새로운 수정된 델타가 생성된다.
하지만, 만약 1511에서 수정된 델타의 크기와 함께 변환 요소의 크기가 델타 크기와 함께한 집합적 변환 요소의 크기보다 같거나 크다면, 집합적 변환 요소와 수정된 델타를 바탕으로 갱신 패키지가 생성된다(1511). 이와는 다르게 1511에서 콤팩트한 갱신 패키지가 이전 반복적 단계에서 생성된 콤팩트한 갱신 패키지보다 크다면 종료 기준이 만족된다.
반복적 단계 실시예는 또한 후방 변환 순서에서 동작할 수 있음을 인지해야 하고, 즉 초기 변환 요소를 생성하기 위하여 이전 버전과 새로운 버전 사이에 완전 디프가 적용되며, 여기서 수정된 버전이 변환 요소를 새로운 버전 상에 적용함으로 써 생성된다. 다음에 수정된 델타는 새로운 변환 요소를 생성하기 위하여 이전 버전과 수정된 버전 사이에서 생성된다.
갱신 패키지는 갱신 패키지가 생성된 순서에 따라 변환 순서를 나타내도록 표기되어 있다.
본 발명은 도15에 기술된 갱신 패키지의 생성 동작과 방법의 특정 순서에 국한되지 않음을 주목해야 한다.
본 발명의 다양한 실시예에 따라서 갱신 패키지의 생성을 기술하였으나, 이는 예시에만 제한되지 않으며, 새로운 버전을 발생시키고 이전 버전을 갱신하기 위한 갱신 패키지를 사용하는 것에 대한 상세한 설명이 이어진다. 예시의 방법에 따라 갱신 패키지는 무선 통신 매체를 통해 전송되고 휴대전화기기에 의해 수신되나 그 예시에 국한되지는 않는다. 휴대전화기기는 이렇게 수신된 갱신 패키지를 처리하고 이전 버전의 프로그램 그리고/또는 그안에 저장되는 데이터을 갱신하여 휴대전화기기 내에서 저장되고 동작할 새로운 버전을 발생시키도록 설정된 프로세서를 포함하고 있다.
이를 고려하면, 본 발명의 한 실시예에 따라 새로운 버전의 콘텐츠를 발생시키는 이전 버전의 콘텐츠 갱신을 설명하고 있는 플로우 차트를 도식화하고 있는 도16에 주목해야 한다. 본 실시예에 따르는 갱신 패키지는 변환 요소 및 수정된 델타를 포함하고 있다. 갱신 패키지는 전방 갱신 지시자 또는 후방 갱신 지시자 중 하나를 포함하고 있음을 주목해야 한다.
콤팩트한 갱신 패키지를 얻은 후(1601), 그 안에 포함된 변환 요소는 추출된 다(1602).
1603에서 검출했을 때 만약 갱신 패키지가 전방 갱신 지시자를 포함하고 있다면, 상기 변환 요소는 이전 버전에 적용되어(1604), 수정된 버전을 생성한다. 그때 수정된 델타가 갱신 패키지로부터 추출되고(1605), 수정된 버전에 적용된다(1606). 다른 한편으로는, 만약에 1603과 1607에서 갱신 패키지가 후방 갱신 지시자를 포함하고 있음이 발견되면, 수정된 델타가 먼저 추출되고(1605) 이전 버전에 적용되어(1606) 변환 요소가 그때 적용될(1608) 수정된 버전이 생성된다. 두 가지 모든 경우에 있어서 결과물은 새로운 버전이다.
도17은 이전 버전 콘텐츠와 새로운 버전 콘텐츠 사이의 콤팩트한 갱신 패키지를 생성하기 위한 시스템을 본 발명의 한 실시예에 따라서 도식화하고 있다. 시스템은 이전 버전 및 새로운 버전과 연관된 변환 요소를 생성하기 위한 변환 요소 생성기 1702를 포함하고 있다. 수정된 버전 생성기 1703는 이전 버전에 변환 요소를 적용하는 것을 포함하는 수정된 버전을 생성하기 위한 것이다. 갱신 패키지 생성기 1704는 콤팩트한 갱신 패키지를 생성시키기 위한 것이다. 콤팩트한 갱신 패키지는 변환 요소와, 수정된 버전과 새로운 버전을 기반으로하는 수정된 델타를 포함하고 있다.
도18은 새로운 버전 콘텐츠를 발생시키는 이전 버전 콘텐츠를 갱신하기 위한 시스템을 본 발명의 한 실시예에 따라서 도식화하고 있다. 시스템은 입력 모듈 1802와 프로세서 1803을 포함하고 있다. 입력 모듈은 콤팩트한 갱신 패키지를 얻어내도록 설정되어 있는 입력 모듈로서, 상기 콤팩트한 갱신 패키지가 상기 이전 버전 및 새로운 버전과 연관된 변환 요소, 수정된 델타, 그리고 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하고 있다. 전방 갱신 표시의 경우에는 프로세서가 이전 버전에 변환 요소를 적용하는 것을 포함하여 수정된 버전을 생성하도록 설정되어 있다. 프로세서는 또한 수정된 버전에 수정된 델타를 적용하는 것을 포함하여 새로운 버전을 생성하도록 설정되어 있다. 후방 갱신 표시의 경우에는 프로세서가 이전 버전에 수정된 델타를 적용하는 것을 포함하여 수정된 버전을 생성하도록 설정이 되어 있다. 프로세서는 또한 수정된 버전에 변환 요소를 적용하는 것을 포함하여 새로운 버전을 생성하도록 설정이 되어 있다.
본 발명에 따른 시스템은 적절하게 프로그램된 컴퓨터가 될 수 있음을 주목해야 한다. 이와 같이 본 발명은 본 발명의 방법을 실행하기 위한 컴퓨터에 의해 판독 가능한 컴퓨터 프로그램을 고려하고 있다. 본 발명은 본 발명의 방법을 실행하기 위한 장치에 의해 실행이 될 명령어들의 프로그램을 명확히 내장하고 있는 장치 판독 가능한 메모리를 또한 고려하고 있다.
본 발명은 어느 정도의 구체성을 가지고 기술되었으나, 당 기술 분야에 숙달된 사람들은 후술하는 청구범위의 범위를 벗어나지 아니하고도 본 발명에 대한 다양한 변형과 변경을 용이하게 할 수 있다는 점을 쉽게 이해할 것이다.

Claims (50)

  1. 저장 기기의 이전 버전의 콘텐츠를 갱신하는 방법에 있어서, 상기 방법이:
    (i) 콤팩트한 갱신 패키지를 얻어내는 단계,
    상기 콤팩트한 갱신 패키지가: 변환 요소, 수정된 델타(modified delta), 및 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하고, 상기 변환 요소는 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 차이를 반영하는 숫자 또는 참조 시프트 법칙을 포함하며, 상기 수정된 델타는 (1) 상기 이전 버전의 콘텐츠 및 수정된 버전 간의 델타 그리고 (2) 수정된 버전 및 상기 새로운 버전의 콘텐츠 간의 델타 중 하나이고, 상기 콤팩트한 갱신 패키지에서의 상기 수정된 델타을 생성하는 데 사용되는 상기 수정된 버전은 상기 변환 요소를 (1) 상기 수정된 델타가 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타인 경우에는 상기 새로운 버전의 콘텐츠에, 그리고 (2) 상기 수정된 델타가 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타인 경우에는 상기 이전 버전의 콘텐츠에 적용함으로써 생성된 것이며;
    (ii) 상기 얻어진 콤팩트한 갱신 패키지에서의 표시가 전방 갱신 표시인지 또는 후방 갱신 표시인지를 결정하는 단계;
    (iii) 전방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 변환 요소를 상기 이전 버전의 콘텐츠에 적용함으로써 (iii) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계; 및
    (b) 상기 수정된 델타를 상기 (iii) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 새로운 버전의 콘텐츠를 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타이고;
    (iv) 후방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 수정된 델타를 상기 이전 버전의 콘텐츠에 적용함으로써 (iv) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타이며;
    (b) 상기 변환 요소를 상기 (iv) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 상기 새로운 버전의 콘텐츠를 생성하는 단계
    를 포함하는, 방법.
  2. 제1항에 따른 방법에 있어서, 상기 변환 요소가 집합적 변환 요소인 방법.
  3. 제1항에 따른 방법에 있어서, 상기 (i)단계가 상기 콤팩트한 갱신 패키지를 수신하는 것을 포함하는 방법.
  4. 제1항에 따른 방법에 있어서, 상기 시프트 법칙이 숫자 시프트 법칙인 방법.
  5. 제4항에 따른 방법에 있어서, 상기 숫자 시프트 법칙이 정수 시프트 법칙인 방법.
  6. 제1항에 따른 방법에 있어서, 상기 시프트 법칙이 참조 시프트 법칙인 방법.
  7. 제1항에 따른 방법에 있어서, 상기 콘텐츠가 컴퓨터 프로그램을 포함하는 방법.
  8. 제7항에 따른 방법에 있어서, 상기 프로그램이 실행 프로그램인 방법.
  9. 제1항에 따른 방법에 있어서, 상기 콘텐츠가 데이터를 포함하는 방법.
  10. 제1항에 따른 방법에 있어서, 상기 저장 기기가 내장 기기(embedded device)와 연결된 것인 방법.
  11. 제10항에 따른 방법에 있어서, 상기 내장 기기가 휴대전화기 및 가전기기로 이루어진 군으로부터 선택되는 것인 방법.
  12. 제1항에 따른 방법에 있어서, 상기 저장 기기가 컴퓨터와 연결된 것인 방법.
  13. 제12항에 따른 방법에 있어서, 상기 시프트 법칙이 참조 시프트 법칙인 방법.
  14. 이전 버전의 콘텐츠를 갱신하는 방법을 수행하는 기계(machine)에 의해 실행가능한 명령들의 프로그램을 실행하는 프로그램을 기록한 컴퓨터 판독가능한 프로그램 저장 매체에 있어서, 상기 이전 버전의 콘텐츠를 갱신하는 방법은:
    (i) 콤팩트한 갱신 패키지를 얻어내는 단계,
    상기 콤팩트한 갱신 패키지가: 변환 요소, 수정된 델타(modified delta), 및 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하고, 상기 변환 요소는 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 차이를 반영하는 숫자 또는 참조 시프트 법칙을 포함하며, 상기 수정된 델타는 (1) 상기 이전 버전의 콘텐츠 및 수정된 버전 간의 델타 그리고 (2) 수정된 버전 및 상기 새로운 버전의 콘텐츠 간의 델타 중 하나이고, 상기 콤팩트한 갱신 패키지에서의 상기 수정된 델타을 생성하는 데 사용되는 상기 수정된 버전은 상기 변환 요소를 (1) 상기 수정된 델타가 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타인 경우에는 상기 새로운 버전의 콘텐츠에, 그리고 (2) 상기 수정된 델타가 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타인 경우에는 상기 이전 버전의 콘텐츠에 적용함으로써 생성된 것이며;
    (ii) 상기 얻어진 콤팩트한 갱신 패키지에서의 표시가 전방 갱신 표시인지 또는 후방 갱신 표시인지를 결정하는 단계;
    (iii) 전방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 변환 요소를 상기 이전 버전의 콘텐츠에 적용함으로써 (iii) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계; 및
    (b) 상기 수정된 델타를 상기 (iii) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 새로운 버전의 콘텐츠를 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타이고;
    (iv) 후방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 수정된 델타를 상기 이전 버전의 콘텐츠에 적용함으로써 (iv) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타이며;
    (b) 상기 변환 요소를 상기 (iv) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 상기 새로운 버전의 콘텐츠를 생성하는 단계를 포함하는 것인,
    프로그램 저장 매체.
  15. 저장 기기에서 이전 버전의 콘텐츠를 갱신하기 위한 시스템에 있어서, 상기 시스템이:
    콤팩트한 갱신 패키지를 얻도록 구성된 입력 모듈,
    상기 콤팩트한 갱신 패키지가: 변환 요소, 수정된 델타(modified delta), 및 전방 갱신(forward update) 또는 후방 갱신(backward update)의 표시를 포함하고, 상기 변환 요소는 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 차이를 반영하는 숫자 또는 참조 시프트 법칙을 포함하며, 상기 수정된 델타는 (1) 상기 이전 버전의 콘텐츠 및 수정된 버전 간의 델타 그리고 (2) 수정된 버전 및 상기 새로운 버전의 콘텐츠 간의 델타 중 하나이고, 상기 콤팩트한 갱신 패키지에서의 상기 수정된 델타을 생성하는 데 사용되는 상기 수정된 버전은 상기 변환 요소를 (1) 상기 수정된 델타가 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타인 경우에는 상기 새로운 버전의 콘텐츠에, 그리고 (2) 상기 수정된 델타가 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타인 경우에는 상기 이전 버전의 콘텐츠에 적용함으로써 생성된 것이며; 그리고
    프로세서
    를 포함하고,
    상기 프로세서는:
    (i) 상기 얻어진 콤팩트한 갱신 패키지에서의 표시가 전방 갱신 표시인지 또는 후방 갱신 표시인지를 결정하는 단계;
    (ii) 전방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 변환 요소를 상기 이전 버전의 콘텐츠에 적용함으로써 (ii) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계; 및
    (b) 상기 수정된 델타를 상기 (ii) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 새로운 버전의 콘텐츠를 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 수정된 버전과 상기 새로운 버전의 콘텐츠 간의 델타이고;
    (iii) 후방 갱신 표시의 경우에는:
    (a) 상기 저장 기기에서 상기 수정된 델타를 상기 이전 버전의 콘텐츠에 적용함으로써 (iii) (b) 단계에서 새로운 버전의 콘텐츠를 생성하는 데 사용되는 수정된 버전을 생성하는 단계,
    상기 수정된 델타는, 상기 콤팩트한 갱신 패키지의 수정된 델타를 생성하는데 각각 사용되는 상기 이전 버전의 콘텐츠와 상기 수정된 버전 간의 델타이며;
    (b) 상기 변환 요소를 상기 (iii) (a) 단계에서 생성된 수정된 버전에 적용함으로써 상기 저장 기기에서 상기 새로운 버전의 콘텐츠를 생성하는 단계를 수행하도록 구성된 것인,
    시스템.
  16. 제15항에 따른 시스템에 있어서, 상기 저장 기기가 내장 기기(embedded device)와 연결된 것인 시스템.
  17. 제16항에 따른 시스템에 있어서, 상기 내장 기기가 휴대전화기 및 가전기기로 이루어진 군으로부터 선택되는 것인 시스템.
  18. 제16항에 따른 시스템에 있어서, 상기 저장 기기가 컴퓨터와 연결된 것인 시스템.
  19. 저장 기기에서 이전 버전의 콘텐츠를 갱신하는 방법으로서, 상기 방법은:
    수정된 델타 및 변환 요소를 포함하는 콤팩트한 갱신 패키지를 얻어내는 단계,
    상기 변환 요소는 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 차이를 반영하는 숫자 또는 참조 시프트 법칙을 포함하며, 상기 수정된 델타는 (1) 상기 이전 버전의 콘텐츠 및 수정된 버전 그리고 (2) 수정된 버전 및 상기 새로운 버전의 콘텐츠 중 하나와 연관되고, 상기 콤팩트한 갱신 패키지에서의 상기 수정된 델타을 생성하는 데 사용되는 상기 수정된 버전은 상기 변환 요소를 (1) 상기 수정된 델타가 상기 이전 버전의 콘텐츠와 상기 수정된 버전에 연관된 경우에는 상기 새로운 버전의 콘텐츠에, 그리고 (2) 상기 수정된 델타가 상기 수정된 버전과 상기 새로운 버전의 콘텐츠에 연관된 경우에는 상기 이전 버전의 콘텐츠에 적용함으로써 생성된 것이고; (a) 상기 얻어진 콤팩트한 갱신 패키지에서 상기 수정된 델타가 상기 수정된 버전과 상기 새로운 버전의 콘텐츠에 연관된 경우에는: (i) 상기 저장 기기에서 상기 변환 요소를 상기 이전 버전의 콘텐츠에 적용하여 수정된 버전을 생성하는 단계, 및 (ii) 상기 수정된 델타를 상기 (a)(i) 단계에서 생성된 수정된 버전에 적용하여 상기 저장 기기에서 새로운 버전의 콘텐츠를 생성하는 단계; (b) 상기 얻어진 콤팩트한 갱신 패키지에서 상기 수정된 델타가 상기 이전 버전의 콘텐츠와 상기 수정된 버전에 연관된 경우에는: (i) 상기 저장 기기에서 상기 수정된 델타를 상기 이전 버전의 콘텐츠에 적용하여 수정된 버전을 생성하는 단계, 및 (ii) 상기 변환 요소를 상기 (b)(i) 단계에서 생성된 수정된 버전에 적용하여 상기 저장 기기에서 새로운 버전의 콘텐츠를 생성하는 단계
    를 포함하는, 방법.
  20. 제19항에 따른 방법에 있어서, 상기 변환 요소가 집합적 변환 요소인 방법.
  21. 제19항에 따른 방법에 있어서, 상기 수정된 델타 및 변환 요소를 포함하는 콤팩트한 갱신 패키지를 얻어내는 단계가 상기 콤팩트한 갱신 패키지를 수신하는 것을 포함하는 방법.
  22. 제19항에 따른 방법에 있어서, 상기 시프트 법칙이 숫자 시프트 법칙인 방법.
  23. 제22항에 따른 방법에 있어서, 상기 숫자 시프트 법칙이 정수 시프트 법칙인 방법.
  24. 제19항에 따른 방법에 있어서, 상기 시프트 법칙이 참조 시프트 법칙인 방법.
  25. 제19항에 따른 방법에 있어서, 상기 콘텐츠가 컴퓨터 프로그램을 포함하는 방법.
  26. 제25항에 따른 방법에 있어서, 상기 프로그램이 실행 프로그램인 방법.
  27. 제19항에 따른 방법에 있어서, 상기 콘텐츠가 데이터를 포함하는 방법.
  28. 제19항에 따른 방법에 있어서, 상기 저장 기기가 내장 기기(embedded device)와 연결된 것인 방법.
  29. 제28항에 따른 방법에 있어서, 상기 내장 기기가 휴대전화기 및 가전기기로 이루어진 군으로부터 선택되는 것인 방법.
  30. 제19항에 따른 방법에 있어서, 상기 저장 기기가 컴퓨터와 연결된 것인 방법.
  31. 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 콤팩트한 갱신 패키지를 생성하는 방법에 있어서, 상기 방법은:
    (i) 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠와 연관되고 상기 이전 버전의 콘텐츠를 상기 새로운 버전의 콘텐츠로 갱신하는 동안에 적용될 수 있는 하나 이상의 시프트 법칙을 포함하는 변환 요소를 생성하는 단계;
    (ii) 상기 변환 요소를 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 단계; 및
    (iii) 프로그램이 내장된 컴퓨터에서, 상기 콤팩트한 갱신 패키지를 생성하는 단계를 포함하고,
    상기 콤팩트한 갱신 패키지는 상기 변환 요소와,
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 이전 버전인 경우에, 적어도 상기 수정된 버전과 상기 새로운 버전의 비교를 기반으로 하는 수정된 델타
    또는
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 새로운 버전인 경우에, 상기 이전 버전 및 상기 수정된 버전
    을 포함하는 것임을 특징으로 하는,
    방법.
  32. 제31항에 따른 방법에 있어서, 상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전은 상기 이전 버전의 콘텐츠이고 상기 (iii) 단계에서의 다른 하나의 버전은 상기 새로운 버전의 콘텐츠인 것인 방법.
  33. 제31항에 따른 방법에 있어서, 상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전은 상기 새로운 버전의 콘텐츠이고 상기 (iii) 단계에서의 다른 하나의 버전은 상기 이전 버전의 콘텐츠인 것인 방법.
  34. 제31항에 따른 방법에 있어서, 상기 시프트 법칙이 숫자 시프트 법칙을 포함하는 것인 방법.
  35. 제34항에 따른 방법에 있어서, 상기 숫자 시프트 법칙이 정수 시프트 법칙인 방법.
  36. 제31항에 따른 방법에 있어서, 상기 시프트 법칙이 참조 시프트 법칙을 포함하는 것인 방법.
  37. 제36항에 따른 방법에 있어서, 상기 참조 시프트 법칙이 차이점 테이블과 연관된 것인 방법.
  38. 제37항에 따른 방법에 있어서, 상기 차이점 테이블이 상기 이전 버전의 콘텐츠 및 상기 새로운 버전의 콘텐츠와 연관된 메타 데이터에 기반한 것인 방법.
  39. 제38항에 따른 방법에 있어서, 상기 메타 데이터가 콘텐츠 설명 데이터인 방법.
  40. 제39항에 따른 방법에 있어서, 상기 콘텐츠 설명 데이터가 맵 파일(map files), 심볼 테이블(symbol table), 및 디버그 테이블(debug table)을 포함하는 군의 일원인 것인 방법.
  41. 제31항에 따른 방법에 있어서, 상기 콘텐츠가 컴퓨터 프로그램을 포함하는 방법.
  42. 제31항에 따른 방법에 있어서, 반복적 단계들(iterations)로서 적용되는 다음의 단계들을 포함하고, 상기 다음의 단계들은:
    a. 첫번째 반복적 단계(first iteration)에 대한 상기 이전 버전 또는 이전 반복적 단계와 상기 새로운 버전의 콘텐츠에서 얻어진 것 중 어느 하나인 수정된 버전과 연관된 변환 요소를 생성하는 단계;
    b. 상기 a 단계에서 얻어진 변환 요소를 상기 이전 반복적 단계에서 얻어진 수정된 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 단계;
    c. 콤팩트한 갱신 패키지를 생성하는 단계,
    상기 콤팩트한 갱신 패키지는, 이전의 모든 반복적 단계에서 생성된 변환 요소, 및 적어도 상기 b 단계에서 생성된 상기 수정된 버전과 상기 새로운 버전의 콘텐츠에 기반하는 수정된 델타를 포함하는 집합적 변환 요소를 포함하며; 그리고
    d. 종료 기준(stop criterion)이 만족되지 않으면 다음 반복적 단계로 진행하고; 그렇지 않은 경우 상기 이전 반복적 단계들 동안에 생성된 콤팩트한 갱신 패키지들 중에서 가장 작은 크기의 콤팩트한 갱신 패키지를 선택하는 단계를 포함하는 것을 특징으로 하는,
    방법.
  43. 제42항에 따른 방법에 있어서, 콤팩트한 갱신 패키지가 상기 이전 반복적 단계 내에서 생성된 콤팩트한 갱신 패키지보다 크다면 상기 종료 기준이 만족되는 것인 방법.
  44. 이전 버전의 콘텐츠를 새로운 버전의 콘텐츠로 갱신하는 방법에 있어서, 상기 방법은:
    상기 이전 버전의 콘텐츠를 상기 새로운 버전의 콘텐츠로 갱신하기 위하여 상기 이전 버전의 콘텐츠의 콤팩트한 갱신 패키지를 사용하는 단계를 포함하고,
    상기 콤팩트한 갱신 패키지는:
    (i) 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠와 연관되고 상기 이전 버전의 콘텐츠를 상기 새로운 버전의 콘텐츠로 갱신하는 동안에 적용될 수 있는 하나 이상의 시프트 법칙을 포함하는 변환 요소를 생성하는 단계;
    (ii) 상기 변환 요소를 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 단계; 및
    (iii) 프로그램이 내장된 컴퓨터에서, 상기 콤팩트한 갱신 패키지를 생성하는 단계를 포함하는, 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 간의 콤팩트한 갱신 패키지를 생성하는 방법에 의해 생성되는 것임을 특징으로 하고,
    상기 콤팩트한 갱신 패키지는 상기 변환 요소와,
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 이전 버전인 경우에, 적어도 상기 수정된 버전과 상기 새로운 버전의 비교를 기반으로 하는 수정된 델타
    또는
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 새로운 버전인 경우에, 상기 이전 버전 및 상기 수정된 버전을 포함하는 것임을 특징으로 하는,
    방법.
  45. 제31항에 따른 방법을 실행하기 위한 단계들을 수행하는 기계에 의해 수행가능한 명령들의 프로그램을 포함하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  46. 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간에 콤팩트한 갱신 패키지를 생성하기 위한 시스템에 있어서, 상기 시스템이:
    상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠와 연관되고 상기 이전 버전의 콘텐츠를 상기 새로운 버전의 콘텐츠로 갱신하는 동안에 적용될 수 있는 하나 이상의 시프트 법칙을 포함하는 변환 요소를 생성하는 변환 요소 생성기;
    상기 변환 요소를 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 중 하나의 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 수정된 버전 생성기; 및
    상기 콤팩트한 갱신 패키지를 생성하는 프로그램이 내장된 컴퓨터의 갱신 패키지 생성기를 포함하고,
    상기 콤팩트한 갱신 패키지는 상기 변환 요소와,
    상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 중 하나의 버전이 상기 이전 버전인 경우에, 적어도 상기 수정된 버전과 상기 새로운 버전의 비교를 기반으로 하는 수정된 델타
    또는
    상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 중 하나의 버전이 상기 새로운 버전인 경우에, 상기 이전 버전 및 상기 수정된 버전을 포함하는 것인,
    시스템.
  47. 제31항의 방법에 따라 얻을 수 있는, 기계에 의해 실행가능한 명령들의 프로그램을 포함하는 콤팩트한 갱신 패키지를 기록한 컴퓨터로 읽을 수 있는 매체.
  48. 갱신 패키지를 사용하는 방법에 있어서, 상기 사용은:
    상기 갱신 패키지를 저장하는 단계,
    상기 갱신 패키지를 전송하는 단계, 및
    이전 버전의 콘텐츠를 새로운 버전의 콘텐츠로 갱신하는 단계 중 하나 이상을 포함하고,
    상기 갱신 패키지는, 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 갱신 패키지를 생성하는 방법을 사용하여 생성된 것임을 특징으로 하고, 상기 이전 버전의 콘텐츠와 새로운 버전의 콘텐츠 간의 갱신 패키지를 생성하는 방법은:
    (i) 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠와 연관되고 상기 이전 버전의 콘텐츠를 상기 새로운 버전의 콘텐츠로 갱신하는 동안에 적용될 수 있는 하나 이상의 시프트 법칙을 포함하는 변환 요소를 생성하는 단계;
    (ii) 상기 변환 요소를 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 단계; 및
    (iii) 상기 갱신 패키지를 생성하는 단계를 포함하고,
    상기 갱신 패키지는 상기 변환 요소와,
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 이전 버전인 경우에, 적어도 상기 수정된 버전과 상기 새로운 버전의 비교를 기반으로 하는 수정된 델타
    또는
    상기 (ii) 단계에서의 상기 이전 버전의 콘텐츠 및 새로운 버전의 콘텐츠 중 하나의 버전이 상기 새로운 버전인 경우에, 상기 이전 버전 및 상기 수정된 버전을 포함하는 것임을 특징으로 하는,
    방법.
  49. 제31항에 따른 방법에 있어서, 반복적 단계들(iterations)로서 적용되는 다음의 단계들을 포함하고, 상기 다음의 단계들은:
    a. 상기 이전 버전의 콘텐츠와, 첫번째 반복적 단계(first iteration)에 대한 상기 새로운 버전 또는 이전 반복적 단계에서 얻어진 것 중 어느 하나인 수정된 버전과 연관된 변환 요소를 생성하는 단계;
    b. 상기 a 단계에서 얻어진 변환 요소를 상기 이전 반복적 단계에서 얻어진 수정된 버전에 적용하는 단계를 포함하는 수정된 버전을 생성하는 단계;
    c. 콤팩트한 갱신 패키지를 생성하는 단계,
    상기 콤팩트한 갱신 패키지는, 이전의 모든 반복적 단계에서 생성된 변환 요소, 및 적어도 상기 b 단계에서 생성된 상기 수정된 버전과 상기 새로운 버전의 콘텐츠에 기반하는 수정된 델타를 포함하는 집합적 변환 요소를 포함하며; 그리고
    d. 종료 기준(stop criterion)이 만족되지 않으면 다음 반복적 단계로 진행하고; 그렇지 않은 경우 상기 이전 반복적 단계들 동안에 생성된 콤팩트한 갱신 패키지들 중에서 가장 작은 크기의 콤팩트한 갱신 패키지를 선택하는 단계를 포함하는 것을 특징으로 하는,
    방법.
  50. 제49항에 따른 방법에 있어서, 콤팩트한 갱신 패키지가 상기 이전 반복적 단계 내에서 생성된 콤팩트한 갱신 패키지보다 크다면 상기 종료 기준이 만족되는 것인 방법.
KR1020057024876A 2003-06-23 2004-06-23 저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템 KR101438215B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US48022503P 2003-06-23 2003-06-23
US60/480,225 2003-06-23
US54616304P 2004-02-23 2004-02-23
US60/546,163 2004-02-23
PCT/IL2004/000559 WO2004114130A2 (en) 2003-06-23 2004-06-23 Method and system for updating versions of content stored in a storage device

Publications (2)

Publication Number Publication Date
KR20060069361A KR20060069361A (ko) 2006-06-21
KR101438215B1 true KR101438215B1 (ko) 2014-09-04

Family

ID=33544431

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057024876A KR101438215B1 (ko) 2003-06-23 2004-06-23 저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템

Country Status (7)

Country Link
US (2) US7860834B2 (ko)
EP (2) EP2273361B1 (ko)
JP (1) JP5019578B2 (ko)
KR (1) KR101438215B1 (ko)
AU (1) AU2004250442B2 (ko)
CA (1) CA2530395C (ko)
WO (1) WO2004114130A2 (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7555750B1 (en) * 2002-08-22 2009-06-30 Hewlett-Packard Development Company, L.P. Update package generator employing partial predictive mapping techniques for generating update packages for mobile handsets
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
DE102004010179A1 (de) * 2004-03-02 2005-10-06 Siemens Ag Verfahren und Datenverarbeitungsgerät zur Aktualisierung von Rechnerprogrammen per Datenübertragung
WO2005088449A1 (en) 2004-03-15 2005-09-22 Red Bend Ltd. Method and apparatus for reliably updating a stored version of content
WO2005088448A1 (en) 2004-03-15 2005-09-22 Red Bend Ltd. Method and apparatus for reliable in-place update
WO2005101200A1 (en) 2004-04-13 2005-10-27 Red Bend Ltd Method and apparatus for generating and update package
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
WO2005119432A2 (en) 2004-06-01 2005-12-15 Red Bend Ltd Method and system for in-place updating content stored in a storage device
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
DE102005034047A1 (de) * 2005-07-21 2007-01-25 Robert Bosch Gmbh Datenübertragungsverfahren und Datenübertragungssystem
WO2007023497A1 (en) 2005-08-23 2007-03-01 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
CN101326492B (zh) 2005-10-06 2013-07-17 雷德本德有限公司 用于更新包括压缩版本的内容的方法和系统
KR100750169B1 (ko) * 2006-03-08 2007-08-21 삼성전자주식회사 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
JP4911576B2 (ja) * 2006-03-24 2012-04-04 株式会社メガチップス 情報処理装置および追記型メモリ利用方法
US8055096B2 (en) 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
EP1855197B1 (en) * 2006-05-10 2012-12-19 Research In Motion Limited Method and system for incremental patching of binary files
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
WO2007148900A1 (en) * 2006-06-19 2007-12-27 Samsung Electronics Co., Ltd. Program upgrade system and method for ota-capable portable device
US7779401B2 (en) 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US7653640B2 (en) * 2006-07-31 2010-01-26 Microsoft Corporation Two-way and multi-master synchronization over web syndications
US7827528B2 (en) 2006-08-29 2010-11-02 Sap Ag Delta layering
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
US8065661B2 (en) 2006-08-29 2011-11-22 Sap Ag Test engine
WO2008025514A1 (en) * 2006-08-29 2008-03-06 Sap Ag Systems and methods for rapid application configuration and deployment
US8131644B2 (en) 2006-08-29 2012-03-06 Sap Ag Formular update
US7831637B2 (en) 2006-08-29 2010-11-09 Sap Ag System on the fly
US7831568B2 (en) 2006-08-29 2010-11-09 Sap Ag Data migration
US7908589B2 (en) 2006-08-29 2011-03-15 Sap Ag Deployment
US7823124B2 (en) 2006-08-29 2010-10-26 Sap Ag Transformation layer
US7912800B2 (en) 2006-08-29 2011-03-22 Sap Ag Deduction engine to determine what configuration management scoping questions to ask a user based on responses to one or more previous questions
US8949825B1 (en) 2006-10-17 2015-02-03 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8612971B1 (en) 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US8458695B2 (en) 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8949826B2 (en) 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US8234641B2 (en) 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
US9697019B1 (en) 2006-10-17 2017-07-04 Manageiq, Inc. Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US9015703B2 (en) * 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8752045B2 (en) 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US9038062B2 (en) 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
WO2008084488A2 (en) 2007-01-11 2008-07-17 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US8407688B2 (en) * 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
US8418173B2 (en) 2007-11-27 2013-04-09 Manageiq, Inc. Locating an unauthorized virtual machine and bypassing locator code by adjusting a boot pointer of a managed virtual machine in authorized environment
US8219595B2 (en) 2008-02-14 2012-07-10 Hewlett-Packard Development Company, L.P. System and method for efficient remote data access for server management
WO2010016062A2 (en) 2008-08-04 2010-02-11 Red Bend Ltd. Updating content without using a mini operating system
WO2010016058A2 (en) 2008-08-04 2010-02-11 Red Bend Ltd. Performing an in-place update of an operating storage device
WO2010016057A2 (en) 2008-08-04 2010-02-11 Red Bend Ltd. Performing a pre-update on a non volatile memory
US8135659B2 (en) 2008-10-01 2012-03-13 Sap Ag System configuration comparison to identify process variation
US8396893B2 (en) 2008-12-11 2013-03-12 Sap Ag Unified configuration of multiple applications
US8255429B2 (en) 2008-12-17 2012-08-28 Sap Ag Configuration change without disruption of incomplete processes
JP2010198155A (ja) * 2009-02-24 2010-09-09 Fujitsu Ten Ltd プログラム更新装置、プログラム更新方法、及び情報処理装置
US8584087B2 (en) 2009-12-11 2013-11-12 Sap Ag Application configuration deployment monitor
US9292266B2 (en) * 2010-04-30 2016-03-22 Qualcomm Incorporate Preprocessor for file updating
US20110283271A1 (en) * 2010-05-17 2011-11-17 Samsung Electronics Co. Ltd. Techniques for reunion of veneers
US8762980B1 (en) * 2010-09-09 2014-06-24 Symantec Corporation Rolling incremental updates
JP2012163994A (ja) * 2011-02-03 2012-08-30 Nec Corp ソフトウェア管理システム、ソフトウェア管理装置、制御方法、及びプログラム
US8997085B2 (en) * 2011-06-24 2015-03-31 International Business Machines Corporation Image delta-based upgrade of complex stack in software appliance
CN102955816B (zh) 2011-08-30 2016-04-20 国际商业机器公司 利用串匹配进行数据同步的方法和系统
US9588884B2 (en) * 2012-06-26 2017-03-07 Red Bend Ltd. Systems and methods for in-place reorganization of device storage
US9052978B2 (en) * 2013-07-24 2015-06-09 Oracle International Corporation Applying hot fixes for metadata customizing user interactions based on a software program deployed in multiple versions
EP2993578A1 (en) * 2014-09-02 2016-03-09 Gemalto M2M GmbH Method for adapting firmware of a wireless communication device
WO2018054496A1 (en) 2016-09-23 2018-03-29 Huawei Technologies Co., Ltd. Binary image differential patching
US10725771B2 (en) * 2018-02-21 2020-07-28 Verizon Patent And Licensing, Inc. Artifact transformation in network devices
US10509642B2 (en) * 2018-03-30 2019-12-17 International Business Machines Corporation Intelligent discovery and application of API changes for application migration
US10963239B2 (en) * 2018-10-18 2021-03-30 International Business Machines Corporation Operational file management and storage
CN112912847B (zh) * 2018-11-09 2022-10-04 华为技术有限公司 空中下载升级的方法及相关装置
KR102088167B1 (ko) * 2019-08-27 2020-03-12 루나 주식회사 소프트웨어 업데이트 에이전트 장치 및 이를 통한 패치방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546552B1 (en) 1998-08-19 2003-04-08 Red Bend Ltd. Difference extraction between two versions of data-tables containing intra-references

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274384A (ja) * 1993-03-22 1994-09-30 N T T Data Tsushin Kk 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
JP3582030B2 (ja) 1995-07-05 2004-10-27 富士通株式会社 クロスコネクト装置
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
JPH10105394A (ja) * 1996-09-26 1998-04-24 Nec Commun Syst Ltd 電子交換機のファイル入れ替え方法
US6748584B1 (en) * 1999-12-29 2004-06-08 Veritas Operating Corporation Method for determining the degree to which changed code has been exercised
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
JP2002189618A (ja) * 2000-12-21 2002-07-05 Hitachi Information Systems Ltd 差分キャッシュを用いたwwwサーバとwwwブラウザの処理方法、およびそのプログラム
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
DE10333673A1 (de) * 2003-07-24 2005-02-17 Ina-Schaeffler Kg Abdichtung für ein Wälzlager

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546552B1 (en) 1998-08-19 2003-04-08 Red Bend Ltd. Difference extraction between two versions of data-tables containing intra-references

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Baker, B.S. et al., "Compressing differences of executable code", WCSSS'99, ACM Sigplan workshop on compiler support for system software INST.NAT.RES. 1999.04.22, pp. 1-10. *
Hunt, J.J. et al., "An empirical study of delta algorithms", software configutaion management, INSE SCM Workshop, pp.49-66, 1996.03.25. *

Also Published As

Publication number Publication date
WO2004114130A3 (en) 2005-04-14
EP1642204B1 (en) 2012-10-10
JP2007521555A (ja) 2007-08-02
EP1642204A2 (en) 2006-04-05
US20110093841A1 (en) 2011-04-21
US8341113B2 (en) 2012-12-25
AU2004250442B2 (en) 2010-11-18
JP5019578B2 (ja) 2012-09-05
EP2273361A1 (en) 2011-01-12
US20040267833A1 (en) 2004-12-30
CA2530395C (en) 2014-01-21
KR20060069361A (ko) 2006-06-21
WO2004114130A2 (en) 2004-12-29
EP2273361B1 (en) 2012-09-19
CA2530395A1 (en) 2004-12-29
US7860834B2 (en) 2010-12-28
AU2004250442A1 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
KR101438215B1 (ko) 저장기기에 저장된 콘텐츠의 버전을 갱신하는 방법 및시스템
EP1652069B1 (en) Method and system for updating versions of content stored in a storage device
US7716655B2 (en) Computer system for compiling source program
Bailey et al. A formal model and specification language for procedure calling conventions
US6684394B1 (en) Relocation format for linking with relocation instructions containing operations for combining section data
CN101882094A (zh) 嵌入式系统制作补丁的方法和系统
CN108694049B (zh) 一种更新软件的方法和设备
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
JP2010205068A (ja) ソフトウェア資源移行システム及び同移行方法
CN100517220C (zh) 对存储在存储装置中的内容的版本进行更新的方法和系统
US20030220939A1 (en) Information processing system, information processing method, and information processing program
US20020104078A1 (en) Forming an executable program
US7222128B2 (en) Method for updating and preserving data when performing a software upgrade
CN101339504B (zh) 一种基于文本的人机命令输出格式检查方法
US7155709B2 (en) Displaying user readable information during linking
Vysoký et al. INGRID: Creating Languages in MPS from ANTLR Grammars
Dymond SkoolKit Documentation
Kaufmann et al. ILISP User Manual
Neuhold et al. Specification and proving of command programs
JPH10260882A (ja) バージョン管理システム
JPH0546509A (ja) 通信回線の定義方式
JPH10149380A (ja) タイムチャート編集装置
JPH0267641A (ja) コンピユータプログラムのエラー検出方法
JPH05265742A (ja) プログラムパッチ方式

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170811

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190801

Year of fee payment: 6