KR100506785B1 - 정보의 업데이트 및 배포 시스템 및 방법 - Google Patents

정보의 업데이트 및 배포 시스템 및 방법 Download PDF

Info

Publication number
KR100506785B1
KR100506785B1 KR10-2003-7000910A KR20037000910A KR100506785B1 KR 100506785 B1 KR100506785 B1 KR 100506785B1 KR 20037000910 A KR20037000910 A KR 20037000910A KR 100506785 B1 KR100506785 B1 KR 100506785B1
Authority
KR
South Korea
Prior art keywords
update
code
resident
updated
information
Prior art date
Application number
KR10-2003-7000910A
Other languages
English (en)
Other versions
KR20030071750A (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 KR20030071750A publication Critical patent/KR20030071750A/ko
Application granted granted Critical
Publication of KR100506785B1 publication Critical patent/KR100506785B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 소프트웨어(110a), 디바이스(104a), 및 데이터(110c)로 구성된 디지털 정보 시퀀스를 업데이트하는데 효과적인 디바이스, 시스템, 및 방법을 설명한다. 부가하여, 이들 디지털 정보 시퀀스는, 제한되지 않지만, 파일, 메모리 위치, 및/또는 삽입 저장 위치를 포함하는 다양한 형태로 저장되어 사용된다. 설명된 발명은 이와 같이 다수의 파일로 구성된 업데이트 소프트웨어의 내용으로 많은 종류의 디지털 정보 시퀀스를 업데이트하기에 적절하다. 더욱이, 여기서 설명된 디바이스, 시스템, 및 방법은 종래 기술에 숙련된 개발자에게 필요에 따라 업데이트 정보를 발생하는 개선된 기능을 제공하고, 부가하여 에러가 쉽게 발생되지 않고 기존 기술을 사용하는 것 보다 더 신속하게 실행될 수 있는 간략화된 업데이트 경로를 통해 사용자가 진행하도록 허용한다.

Description

정보의 업데이트 및 배포 시스템 및 방법{SYSTEM AND METHOD FOR UPDATING AND DISTRIBUTING INFORMATION}
본 발명은 일반적으로 정보 업데이트 시스템에 관한 것으로, 보다 구체적으로는 플랫폼(platform)에 영향을 받지 않는 방식으로 업데이트의 크기를 줄이고 그 업데이트를 배포하는 정보 업데이트를 위한 소프트웨어 시스템 및 방법에 관한 것이다.
소프트웨어 및 하드웨어 기술이 신속하고 연속적으로 진보됨에 따라, 기존 디바이스 및 소프트웨어 컴포넌트의 유지보수가 점차 증가되고 있다. 정보 업데이트(update) 및 패치(patch)의 상례적인 설치는 컴퓨터, 디바이스, 및 소프트웨어 애플리케이션이 그 동작 수명 동안 충분히 기능성을 유지하는 것을 보장하는데 필수적인 것으로 인식되고 있다. 불행하게도, 많은 디바이스 및 애플리케이션에서, 업데이트 관리는 번거롭고, 시간이 많이 소모되고, 에러가 발생되기 쉬운 프로세스가 될 수 있다. 이러한 문제점들은 메모리 제한 및 대역폭 제한으로 인해 휴대폰 및 개인 휴대 단말기와 같은 휴대용 전자 디바이스에서 때로 더 악화된다. 더욱이, 휴대용 전자 디바이스에서는 종종 편리하고 신뢰할 수 있는 방식으로 자동화 업데이트 동작을 수행하는 기능이 부족하다. 그 결과, 하드웨어 및 소프트웨어 시스템 모두와 연관되어 사용될 수 있는 개선된 업데이트 프로세스에 대한 요구가 진행되고 있다. 더욱이, 메모리 제한 및 대역폭 제한으로 인하여 발생되는 잠재적인 문제점을 완화시키는데 도움이 되도록 업데이트 패키지의 크기를 감소시키는 업데이트 방법이 필요하다.
업데이트가능한 전자 디바이스 및 소프트웨어의 증가된 복잡성은 때로 빈번한 유지보수를 필요로 하고, 주 단위로, 또는 월 단위로 업데이트가 가능해지고 적용된다. 업데이트 프로세스 동안, 업데이트가 부적절하게 수행되거나 중단되는 경우, 문제가 종종 발생하여, 데이터 손상, 프로그램 기능성의 손실, 또는 하드웨어 고장을 일으킨다. 이는 이용가능한 업데이트가 시기 적절하고 효율적인 방식으로 설치되는 것을 보장하는데 중요한 장애물을 개발자 및 소비자 모두에게 준다. 부가하여, 개발자는 사용자에게 필요한 업데이트, 패치, 및 기존 소프트웨어 및/또는 하드웨어 컴포넌트의 새로운 버전이 제공되는지를 보장하는데 상당한 양의 시간 및 자원을 바쳐야 한다.
개발자가 해결하여야 할 일부 관심사는 많은 고객에게 업데이트를 제공하고 저장하는데 요구되는 상당한 양의 자원, 고객이 업데이트를 적절하게 적용하는데 도움이 되는 것과 관련된 기술적인 지원 문제점, 및 시기 적절하고 효율적인 방식으로 고객에게 업데이트가 배포되는 방법을 포함한다. 이용가능한 업데이트를 획득하고 설치하는데 고도의 기술이 필요하고 그 기술이 평균적인 고객의 기술을 넘어선 기술과 관련되는 경우, 또 다른 문제점이 존재한다. 고객이 업데이트를 검색할 수 있더라도, 적절한 설치를 해야 문제점에 직면하게 된다. 업데이트 패키지가 부적절하게 설치되면, 소프트웨어가 잘못되거나 업데이트가 적용되는 디바이스를 동작되지 않게 할 수 있고, 고객-관련 업데이트 문제점을 해결할 때 개발자에게 더 부담을 줄 수 있다. 업데이트가능한 컴포넌트를 갖는 전자 디바이스에 대한 의존도가 증가함에 따라, 필요하거나 원하는 대로 업데이트가 즉시 검색되어 적절하게 설치되는 것을 보장하는, 더 신속하고 더 직관적인 업데이트 기능과 더 작은 업데이트 파일 크기가 필요하다. 많은 경우에서, 업데이트 패키지의 용이성, 신뢰성, 및 이용가능성은 고객수 및 충성도에 상당한 영향을 줄 수 있어, 성공적인 개발자나 사업주의 두드러진 특성이 된다.
비록 뛰어난 업데이트 시스템의 중요성이 명확하지만, 종래의 업데이트 솔루션은 통상적으로 많은 결함을 갖는다. 이들 문제점은 특히 휴대용 전자 디바이스에서 일반적이고, 업데이트 패키지의 생성, 배포, 및 설치에 관련된 많은 요소에서 발생된다. 예를 들어, 휴대폰과 같은 전자 디바이스는 종종 업데이트 프로세스에 이용가능한 저장 공간 또는 이용가능한 메모리에 대해 제한된다. 업데이트 패키지의 크기는 이들 디바이스에서 감소된 자원 이용가능성을 수용하기 위해 최소로 유지되어야 하고, 그 결과, 이들 디바이스에서 내장 코드의 상당한 변경이나 수정을 수행하는 기능이 제한될 수 있다. 더욱이, 완전한 운영 체제 대체나 유지보수를 지향하는 휴대용 전자 디바이스에 대한 종래의 업데이트 방법은 디바이스가 업데이트를 적용하는 전용 장치에 유선 연결로 물리적으로 연결될 것을 요구한다. 이러한 방식의 업데이트는 특수 하드웨어를 요구하고, 디바이스가 제작자나 적절한 서비스 위치에 복귀하여 업데이트될 필요가 있다. 이는 사용자에게 불편하고 업데이트될 디바이스의 수가 많을 때 실용적이지 못할 수 있다.
업데이트 패키지의 무선 획득 및 설치를 지원하는 디바이스에서는 이용가능한 업데이트 패키지를 배포하는데 필요한 대역폭 제한으로 인한 문제점이 자주 발생된다. 더욱이, 무선 방법에 의해 업데이트 패키지를 획득하는데는 많은 시간이 걸리고 중단이나 데이터 손상이 일어날 수 있다. 업데이트 패키지를 획득한 이후에도, 업데이트의 설치는 종종 사용자측에게 상당한 기술 전문적 지식을 요구하여 업데이트 패키지의 적절한 설치를 복잡하게 만든다. 이때, 사용자는 성공적인 방식으로 업데이트를 적용하거나 업데이트되는 코드의 이전 버전을 제거하는 것과 연관된 문제점에 직면할 수 있다. 이는 사용자로 하여금 오랜 기간 동안 또는 어떤 경우 모두에 업데이트 동작을 수행하지 못하게 하는 또 다른 문제점을 제공한다.
많은 수의 사용자에게 업데이트를 제공하는 대중적으로 액세스가능한 서버에 의존하는 업데이트 관리 시스템에서 또 다른 문제점이 존재한다. 이러한 서버는 종종 바쁘고 혼잡해져 업데이트되는 효율성을 저하시킨다. 업데이트 요구사항으로 인해 생기는 추가의 복잡성은 제품 버전 수명을 단축시킨다. 수 개월 마다(또는 '버그픽스(bug fixes)' 및 인트라-버전 업데이트의 경우에는 수 주 마다) 새로운 소프트웨어 버전이 이용가능해지는 것은 흔한 일이다. 이는 업데이트 서비스를 유지하는데 요구되는 개발자 자원에 대한 요구를 증가시키고, 개발자에게 기존 소프트웨어 유지보수에 추가 자원을 소비하게 하므로, 개발자의 초점이 잠재적으로 새로운 제품 기능을 개발하는 것에서 오래된 버전을 지원 및 업데이트하는 것으로 옮겨지게 한다. 사업적인 관점에서, 소프트웨어 업데이트는 일반적으로 비수익 창출 활동으로 인식되고, 이는 과도한 양의 개발자 자원을 소모할 수 있다. 그러므로, 기존 소프트웨어에 서비스를 제공하면서 동시에 고객에게 최신 소프트웨어 버전을 제공하는데 필요한 시간, 자원, 및 인력을 감소시킬 필요가 증가하고 있다.
업데이트를 보다 신속하고 보다 직관적으로 이루려는 시도로 내부-설계 및 지원 업데이트 솔루션이 개발되었다. 많은 문제점들은 통상적으로 비용이 많이 들고 독점적이고, 또한 플랫폼에 특정화된 솔루션과 연관된다. 업데이트 생성에 대한 다른 방법은 업데이트를 생성하거나 소프트웨어 패치를 생성하도록 설계된 상업적인 소프트웨어 패키지를 사용한다. 이들 방법은 모두 융통성 및 파일 크기에 대한 근본 문제점을 갖는다. 상업적으로 이용가능한 소프트웨어 업데이터(updater)는 가격이 비싸고, 통상적으로 불필요하게 큰 파일 크기를 갖는 업데이트를 생성할 수 있다. 일부 예에서는 업데이터에 의해 발생된 업데이트 및 새로운 버전이 실질적으로 실제 패치라기 보다는 소프트웨어의 전체 버전이다. 큰 업데이트 파일 크기와 관련된 문제점 때문에, 개발자는 패치를 빈번히 출시하는 것을 망설일 수 있고, 그 결과로 더 긴 소프트웨어 개발 싸이클로 이어진다. 이는 큰 업데이트 파일의 생성 및 지불을 보장하기에 충분한 변경 및/또는 개선이 있을 때에만 사실상 출시될 수 있는 제한된 수의 업데이트로 인하여 고객에게 불편함을 줄 수 있다.
상기로부터, 편리하고 신뢰할 수 있는 업데이트 관리 시스템의 필요성이 증하감을 알 수 있다. 이를 위해서는 보다 신속한 획득이 가능하도록 크기가 감소된 업데이트를 생성하고 배포하는 시스템이 필요하다. 부가적으로, 하드웨어 및 소프트웨어 시스템 모두에 원하는 업데이트를 설치하는데 편리하고 문제가 없는 방법을 제공하는 자동화 프로세스가 필요하다.
<발명의 요약>
본 발명은 소프트웨어, 디바이스, 및 데이터를 포함하는 디지털 정보 시퀀스의 효율적인 업데이트에 대한 상기의 필요성을 만족시킨다. 또한, 이들 디지털 정보 시퀀스는, 파일, 메모리 위치, 또는 내장된 저장 위치를 포함하는 다양한 형태로 저장되어 사용될 수 있지만 이에 제한되지 않는다. 본 명세서에서 설명되는 시스템 및 방법은 필요에 따라 업데이트 정보를 생성하고, 부가적으로 에러가 잘 발생되지 않고 기존 기술을 사용하는 것보다 더 신속하게 수행될 수 있는 간략화된 업데이트 경로를 통해 사용자가 진행하도록 허용하는 개선된 기능을 개발자에게 제공한다.
한 실시예에서, 본 발명은 제1 다수의 디지털 정보 시퀀스를 포함하는 업데이트된 동작 코드로 다수의 분산형 전자 디바이스를 업데이트시키는 시스템을 포함하고, 여기서 다수의 전자 디바이스는 각각 그 전자 디바이스 내에 저장되는 제2 다수의 디지털 정보 시퀀스를 포함하는 상주 동작 코드를 포함한다. 시스템은 또한 업데이트된 동작 코드를 포함하는 제1 다수의 디지털 정보 시퀀스의 화상을, 상주 동작 코드를 포함하는 제2 다수의 디지털 정보 시퀀스의 화상에 비교하는 업데이트 생성기를 포함하고, 업데이트된 동작 코드와 상주 동작 코드 사이의 차이를 식별하고, 이어서 상주 동작 코드의 제2 다수의 디지털 정보 시퀀스 중 적어도 일부분을 사용하여 업데이트된 동작 코드를 어떻게 생성하는가를 지정하는 명령어 세트를 포함하는 업데이트 패키지를 생성한다. 시스템은 또한 업데이트 패키지가 전자 디바이스에 의해 수신되어 그 안에 저장되도록 하는 전자 디바이스에 대한 업데이트 패키지를 배포하는 배포 시스템을 포함한다. 시스템은 또한 다수의 전자 디바이스 각각에 상주하는 다수의 클라이언트 모듈을 포함하고, 다수의 클라이언트 모듈은 배포 시스템을 액세스하여 업데이트 패키지를 수신하고, 업데이트 패키지의 명령어 세트는 상주 동작 코드로부터 제2 다수의 디지털 정보 시퀀스 중 적어도 일부분을 사용하여 업데이트된 동작 코드를 생성하도록 클라이언트 모듈에 의해 실행된다.
또 다른 특성으로, 본 발명은 제1 코드 버전을 제2 코드 버전으로 변환시키는 다수의 변환 명령어를 포함하는 업데이트 패키지를 사용하여, 제1 코드 버전을 포함하는 제1 다수의 데이터 시퀀스를 포함하는 전자 디바이스를, 제2 다수의 데이터 시퀀스를 포함하는 제2 코드 버전으로 업데이트하는 시스템을 포함한다. 시스템은 또한 제1 다수의 데이터 시퀀스와 제2 다수의 데이터 시퀀스 사이에서 패턴 차이를 식별하도록 제1 코드 버전과 제2 코드 버전 사이에서 버전 비교를 수행하는 업데이트 생성기를 포함하고, 여기서 식별된 패턴 차이는 식별된 패턴 차이를 구성할 때 사용될 수 있는 제1 다수의 데이터 시퀀스 중 일부분을 식별하는 변환 명령어를 사용하여 엔코드되고, 이어서 변환 명령어를 사용하여 업데이트 패키지를 형성한다. 시스템은 또한 업데이트 생성기로부터 업데이트 패키지를 수신하고 그 업데이트 패키지를 전자 디바이스에 배포하는 배포 시스템을 포함한다. 시스템은 또한 업데이트 패키지의 변환 명령어를 실행하여 전자 디바이스에 상주하는 제1 코드 버전을 업데이트된 제2 코드 버전으로 변환시키는, 전자 디바이스에 상주하는 업데이트 에이전트(update agent)를 포함한다.
또 다른 특성으로, 본 발명은 다수의 데이터 블록을 포함하는 업데이트된 동작 코드로, 분산된 다수의 전자 디바이스를 업데이트하는 시스템을 포함하고, 분산된 다수의 전자 디바이스는 각각 다수의 데이터 블록으로 저장된 상주 동작 코드를 포함한다. 시스템은 또한 상주 동작 코드의 다수의 데이터 블록을 업데이트된 동작 코드의 다수의 데이터 블록과 비교하고, 그에 의해 상주 동작 코드의 다수의 데이터 블록 중 적어도 일부분을 사용하여 업데이트된 동작 코드를 생성하는 방법을 나타내는 명령어 세트를 포함하는 업데이트 패키지를 생성하는 업데이트 생성기를 포함한다. 시스템은 또한 업데이트 패키지를 포함하고, 분산된 다수의 전자 디바이스 각각에 의해 액세스가능한 배포 시스템을 포함한다. 시스템은 또한 분산된 다수의 전자 세트 각각에 상주하는 다수의 클라이언트 모듈을 포함하고, 다수의 클라이언트 모듈은 업데이트 패키지를 수신할 수 있도록 배포 시스템을 액세스하고, 명령어 세트는 상주 동작 코드를 포함하는 다수의 데이터 블록을 사용하여, 클라이언트 모듈이 업데이트된 동작 코드를 포함하는 다수의 데이터 블록 중 적어도 일부분을 생성하도록 클라이언트 모듈에 명령어를 제공한다.
또 다른 특성으로, 본 발명은 다수의 데이터 블록을 포함하는 업데이트된 동작 코드로, 분산된 다수의 전자 디바이스를 업데이트하는 시스템을 포함하고, 분산된 다수의 전자 디바이스는 각각 다수의 데이터 블록으로 저장된 상주 동작 코드를 포함한다. 시스템은 또한 상주 동작 코드의 다수의 데이터 블록을 업데이트된 동작 코드의 다수의 데이터 블록과 비교하여 업데이트된 동작 코드와 상주 동작 코드 간에 서로 다른 업데이트 데이터 블록을 식별하는 업데이트 생성기를 포함하고, 업데이트 생성기는 상주 동작 코드를 업데이트된 동작 코드로 변환하는 방법과 상주 동작 코드의 다수의 데이터 블록 중 적어도 일부를 사용하여 업데이트 데이터 블록을 생성하는 방법을 나타내는 명령어 세트를 포함하는 업데이트 패키지를 생성한다. 시스템은 또한 업데이트 패키지를 포함하고 분산된 다수의 전자 디바이스 각각에 의해 액세스가능한 배포 시스템을 포함한다. 시스템은 또한 분산된 다수의 전자 세트 각각에 상주하는 다수의 클라이언트 모듈을 포함하고, 다수의 클라이언트 모듈은 업데이트 패키지를 수신할 수 있도록 배포 시스템을 액세스하고, 명령어 세트는 클라이언트 모듈이 상주 동작 코드를 업데이트된 동작 코드로 수정하도록 클라이언트 모듈에 명령어를 제공하고, 또한 클라이언트 모듈은 수신된 명령어 세트를 사용함으로써 업데이트 데이터 블록 중 적어도 일부를 생성하고, 상주 동작 코드의 데이터 블록에 동작을 수행하여 업데이트 데이터 블록을 생성한다.
또 다른 실시예에서, 본 발명은 전자 디바이스의 제1 저장부에 저장된 상주 동작 코드를 업데이트된 동작 코드로 업데이트하는 방법을 포함한다. 그 방법은 또한 상주 동작 코드를 업데이트된 동작 코드로 변환시키는 다수의 변환 동작을 포함하는 업데이트 패키지를 개발하는 단계를 포함한다. 그 방법은 또한 업데이트 패키지를 전자 디바이스에 전달하는 단계를 포함한다. 그 방법은 또한 상주 동작 코드 중 일부를 제2 저장부에 복사하는 단계를 포함한다. 그 방법은 또한 상주 동작 코드를 업데이트된 동작 코드로 변환시키는 업데이트 패키지의 변환 동작을 사용하여, 제2 저장부에 저장된 상주 동작 코드 중 일부분을 업데이트하는 단계를 포함한다. 그 방법은 또한 제1 저장부에 저장된 상주 동작 코드 중 일부를, 제2 저장부에 저장된 업데이트된 동작 코드 일부로 대체하는 단계를 포함한다. 그 방법은 또한 상주 동작 코드가 업데이트된 동작 코드로 완전히 업데이트될 때까지 상기에 기술된 복사, 업데이트, 및 대체 단계를 반복하는 단계를 포함한다.
또 다른 실시예에서, 본 발명은 그에 저장된 동작 코드를 갖는 비휘발성 저장부, 통신 매체를 통해 다수의 명령어를 포함하는 업데이트 패키지를 수신하도록 적응되는 휘발성 저장부, 및 비휘발성 저장부에 저장된 동작 코드를 업데이트하도록 업데이트 패키지의 명령어를 실행하는 컨트롤러를 포함하는 업데이트가능한 전자 디바이스를 포함한다. 본 실시예에서, 컨트롤러는 순차적으로 (i) 비휘발성 저장부에서 휘발성 저장부로 동작 코드의 원래의 부분을 검색하고, (ii) 휘발성 저장부에서 검색된 부분에 업데이트 패키지의 명령어를 적용하여 검색된 원래의 동작 코드 부분을 업데이트된 동작 코드 부분으로 변환시키고, 또한 (iii) 원래의 동작 코드 부분을 업데이트된 동작 코드 부분으로 대체하도록 구성된다.본 발명의 이들 및 기타 특성, 이점 및 새로운 특징들은 이하의 상세한 기술 및 첨부된 도면을 참조하여 더욱 명백해질 것이다. 도면에서, 동일한 구성요소는 동일한 참조 번호를 지닌다.
도 1A는 업데이트 관리 및 배포 시스템의 한 실시예를 도시하는 블록도.
도 1B는 업데이트 서버 어레이를 포함하는 업데이트 관리 및 배포 시스템의 또 다른 실시예를 도시하는 블록도.
도 1C는 업데이트 저장 및 업데이트 디바이스 서버를 갖춘 업데이트 서버 어레이를 포함하는 업데이트 관리 및 배포 시스템의 또 다른 실시예를 도시하는 블록도.
도 1D는 업데이트 저장 및 다수의 업데이트 디바이스 서버를 갖춘 업데이트 서버 어레이를 포함하는 업데이트 배포 시스템의 또 다른 실시예를 도시하는 블록도.
도 2A는 업데이트 프로세스의 한 실시예를 설명하는 흐름도.
도 2B는 업데이트 프로세스의 또 다른 실시예를 설명하는 흐름도.
도 3은 업데이트 생성 프로세스의 한 실시예를 설명하는 흐름도.
도 4는 해쉬 어레이(hash array)의 한 실시예를 도시하는 도면.
도 5는 명령어 세트 생성 프로세스의 한 실시예를 설명하는 흐름도.
도 6A는 런 렝스(run length) 엔코딩 명령어의 한 실시예를 설명하는 도면.
도 6B는 기존 시퀀스 명령어의 한 실시예를 설명하는 도면.
도 6C는 해쉬 명령어의 한 실시예를 설명하는 도면.
도 6D는 디폴트(default) 명령어의 한 실시예를 설명하는 도면.
도 7은 재구성된 디지털 정보 시퀀스의 한 실시예를 설명하는 도면.
도 8A는 예시적인 메모리 또는 저장 아키텍처의 한 실시예를 도시하는 도면.
도 8B는 비휘발성 메모리 또는 저장 영역의 한 실시예를 도시하는 도면.
도 9는 뱅크 단위(bank-by-bank) 업데이트 방식의 한 실시예를 설명하는 흐름도.
도 10은 뱅크 단위 업데이트 프로세스를 사용하는 업데이터 패키지의 응용에 대한 한 실시예를 설명하는 도면.
도 11은 고장 허용 프로세스(fault tolerance process)의 한 실시예를 설명하는 흐름도.
도 12는 서명 생성 및 인증 프로세스의 한 실시예를 설명하는 흐름도.
이제는 동일한 번호가 동일한 부분을 칭하는 도면을 참고한다. 도 1A는 업데이트 배포 시스템(100)의 한 실시예를 도시한다. 업데이트 배포 시스템(100)은 업데이트 생성기(102)와 클라이언트 디바이스(104)를 포함한다. 한 실시예에서, 업데이트 생성기(102)는 소프트웨어 애플리케이션의 오래된 버전과 같은 제1 코드 버전(106) 및 소프트웨어 애플리케이션의 새로운 버전과 같은 제2 코드 버전(108)을 수신한다. 업데이트 생성기(102)는 원래의 제1 코드 버전(106)을 업데이트된 제2 코드 버전으로 변환시키는데 사용되는 다수의 동작을 나타내는 명령어 세트를 포함하는 업데이트 패키지(110)를 만든다. 업데이트 패키지(110)는 이어서 통신 매체를 통해 클라이언트 디바이스(104)에 전달된다. 실행가능한 통신 매체용 종류로는 유선 매체, 이동가능형 저장 매체, 무선 매체, 휘발성 및 비휘발성 메모리 기반의 매체, 또한 인터넷을 포함한다. 다른 통신 매체로는, 예를 들어, LAN(local area network), WAN(wide area network), 공용 인터넷, 전용 인터넷, 개인 컴퓨터 네트워크, 보안 네트워크, 전용 네트워크, 공용 네트워크, VAN(value-added network), 대화형 텔레비전 네트워크, 무선 데이터 통신 네트워크, 양방향 케이블 네트워크, 대화형 키오스크(kiosk) 네트워크 등이 포함될 수 있다. 부가하여, 클라이언트 디바이스(104)는 컴퓨터, 개인 휴대 단말기, 유선 전화, 이동 전화, 페이저, 전자 주변 디바이스, 가전제품, 및 업데이트 패키지를 수신하도록 구성될 수 있는 다른 디바이스와 같이, 업데이트 패키지(110)를 수신하여 처리할 수 있는 다양한 종류의 디바이스를 포함할 수 있다.
한 특성으로, 명령어 세트는 기존 제1 코드 버전(106)을 제2 코드 버전(108)으로 효율적으로 변환시키도록 클라이언트 디바이스(104)에 의해 채용되는 변환 프로세스를 사용한다. 명령어 세트와 변환 프로세스의 구현은 이후 보다 상세히 논의된다.
클라이언트 디바이스(104)가 안전하고 확실하게 업데이트 생성기(102)로부터 업데이트 패키지(110)를 얻을 수 있는 적어도 한가지의 방법은 상술된 통신 매체 종류 중 적어도 하나를 통하여 업데이트 패키지(110)의 형태로 정보를 전달함으로써 발생될 수 있다. 클라이언트 디바이스(104)에는 또한 업데이트 생성기(102)와 양방향으로 통신하는 기능이 갖추어질 수 있다. 한 실시예에서, 클라이언트 디바이스(104)는 유형, 모델, 및/또는 디바이스 상표 뿐만 아니라 클라이언트 디바이스(104)에 의해 현재 사용되고 있는 동작 소프트웨어나 애플리케이션의 버전을 포함하는 아이덴티티 정보를 전달한다. 업데이트 생성기(102)는 클라이언트 디바이스(104)로부터 아이덴티티 정보를 수신하고, 이어서 클라이언트 디바이스(104)에 의해 요구되고 및/또는 필요로 되는 원하는 업데이트 패키지(110)를 생성한다. 다른 방법으로, 업데이트 생성기(102)에는 다수의 업데이트 패키지(110)를 생성하여 제공하는 기능이 갖추어져, 아이덴티티 정보를 수신하기 이전에 다수의 동작 소프트웨어 버전이나 애플리케이션을 참고할 수 있다. 한 실시예에서, 업데이트 생성기(102)는 메모리나 저장 장치로부터 원하는 업데이트 패키지(110a)의 보관 버전을 검색한다. 부가하여, 업데이트 생성기(102)는 넓은 범위의 특정 클라이언트 디바이스(104)에 대한 동작 소프트웨어 버전 정보를 포함하는 보관된 업데이트 패키지(110)의 리스트를 포함하는 버전 목록을 생성할 수 있다. 일단 업데이트 패키지(110)가 생성되고, 확인되고, 또한 이용가능해지면, 업데이트 발생기(102)는 서버로 기능하여 원하는 업데이트 패키지(110)를 요청하는 또는 이를 필요로 하는 클라이언트 디바이스(104)에 전달한다. 동작 소프트웨어의 업데이트 버전이 이용가능해질 때 하나 이상의 업데이트 패키지(110)가 생성되어 보관될 수 있는 것을 이해할 것이다. 더욱이, 업데이트 패키지(110)는 예를 들어 비휘발성 메모리 컴포넌트나 휴대용 전자 디바이스를 업데이트하는 데 요구되는 하드웨어 업데이트 시스템과 사용하도록 준비된다. 업데이트 관리 시스템의 바람직한 한가지 특성은 무선 업데이트 프로시져이나 OTA(over the air) 업데이트에 사용되도록 즉시 적용될 수 있다는 점이다. 이 방법은 하드웨어 변화 없이 디바이스에서 소프트웨어나 펌웨어 컴포넌트를 업데이트하도록 허용한다. 본 명세서에서 설명되는 업데이트 방법은 또한 애플리케이션, 동작 기능, 운영 체제 소프트웨어 등을 포함하여 클라이언트 디바이스를 업데이트하는데 사용될 수 있다. 더욱이, 업데이트 동작은 디바이스에 상주하는 기존 코드에서의 에러나 문제점을 정정하거나, 새로운 특성이나 기능을 부가하거나, 상주하는 애플리케이션을 변경 또는 수정하거나, 또는 이후 보다 상세히 설명될 방식으로 다른 원하는 업데이트 동작을 수행할 수 있다.
한 실시예에서, 업데이트 생성기(102)는 업데이트 패키지(100)의 생성 및 배포를 모두 담당하는 단일 컴퓨팅 디바이스 또는 서버 컴포넌트를 포함한다. 업데이트 생성기(102)에는 클라이언트 디바이스(104)에 대한 업데이트 패키지(110)의 명령어 세트를 구성하는 특정화된 소프트웨어가 수행되도록 갖추어진다. 또한, 업데이트 생성기(102)는 제1 코드 버전(106)을 제2 코드 버전(108)과 비교함으로써 업데이트 패키지(110)를 생성한다. 업데이트 패키지(110)는 바람직하게 제1 코드 버전(106)을 제2 코드 버전(108)으로 변환시키는 명령어 세트로 코드화된 수학적 동작 및 명령어를 포함한다. 업데이트 관리 시스템의 주요 특성은 업데이트 패키지(110)가 디바이스에 상주하는 기존 코드나 정보를 사용하는 방식으로 생성된다는 점이다. 업데이트 패키지를 생성하는 방법은 특히 코드 버전(106, 108) 간에 차이를 분석하고, 제1 코드 버전(106)에서 제2 코드 버전(108)으로 변환하는 것이 가능할 때 디바이스내의 기존 정보 시퀀스를 사용하도록 설계된다. 이 특성은 종래 방법과 비교해 업데이트 패키지의 크기를 상당히 감소시킨다는 점에서 중요하다. 한 특성으로, 업데이트 패키지(110)의 파일 크기는 제1 코드 버전(106)에 대해 90 퍼센트 이상 감소될 수 있다. 유리하게, 업데이트 패키지(110)의 파일 크기가 비교적 작고 간결하므로, 업데이트 패키지(110)는 클라이언트 디바이스(104)의 메모리 할당 크기 및 대역폭 사양을 크게 변경시키지 않고 클라이언트 디바이스(104)의 메모리 컴포넌트에 쉽게 전달되어 저장될 수 있다. 한 특성으로, 업데이트 생성기(102)는 하나 이상의 다른 유형의 클라이언트 디바이스(104)에 배포하도록 다수의 업데이트 패키지(110)를 생성하여 보관한다. 각 클라이언트 디바이스(110)는 서버에 의해 선택적으로 전송되는, 원하는 업데이트 패키지(110)의 전송을 요구할 수 있다.
도 1B는 업데이트 배포 시스템(120)의 또 다른 실시예를 설명한다. 업데이트 배포 시스템(120)은 업데이트 배포 시스템(120)이 업데이트 서버 어레이(122)를 포함하는 분리된 컴퓨팅 컴포넌트로 도시된 점을 제외하고 도 1A의 업데이트 배포 시스템과 그 기능 및 범위가 유사하다. 업데이트 배포 시스템(120)은 업데이트 생성기(102), 업데이트 서버 어레이(122), 및 다수의 클라이언트 디바이스(104a, 104b, 104c)를 포함한다. 본 특정 실시예에서, 업데이트 생성기(102)는 다수의 업데이트 패키지(110a, 110b, 110c)를 생성하고 다수의 업데이트 패키지(110a, 110b, 110c)를 업데이트 서버 어레이(122)에 전달하도록 도시된다. 부가하여, 업데이트 서버 어레이(122)는 순차적으로 다수의 업데이트 패키지(110a, 110b, 110c)를 다수의 클라이언트 디바이스(104a, 104b, 104c)에 전달한다.
한 특성으로, 업데이트 서버 어레이(122)는 하나 이상의 컴퓨팅 디바이스를 포함하고, 이는 업데이트 생성기(100)로부터 전달된 다수의 업데이트 패키지(110a, 110b, 110c)를 저장하여 보관하도록 구성된다. 저장 컴포넌트는 하드 드라이브, 자기 테이프 드라이브, RAM(random access memory), ROM(read only memory), 및 컴팩트 디스크, 플로피 디스크, 자기 테이프를 포함하는 이동가능형 RAM 및/또는 ROM-기반의 저장 매체를 포함하지만, 이에 제한되지 않는다. 부가하여, 업데이트 서버 어레이(122)에는 다수의 클라이언트 디바이스(104a, 104b, 104c)와 독립적으로 양방향 통신하는 기능이 갖추어질 수 있고, 여기서 업데이트 서버 어레이(122)는 유형, 모델, 디바이스 상표, 클라이언트 디바이스(104a, 104b, 104c)에서 현재 사용되고 있는 동작 소프트웨어나 펌웨어의 버전을 포함하는 아이덴티티 정보를 수신한다. 부가하여, 클라이언트 디바이스(104a, 104b, 104c)는 필요에 따라 또는 원하는 경우 업데이트 패키지(110a, 110b, 110c)를 요구할 수 있다.
한 특성으로, 업데이트 서버 어레이(122)는 특정된 업데이트 패키지(110a, 110b, 110c)의 전달에 대한 요청과 함께 각 클라이언트 디바이스(104a, 104b, 104c)로부터 아이덴티티 정보를 수신한다. 업데이트 서버 어레이(122)는 그 결과 요청되는 보관 업데이트 패키지를 찾아, 요청되는 업데이트 패키지를 클라이언트 디바이스에 전달한다. 업데이트 서버 어레이(122)는 또한 클라이언트 디바이스(104)로부터의 요청 없이 업데이트 패키지(110)를 클라이언트 디바이스(104)에 자동적으로 전달할 수도 있다.
유리하게, 업데이트 서버 어레이(122)는 업데이트 배포의 융통성 및 효율성을 증가시킬 목적으로 다양한 상기의 통신 매체 유형 중 적어도 하나를 통해 다수의 클라이언트 디바이스(104a, 104b, 104c)에 다수의 업데이트 패키지(110a, 110b, 110c)를 전달하도록 조정할 수 있다. 다수의 클라이언트 디바이스(104a, 104b, 104c) 중 적어도 하나로부터 아이덴티티 정보를 수신한 이후에, 업데이트 서버 어레이(122)는 메모리 또는 저장 보관으로부터 요구되는 버전의 업데이트 패키지(110a, 110b, 110c)를 검색하고, 이어서 원하는 업데이트 패키지(110a, 110b, 110c)를 특정 클라이언트 디바이스(104a, 104b, 104c)에 전달한다. 한 실시예에서, 업데이트 서버 어레이(122)는 클라이언트 디바이스(104a, 104b, 104c)로부터의 요청 없이 클라이언트 디바이스(104a, 104b, 104c)에 업데이트 패키지(110a, 110b, 110c)를 자동적으로 전달할 수 있다.
다른 방법으로, 업데이트 서버 어레이(122)는 클라이언트 디바이스(104a, 104b, 104c)의 아이덴티티, 상표, 및 모델에 따라 넓은 범위의 특정 클라이언트 디바이스(104a, 104b, 104c)에 관련되는 동작 소프트웨어 버전 정보를 포함하는 보관된 업데이트 패키지(110a, 110b, 110c)의 리스트를 포함하는 서버 목록을 생성할 수 있다. 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)를 인식하자마자, 업데이트 서버 어레이(122)는 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)에 서버 목록을 전달한다. 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)는 이어서 그 목록을 검토하고, 업데이트 서버 어레이(122)로부터 요청을 하는 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)에 전달될 업데이트 패키지(110a, 110b, 110c)에 대한 요처을 제출한다.
또 다른 특성으로, 업데이트 패키지(110)는 상술된 통신 매체 중 적어도 하나를 통해 업데이트 생성기(110)로부터 업데이트 서버 어레이(122)에 전달되고, 이는 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)에 대해 업데이트 패키지(110a, 110b, 110c)의 이용가능성 증가를 촉진한다. 한 실시예에서, 업데이트 서버 어레이(122)는 다양한 클라이언트-기반의 디바이스(104a, 104b, 104c)에 대해 다수의 업데이트 패키지(110a, 110b, 110c)를 편리하게 저장할 수 있는 멀티플랫폼(multi-platform) 컴퓨팅 디바이스로, 각 클라이언트 디바이스(104a, 104b, 104c)와 독립적으로 통신을 확립한다. 업데이트 서버 어레이(122)는 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)를 인식하여, 하나 이상의 클라이언트 디바이스(104a, 104b, 104c)가 필요로 하는, 요청되는 및/또는 원하는 업데이트 패키지(110a, 110b, 110c)를 결정한다. 예를 들어, 업데이트 패키지(110)는 클라이언트 디바이스(104)에 전송되어, 업데이트 패키지(110)를 디코딩하고 업데이트 및/또는 변환되도록 지정되고 설계된 동작 소프트웨어 컴포넌트를 변경할 수 있는 소프트웨어 컴포넌트를 사용하여 클라이언트 디바이스(104)에 의해 더 처리될 수 있다. 클라이언트측 업데이트 프로세스의 특성은 이후 더 상세히 설명된다. 비록 도 1B에는 분리된 컴퓨팅 컴포넌트로서 도시되지만, 업데이트 서버 어레이(122) 및 업데이트 생성기(102)가 업데이트 서버 어레이(122) 및 업데이트 생성기(102) 둘 다로 서 기능하는데 필요한 범위 및 기능을 갖춘 단일 엔티티를 포함할 수 있는 것을 이해할 것이다.
또 다른 실시예에서, 업데이트 서버 어레이(122)의 업데이트 컴퓨팅 아키텍처는 업데이트 생성기(102)에 의해 생성된 업데이트 패키지(110a, 110b, 110c) 중 적어도 하나를 사용하여 업데이트될 수 있는 다른 디바이스에 대한 정보 및 업데이트를 수집하는, 콜렉터(collector)라 칭하여지는 추가 컴포넌트를 포함한다. 본 특정 실시예에서, 콜렉터는 어느 클라이언트 디바이스(104a, 104b, 104c)가 업데이트를 요청하는가 및 어느 업데이트가 이용가능한가를 결정하기 위해 업데이트 서버 어레이(122) 및 하나 이상의 클라이언트 디바이스(104a, 104b, 104c) 모두와 통신할 수 있다. 콜렉터는 부가하여 필요한 업데이트를 획득하고, 그 때에 또는 나중에 이들을 클라이언트 디바이스(104a, 104b, 104c)에 배포한다. 이러한 방식으로, 업데이트 서버 어레이(122)를 통해 대역폭 요구조건을 배포하는 방식으로 많은 수의 클라이언트 디바이스(104a, 104b, 104c)가 순차적으로 업데이트될 수 있다. 부가하여, 업데이트 패키지(110)는 많은 수의 클라이언트 디바이스가 동시에 업데이트를 요청하여 서버가 오버런(overrun)되지 않도록 배포 부하를 완화시키기 위해 배달을 다양한 시간대로 스케쥴할 수 있다.
한 특성으로, 업데이트를 배포하는 방법은 네트워크 트래픽의 규모를 감소시키도록 하나 이상의 서버에 정보를 캐쉬(cache)하는 것을 포함한다. 이 방법을 사용하여, '최근' 업데이트 파일이 서버에 저장될 수 있고, 업데이트 패키지는 서버와 업데이트 저장소(133) 또는 업데이트 생성기(102) 사이에 추가 통신을 필요로 않고 클라이언트/서버 통신에 의해 직접적으로 디바이스 서버로부터 다운로드될 수 있다.
도 1C는 업데이트 배포 시스템(130)의 또 다른 실시예를 도시한다. 업데이트 배포 시스템(130)은 업데이트 생성기(102), 다수의 클라이언트 디바이스(104a, 104b, 104c), 및 도 1B에서 앞서 도시된 업데이트 서버 어레이(132)의 컴포넌트 버전을 포함한다. 업데이트 서버 어레이(132)의 컴포넌트 버전은 관리 컴포넌트(134)를 갖는 업데이트 저장소(133) 및 적어도 하나의 업데이트 디바이스 서버(136)를 더 포함한다. 한 특성으로, 업데이트 저장소(133)는 업데이트 생성기(102)로부터 전송된 다수의 업데이트 패키지를 보관한다.
많은 환경에서, 동작 소프트웨어 시스템은 오래된 버전에서 더 새로운 버전으로 주기적인 업데이트를 요구한다. 부가하여, 컴퓨팅 기술의 진보에 대한 적응을 클라이언트 디바이스의 수명에 걸쳐 동작 소프트웨어의 업데이트 버전이 여러번 요구될 수 있다. 이러한 요구조건을 만족시키기 위해, 업데이트 생성기(102)는 더 새로운 버전의 동작 시스템 소프트웨어가 이용가능해짐에 따라 업데이트 패키지를 생성하고, 이어서 다수의 업데이트 패키지를 메모리 또는 저장 컴포넌트에 저장 및 보관하도록 업데이트 저장소(133)로 전송한다.
예시적인 응용에서, 업데이트 관리 시스템은 휴대폰과 같은 휴대용 전자 디바이스의 OTA 업데이트를 통해 이와 함께 사용될 수 있다. 이동 전화 기술은 급격하게 변화되는 분야로, 사용자의 상승하는 요구와 기대치를 만족시키기 위해 애쓰고 있다. 이동 전화기는 또한 집적 동작 시스템 소프트웨어를 사용하는 마이크로-컴퓨팅 디바이스이다. 동작 소프트웨어는, 이동 전화기의 수명에 걸쳐, 무선 통신 기술의 변화에 대한 적응성을 증가시키기 위해 주기적인 소프트웨어 업데이트를 요구한다. 이동 통신 산업의 업데이트는 각각이 자체 동작 소프트웨어 시스템을 갖는 다수의 다른 제작 엔티티가 존재하고 사용자 기능이 이동 전화기의 다양한 상표 및 모델에 통합되어 있으므로 복잡하다. 이러한 환경에서, 업데이트 생성기(102)는 특정 제작자의 이동 통신 디바이스 상표 및 모델에 관련되는 클라이언트 디바이스(104a, 104b, 104c)에 내장된 동작 소프트웨어의 더 새로운 버전과 관련된 적절한 업데이트 패키지(110a, 110b, 110c)를 생성함으로써 이 산업의 적응 요구를 만족시킬 수 있다.
클라이언트측 업데이트 결정
한 특성으로, 클라이언트 디바이스(104)는 업데이트 저장소(133)와 통신 링크를 수립하고, 디바이스의 유형, 모델, 및 상표 및 클라이언트 디바이스(104)에 의해 현재 사용되고 있는 코드 버전을 포함하는 아이덴티티 정보를 전송한다. 업데이트 저장소(133)는 서버 목록을 전송함으로써 클라이언트에 응답한다. 앞서 설명된 바와 같이, 서버 목록은 이용가능한 업데이트 패키지를 설명하는 버전 정보를 포함한다. 더욱이, 서버 목록은 파일 크기와 같은 업데이트 패키지 특성을 설명하여, 클라이언트 저장 영역에 업데이트 패키지를 수신하여 해체하기에 충분한 공간이 이용가능한가를 클라이언트가 결정할 수 있도록 한다. 서버 목록에 설명된 이용가능한 코드 버전을 클라이언트 디바이스(104)에서 밝혀진 내장 코드 버전과 비교함으로써, 클라이언트 디바이스(104)는 적절한 업데이트 패키지(110)의 요청을 제출할 수 있다. 요청을 수신하자마자, 업데이트 저장소(133)는 원하는 업데이트 패키지(110)를 참고하여 검색하고, 이는 오래된 코드 버전을 요청된 더 새로운 코드 버전으로 적절하게 변환시키기 위한 정확한 명령어 세트에 대응한다. 또 다른 특성으로, 업데이트 저장소(133)는 요청 제출을 수신하고, 업데이트 관리 컴포넌트(134)는 요청 제출을 처리하여 업데이트 저장소(133) 또는 업데이트 디바이스 서버(136)에서 원하는 업데이트 패키지(110)를 찾는다. 일단 특정 업데이트 패키지(110)의 위치를 찾으면, 업데이트 관리 컴포넌트(134)는 원하는 업데이트 패키지(110)를 참고하여 원하는 업데이트 패키지(110)를 클라이언트 디바이스(104)에 전송하는 클라이언트 디바이스(104)와의 통신 링크를 수립하도록 업데이트 디바이스 서버(136)에 명령한다.
서버측 업데이트 결정
또 다른 실시예에서, 클라이언트 디바이스(104)는 업데이트 디바이스 서버(136)와 통신 링크를 수립하고, 디바이스의 유형, 모델, 및/또는 상표 뿐만 아니라 클라이언트 디바이스(104)에 의해 현재 사용되고 있는 동작 시스템 소프트웨어의 버전을 포함하는 아이덴티티 정보를 전달한다. 업데이트 디바이스 서버(136a)는 아이덴티티 정보를 분석하고, 서버 목록을 점검하거나 업데이트 패키지(110)의 존재에 대해 업데이트 저장소(133)에 질의한다. 서버 목록이나 업데이트 저장소(133)에서 이용가능한 동작 소프트웨어의 버전을 클라이언트 디바이스(104)에 의해 전송된 동작 소프트웨어의 내장 버전과 비교한 이후, 업데이트 저장소(133)는 업데이트 패키지(110)를 클라이언트 디바이스(104)에 전달하도록 명령한다.
한 특성으로, 업데이트 패키지(110)는 요청된 대로 클라이언트 디바이스(104)에 배포하도록 업데이트 저장소(133)에서 업데이트 디바이스 서버(136)로 전송된다. 이 경우, 업데이트 디바이스 서버(136)는 업데이트 저장소(133)에 의해 요청된 대로 업데이트 패키지(110)를 클라이언트로 전송하는 게이트웨이(gateway)로서 기능한다. 업데이트 디바이스 서버(136)의 사용은 바람직하게 부하 균형을 개선하고, 동일한 업데이트 패키지 제공자에 많은 클라이언트 디바이스(104)가 연결함으로써 생기는 대역폭 제한을 감소시킨다.
한 특성으로, 클라이언트 디바이스(104)에 의해 요청되거나 또는 클라이언트 디바이스에 필수적이라고 판정되는 특정 업데이트 패키지(110)가 업데이트 저장소(133)에서 이용가능하지 않을 경우, 업데이트 관리 컴포넌트(134)는 특정 업데이트 패키지(110)를 생성하도록 업데이트 생성기(102)에 요청을 전송한다. 일단 업데이트 패키지(100)가 생성되면, 업데이트 생성기(102)는 저장 및 요청 서비스를 위해 업데이트 저장소(133)로 업데이트 패키지(110)를 전송한다. 업데이트 저장소(133)의 메모리 또는 저장 영역에 업데이트 패키지(110)를 저장한 이후, 업데이트 관리 컴포넌트(134)는 원하는 업데이트 패키지(110)를 업데이트 디바이스 서버(136)로 전송한다. 이어서, 업데이트 디바이스 서버(136)는 클라이언트 디바이스(104b)와 통신을 수립하고 요청된 업데이트 패키지를 클라이언트 디바이스(104)로 전송한다.
도 1D는 업데이트 배포 시스템(140)의 또 다른 실시예를 도시한다. 업데이트 배포 시스템(140)은 업데이트 생성기(102), 다수의 클라이언트 디바이스(104a, 104b, 104c, 104d, 104e, 104f, 104g, 104h, 104i), 및 도 1C에 도시된 업데이트 서버 어레이(132)와 그 범위 및 기능이 유사한 업데이트 서버 어레이(142)의 컴포넌트 버전에 대한 또 다른 실시예를 포함한다. 업데이트 서버 어레이(142)는 업데이트 관리 컴포넌트(134)를 포함하는 업데이트 저장소(133)와 다수의 업데이트 디바이스 서버(136a, 136b, 136c)를 포함한다. 다수의 업데이트 디바이스 서버(136a, 136b, 136c)는 클라이언트 디바이스(104a-104i)와 통신 링크를 수립할 수 있고, 버전이나 목록 정보를 전송 또는 수신하도록 클라이언트 디바이스(104a-104i)와 양방향 통신할 수 있다. 이 특정 실시예는 업데이트 저장소(133)의 업데이트 관리 컴포넌트(134)가 통신하고 다수의 업데이트 디바이스 서버(136a, 136b, 136c)의 활동을 조정하고, 또한 다수의 업데이트 디바이스 서버(136a, 136b, 136c)로 다수의 보관된 업데이트 패키지를 전송하도록 명령할 수 있음을 도시한다. 유리하게, 본 특정 실시예는 인터넷이나 WLAN(wireless local area network)과 같은 하나 이상의 유선 또는 무선 통신 매체를 통해 많은 양의 업데이트 패키지(104)를 배포하는 업데이트 배포 시스템(100, 120, 130, 140)의 융통성, 효율성, 및 효능을 도시한다. 본 실시예의 업데이트 배포 시스템(140)은 바람직하게 다수의 다른 클라이언트 서비스에 대한 업데이트 요구조건을 제공할 수 있다. 더욱이, 업데이트 배포 시스템(140)은 클라이언트 디바이스와 정보 및 업데이트 패키지를 교환하는데 다수의 다른 통신 수단을 사용할 수 있다.
도 2A는 클라이언트 디바이스와 업데이트 배포 시스템(140) 사이의 통신을 상세히 설명하는 업데이트 설치 프로세스(200) 또는 업데이트 질의, 검색, 및 설치 프로세스의 개요를 도시한다. 업데이트 설치 프로세스(200)는 시작 상태(202)에서 시작되어 상태(204)로 이어지고, 여기서 클라이언트 디바이스(104)는 업데이트 디바이스 서버(136)와 통신 링크를 수립한다. 업데이트 설치 프로세스(200)는 이어서 클라이언트 디바이스(104)가 서버 목록에 대해 업데이트 디바이스 서버(136)를 폴링(polling)하는 상태(206)로 진행된다. 한 실시예에서, 서버 목록은 업데이트 저장소(133)에서 업데이트 디바이스 서버(136)로 전송될 수 있고, 참조하기 쉽게 업데이트 디바이스 서버(136)는 내장 메모리나 저장 컴포넌트에 서버 목록을 유지할 수 있다. 한 특성으로, 폴링된 서버 목록은 업데이트될 소프트웨어, 파일 시스템, 또는 하드웨어의 최근 이용가능한 버전을 결정하는데 사용되는 정보를 포함한다. 부가하여, 서버 목록은 이용가능한 업데이트가 클라이언트 디바이스(104)에 현재 존재하는 기존 파일, 소프트웨어 컴포넌트, 또는 펌웨어와 다른가 여부를 판정하는데 사용되는 다른 변수 및 업데이트 패키지의 크기를 설명하는 정보를 포함할 수도 있다. 폴링된 서버 목록은 또한 새로운 코드 버전의 특성을 식별하는 업데이트 서명을 포함할 수 있다.
일단 서버 목록이 전송되어 클라이언트 디바이스(104)에 의해 획득되면, 업데이트 설치 프로세스는 클라이언트 디바이스(104)가 서버 목록의 업데이트 서명을 클라이언트 디바이스(104)에 존재하는 기존 동작 소프트웨어의 그것과 비교하는 상태(208)로 진행된다. 비교 프로세스는 상태(210)에서 업데이트 패키지(104)가 업데이트 디바이스 서버(136)로부터 다운로드되어 클라이언트 디바이스(104)에 설치되어야 하는가를 판정하도록 클라이언트 디바이스(104)에 의해 사용된다. 비교가 완료된 이후, 업데이트 설치 프로세스(200)는 상태(210)로 진행된다. 상태(210)에서 동작 소프트웨어의 업데이트 버전이 원하는 것이 아니거나 필요하지 않거나, 또는 요청되지 않는 것으로 클라이언트 디바이스(104)가 판정하면, 업데이트 설치 프로세스(200)는 종료 상태(218)에서 종료되고 다음 스케쥴 또는 사용자 프롬프트가 활성화될 때까지 비활성화 상태로 유지된다.
다른 방법으로, 클라이언트 디바이스(104)가 상태(210)에서 동작 소프트웨어의 업데이트 버전을 원하는 것으로 판정하면, 클라이언트 디바이스(104)는 상태(212)에서 업데이트 디바이스 서버(136)로부터 업데이트 패키지(110)를 요청한다. 상태(212)에서, 업데이트 디바이스 서버(136)는 업데이트 저장소(133)로 업데이트 패키지(110)에 대한 요청을 전송하고, 여기서 업데이트 관리 컴포넌트(134)는 원하는 업데이트 패키지(110)의 이용가능한 버전에 대해 업데이트 저장소(133)를 검색한다. 더욱이, 원하는 업데이트 패키지(110)의 보관된 버전이 존재하고 그것이 사용가능한 것으로 판정되면, 원하는 업데이트 패키지(110)는 업데이트 저장소(133)의 보관 메모리 또는 저장 영역으로부터 검색되어, 필요한 경우 업데이트 디바이스 서버(136)로 전송된다. 이어서, 업데이트 디바이스 서버(136)는 원하는 업데이트 패키지(110)를 클라이언트 디바이스(104)로 전송한다. 상태(214)에서는, 클라이언트 디바이스(104)가 업데이트 패키지(110)를 수신하고, 업데이트 설치 프로세스는 클라이언트 디바이스(104)가 순차적으로 업데이트 패키지(110)를 설치하는 상태(216)로 진행된다. 설치 동작의 특성은 이후 보다 상세히 논의된다.
또 다른 실시예로, 상태(214)에서 원하는 업데이트 패키지(110)의 보관된 버전이 존재하지 않거나 이용가능하지 않은 것으로 업데이트 관리 컴포넌트(134)가 판정하면, 업데이트 관리 컴포넌트(134)는 업데이트 생성기(102)에 의해 생성되는 원하는 업데이트 패키지(110)에 대한 요청을 전송한다. 이때, 업데이트 설치 프로세스(200)에서, 클라이언트 디바이스는 원하는 업데이트 패키지(110)가 이용가능해지도록 대기할 수 있다. 클라이언트 디바이스(104)가 대기하는 동안, 업데이트 생성기(102)는 원하는 업데이트 패키지(110)를 생성하고, 그 업데이트 패키지(110)를 업데이트 저장소(133)로 전송한다. 업데이트 패키지(110)가 이용가능할 때, 클라이언트 디바이스(104)는 상태(216)에서 이어지는 설치를 위해 원하는 업데이트 패키지(110)를 수신한다. 설치 동작(216)은 이후 보다 상세히 설명된다.
한 특성으로, 원하는 업데이트 패키지(110)를 검색하여 설치한 이후, 업데이트 설치 프로세스(200)는 종료 상태(218)에서 종료된다. 원하는 버전의 파일 또는 소프트웨어 컴포넌트로 업데이트하고 개발자 사양에 따라 다른 기능을 수행한 이후, 클라이언트 디바이스(104)는 바람직하게 다른 파일이나 동작 소프트웨어 컴포넌트에 적용될 수 있는 추가 업데이트를 점검하도록 진행된다. 따라서, 업데이트 설치 프로세스(200)는 추가 업데이트 질의에 대해 요구되거나 필요로 되는 바에 따라 주기적으로 반복될 수 있다. 한 예시적인 업데이트 시퀀스에서, 소프트웨어 컴포넌트가 버전 1에서 버전 2로 성공적으로 업데이트되면, 업데이트 설치 프로세스(200)는 업데이트 저장소(133)로부터 추가 버전(즉, 버전 3)의 이용가능성을 점검하고, 소프트웨어 컴포넌트의 파일이 이용가능한 가장 최근의 버전으로 업데이트될 때까지 이들 증가의 업데이트를 검색하여 설치하도록 진행될 것이다.
다른 방법으로, 또 다른 실시예에서, 업데이트 설치 프로세스(200)는 다수의 이용가능한 업데이트(버전)의 존재를 인식하고, 가능한 각 업데이트 패키지를 순차적으로 적용하지 않고 이용가능한 가장 최근의 버전을 사용하여 파일이나 컴포넌트를 업데이트하도록 진행할 수 있다(즉, 버전 1이 버전 3으로 직접 업데이트됨). 특정 파일 또는 소프트웨어 컴포넌트에 대한 업데이트 주기를 완료한 것에 이어서, 업데이트 설치 프로세스(200)는 다른 파일이나 소프트웨어 컴포넌트가 업데이트를 요구하는지 여부를 판정한다. 또 다른 업데이트는 상기와 같이 모든 파일이 업데이트될 때까지 업데이트 서명 상태(208)의 비교로 시작되어 처리될 수 있고, 여기서 클라이언트 디바이스(104)는 종료 상태(216)에서 동작을 종료하고 업데이트 설치 프로세스(200)가 다음에 활성화될 때까지 비활성화 상태로 유지된다. 클라이언트 디바이스(104)는 업데이트를 자동적으로 질의하고 검색하도록 구성되거나, 또는 다른 방법으로 업데이트 프로세스는 사용자 초기화 기능이 될 수 있다.
상기에 설명된 업데이트 설치 프로세스(200)가 본 발명의 범위에서 벗어나지 않고 하나 이상의 업데이트 디바이스 서버를 통해 하나 이상의 클라이언트 디바이스에 동시에 및/또는 별도로 적용될 수 있다는 것을 이해할 것이다. 더욱이, 상술된 업데이트 설치 프로세스(200)는 도 2A 또는 도 2B와 연관되어 설명된 것과 유사한 단계 순차를 사용하여 업데이트 배포 시스템(100, 120, 130, 140)의 상술된 실시예 중 임의의 것에 적용될 수 있다.
한 특성으로, 업데이트 컴포넌트(102)가 자동적으로 동작되도록 스케쥴되면, 업데이트 컴포넌트(102)는 다음에 스케쥴된 동작 때까지 백그라운드에서 활성화 상태를 유지하거나, 또는 다른 방법으로 업데이트 설치 프로세스(200)가 바람직하게 초기화될 때 활성화될 수 있다. 업데이트 설치 프로세스(200)를 포함하는 활동은 개발자의 선호도에 따라 사용자에게 가시적이거나 투명해질 수 있다. 부가하여, 상태(206)에서 서버 목록을 폴링하고 상태(208)에서 업데이트 디바이스 서버(132)에 이용가능한 최근 버전과 파일의 기존 버전 사이의 차이를 식별하는 것에 이어서, 클라이언트 디바이스(104)는 사용자에게 업데이트가 이용가능함을 알리고 업데이트를 검색하려는 허용을 대기하거나, 또는 다른 방법으로 클라이언트 디바이스가 원하는 업데이트 패키지를 자동적으로 검색하도록 구성될 수 있다(사용자에게 알리거나 알리지 않고).
도 2B는 도 1A 및 도 1D에서 설명된 상기의 업데이트 배포 시스템과 연관되어 사용될 수 있는 업데이트 설치 프로세스(150)의 또 다른 실시예를 설명한다. 업데이트 설치 프로세스(150)는 시작 상태(252)에서 시작되고, 이어서 클라이언트 디바이스(104)가 업데이트 디바이스 서버(136)와 통신 링크를 수립하는 상태(254)로 진행된다. 이어서, 업데이트 설치 프로세스(250)는 업데이트 디바이스 서버(136)가 클라이언트 디바이스(104)로부터 업데이트 정보 질의를 요청하는 상태(256)로 진행된다. 업데이트 정보 질의는 유형, 모델, 및 디바이스 상표와 같은 아이덴티티 정보와, 클라이언트 디바이스(104)에 의해 현재 사용되고 있는 동작 소프트웨어의 버전을 포함한다. 한 실시예에서, 아이덴티티 정보는 통신 링크를 수립할 때 클라이언트 디바이스(104)로부터 업데이트 디바이스 서버(136)로 자동적으로 전송된다. 부가하여, 업데이트 정보 질의는 또한 새로운 코드 버전으로 특정 파일이나 업데이트 컴포넌트의 특성을 식별하는 업데이트 서명을 포함할 수 있다.
업데이트 정보 질의가 전송되어 클라이언트 디바이스(104)에 의해 획득될 때, 클라이언트 디바이스(104)는 질의에서 요청되는 업데이트 정보를 클라이언트 디바이스(104)에 전송함으로써 응답한다. 업데이트 설치 프로세스(250)는 상태(258)로 진행되고, 여기서 클라이언트 디바이스(104)는 새로운 코드 버전의 업데이트 서명을 클라이언트 디바이스(104)에 의해 현재 사용되고 있는 기존 코드 버전의 그것과 비교함으로써 업데이트 정보 질의를 수신하고 처리한다. 비교 프로세스는 상태(258)에서, 업데이트 패키지(104)가 업데이트 저장소(133)로부터 전송되어 클라이언트 디바이스(104)에 설치되어야 하는가를 판정하기 위해 클라이언트 디바이스(104)에 의해 사용될 수 있다. 비교가 완료된 이후, 업데이트 설치 프로세스(250)는 업데이트 클라이언트 디바이스(104)가 업데이트 정보 응답으로부터 업데이트 패키지(110)의 이용가능성을 판정하는 상태(260)로 진행된다. 더 새로운 코드 버전이 업데이트 저장소(133)에서 이용가능하지 않으면, 업데이트 설치 프로세스(250)는 종료 상태(280)에서 종료되고, 업데이트 설치 프로세스(250)는 다음 스케쥴 또는 사용자 프롬프트가 활성화될 때까지 비활성화 상태로 유지된다.
다른 방법으로, 상태(260)에서, 업데이트 정보 응답으로부터 업데이트 코드 버전이 업데이트 저장소(133)에서 이용가능한 것으로 클라이언트 디바이스(104)가 판정하면, 클라이언트 디바이스(104)는 상태(262)에서, 업데이트 정보 질의로부터 클라이언트 디바이스(104)가 업데이트 패키지(110)를 저장하기에 충분한 메모리를 이용가능한지 여부를 또한 판정한다. 클라이언트 디바이스(104)에서 업데이트 패키지(110)에 대해 충분한 메모리 또는 저장 공간이 이용가능한 것으로 클라이언트 디바이스(104)가 판정하면, 업데이트 디바이스 서버(136)는 상태(264)에서 클라이언트 업데이트 요청을 처리한다. 업데이트 디바이스 서버(136)는 이어서 상태(266)에서 업데이트 패키지(110)를 클라이언트 디바이스(104)로 전송한다. 업데이트 패키지(110)를 수신한 이후, 업데이트 설치 프로세스는 클라이언트 디바이스(104)가 업데이트 패키지(110)를 설치하는 상태(268)로 진행된다. 업데이트 설치 프로세스(250)는 이어서 또 다른 업데이트 요청이 이루어질 때까지 종료 상태(280)에서 종료된다. 부가하여, 업데이트 패키지 설치 프로시져의 상세한 내용은 이후 도 10과 연관되어 논의된다.
다른 방법으로, 상태(262)에서, 클라이언트 디바이스(104)에 업데이트 패키지(110)를 수용하기에 충분한 메모리 또는 저장 공간이 이용가능하거나 할당되지 않은 것으로 클라이언트 디바이스(104)가 판정하면, 클라이언트 디바이스(104)는 요청을 전송하고, 상태(270)에서 할당 프로시져를 수행하고, 여기서 업데이트 패키지(110)의 다운로드 전송을 수용하도록 추가 메모리 또는 저장 공간을 비워 놓는다. 한 실시예에서, 업데이트 패키지(110)의 다운로드 전송을 위한 공간을 할당하기 위해, 클라이언트 디바이스(104)는 제1 데이터 영역(즉, RAM)에 저장된 현재 파일을 제2 데이터 영역(즉, 내장된 플래시 메모리)에 기입한다. 다른 방법으로, 클라이언트 디바이스(104)는 제1 데이터 영역에 저장된 파일을 압축하여 업데이트 패키지에 이용가능한 공간을 더 많이 만든다. 메모리를 더 할당하기 위해, 클라이언트 디바이스(104)는 업데이트 패키지(110)가 설치될 때까지 일시적으로 저장하기 위해 파일들을 업데이트 디바이스 서버(136)로 전송할 수 있다. 상술된 메모리 할당 스킴(scheme)의 조합이 업데이트 패키지(110)를 수신하기에 충분한 공간을 생성하는데 사용될 수 있다는 것을 이해할 것이다. 부가적으로, 본 발명의 범위에서 벗어나지 않고 다른 메모리 할당 스킴이 사용될 수 있다.
클라이언트 디바이스(104)가 상태(270)에서 공간 할당을 완료할 때, 업데이트 설치 프로세스(250)는 상태(272)로 진행되고, 다운로드 전송을 위해 클라이언트 디바이스(104)에서 충분한 공간이 이용가능하면, 업데이트 설치 프로세스는 이어지는 업데이트 요청(264), 업데이트 전송과 수신(266), 및 업데이트 설치(268)를 위해 상태(264)로 진행된다. 그렇지 않은 경우, 업데이트 패키지(110)의 다운로드 전송을 수용할 만큼 클라이언트 디바이스(104)에 할당된 공간이 충분하지 않다는 업데이트 디바이스 서버(136)에 의한 판정으로 인하여, 업데이트 설치 프로세스는 종료 상태(280)에서 종료되도록 진행된다. 한 실시예에서, 업데이트 디바이스 서버(136)는 서브섹션(subsection)의 클라이언트 디바이스(104)로 업데이트 패키지(110)를 전송하여 클라이언트 디바이스(104)의 공간 제한을 수용한다. 그 서브섹션은 순차적으로 적용되어 클라이언트 디바이스(104)에서 제한된 양의 이용가능한 공간을 사용해 업데이트 프로세스를 완료한다.
한 실시예에서, 설치 프로시져는 클라이언트 디바이스(104)에 의한 업데이트 패키지(110)의 무결성을 인증하고 유효성 검사를 한다. 이어서, 업데이트 패키지는 클라이언트 디바이스(104)의 비휘발성 메모리 또는 저장 장치에 저장되고, 클라이언트 디바이스(104)는 필요한 경우 재부팅된다. 이어서, 업데이트 패키지(110)는 압축해제되고, 업데이트의 설치를 초기화하는 명령어 세트가 실행된다. 상술된 설치 프로시져는 본 발명의 범위에서 벗어나지 않고 변경되거나 재배열될 수 있다는 것을 이해할 것이다.
한 실시예에서, 업데이트 패키지(110)는 업데이트 생성기(102) 및 연관된 프로세스의 사용을 통하여 업데이트 서버 어레이(122, 132, 142) 및 요청하는 클라이언트 디바이스(104)에 이용가능해진다. 도 3은 업데이트 패키지(110)를 형성하는데 사용되는 업데이트 생성 프로세스(300)를 도시한다. 업데이트 생성 프로세스(300)는 업데이트 생성기(102)와 관련된 구성 매개변수, 및 바람직하게 더 새로운 코드 버전으로 업데이트될 기존 코드 버전에 존재하는 정보를 사용한다. 업데이트 생성 프로세스(300)는 시작 상태(302)에서 시작되어 상태(304)로 진행되고, 여기서는 현재 코드 버전을 포함하는 기존 파일이 열린다. 현재 코드 버전은 업데이트될 전자 디바이스에 포함되는 정보를 나타내는 파일이나 화상을 포함한다. 한 특성으로, 현재 코드 버전은 이진 코드 또는 화상 파일의 형태로 식별되고 저장되는 디바이스에 저장된 엔코드된 정보를 반영한다. 예를 들어, 이동 전화기의 경우, 현재 코드 버전은 업데이트될 메모리나 저장 영역의 내용을 반영한다. 메모리나 저장 영역의 내용은 또한 운영 체제 코드, 애플리케이션 코드, 펌웨어 내용, 또는 기능을 운반하도록 전자 디바이스에 의해 사용되는 다른 명령어 세트를 포함한다.
업데이트 관리 시스템 및 방법의 한가지 주요 특성은 업데이트 프로세스가 코드에 독립적인 방식으로 동작된다는 점이다. 업데이트는 업데이트될 메모리나 저장 영역의 화상 또는 시뮬레이트된 표시를 사용하여 생성된다. 업데이트 동작은 명령어 레벨로 동작될 필요가 없고, 오히려 고레벨(즉, 파일 레벨) 또는 저레벨(명령어를 포함하는 정보가 이진, 16진, 또는 다른 유사한 형태로 표시됨)로 동작될 수 있다. 그러므로, 업데이트 프로세스는 지정된 워드(word) 시퀀스나 패턴을 포함하는 디지털 정보 시퀀스를 기초로 현재 코드 버전을 인식한다. 한 특성으로, 작업의 크기 또는 길이는 탄력적으로, 비트, 바이트, 명령어, 파일, 또는 제2 워드 시퀀스로 나타내어지는 원하는 코드 버전과 이어서 비교되고 그 두 시퀀스 사이의 차이가 식별되는 다른 정보 시퀀스로 정의될 수 있다. 그래서, 업데이트 프로세스는 원하는 코드 버전을 얻기 위해 어느 명령어가 대체될 필요가 있는가 보다는 기존 코드 버전을 원하는 코드 버전으로 변환하기 위해 어떤 워드 시퀀스가 변경되어야 하는가를 판정하는 것과 같은 특정 관례에 반드시 제한될 필요는 없다.
현재 코드 버전의 화상을 오픈하면, 업데이트 생성기(102)는 이어서 상태(306)에서 사용되도록 화상으로부터 디지털 정보 시퀀스의 수집을 컴파일한다. 업데이트 패키지(110)를 생성할 때, 디지털 정보 시퀀스의 수집은 원하는 제2 코드 버전(108)을 나타내는 화상을 생성하는데 사용된다. 디지털 정보 시퀀스의 수집이 이렇게 명령어 세트를 생성하고 이어서 기존 코드 버전을 새로운 코드 버전으로 수정할 때 사용되는 방법에 대한 상세한 내용은 도 5 및 도 6을 참고로 보다 상세히 설명된다.
상태(306)에서, 업데이트 생성기(102)는 해쉬 테이블(hash table)을 구축하는데 사용될 디지털 정보 시퀀스를 검색함으로써 기존 화상을 미리 처리한다. 해쉬 테이블은 이어지는 참조(lookup) 및 검색을 위해 데이터 구조에 저장된 제1 코드 버전의 특정 디지털 시퀀스의 어드레스를 포함하는 다수의 해쉬값을 포함한다. 해쉬값은 기존 화상의 디지털 정보 시퀀스에 대응하고, 이는 더 새로운 코드 버전을 구축하는데 사용된다. 한 특성으로, 해쉬 어레이는 기존 코드 버전으로부터 형성되고, 기존 코드 버전에서 디지털 정보 시퀀스의 문자열을 식별한다. 해쉬 어레이에 대한 보다 상세한 내용은 이후 도 4와 연관되어 논의된다.
상태(306)에서 기존 코드 버전으로부터 해쉬 어레이(330)를 구축한 이후, 업데이트 생성 프로세스(300)는 상태(308)로 진행되어 제1 코드 버전에서 제2 코드 버전으로 변환하는데 사용되는 명령어를 저장하는데 사용될 새로운 파일이 오픈된다. 새로운 파일은 결국 업데이트를 원하거나 요청할 때 클라이언트에 전송할 수 있도록 서버에서 이용가능해지는 업데이트 패키지(110)가 된다. 업데이트 생성 프로세스(300)는 이어서 업데이트 패키지(110)가 생성되는 상태(310)로 진행된다. 이어서 보다 상세히 설명될 바와 같이, 명령어 세트는 동작, 명령어, 매개변수, 또는 적절한 방식으로 실행될 때 효율적인 방식으로 기존 코드 버전을 업데이트 코드 버전으로 변환시키는 디지털 정보 시퀀스를 식별하는 다수의 시퀀스 식별 및 변환 기능을 사용하여 형성된다. 이 상태(310) 동안에, 기존 코드 버전의 정보 합성 및 시퀀스가 평가되고 기존 코드 버전을 새로운 코드 버전으로 변환시키는 명령어가 식별된다.
상태(310)에서 코드 버전 분석 및 명령어 세트 생성이 완료된 것에 이어서, 업데이트 생성 프로세스(300)는 상태(312)로 진행되어, 업데이트 명령어 세트의 내용에 대해 인증되지 않은 액세스를 방지하는 어느 정도의 보안을 제공하도록 생성된 명령어 세트를 엔코드한다. 부가하여, 명령어 세트는 또한 LZW 압축과 같은 다양한 압축 스킴을 사용하여 또한 압축되어, 결과로 생긴 업데이트 패키지(110)의 전체 크기를 감소시킬 수 있다. 압축/엔코드된 명령어 세트는 상태(314)에서 업데이트 패키지(110)로서 저장되고, 저장된 헤더 정보를 포함할 수 있고, 이는 업데이트 패키지(110)의 내용의 유효성을 검사하고 업데이트 및/또는 유사한 기능의 버전을 식별하는데 사용된다. 업데이트 패키지(110)는 또한 상태(314)에서 다수의 업데이트 디바이스 서버(136a, 136b, 136c)에 전송될 수 있고, 여기서 업데이트 패키지(110)는 발행되고 다운로드를 위해 다수의 클라이언트 디바이스(104a-104i)에 액세스가능해진다. 업데이트 패키지(110)를 저장/발행한 이후, 업데이트 생성 프로세스(300)는 종료 상태(316)에서 종료된다.
도 4는 상기의 도 3과 관련되어 논의된 해쉬 어레이(330)의 한 실시예를 도시한다. 해쉬 어레이(330)는 다수의 디지털 정보 시퀀스 또는 워드(360-366)의 위치에 대응하는 하나 이상의 어드레스(350-356)를 저장하여 참고하는데 사용되는 다수의 해쉬값(340-343)을 포함한다. 한 특성으로, 디지털 정보 시퀀스 또는 워드는 공지된 길이 또는 크기를 갖는 워드를 포함한다. 각 워드(360-366)는 하나 이상의 비트, 바이트, 또는 다른 인식가능한 정보량을 또한 포함할 수 있다. 업데이트 프로세스에 사용되는 워드 길이는 반드시 고정될 필요가 없고, 대신하여 정보가 전자 디바이스에 저장되는 방식으로, 또는 업데이트 관리 시스템에 의해 결정된 바에 따라 탄력적으로 지정될 수 있다.
한 특성으로, 해쉬값(340-343)이 계산되는 워드(360-366)의 길이는 전자 디바이스의 아키텍처에 의해 인식되는 길이가 되도록 선택된다. 이들 해쉬값(340-343)은 해쉬 어레이(330)에 저장되고, 업데이트 코드 버전에서 요구되는 원하는 워드가 현재 코드 화상으로부터 얻어질 수 있는지 여부를 판정하도록 업데이트 생성기에 의해 사용된다. 한 특성으로, 해쉬값(340-343)을 생성하는데 사용된 워드(360-366)의 길이는 하나 이상의 비트, 바이트, 또는 일반적으로 사용되는 다른 정보량을 포함하는 독립된 워드 길이를 갖도록 선택된다. 그러나, 해쉬값(340-343)을 생성하는데 다른 워드 길이가 즉시 사용될 수 있다는 것을 이해할 것이다.
해쉬값(340-343)을 결정하는데 공지된 워드 길이를 사용함으로써, 업데이트 생성기는 새로운 코드 버전을 형성할 때 복사되어 사용될 수 있는 기존 코드 버전에서 찾아볼 수 있는 워드의 요약이나 데이터베이스를 생성할 수 있다. 해쉬 테이블의 구현 및 업데이트 패키지(110)를 생성할 때의 그 용도에 대한 추가 상세 내용은 이후 도 6A 내지 도 6H를 참고로 보다 상세히 설명된다. 한 특성으로, 해쉬 어레이(330)의 해쉬값은 새로운 코드 버전을 구성할 때 사용될 수 있는 정보 문자열을 바람직하게 포함하는 것으로 식별된 특정 시퀀스에 대한 시작 어드레스를 참wh함으로써 워드를 포함하는 워드를 참조하는데 사용된다.
어드레스(350-356)는 업데이트 프로세스 동안 사용되는 기존 코드부를 참조하는 명령어를 형성하도록 업데이트 생성기(102)에 의해 참조되는 계산된 해쉬값(340-343)으로서 해쉬 어레이(330)의 데이터 구조에 저장된다. 한 특성으로, 해쉬 어레이(330)를 전개할 때, 업데이트 생성기(102)는 유일한 시퀀스, 자주 마주치는 시퀀스, 및/또는 시퀀스를 재구성하기에 어려운 시퀀스와 같이, 명확하거나 바람직한 디지털 시퀀스 특성을 구성하는 특정 워드에 대해 해쉬값을 지정한다. 한 실시예에서, 해쉬 어레이(330)의 주요 기능은 타켓 시퀀스(예를 들면, 업데이트 코드 버전에서 요구되는 시퀀스)와 소스 시퀀스(예를 들면, 기존 코드 버전에 현재 찾아진 시퀀스) 사이에 '동일한' 워드를 효율적으로 찾는 것이다. 해쉬 어레이(330)는 기존 코드 버전에서 '동일한' 워드에 대한 시작 어드레스를 결정하는데 또한 사용되어, 이 워드는 업데이트 코드 버전에서 '재활용'되거나 '재사용'될 수 있다. 그래서, 코드에 이미 존재하는 것으로 식별되는 워드는 업데이트 패키지에 포함될 필요가 없고, 그 대신, 기존 워드 정보를 업데이트 코드의 새로운 위치로 검색 및/또는 복사하는데 하나 이상의 명령어가 사용될 수 있다. 이 특성은 실질적으로 사용되는 명령어가 식별하는 대응 시퀀스보다 통상적으로 더 작기 때문에 업데이트 패키지(110)의 요구되는 크기를 감소시킨다. 각 해쉬값(340-343)은 하나 이상의 위치에 동일한 워드를 생성하도록 여러번 액세스되고 효율적으로 요구되는 워드를 생성하도록 필요에 따라 사용될 수 있다는 것을 이해할 것이다.
해쉬 어레이(330)의 한가지 바람직한 특성은 이것이 기존 코드 버전에 존재하는 이용가능한 디지털 정보 시퀀스나 워드의 "사전(dictionary)"으로서 동작한다는 것이다. 업데이트 생성기는 이들 코드 시퀀스나 워드들을 사용하여 이 정보를 재배열 및 복사함으로써 새로운 코드 버전을 만든다. 이러한 방식으로 코드를 "재사용"함으로써, 업데이트 패키지는 코드 복사 및 재배열을 위한 명령어가 통상적으로 문자 코드 시퀀스 또는 워드와 비교하여 크기가 현저하게 더 작으므로 그 크기가 바람직하게 감소된다. 이와 같이, 단일 명령어가 많은 비트나 바이트의 정보와 동일한 코드를 만들 수 있다.
도 4에 도시된 해쉬 어레이(330)에서, 어드레스 "a"는 비트 시퀀스 "110010"에 대응하는 워드(360)가 이전 코드 버전에서 발견될 수 있는 어드레스에 대응한다. 코드 생성기는 해쉬 어레이(330)의 이 인덱스(340)를 바람직하게 액세스하는 명령어를 지정할 수 있고, 또한 이 위치의 워드로부터 복사될 정보의 길이를 지정할 수 있다. 예를 들어, 어드레스 "a"의 워드로부터 얻어질 수 있는 비트 시퀀스로는 "1", "11", "110", "1100", "11001", "110010" 등이 있다. 동일하게, 어드레스 "b"의 워드는 "1", "10", "101", "1010", "10100", "101000", "1010001", "10100011" 등을 포함하는 비트 시퀀스를 생성하는데 사용될 수 있다.
새로운 코드 버전에서 사용될 수 있는 기존 코드 버전의 워드 또는 시퀀스를 식별함으로써, 업데이트 패키지(110)에 포함되어야 하는 정보량은 바람직하게 최소화된다. 앞서 기술된 바와 같이, 예를 들어 어드레스가 지정되는 각 워드에 대응하는 시퀀스는 하나 이상의 비트, 바이트, 파일, 또는 다른 인식가능한 정보의 크기 및 길이를 포함하는 다른 양의 정보를 나타낸다. 그러므로, 이러한 정보의 다른 구성은 유사한 방식으로(즉, 비트형 어드레싱, 바이트형 어드레싱, 파일형 어드레싱 등) 어드레스 지정될 수 있다는 것을 이해할 것이다.
다른 특성으로, 비트나 바이트 시퀀스를 포함하는 하나 이상의 워드는 다양한 어드레스에 위치하는 정보를 링크시킴으로써 형성될 수 있다. 예를 들어, 해쉬값(342)은 특정 워드(362-364)와 연관된 각 어드레스와 링크되는 어드레스 "d", "k", 및 "s"에 대응한다. 상술된 것과 유사한 방식으로, 각 어드레스로부터의 각 워드의 가변 부분은 함께 연결되어 또 다른 워드 패턴의 조합을 생성할 수 있다. 한 특성으로, 특정 해쉬값의 어드레스는 링크된 리스트 데이터 구조를 사용하여 연관된다. 어드레스의 연관은 해쉬값(342)에 대해 도시된 바와 같이 가까이 논리적으로 근접하여 위치하는 정보를 연결시키는데 사용될 수 있고, 해쉬값(343)에 의해 도시된 바와 같이 다르게 배열된 정보를 또한 연관시킬 수 있다. 이 해쉬값(343)은 워드(365, 366)에 대해 각각 어드레스 "h" 및 "w"를 포함하고, 이들은 그 어드레스에 위치하는 정보의 조합으로부터 기인된 디지털 정보 시퀀스를 형성하도록 바람직하게 연관된 메모리 또는 저장 영역의 다른 부분에 위치할 수 있다. 해쉬값(343)은 또한 메모리나 저장 영역의 순차적인 로우(row) 또는 뱅크(bank) 번호가 원하는 정보 시퀀스를 생성하도록 배열되는 방식으로 형성될 수 있다. 예를 들어, 제1 뱅크 번호는 해쉬값(343)의 제1 어드레스에 대응하고, 제2 뱅크 번호는 제2 뱅크 어드레스에 대응할 수 있다. 어드레스 정보의 연결은 다수의 어드레스를 사용하는 다른 많은 조합에서 적용되어 새로운 코드 버전을 형성하는데 사용될 수 있는 많은 수의 가능한 정보 시퀀스를 생성할 수 있다는 것을 이해할 것이다. 메모리 또는 저장 뱅크 배열, 해쉬값(340-343)을 사용하는 명령어 세트의 형성과 구성, 및 기존 코드를 사용한 바람직한 디지털 정보 시퀀스의 결과적인 생성에 대한 추가의 상세한 내용은 이후 보다 상세히 설명된다.
도 5는 명령어 세트 생성 프로세스(400)의 한 실시예를 도시하고, 이는 제1 코드 버전을 제2 코드 버전으로 변환하는데 사용되는 명령어 세트를 생성하기 위해 업데이트 생성기(102)에 의해 사용된다. 한 특성으로, 이 프로세스(400)는 업데이트 패키지(100)에서 사용하기 위해 명령어가 선택하는 방식을 기능적으로 설명한다. 이 프로세스(400)는 또한 효율적인 방식으로 코드 변환 또는 버전 업데이트를 수행하는 다수의 명령어를 식별한다. 한 특성으로, 명령어 세트 생성 시퀀스(400)는 코드 변환을 수행하는데 사용되는 수많은 명령어 조합을 평가하고 업데이트 패키지(110)에 포함되어야 하는 정보량을 줄이는 지시의 조합을 바람직하게 식별한다. 이는 또한 업데이트 패키지(110)의 크기를 감소시키고, 업데이트 패키지(110)를 전송하는데 필요한 전송 시간을 감소시킨다. 가능할 때 기존 코드 시퀀스를 사용함으로써, 코드에 적용될 수 있는 특수 명령어와 조합되어, 이전 코드 버전은 업데이트 패키지(110)에 포함되어야 하는 정보량을 더 줄이는 방식으로 새로운 코드 버전으로 바람직하게 변환된다.
명령어 세트 생성 시퀀스(400)는 시작 상태(402)에서 시작되고, 이어서 업데이트 생성기(102)가 기존 파일이나 코드 버전의 시작부에 대응하는 포인터를 초기화하는 상태(404)로 진행된다. 포인터는 디지털 정보 시퀀스 분석이 완료되는 때를 판정하기 위해 시퀀스 분석 기능에 의해 사용되는 참조 위치를 유지한다. 한 특성으로, 디지털 정보 시퀀스 분석은 대응하는 명령어 유형을 분석하는데 각각 사용되는 다수의 비교 기능을 포함한다. 이들 명령어는 기존 시퀀스 명령어, 런렝스(run length) 명령어, 해쉬 명령어, 및 디폴트(default) 명령어를 포함한다. 상술된 명령어 및 대응하는 비교 기능은 명령어 세트 생성 시퀀스에서 사용될 수 있는 가능한 많은 명령어들 중 단지 몇 가지이고 업데이트 관리 시스템 및 방법과 연관되어 다른 명령어들이 고안 및 사용될 수 있다는 것을 이해할 것이다.
상태(406)에서, 비교 기능은 포인터가 나타내는 위치에 대응하는 코드에 대해 적용되고, 그 비교 기능과 연관된 각 명령어를 사용하여 얼마나 많은 새 코드가 생성될 수 있는가에 대해 판정이 이루어진다. 한 특성으로, 비교 기능은 명령어를 사용하여 특정 코드 조각(fragment)을 나타내는 분리된 방법을 제공한다. 일부 예에서, 한 명령어는 코드 구성에 따라 또 다른 명령어보다 더 나은 성능을 제공한다. 예를 들어, 포인터의 위치에서 기존 코드 버전 내에 존재하는 소정의 코드 시퀀스를 근거로, 기존 시퀀스는 정보의 3 워드, 정보의 런랭스 기능 5 워드, 및 정보의 해쉬 시퀀스 기능 8 워드를 해석할 수 있다. 상태(408)에서, 프로세스는 비교 기능 중 어느 것이 다른 비교 기능에 관해 최상의 특성을 나타내는가를 식별한다. 통상적으로, 최상의 결과는 단일 명령어나 명령어 그룹을 사용하여 최대 코드 시퀀스를 생성하는 비교 기능으로서 식별된다. 상기의 예의 경우, 해쉬 시퀀스 기능은 최장 워드 표시(8 워드)를 나타내고, 해쉬 시퀀스 기능에 비해 더 짧은 코드를 해석하는 다른 비교 기능보다 우선적으로 선택된다. 물론, 다른 코드 시퀀스에대해, 다른 비교 기능 중 하나가 더 바람직할 수 있고, 다른 비교 기능들에 비해 더 큰 코드부를 해석하는 기능을 가질 수 있다.
상태(408)에서 비교 기능으로부터 "최상의 결과"를 선택하면, 프로세스(400)는 식별된 비교가 효율적인 결과를 제공하는가 여부를 판정하는 상태(410)로 진행된다. 한 특성으로, 효율성은 단일 명령어에 의해 나타내질 수 있는 코드량의 함수로서 측정된다. 효율성의 한계치는 식별된 "최상의 결과"가 적어도 업데이트 패키지(110)에 직접 문자열을 포함하는 디폴트 명령어 기능만큼 효율적이거나 그보다 더 효율적임을 보장하는데 사용된다. 식별된 최상의 결과 기능이 디폴트 명령어 보다 더 효율적이면, 비교 기능에 의해 코드화된 정보 시퀀스에 대한 명령어 코딩은 업데이트 패키지(110)에 포함되고, 포인터는 상태(412)에서 비교 기능에 의해 해석된 코드에 바로 이어지는 정보의 제1 부분으로 업데이트된다. 그렇지 않은 경우, 디폴트 명령어가 "최상의 결과" 기능보다 더 효율적인 것으로 판정되면, 디폴트 명령어는 상태(414)에서 업데이트 패키지(110)에 포함되고, 포인터는 상태(412)에서 유사한 방식으로 업데이트된다.
상태(412)에서 포인터를 업데이트한 이후에, 프로세스(400)는 포인터가 상태(416)에서 파일의 끝부분에 이르렀나를 판정한다. 포인터가 파일의 끝부분에 이르지 않았으면, 프로세스는 상태(406)로 진행되어, 다음 코드부에 대해 시퀀스 분석이 시작되고 업데이트 포인터 위치를 기준으로 사용하여 필요에 따라 반복된다. 이러한 방식으로, 전체 파일은 비교 기능이 성공적으로 수행되고 가장 효율적인 명령어가 선택됨에 따라, 포인터를 점진적으로 증가시킴으로써 "단계화(stepped through)"된다. 파일의 끝부분에 이른 경우, 명령어 세트 생성 프로세스(400)는 상태(408)로 진행되고, 이 상태에서 프로세스가 종료되고 이전 단계에서 결정된 선택 명령어를 포함하는 업데이트 패키지가 패키지화되어 배포될 준비가 된다.
앞서 기술된 바와 같이, 디지털 정보 시퀀스 기능은 도 1A의 제1 버전(106)과 같은 오래된 코드 버전에 이미 존재하는 디지털 정보 시퀀스를 도 1A의 제2 버전(108)과 같은 더 새로운 코드 버전의 업데이트된 디지털 정보 시퀀스로 업데이트 또는 변경한다. 한 실시예에서, 명령어 세트 생성 시퀀스(400)는 코드 버전을 업데이트하는 다른 방법을 제공함으로써 변환 효율성을 증가시키는 추가 명령어를 사용할 수 있다. 설명된 각 비교 기능에 대한 상세한 내용은 도 6A 및 도 6D와 연관되어 보다 상세히 설명된다. 이하의 설명 및 그와 연관된 도면에서, 다른 워드 길이에 대응하는 예시적인 비트 및 바이트 시퀀스가 도시된다. 이러한 예는 업데이트 관리 시스템 및 방법과 연관되어 사용될 수 있는 워드 길이 및 크기의 가능한 많은 실시예 중 단지 일부만을 나타낸다는 것을 이해할 것이다.
도 6A는 상술된 명령어 세트 생성 프로세스(400)와 연관되어 사용될 수 있는 런렝스 엔코딩(run length encoding, RLE) 명령어(500)의 한 실시예를 도시한다. 도시된 바와 같이, 제1 워드 시퀀스(502)는 제1 코드 버전(106)으로부터의 디지털 정보 시퀀스를 나타내고, 제2 워드 시퀀스(504)는 제2 코드 버전(108)으로부터의 디지털 정보 시퀀스를 나타낸다. 제2 코드 버전(108)의 특정 위치에서 시작하는 제2 워드 시퀀스(504)가 "W1"의 값과 같이 특정 워드(506)의 연속적인 시리즈를 포함하는지 여부가 업데이트 생성기(102)에 의해 판정될 때, RLE 명령어(500)는 이 경우, N = 6과 같은 지정된 워드 길이(N)(508)에서 사용되어, 원하는 디지털 정보 시퀀스를 생성한다. 워드 길이는 다른 값에 의해 중단되지 않고 순차적으로 반복되는 워드 컴포넌트의 양이다. RLE 명령어를 사용하면, 반복되는 워드 패턴이 단일 명령어를 사용하여 즉시 재구성될 수 있다. 이 명령어는 바람직하게 제2 코드 버전에서 나타내어지는 대응하는 워드수와 비교하여 업데이트 패키지에서 공간을 덜 차지한다. RLE 명령어(500)는 또한 제1 코드 버전의 특정 워드 시퀀스가 오버라이트되거나 수정되어 제2 코드 버전을 형성하도록 수정되었다는 것을 지정하는데 사용될 수 있다. 이와 같이, 도시된 실시예에서와 같이, 제1 코드 버전의 워드 패턴 "W1, W2, W3, W4, W5, W6"은 제2 코드 버전에 오버라이트되어 워드 패턴 "W1, W1, W1, W1, W1, W1"을 형성한다. 다른 방법으로, 기존 워드 패턴 중 일부만이 연속적인 워드 패턴에 의해 새로운 코드 버전으로 오버라이트되거나 연속적인 워드 패턴이 기존 워드 패턴에 연결될 수 있다. 부가하여, 하나 이상의 워드 컴포넌트가 RLE 명령어(500)에서 지정된 워드 길이(508a)에 의해 지정될 수 있으므로, "W1", "W1, W1", "W1, W1, W1", "W1, W1, W1, W1" 등을 포함하는 워드 패턴이 다른 워드 길이 매개변수를 갖는 RLE 명령어를 사용하여 생성될 수 있다.
한 특성으로, 제1 코드 버전(106)으로부터 디지털 정보 시퀀스의 동일한 특정 위치에서 시작되는 제1 워드 시퀀스(502)는 제2 코드 버전의 동일한 길이의 반복 워드 시퀀스로 대체된다. 다른 말로 하면, RLE 명령어(500)는 파일 코드의 특정 위치에서 시작된는 워드형 반복 디지털 정보 시퀀스를 식별하고, 단일 명령어를 사용하여 이미 존재하는 디지털 정보 시퀀스를 대체한다. 부가하여, RLE 명령어(500)가 추후 "최상의" 결과를 산출하는 것으로 판정되면, 도 5의 상태(408)에서 설명된 바와 같이, 반복하는 워드형 시퀀스(504)에 대한 RLE 명령어(500)는 원하는 워드 반복수(508)와 같은 다른 매개변수와 함께 명령어 리스트에 저장된다. 명령어 리스트는 업데이트 패키지(110)를 사용하여 제1 코드 버전을 제2 코드 버전으로 변환시키는데 필요한 시퀀스 분석 및 명령어 세트 생성 함수(400)에 의해 식별되는 명령어 시리즈를 나타낸다.
RLE 명령어(500)를 사용하는 한가지 이점은 디지털 정보 시퀀스에서 워드형 컴포넌트의 연속적인 문자열이 단일 명령어로 새로운 코드 버전에 쉽게 배치될 수 있다는 점이다. RLE 명령어(500)를 사용하는 또 다른 이점은 이 명령어가, 원하는 디지털 정보 시퀀스를 생성하는데 사용될 제2 워드 시퀀스(504)의 연속적인 워드형 문자열의 반복적인 속성으로 인하여 비교적 쉽게 실행된다는 점이다.
도 6B는 제1 코드 버전(106)으로부터의 디지털 정보 시퀀스를 나타내는 제1 워드 시퀀스(512) 및 제2 코드 버전(108)으로부터의 디지털 정보 시퀀스를 나타내는 제2 워드 시퀀스(514)가 도시된 기존 시퀀스(EXS) 또는 이중 명령어(510)의 한 실시예를 도시한다. 제1 코드 버전(106)으로부터 디지털 정보 시퀀스의 특정 위치에서 시작하는 제1 워드 시퀀스(512)가 제2 코드 버전(108)으로부터 디지털 정보 시퀀스의 동일한 특정 위치에서 시작하는 제2 워드 시퀀스(514)와 똑같거나 실질적으로 동일하면, EXS 명령어(510)는 유사성을 반영하도록 지정된 워드 길이(N)(518)에서, 예를 들면 이 경우 N = 4에서 사용될 수 있다. RLE 명령어(500)에 대해 앞서 도시된 바와 같이, EXS 명령어(510)는 바람직하게 제1 및 제2 코드 버전 사이에서 유사성의 정도를 결정하는데 사용되는 워드 길이 매개변수(518)를 포함한다.
한 특성으로, EXS 명령어(510)는 업데이트 생성기(102)에 의해 사용되어, 코드 버전 사이에 변하지 않고 유지되고, 따라서 업데이트 프로세스 동안 업데이트되거나 변경될 필요가 없는 기존 워드 시퀀스를 식별한다. 더욱이, 기존 시퀀스 명령어가 디지털 정보 시퀀스 분석 동안 "최상의" 결과를 산출하는 것을 업데이트 생성기(102)가 판정하면, 지정된 워드 길이(518a)와 함께 EXS 명령어(510)는 디지털 정보 시퀀스의 반복수와 같은 다른 매개변수와 함께 명령어 리스트에 저장된다. EXS 명령어(510)를 사용하는 한가지 이점은, 변하지 않고 유지되는 기존의 워드형 디지털 정보 시퀀스가 식별될 수 있고 단일의 작은 명령어가 여분 또는 불필요한 코드를 포함하지 않고 유사성을 반영하도록 업데이트 패키지(110)에 포함된다는 점이다.
도 6C는 어드레스 또는 해쉬(HSH) 명령어(520)로부터의 복사의 한 실시예를 도시한다. 예를 들어, 제1 코드 버전(106)으로부터 디지털 정보 시퀀스를 나타내는 제1 워드 시퀀스(522) 및 제2 코드 버전(108)으로부터 디지털 정보 시퀀스를 나타내는 제2 워드 시퀀스(524)가 도시된다. 동작 소프트웨어 코드의 제1 버전(106)으로부터, 어드레스(526), 이 경우에서는 어드레스 "b"의 디지털 정보 시퀀스의 특정 위치에서 시작하는 제1 워드 시퀀스(522)가 동작 소프트웨어 코드의 제2 버전(108)으로부터 디지털 정보 시퀀스의 다른 위치에서 시작하는 제2 워드 시퀀스(524)와 똑같거나 실질적으로 동일하면, HSH 명령어(520)는 업데이트 패키지 디지털 정보 시퀀스를 반영하도록 지정된 워드 길이(N)(528)에서, 예를 들면 이 경우 N = 6에서 사용된다.
한 특성으로, 해쉬 시퀀스 함수는 고정된 길이의 디지털 정보 시퀀스에 대해 해쉬값을 계산함으로써 워드를 찾는다. 해쉬값은 이때 해쉬 테이블값과 비교된다. 계산된 해쉬값이 저장된 해쉬 테이블값과 정합되면, 저장된 해쉬 테이블값에 대응하는 디지털 정보 시퀀스의 시작 어드레스가 구해진다. 이러한 정합이 일어날 때, 사용될 수 있는 워드의 최대 길이를 결정하기 위해 지정된 어드레스의 워드를 보다 상세히 스캔한다. 해쉬 테이블이 계산된 해쉬값과 정합하는 하나 이상의 저장된 해쉬값을 포함하면, 각 가능성이 평가되고, 그 결과로 가장 긴 정합이나 가장 효과적인 정합이 사용된다.
HSH 명령어(520)는 해쉬 시퀀스 함수를 포함하고, 업데이트 생성기(102)는 해쉬 테이블(330)에 저장된 어드레스로 참조되는 기존 워드 시퀀스를 사용하여, 해쉬 테이블 데이터 구조에서 발견되는 계산된 해쉬값에 대응하는 디지털 시퀀스 정합을 결정한다. 예를 들어, 해쉬 시퀀스 함수가 디지털 정보 시퀀스 분석의 "최상의" 결과를 산출하는 것으로 업데이트 생성기(102)가 판정하면, 지정된 어드레스 위치(526) 및 지정된 워드 길이(528)와 함께 HSH 명령어(520)는 디지털 정보 시퀀스의 반복수와 같은 다른 매개변수와 함께 명령어 리스트에 저장된다. HSH 명령어(520)를 사용하는 한가지 이점은 해쉬 테이블(330)이 이용가능한 워드의 사전으로 동작하는 기존 코드에서 기존의 워드형 디지털 정보 시퀀스가 식별될 수 있다는 점이다. 그러므로, HSH 명령어(520)는 업데이트 생성 프로세스 기능을 반영하여, 업데이트 패키지(110)내에 직접적으로 이들 시퀀스나 워드를 포함하기보다는 좀 더 새로운 방식으로 코드 시퀀스나 워드를 재활용한다. HSH 명령어(520)를 사용하는 또 다른 이점은, 이 명령어(520)가 해쉬 테이블에서 참조되는 어드레스에 의해 반영된 다양한 코드 부분을 조합함으로써 코드의 큰 부분을 생성하는데 사용된다는 점이다. 예를 들면, 도 6C에 도시된 바와 같이, 제2 코드 버전의 워드 시퀀스 "W3, W4, W5, W6, W7, W8, W9, W10"은 어드레스 "b"의 제1 코드 버전에서 바람직하게 식별된다. HSH 명령어(520)는 이 어드레스를 참조로 사용하고, 이 위치에 존재하는 코드를 제2 코드 버전의 원하는 위치로 복사한다. 이 동작을 수행하는 명령어는 바람직하게 어드레스로 참조되는 문자열을 포함하는 것보다 크기가 더 작다. 이와 같이, 명령어 "HSH b, N"은 어드레스 "b"에 위치하고 N의 값으로 지정된 길이를 갖는 문자열의 전체 내용을 복사하는데 사용된다(문자열 "W3, W4, W5, W6, W7, W8, W9, W10"을 복사하는 예에서는 N = 8).
도 6D는 디폴트(DEF) 명령어(532)의 한 실시예를 도시한다. 앞서 기술된 바와 같이, DEF 명령어(532)는 원하는 디지털 정보 시퀀스를 효과적으로 나타내는데 다른 명령어가 발견될 수 없을 때 명령어 세트 생성 프로세스(400)에 의해 적용된다. DEF 명령어(532)는 동작 소프트웨어 코드의 제1 버전(106)으로부터의 디지털 정보 시퀀스를 DEF 명령어와 연관된 문자열이나 다른 정보의 문자 내용으로 대체하는데 사용된다. 다시 말해, DEF 명령어(530)는 제1 코드 버전(106)의 파일 코드에서 기존의 디지털 정보 시퀀스와 정합하지 않아서 다른 명령어를 사용하여 효과적으로 재구성될 수 없는 디지털 정보 시퀀스의 워드형 패턴을 식별한다. DEF 함수(530)가 디지털 정보 시퀀스 분석에서 "최상의" 또는 가장 효율적인 결과를 산출한다고 판정되면, 패턴 워드형 시퀀스(534)에 대한 DEF 명령어(530)는 삽입되는 문자열 또는 정보 시퀀스의 문자 내용과 함께 명령어 리스트에 저장된다. 이와 같이, 명령어 "DEF W15, W16, W17, W18, W19, W20"은 "W15, W16, W17, W18, W19, W20"의 문자 내용을 원하는 위치에 복사하는데 사용된다. DEF 명령어(530)를 사용하는 한가지 이점은, 디지털 정보 시퀀스에서 워드형 컴포넌트의 존재하지 않는 문자열이 업데이트 패키지(110)에 바람직하게 포함되는 단일 명령어로 새로운 코드 버전에 즉시 삽입될 수 있다는 점이다.
도 7은 재구성된 디지털 정보 시퀀스(550)의 한 실시예를 도시하고, 재구성된 시퀀스(550)는 시퀀스(550)의 일부를 생성하는데 사용되는 다수의 명령어를 포함한 명령어 세트(552)를 사용하여 얻어질 수 있다. 도시된 실시예에서, 재구성된 시퀀스(550)는 워드형 명령어를 사용하여 생성된다. 제1 명령어 세트(552)를 구현하는 프로세스는 원하는 워드 시퀀스(550)를 생성하도록 명령어(500, 510, 520, 530)를 순차적으로 적용하는 것을 포함한다. 명령어 세트의 명령어를 단계적으로 실행하는 것에 이어서, RLE 명령어(500)는 런렝스 부호화 비트 시퀀스(504)에 대응하는 업데이트 파일에서 제1 비트 시퀀스를 생성한다. RLE 명령어(500)는 입력 매개변수를 근거로 비트 시퀀스 "W1, W1, W1, W1, W1, W1, W1"을 생성한다. 다음 명령어로 진행되면, EXS 명령어(510)는 이중 비트 시퀀스(514) "W1, W2, W3, W4"에 대응하는 제2 비트 시퀀스를 생성한다. EXS 명령어는 지정된 영역에서 임의의 비트를 복사 또는 변경하기보다는, 기존 워드 패턴을 식별하고 이 시퀀스를 그대로 남겨둔다. 이어지는 HSH 명령어(520)는 지정된 어드레스 "b"(526)로부터 복사된 워드 시퀀스(524) "W3, W4, W5, W6, W7, W8, W9, W10"에 대응하는 제3 워드 시퀀스를 생성한다. 마지막으로, DEF 명령어(530)는 부가된 워드 시퀀스(534) "W15, W16, W17, W18, W19, W20"에 대응하는 제4 워드 시퀀스를 생성한다. 앞서 기술된 바와 같이, DEF 명령어는 기존 코드 버전에서 발견되지 않거나 상술된 비교 함수를 사용하여 효과적으로 구성될 수 없는 워드 시퀀스에 하나 이상의 워드 패턴을 삽입하는데 사용된다. 도시되고 재구성된 워드형 시퀀스(550)는 단지 명령어 세트(552)의 구현에 대한 한가지 예이다. 명령어 세트(552)가 기존 코드 버전을 원하는 코드 버전으로 변환시키는데 사용되는 다양한 조합의 하나 이상의 명령어(500, 510, 520, 530)를 포함할 수 있다는 것을 이해할 것이다. 원하는 코드 버전을 나타내기 위해 명령어 세트를 생성하는 한가지 이점은, 업데이트 패키지(110)가 종래 차등법으로 얻어진 문자 디지털 정보 시퀀스로 배타적으로 구성된 업데이트 패키지와 비교해 상대적으로 작다는 점이다. 그 결과, 통신 매체를 통해 상대적으로 작은 업데이트 패키지 화상을 전송하는 것이 종래 방법으로 사용되는 더 큰 문자 업데이트를 전송하는 것보다 더 효율적이다.
도 8A는 휴대용 전자 디바이스가 업데이트 관리 시스템과 연관되어 사용되는 메모리 또는 저장 아키텍처(1000)의 한 실시예를 도시한다. 이 아키텍처는 이동전화기, 개인 휴대 단말기, 페이저, 또는 업데이트 관리 시스템 및 방법을 사용하여 바람직하게 업데이트되는 다른 디바이스를 포함하는 다수의 종래 전자 디바이스를 나타낸다.
한 특성으로, 아키텍처(1000)는 비휘발성 메모리 또는 저장 영역(1002)과 휘발성 메모리 또는 저장 영역(1004)을 포함한다. 비휘발성 영역(1002)은 전자 디바이스에 의해 정보를 반영구 상태로 저장하는데 사용되고, 여기서 이 영역(1002)에 저장된 정보의 손실없이 디바이스의 전원을 끄거나 턴오프할 수 있다. 비휘발성 영역(1002)은 코드부(1006) 및 데이터부(1008)를 포함하도록 논리적으로 더 분할될 수 있다. 코드부(1006)는 디바이스 동작에 기능을 제공하는 시스템 운영 소프트웨어 또는 펌웨어와 같은 정보를 저장하는 것을 담당한다. 데이터부(1008)는 필수적이지 않거나 사용자에 의해 파생되는 정보, 또는 필요에 따라 바람직하게 재기록되거나 변경될 수 있는 다른 정보를 저장한다. 통상적인 이동 전화기에서, 데이터부(1008)는 전자 디바이스의 전원을 꺼도 손실되지 않고 필요하거나 원할 때 검색될 수 있도록 저장된 전화 번호, 주소, 또는 개인 메모를 포함하는 정보를 포함한다.
코드부 및 데이터부(1006, 1008)는 모두 업데이트 프로세스 동안 액세스되고 기입되어 그에 저장된 기존 코드를 수정할 수 있다. 데이터부(1008)는 또한 클라이언트에 의해 수신될 때 업데이트 패키지(10)의 사본을 저장하도록 업데이트 프로세스 동안 사용될 수 있는 메모리 또는 저장 공간의 일부를 제공한다. 더욱이, 데이터부(1008)는 업데이트하는 동안 정보를 저장하여, 업데이트 동작이 중단되면 어느 정도의 고장 허용을 제공한다. 업데이트 프로세스의 고장 허용 특성에 대해 상세한 내용은 도 9 및 도 10과 연관되어 더 상세히 설명된다.
비휘발성 메모리 또는 저장 영역이 별도의 코드부 및 데이터부를 갖는 것으로 도시되지만, 본 명세서에서 제공되는 업데이트 방법은 다른 메모리 또는 저장 구성에 즉시 적용될 수 있다는 것을 이해할 것이다. 예를 들어, 비휘발성 저장 영역(1002)은 디스크 드라이브, 광 드라이브, 또는 비휘발성 방식으로 정보를 저장하는데 사용되는 다른 디바이스 구현과 같은 하드웨어 저장 디바이스를 포함한다. 부가하여, 비휘발성 메모리 저장 영역의 경우, 메모리 구성은 논리적으로 업데이트 관리 시스템 및 방법과 사용되기 위해 별도의 코드부 및 데이터부로 나뉠 필요가 없다. 상술된 메모리 또는 저장 영역 구성은 단지 본 발명과 사용되도록 적응된 아키텍처의 한 실시예를 나타내고, 다른 메모리 또는 저장 영역 아키텍처 및 구성이 당업자에 의해 유사한 방식으로 쉽게 적응될 수 있는 것으로 생각된다.
한 특성으로, 전자 디바이스의 아키텍처는 비휘발성 메모리 또는 저장 영역(1002)이 분할되거나 논리적으로 다수의 저장 뱅크(bank)(1010)로 나뉘도록 지정한다. 각 저장 뱅크(1010)는 저장 영역 따로따로의 양이나 크기를 나타내고, 유일한 어드레스(1012)와 연관될 수 있다. 참조로 어드레스(1012)를 사용하여, 저장 뱅크(1010)가 각각 참조되고, 그에 포함된 내용은 전자 디바이스의 운영 체제나 펌웨어에 의해 결정된 바에 따라 판독되거나 기입된다. 다른 방법으로, 저장 뱅크(1010)의 내용은 내용 자체를 참조함으로써 어드레스(1012)에 독립적으로 액세스되고, 여기서 뱅크(1010)의 내용은 비휘발성 메모리 또는 저장 영역(1002) 내의 현재 위치를 결정하기 위해 참조로 사용된다. 저장 뱅크(1010)는 소정의 방식으로 저장 뱅크(1010)를 순차적으로 참조하는 뱅크 어드레스(1012)와 인접한 방식으로 배열된다. 예를 들어, 도 8A에 도시된 바와 같이, 비휘발성 메모리 저장기(1002)의 저장 뱅크(1010)는 64 킬로바이트(KB)의 공통 크기로 할당된다. 저장 뱅크(1010)는 또한 저장부(1002)의 처음 64 K가 BANK 0에 저장되고 저장부의 두번째 64K가 BANK 1에 저장되는 순차적인 방식으로 배열된다. 부가하여, "0A"의 블록 어드레스(1012)는 비휘발성 메모리 저장기(1002)의 BANK 0과 연관되고, "0B"는 BANK 1과 연관된다.
저장 뱅크(1010)의 분할 및 배열은 디바이스에 따라 다르고 64K 뱅크(1010)를 갖는 비휘발성 영역(1002)과 연관되어 설명되는 업데이트 관리의 시스템 및 방법은 다른 구성에 쉽게 적용될 수 있는 것을 당업자들은 이해할 것이다. 예를 들어, 저장 뱅크의 크기는 디바이스에 따라 다를 수 있고, 더 이용가능한 메모리 또는 저장 영역이 이용될 수 있다. 본 시스템 및 방법은 수많은 다른 유형의 전자 디바이스에 대한 메모리 또는 저장 소자의 아키텍처(1000)에 의해 정의되는 저장 영역의 다른 특성 및 조합에 쉽게 적응될 수 있는 것으로 생각된다.
또 다른 특성으로, 전자 디바이스의 휘발성 메모리 또는 저장 영역(1004)은 단일 인접 뱅크 또는 저장부로 구성된다. 휘발성 메모리 또는 저장 영역(1004) 내의 영역은 개별적으로 액세스되고, 그에 포함되는 공간은 필요하거나 원하는 바에 따라 탄력적으로 할당될 수 있다. 비휘발성 메모리 또는 저장 영역(1002)과 같이, 어드레스 정보는 메모리(1004)의 특정 부분을 참조하는데 사용될 수 있지만, 뱅크에 의해 정의되는 비휘발성 메모리의 다소 경직된 구조가 고수될 필요는 없다.
상술된 메모리 또는 저장 영역 뱅크가 배타적으로 동일한 뱅크 크기로 구성될 필요는 없다는 것을 이해할 것이다. 대신에, 각 뱅크는 전자 디바이스 내의 다른 뱅크에 대해 크기가 달라질 수 있다. 부가하여, 뱅크는 물리적으로, 또는 논리적으로 서로 인접할 필요는 없고, 물리적인 어드레싱 구조보다는 논리적인 구조를 사용하여 어드레스 될 수 있다. 한 특성으로, 예를 들어 그 안에 파일이 저장되고 논리적 어드레싱 구조를 갖는 하드 드라이브를 사용할 때와 같이 논리적인 방식으로 개인용 컴퓨터나 다른 컴퓨팅 디바이스의 파일이나 내용이 어드레스 될 수 있다.
설명된 메모리 구성은 종래의 많은 이동 또는 셀룰러 전화기 저장 아키텍처를 나타낸다. 당업자라면 여기서 제공되는 시스템 및 방법이 적용될 수 있는 메모리나 저장 영역의 아키텍처 및 할당에 다양한 변화가 있다는 것을 이해할 것이다. 개인 휴대 단말기, 컴퓨터, 위성, 및 비휘발성과 휘발성 메모리를 포함할 뿐만 아니라 하드 드라이브, 광 매체 등과 같은 다른 저장 디바이스를 포함하는 텔레매틱 디바이스와 같은 다른 전자 디바이스에는 다른 메모리 구성이 존재할 수 있다. 부가하여, 메모리 아키텍처 및 할당 스키마는 디바이스에 따라 다양하지만, 여기서 설명된 시스템 및 방법은 본 발명의 다른 실시예를 나타내는 다른 구성과 동작되도록 쉽게 적응될 수 있다.
한 실시예에서, 비휘발성 메모리 또는 저장 영역(1002)은 전원 내리기, 중단, 및 디바이스 결함과 같은 사건에서도 정보를 바람직하게 유지하는 다양한 유형 또는 구성의 저장 공간을 포함할 수 있다. 적절한 비휘발성 메모리 또는 저장 영역으로 기능하도록 적응되는 예시적인 컴포넌트로는 하드 드라이브, 광 드라이브, CD-기록기, DVD-기록기, 테이프 드라이브, 플래시 메모리 디바이스, 및 EPROM 디바이스가 포함된다. 유사하게, 휘발성 메모리 또는 저장 영역(1004)은 랜덤 액세스 메모리(RAM)나 다른 휘발성 메모리 유형을 포함한다. 다른 방법으로, 비휘발성 메모리나 저장 영역 대신에 비휘발성 메모리나 저장 영역이 사용되어 유사한 기능을 제공할 수 있다. 그러므로, 상술된 비휘발성 메모리나 저장 영역은 본 발명의 범위에서 벗어나지 않고 휘발성 메모리 또는 저장 영역(1004)과 동일한 방식으로 동작하도록 적응될 수 있다.
도 8B는 업데이트 패키지(110)를 처리하고 업데이트 함수를 수행하는데 사용되는 다운로드 에이전트(download agent)(1020) 및 업데이트 에이전트(1025)를 포함하는 비휘발성 영역(1002)의 한 실시예를 도시한다. 일반적으로, 다운로드 에이전트(1020)는 업데이트 패키지(110)를 획득하는 것과 관련된 함수를 수행하고, 업데이트 에이전트(1025)는 업데이트 프로세스가 완료되면 원래의 제1 코드 버전이 업데이트된 제2 코드 버전으로 변환되도록 비휘발성 메모리 또는 저장 영역(1002)의 코드부(1006) 및 데이터부(1008) 모두의 내용을 바람직하게 수정하도록 업데이트 패키지(110)에 포함되는 명령어를 적용하는 것을 담당한다.
업데이트 에이전트(1025)는 비휘발성 영역(1002)의 코드부(1006) 일부 또는 부트 섹터(boot sector)에 바람직하게 저장되는 내장 기능 컴포넌트를 포함한다. 전자 디바이스의 루틴 동작 동안, 업데이트 에이전트(1025)는 비활성화 상태로 유지되어, 디바이스의 운영 체제가 그 디바이스를 제어하는 함수 호출 및 명령어 동작을 실행하도록 허용한다. 그러나, 업데이트 프로세스가 초기화될 때, 업데이트 에이전트(1025)는 전자 디바이스를 제어하고 업데이트 패키지(110)의 설치와 관련된 특정 동작을 수행할 수 있다. 한 특성으로, 업데이트 에이전트(1025)는 바람직하게 업데이트를 설치하는데 필요한 기능을 수행하도록 최적화되고 전용화된 서비스 세트를 지닌 특화된 애플리케이션으로 유지된다. 이러한 방식으로 업데이트 에이전트(1025)를 설계할 때, 업데이트 에이전트(1025)의 크기는 바람직하게 비휘발성 영역(1002)에서 차지하는 공간의 양을 최소화하도록 감소된다.
업데이트 에이전트(1025)는 원래의 제1 코드 버전을 업데이트된 제2 코드 버전으로 변환시키는데 필요한 동작을 또한 수행하는, 업데이트 패키지(110)에 포함된 명령어를 처리 또는 실행하는 것을 담당한다. 업데이트 에이전트(1025)는 또한 업데이트 프로세스에 관련된 특정 동작을 실행하는데 사용되는 하나 이상의 기능을 가질 수 있다. 예를 들어, 업데이트 에이전트(1025)는 업데이트 패키지(110)의 명령어를 기존 코드 버전에 적용시키는 주요 기능을 포함할 수 있다. 부가하여, 업데이트 에이전트(1025)는 업데이트 패키지 관리와 연관된 클라이언트 동작을 수행하는 기능을 포함할 수 있다. 한 특성으로, 업데이트 에이전트(1025)는 문자열이나 데이터 처리, 메모리 관리, 및 업데이트 프로세스의 활동을 조정하는데 사용되는 다른 동작을 포함하는 동작들을 수행할 수 있다. 또 다른 특성으로, 업데이트 에이전트(1025)는 업데이트 프로세스 동안 사용되는 하나 이상의 디바이스 드라이버를 포함한다. 업데이트 에이전트(1025)는 또한 업데이트 프로세스를 관리하는데 요구되는 기능 로직을 포함할 수 있고, 업데이트 패키지(110)의 명령어를 수행하는데 필요한 내장 운영 체제에 의해 제공되지 않는 함수를 포함할 수 있다. 업데이트 에이전트(1025)는 또한 데이터부에서 업데이트 패키지(110)를 수신하기에 충분한 저장 공간을 생성하도록 데이터부의 데이터를 압축하는데 사용되는 다양한 동작을 수행하는 기능을 포함할 수 있다. 마지막으로, 업데이트 에이전트(1025)는 업데이트 패키지(110)에 대한 압축/압축해제, 암호화/해독화, 및/또는 업데이트 패키지(110)의 유효성 검사와 같이 업데이트 패키지(110)를 준비시키는데 사용되는 기능을 포함할 수 있다.
다운로드 에이전트(1020)는 업데이트 서버와 통신하고 이용가능한 업데이트 패키지(110)를 검색하는 것과 관련된 동작을 수행하는 것을 담당한다. 업데이트 에이전트(1025)처럼, 다운로드 에이전트(1025)는 업데이트 패키지 검색 프로세스와 관련된 특정 동작을 수행하는데 사용되는 하나 이상의 기능을 포함한다. 예를 들어, 다운로드 에이전트(1020)는 이용가능한 업데이트 패키지(110)를 포함하고 다운로드 프로세스 동안 사용되는 에러 정정 루틴 및 필요한 핸드쉐이킹(handshaking)을 제공하는 서버와 통신하는 기능을 포함할 수 있다. 더욱이, 다운로드 에이전트(1020)는 다운로드 프로세스 동안 업데이트 패키지 관리와 연관된 클라이언트 동작을 수행하는 기능을 포함할 수 있다. 한 특성으로, 다운로드 에이전트(1020)는 문자열이나 데이터 처리, 메모리 관리, 및 업데이트 프로세스의 활동을 조정하는데 사용되는 다른 동작을 포함하는 동작을 수행한다. 또 다른 특성으로, 다운로드 에이전트(1020)는 업데이트 패키지 다운로드 프로세스 동안 사용되는 하나 이상의 디바이스 드라이버를 포함한다. 다운로드 에이전트(1020)는 또한 다운로드 프로세스를 관리하는데 요구되는 주요 기능 로직을 포함할 수 있고, 서버와 통신을 수립하고 원하는 업데이트 패키지(110)를 검색하는데 필요한 내장 운영 체제에 의해 제공되지 않는 기능을 포함할 수 있다. 부가하여, 다운로드 에이전트(1020)는 업데이트 패키지(110)를 수신하기에 충분한 저장 공간을 생성하도록 비휘발성 및 휘발성 메모리나 저장 영역(1002, 1004)에서 데이터를 압축 또는 재조직하는데 사용되는 다양한 동작을 수행하는 기능을 포함할 수 있다. 마지막으로, 다운로드 에이전트(1020)는 업데이트 패키지(110)에 포함된 정보에 대해 인증되지 않은 액세스를 방지하도록 서버와 클라이언트 디바이스 사이에 안전한 통신을 사용할 수 있게 하는 기능을 제공할 수 있다. 또 다른 특성으로, 다운로드 에이전트(1020)는 서버와 클라이언트 디바이스 사이에서 정보를 전송하는 동안 사용되는 하나 이상의 암호화 구조를 정의하는 전용 보안 라이브러리를 포함할 수 있다.
다운로드 에이전트(1020) 또는 업데이트 에이전트(1025)는 또한 업데이트 패키지(110)를 압축해제 및/또는 준비하기에 충분한 이용 공간이 전자 디바이스에 있는가를 판정하는데 사용될 수 있다. 추가 공간이 요구되면, 다운로드 에이전트(1020) 또는 업데이트 에이전트(1025)는 업데이트 패키지(110)를 수신 및 처리하기에 충분한 저장 공간을 생성하기 위해 비휘발성 또는 휘발성 메모리나 저장 영역(1002, 1004)의 내용을 압축 또는 재배열한다. 업데이트 프로세스가 완료된 이후, 비휘발성 및 휘발성 메모리나 저장 영역(1002, 1004)의 압축 또는 재배열된 내용은 원래의 상태로 복귀되어, 디바이스가 정상적인 동작을 재개하고 이들 영역(1002, 1004)의 내용을 액세스하도록 허용한다.
업데이트 에이전트(1025) 및 다운로드 에이전트(1020)의 한가지 바람직한 특성은 이들이 전자 디바이스상의 메모리나 저장 영역 내에서 비교적 작은 양의 공간을 차지하도록 설계된다는 점이다. 이 특성은 특히 메모리나 저장 공간이 설계, 크기, 및/또는 전력 소모 고려와 같은 디바이스 제한으로 인하여 제한되는 디바이스에서 유용하다. 예를 들어, 통상적인 이동 전화기는 대략 500K - 1500K의 크기를 갖는 물리적인 메모리 저장을 포함한다. 이동 전화기의 내장된 운영 체제는 이 공간 중 많은 퍼센트를 차지하고, 추가 공간은 전화번호, 주소 등과 같이 사용자가 정의할 수 있는 데이터에 할당되어야 한다. 업데이트 에이전트(1025) 및 다운로드 에이전트(1029)는 대략 20K - 50K의 총 크기를 유지하는 방식으로 구현된다. 이와 같이 비교적 작은 크기는 상당한 메모리 또는 저장 영역 제한을 갖는 전자 디바이스를 포함하는 대부분의 전자 디바이스에 의해 쉽게 수용될 수 있다. 메모리나 저장 제한이 큰 문제가 되지 않는 예에서는 업데이트 에이전트(1025) 및/또는 다운로드 에이전트(1020)가 추가 기능 및 특성을 포함하도록 설계될 수 있다. 그러나, 업데이트 에이전트(1025) 및 다운로드 에이전트(1020)의 전체 크기는 통상적으로 종래의 많은 업데이트 애플리케이션 또는 모듈보다 현저하게 더 작다.
다운로드 에이전트(1020) 및 업데이트 에이전트(1025)에 부가하여, 상태 테이블(1050)이 또한 비휘발성 메모리나 저장 영역(1008)에 상주할 수 있다. 상태 테이블(1050)은 그 내용이 비휘발성 메모리나 저장 공간에 바람직하게 보존되고 디바이스의 동작 상태를 결정하도록 업데이트 패키지 검색 및 프로세스 동작 동안 사용되는 데이터 구조이다. 상태 테이블(1050)이 비휘발성 메모리나 저장 영역의 데이터부(1008)에 위치하는 것으로 도시되지만, 상태 테이블(1050)이 저장 영역(1002)의 비휘발성 메모리 중 임의의 위치에 놓이는 다른 구성도 존재한다.
한 특성으로, 상태 테이블(1050)은 업데이트 프로세스의 활동을 조정하도록 다운로드 에이전트(1020) 및 업데이트 에이전트(1025)에 의해 사용되는 하나 이상의 플래그 또는 식별자를 포함한다. 부가하여, 상태 테이블(1050)은 업데이트 프로세스의 현재 상태 및 완료 상태를 식별하도록 고장 허용 프로세스에서 사용되는 정보를 저장할 수 있다. 더욱이, 상태 테이블(1050)에 포함되는 정보는 디바이스 부트 프로세스 동안 디바이스가 정상 동작 모드(업데이트 프로세스가 유휴(idle) 상태) 또는 업데이트 프로세스 모드(업데이트 프로세스가 비유휴(non-idle) 상태)인가를 판정하는데 사용될 수 있다. 디바이스의 모드는 유휴 상태이거나 활성화 상태인 업데이트 상태 변수 또는 플래그에 의해 판정된다. 유휴 상태에서는 보류된(pending) 업데이트 동작이 없는 것으로 판정되고 정상적인 디바이스 동작이 진행되어야 한다. 활성화 상태에서는 하나 이상의 업데이트 동작이 현재 보류 중으로, 업데이트 동작 실행을 허용하기 위해 정상적인 디바이스 동작이 일시 중지되어야 한다.
디바이스가 시동되는 동안, 코드 실행은 통상적으로 특정 시작 어드레스, 예를 들면 "0x0000"에서 시작한다. 이 어드레스는 업데이트 에이전트(1025)가 상주하는 부트 블록 또는 섹터의 일부를 칭한다. 업데이트 에이전트(1025)는 상태 테이블 모듈(1050)을 점검하여, 수행되는 경우 또는 다른 방법으로 보류 중인 동작이 없는 경우 업데이트 에이전트(1025)가 전자 디바이스의 정규적인 펌웨어 또는 운영 시스템에 프로그램 실행을 전송하는 업데이트 동작을 식별하도록 업데이트 상태 변수값을 결정한다.
한 특성으로, 업데이트 프로세스가 중단되면, 업데이트의 완료 상태나 현재 위치는 업데이트 패키지 정보의 다양한 부분을 사용하여 해결될 수 있다. 고장 허용 업데이트 프로세스를 참고로 이후 보다 상세히 설명될 바와 같이, 업데이트 패키지는 에러 정정 코드, 디지털 서명, 파일이나 뱅크 크기, 및 코드 중 어느 부분이 성공적으로 업데이트되었나를 판정하기 위해 업데이트 에이전트(1025)에 의해 해석되는 다른 정보와 같은 정보를 포함할 수 있다. 업데이트 프로세스가 예상치 못하게 중단되면, 업데이트 에이전트(1025)는 이 정보를 사용하여 어느 위치에서 마지막 성공적인 업데이트가 적용되었나를 결정하고, 그 위치로부터 계속하여 업데이트 프로세스를 완료한다.
한 실시예에서, 업데이트 관리 시스템은 전자 디바이스의 기존 코드 버전으로 업데이트를 수행하는 뱅크 단위(bank-by-bank) 업데이트 프로세스를 사용한다. 이 프로세스는 특히 통상적으로 제한된 업데이트 기능만을 갖는 휴대용 전자 디바이스의 업데이트 작업을 관리하는데 적절하다. 이 방법을 사용하여, 업데이트 관리 시스템은 이동 전화기와 같은 디바이스가 전자 디바이스의 아키텍처로 인해 생기는 메모리 또는 저장 공간 제한으로 인하여 편리하게 업데이트되는 것을 방해하는 종래의 많은 시스템의 한계를 극복한다. 예를 들어, 이동 전화기에서는 운영 체제가 통상적으로 비휘발성 메모리 또는 저장 영역에 상주하고, 너무 커서 비용 및 제작 조건으로 인하여 일반적으로 더 작은 크기를 갖는 휘발성 메모리 또는 저장 영역에 유지될 수 없다. 이러한 한계로 인해, 운영 체제의 완전한 화상은 원래의 코드 버전을 손상시키지 않고 업데이트가 적용될 수 있는 적절한 "작업(working)" 영역에 복사될 수 없다. 그 결과, 이동 전화기를 포함하는 전자 디바이스는 업데이트가 수행되는 방식에서 제한되고, 통상적으로 높은 고장 허용 업데이트 기능을 제공하지 못하여 디바이스가 동작될 수 없게 하는 업데이트 에러에 민감해진다.
본 발명은 섹션 또는 뱅크 단위 방식으로 업데이트를 수행하는 메카니즘을 제공함으로써 이 한계를 극복한다. 뱅크 단위 업데이트 방법은 파일 또는 코드 버전의 전체 화상이 "작업" 영역에 저장되는 것을 요구하지 않고, 오히려 업데이트 동작을 분할하고 이를 순차적으로 지정된 코드부에 적용함으로써 감소된 양의 메모리 또는 저장 공간을 사용하여 업데이트 동작이 수행된다. 이러한 방식의 섹션 업데이트는 이동 전화기의 휘발성 메모리부에 존재하는 것과 같이 비교적 적은 면적의 이용가능한 메모리 또는 저장 공간과 연관되어 유리하게 사용될 수 있다. 부가하여, 뱅크 단위 업데이트 방법은 고장 허용을 개선시키고, 업데이트에서 에러가 발생될 때 업데이트 프로세스가 재개되도록 허용한다.
본 발명을 설명할 때 사용되는 "뱅크(bank)"란 용어는 탄력적으로 정의될 수 있는 메모리 또는 저장 영역의 일부를 칭한다. 뱅크가 특정 전자 디바이스에서 정적인 크기를 가질 때, 이 크기는 디바이스에 따라 변할 수 있다. 더욱이, 특정 전자 디바이스내의 뱅크들은 가변적으로 크기가 정해지고, 전자 디바이스의 특정 아키텍처에 의해 정의된 바와 같이 하나 이상의 논리적 또는 물리적 블록의 내용을 칭한다. 비록 업데이트 프로세스가 정적으로 정의된 뱅크 크기를 참조로 설명되지만, 업데이트 관리 시스템의 시스템 및 방법은 다른 뱅크 구성을 수용하여 다른 많은 전자 디바이스 구성에 대한 업데이트 필요성 또는 선호도를 해결하도록 쉽게 적응할 수 있다는 것을 이해할 것이다.
도 9 및 도 10은 디바이스에 존재하는 기존 코드 버전을 새로운 또는 업데이트된 코드 버전으로 변환시키도록 업데이트 관리 시스템에 의해 바람직하게 사용되는 뱅크 단위 업데이트 방법을 도시한다. 코드 변환은 명령어 세트나 업데이트 패키지(110)의 명령어를 처리하는 업데이트 에이전트(1025)에 의해 관리된다. 업데이트 프로세스를 통해, 각 뱅크의 데이터 내용의 유효성을 검사하도록 많은 검사점동작을 사용함으로써 높은 정도의 고장 허용이 유지된다. 이후 보다 상세히 설명될 바와 같이, 이들 동작은 코드 버전을 손상시켜 디바이스가 동작될 수 없게 하는 에러로부터 회복될 때 유용하다.
도 9는 이동 전화기, 페이저, 개인 휴대 단말기, 또는 다른 전자 디바이스와 같은 전자 디바이스와 사용될 수 있는 뱅크 단위 업데이트 방법(1100)의 개요를 도시한다. 도 8A의 설명을 참조로 앞서 설명된 바와 같이, 많은 휴대용 전자 디바이스의 아키텍처는 비휘발성 및 휘발성 메모리나 저장 영역(1002, 1004)을 포함한다. 비휘발성 저장 영역은 또한 정보나 데이터를 저장하는데 사용되는 개별적으로 어드레스 지정가능한 위치를 나타내는 다수의 블록이나 뱅크(1010)로 분할될 수 있다. 바람직하게 업데이트되는 다른 정보(1120), 운영 체제, 펌웨어 코드가 비휘발성 메모리나 저장 영역(1002)에 더 저장되고, 다수의 뱅크(1010) 중 적어도 일부에 걸쳐 배포된다.
다시 도 9를 참조로, 뱅크 단위 업데이트 프로세스(1100)는 전자 디바이스가 업데이트를 시작하는 신호를 검출할 때 시작 상태(1105)에서 시작된다. 한 특성으로, 업데이트 신호는 정상 동작 모드에서 업데이트 프로세스 모드로의 변화를 인식하는 것을 포함한다. 앞서 설명된 바와 같이, 이 모드 변화는 상태 테이블에 설정된 유휴 상태 변수를 사용하여 식별될 수 있다. 뱅크 단위 업데이트 프로세스(1100)는 업데이트 서버로부터의 전송 요청에 이어서 업데이트 패키지가 수신되는 상태(1110)로 진행된다. 이 상태(1110)에서, 업데이트 패키지(110)는 바람직하게 수신되어 휘발성 메모리나 저장 영역에 일시적으로 저장된다. 업데이트 패키지(110)의 수신이 완료되면, 프로세스(1100)는 업데이트 전송 상태(1115)로 진행되어, 완전한 업데이트 패키지(110)가 비휘발성 메모리 또는 저장 영역(1002)에 복사된다. 업데이트 패키지(110)를 비휘발성 영역(1002)에 복사함으로써, 고장 허용 레벨이 성취되고, 전자 디바이스는 서버 컴퓨터와 더 통신하지 않고 이어지는 업데이트 동작을 수행할 수 있다. 한 특성으로, 상태 테이블은 업데이트 패키지(110)의 완전한 수신 및 안전한 저장을 반영하도록 업데이트 패키지(110)가 비휘발성 메모리에 저장된 이후 업데이트된다.
업데이트 프로세스(1100)는 "작업" 뱅크 및 "백업" 뱅크에 대한 공간이 휘발성 및 비휘발성 메모리 영역(1002, 1004)에 각각 할당되는 메모리 할당 상태(1120)로 계속된다. 작업 뱅크 및 백업 뱅크는 업데이트 프로세스(1100)에 의해 사용되어, 코드부에 대한 업데이트가 완료되어 원래의 코드가 예상치 못한 프로세스 에러나 전원 중단에 의해 손상되지 않음을 보장할 때까지 원래의 코드가 수정되지 않은 방식으로 기존 코드 버전의 섹션 컴포넌트에 동작을 수행한다.
상태(1120) 동안에, 업데이트 패키지(110)의 명령어를 처리하도록 업데이트 에이전트(1025)에 요구되는 어드레스를 가리키는 다수의 포인터가 초기화된다. 제1 포인터는 업데이트 패키지(110)의 제1 명령어의 어드레스를 가리키도록 초기화되는 명령어 포인터를 포함한다. 이 명령어는 명령어 포인터에 의해 가리켜지는 어드레스를 참조하여 순차적으로 검색되고, 그 명령어는 업데이트될 뱅크 정보에 적용된다.
부가하여, 작업 뱅크 포인터는 뱅크 업데이트가 일어날 휘발성 메모리의 위치를 가리키도록 초기화된다. 작업 뱅크 포인터는 작업 뱅크 포인터에 의해 지정된 위치에서 업데이트 동작을 수행하는 업데이트 에이전트(1025)에 의해 참조로 사용된다. 더욱이, 백업 뱅크 포인터는 전원 중단 및 재부팅 또는 재설정 동작의 경우 고장 허용을 보장하도록 작업 뱅크의 사본이 유지되는 비휘발성 메모리의 한 위치를 가리키도록 초기화된다.
상태(1120)의 포인터 초기화 완료에 이어, 프로세스(1100)는 비휘발성 메모리 또는 저장 영역(1002)에 상주하는 원래의 코드 버전의 일부가 휘발성 메모리 영역(1004)의 작업 뱅크로 전송되는 뱅크 전송 상태(1125)에서 시작되는 일련의 뱅크 업데이트 동작(1123)으로 계속된다. 원래의 코드 버전으로부터 복사된 코드부는 특정 정보 뱅크에 대해 새로운 코드 버전을 생성하도록 바람직하게 동작될 명령어 세트에 의해 지정된 정보 뱅크에 대응한다. 프로세스(1100)는 이어서 업데이트 명령어 적용 상태(1130)로 진행되어, 명령어 세트로부터의 적절한 명령어가 실행되어 뱅크에 포함된 오래된 코드 버전이 새로운 코드 버전으로 변환되는 방식으로 작업 정보 뱅크를 수정한다.
일단 적절한 명령어터 실행되고 대응하는 코드가 휘발성 작업 뱅크에서 업데이트되면, 프로세스는 작업 뱅크의 내용이 비휘발성 메모리 또는 저장 영역(1002)에 위치하는 백업 뱅크로 복사되는 뱅크 백업 상태(1135)로 진행된다. 이어서, 휘발성 작업 뱅크의 코드는 업데이트 뱅크 상태(1140)에서부터 원래의 코드가 얻어졌던, 뱅크에 대응하는 적절한 위치로 복사된다. 상태(1140)에서 뱅크 복사가 완료되면, 프로세스(1100)는 뱅크 포인터가 다음에 이어지는 업데이트될 뱅크로 증가되는 새로운 상태(1145)로 진행된다.
프로세스(1100)가 완료된 것으로(즉, 모든 뱅크가 업데이트된 것으로) 명령어 포인터가 나타내면, 프로세스(1100)는 종료된다. 이때, 상태 테이블은 또한 업데이트 동작이 완료되어 업데이트 프로세스가 유휴 상태를 재개함을 반영하도록 업데이트된다. 이어서, 전자 디바이스는 재부팅되고, 전자 디바이스에 의해 새롭게 업데이트된 코드 버전이 사용된다. 그렇지 않은 경우, 프로세스(1100)가 완료되지 않은 것으로 포인터가 나타내면(즉, 업데이트되어야 할 뱅크가 하나 이상 남아 있을 경우), 프로세스(1100)는 다음 뱅크가 휘발성 메모리 또는 저장 공간(1004)의 작업 뱅크로 복사되는 뱅크 전송 상태(1125)로 진행되고, 프로세스(1100)는 새롭게 선택된 뱅크의 업데이트를 완료하기 위해 계속된다. 한 특성으로, 상태 테이블은 재부팅하는 동안 점검되고, 유휴 상태가 검출되면, 정상적인(비업데이트) 동작을 재개한다. 유휴 상태가 아닌 것으로 검출되면, 업데이트 에이전트(1025)는 전자 디바이스를 제어하게 된다.
도 10은 뱅크 단위 업데이트 프로세스(1100)를 보다 상세히 도시하고, 이동 전화기나 개인 휴대 단말기와 같은 휴대용 전자 디바이스에 통상적으로 존재하는 상술된 비휘발성 및 휘발성 메모리 또는 저장 영역(1002, 1004)의 맥락에서 그 동작을 보여준다. 도 8A에 앞서 도시된 바와 같이, 비휘발성 메모리 영역은 별도로 어드레스 지정가능하고 업데이트 에이전트(1025)에 의해 액세스가능한 다수의 뱅크로 나뉜다. 비휘발성 뱅크(1120) 중 적어도 일부는 업데이트 패키지(110)를 사용하여 업데이트 에이전트(1025)에 의해 업데이트될 메모리 영역 부분을 포함한다. 한 특성으로, 이들 뱅크는 운영 체제, 펌웨어 코드, 또는 전자 디바이스로 기능을 전하고 제1 코드 버전에서 제2 코드 버전으로 바람직하게 업데이트되는 애플리케이션을 포함하는 정보를 포함한다.
상태(1210)에 도시된 바와 같이, 뱅크 단위 업데이트 프로세스(1100)는 통상적으로 상술된 다운로드 에이전트(1020)의 기능을 사용하여 적절한 이용가능한 업데이트 패키지(110)가 식별되어 전자 디바이스에 전송된 이후 시작된다. 업데이트 패키지(110)는 수신되어 휘발성 메모리 또는 저장 영역(1004)의 일부(1222)에 일시적으로 저장되고, 패키지(110)가 완료되고 에러가 없음을 확인하기 위해 일련의 유효성 점검이 실시된다. 이들 유효성 점검은 수신된 업데이트 패키지(110)에 대한 CRC(cyclic redundancy check) 코드를 결정하고 이 코드를 업데이트 패키지(110)에 저장된 예상 CRC 값과 비교하는 것을 포함한다. 더욱이, 유효성 점검은 업데이트 패키지(110)의 크기를 식별하고, 이 값을 다운로드 에이전트(1020)에 의해 결정된 예상 크기와 비교함으로써 수행될 수 있다.
부가적으로, 업데이트 패키지(110)는 수신된 업데이트 패키지(110)가 기존 코드 버전에 대한 애플리케이션에 적절한가를 판정하기 위해 다운로드 에이전트(1020)에 의해 평가되는 디지털 서명을 포함한다. 한 특성으로, 디지털 서명은 디바이스의 명칭이나 ID, 디바이스 제작자, 모델이나 일련 번호, 및 전송된 데이터 패키지(110)의 내용과 소스의 유효성을 검증하는데 사용될 수 있는 다른 특성과 같은 정보를 포함하는 아이덴티티 문자열이다.
이어서, 업데이트 패키지(110)는 보다 안전한 저장을 위해 일시적인 위치(1222)로부터 비휘발성 또는 플래시 메모리 컴포넌트(1002)의 일부(1224)로 전송된다. 비휘발성 메모리에 업데이트 패키지(110)를 저장함으로써, 서버로부터 업데이트 패키지(110)를 재전송하도록 요구하지 않고 전원을 끈 상태, 디바이스 중단, 또는 재설정 동작으로부터 회복할 수 있는 수단이 제공된다. 이전과 같이, 플래시 메모리(1002)에 포함된 화상이 완전하고 에러가 없는 원하는 업데이트 패키지(110)의 사본임을 확인하기 위해 한번 이상의 유효성 점검이 사용된다.
업데이트 패키지(110)를 플래시 메모리(1002)에 저장한 이후, 상태 테이블(도시되지 않은)에 저장된 유휴 상태 플래그는 전자 디바이스가 업데이트 모드로 진행될 준비가 되었음을 나타내도록 업데이트된다. 이어서, 전자 디바이스는 재부팅되고 상태 플래그는 디바이스의 정상적인 동작을 일시 중지하고, 업데이트 에이전트(1025)가 업데이트 패키지(110)를 설치하도록 주요 디바이스 기능을 제공하는 업데이트 모드로 진행하도록 업데이트 에이전트(1025)에 의해 해석된다.
전자 디바이스를 재부팅하면, 휘발성 메모리 컴포넌트 또는 RAM 메모리(1004)의 내용은 통상적으로 손실되고, 그 결과, 업데이트 패키지(110)의 사본은 상태(1220)에서 업데이트 에이전트(1025)에 의해 사용되도록 RAM 메모리(1004)의 일부(1222)에 다시 복사된다. 이 상태(1220) 동안, 업데이트 패키지(110)는 업데이트 정보나 명령어가 실행가능한 형태로 나타내도록 미리 처리된다. 예를 들어, 업데이트 패키지(110)가 압축 또는 암호화되면, 업데이트 에이전트(1025)는 하나 이상의 동작을 수행하여 업데이트 패키지(110)의 코드가 실행 준비될 수 있도록 한다. 한 특성으로, 상술된 명령어 포인터는 업데이트 에이전트(1025)에 의해 실행되는 제1 명령어의 어드레스로 초기화될 수 있다. 일괄적으로 생각해 보면, 이들 동작은 새로운 코드 버전을 생성하도록 기존 코드 버전의 이어지는 순차 업데이트에 대한 명령어 세트와 업데이트 에이전트(1025)를 준비한다.
상태(1230)로 진행되면, 업데이트 에이전트(1025)에 대한 작업 환경을 생성하는 다수의 메모리 할당 동작이 수행된다. 한 특성으로, 작업 뱅크(1232)가 RAM 메모리(1002)에 할당된다. 작업 뱅크(1232)는 바람직하게 플래시 메모리 영역(1004)에서 업데이트될 뱅크(1120)와 동일한 크기가 되도록 구성되고, 명령어 세트에 의해 결정된 동작이 수행되는 동작 버퍼 또는 작업 메모리 영역으로 동작한다. 부가하여, 전원 중단에 고장 허용을 제공할 뿐만 아니라 작업 뱅크(1232)의 데이터가 손상되거나 유효성 점검에 실패하는 경우 데이터의 백업 복사본으로서 제공되는, 업데이트 프로세스 전체를 통해 사용되는 비휘발성 버퍼 또는 백업 저장을 제공하기 위해 플래시 메모리(1004)에서 백업 뱅크(1234)가 할당되거나 포인터가 추가될 수 있다.
상태(1240)로 진행하면, 업데이트 프로세스는 RAM 메모리 부분(1222)에 저장된 업데이트 패키지에 포함되는 명령어를 판독하여 실행하는 업데이트 에이전트(1025)로 시작된다. 한 특성으로, 업데이트 패키지의 명령어는 업데이트될 플래시 메모리(1002)의 제1 뱅크(1242)의 어드레스를 가리키는 포인터를 초기화한다. 업데이트 에이전트(1025)는 이 뱅크(1242)에 포함된 정보를 액세스하고, 그에 포함된 정보를 RAM 메모리(1002)의 작업 뱅크(1232)로 복사한다. 상기와 같이, 작업 뱅크(1232)의 내용이 그것이 복사되었던 것으로부터 플래시 메모리 뱅크를 정확하게 반영하는 것을 보장하기 위해 다양한 유효성 측정이 취해질 수 있다. 뱅크 복사 프로시져가 실패하면, 다음 업데이트 상태로 진행되기 이전에 프로세스가 반복되고 내용을 검증한다. 작업 뱅크(1232)의 사용은 바람직하게 많은 종래의 방법과 비교하여 업데이트 시스템에 개선된 고장 허용도를 제공한다는 것을 이해할 것이다. 한 특성으로, 원래의(수정되지 않은) 코드의 사본은 새롭게 업데이트된 뱅크 정보가 검증되어 비휘발성 방식으로 저장될 수 있을 때까지 플래시 메모리 뱅크(1002)에 유지된다. 이러한 업데이트 방법은 바람직하게 그렇지 않은 경우 디바이스 오동작을 일으킬 수 있는 데이터 손상의 가능성을 감소시킨다. 더욱이, 뱅크 업데이트 동작이 실패하면, 기존 코드의 보존으로 인해, 전체 업데이트 프로세스가 시작 상태로부터 다시 시작하는 것을 요구하기보다는 실패점으로부터 업데이트 프로세스를 재개할 수 있다. 업데이트 프로세스의 고장 허용 특성에 대한 추가 상세 내용은 이어서 더 상세히 설명된다.
상태(1250)로 진행하면, 업데이트 에이전트(1025)는 적절한 명령어를 적용하여, 작업 뱅크(1232)에 저장된 제1 뱅크의 사본에 포함된 정보를 업데이트한다. 앞서 설명된 바와 같이, 명령어는 플래시 메모리(1002)에 포함된 다른 뱅크(1120)로부터의 정보에 어드레스를 지정하고 복사하여, 작업 뱅크(1232)에 대해 업데이트된 뱅크 정보를 생성할 때 바람직하게 사용되는 정보 시퀀스를 얻는다. 부가하여, 업데이트 생성기(102)에 의해 결정된 바에 따라 원하는 내용을 반영하도록 작업 뱅크에 포함된 코드를 수정하는데 다른 동작이 사용될 수 있다. 한 특성으로, 제1 코드 버전과 제2 코드 버전 사이에서 변경되지 않은 것으로 결정된 뱅크는 추가의 프로세스를 요구하지 않고, 업데이트 프로세스는 새로운 뱅크가 복사되고 업데이트 패키지로부터 대응하는 명령어를 사용하여 프로세스가 재개되는 상태(1240)로 복귀한다. 다른 방법으로, 업데이트를 요구하지 않는 뱅크는 업데이트 효율성을 개선시키기 위해 이전 단계(1240)에서 스킵된다. 다시, 업데이트 뱅크 정보가 정확하다는 것을 검증하기 위해 업데이트 명령어가 실행된 이후에 다양한 에러 검출 측정이 일어날 수 있다.
상태(1260)로 진행하여, 작업 뱅크(1232)에 포함된 새 업데이트 정보는 플래시 메모리(1002)에 위치하는 백업 뱅크(1234)로 복사된다. 작업 뱅크(1232)는 이때 또 다른 고장 허용도를 제공하기 위해 복사되고, 여기서 작업 뱅크(1232)를 원래의 제1 뱅크(1242)로 복사한 것에 이어서 전원 중단이 일어나면, 프로세스는 오류가 발생한 지점을 식별하고 업데이트된 정보의 사본이 비휘발성 플래시 메모리(1002)에 유지되는 경우 거기서부터 진행된다. 작업 뱅크(1232)를 백업 뱅크(1234)로 복사하는 것을 완료하기 이전에 오류가 발생하면, 프로세스는 업데이트 뱅크(1232)에서 백업 뱅크(1234)로 복사 동작을 다시 수행하려 한다. 다른 방법으로, 작업 뱅크(1232)를 백업 뱅크(1234)로 복사하는 것을 완료하기 이전에 재부팅 또는 재시작 동작으로 인하여 전원 중단이나 다른 심각한 오류가 발생하여 휘발성 메모리의 손실이 초래되면, 프로세스는 제1 뱅크(1242)로부터의 정보가 작업 뱅크(1232)로 복사되는 이전 단계로 "복귀"될 수 있다.
상기로부터, 업데이트 프로세스가, 데이터 손상이나 업데이트 오류가 발생하는 경우 업데이트 프로세스 동안 데이터를 잠재적으로 영구히 손실시키거나 손상시키지 않고 프로세스가 재개될 지점을 찾을 수 있다는 것을 보장하는 다수의 메카니즘을 제공한다는 것을 이해할 것이다.
상태(1270)로 진행하여, 일단 새롭게 업데이트된 뱅크 정보의 복사가 백업 뱅크(1234)에 안전하게 저장되면, 업데이트 프로세스는 작업 뱅크(1232)에 포함된 정보를 플래시 메모리(1002)에 위치하는 오리지널 제1 뱅크(1242)로 복사하도록 진행된다. 업데이트 프로세스의 다른 단계와 유사하게, 뱅크 정보는 그 내용이 원하는 코드를 반영함을 보장하도록 유효성이 검사된다.
상태(1280)로 진행되면, 업데이트 프로세스는 다음 뱅크(1246)에 대해 유사한 방식으로 반복되고, 여기서는 뱅크 포인터가 업데이트될 다음 뱅크(1246)의 어드레스로 업데이트된다. 이어서, 단계(1240-1270)는 다음 뱅크(1246)로부터의 정보를 사용하여 반복된다. 이 방식으로, 플래시 메모리(1002)의 모든 뱅크(1120)는 바람직하게 플래시 메모리 크기 보다 더 작은 크기의 RAM 메모리에 의해 생긴 아키텍처 한계를 수용하면서 고장 허용 방식으로 업데이트된다.
업데이트 프로세스가 완료된 것으로 업데이트 에이전트(1025)가 판정할 때, 백업 업데이트 패키지 저장 영역(1224) 및 백업 뱅크(1234)를 포함하는 플래시 메모리(1002)의 공간 할당(만약, 있는 경우)은 해제되어, 업데이트에 이어서 다른 목적으로 사용될 수 있다. 더욱이, 상태 테이블(도시 생략)에 포함된 상태 플래그는 보류중인 업데이트 동작이 없다는 유휴 상태를 반영하도록 업데이트된다. 이어서, 디바이스는 재설정 또는 재부팅되고, 상태 테이블에서 상태 플래그를 점검하여, 디바이스는 다음 업데이트 프로시져가 초기화될 때까지 정상적인 동작 모드로 리턴한다. 한 특성으로, 백업 저장 영역(1224)은 기억 장소 반환이나 해제를 요구하지 않는다(포인터가 백업 저장 영역(1224)을 지정하는데 사용되는 경우와 같이). 이러한 예에서, 업데이트 프로세스가 완료되면, 다른 애플리케이션이나 동작은 백업 저장 영역(1224)의 내용을 간단히 오버라이트할 수 있다. 더욱이, 휘발성 메모리 또는 저장 영역(1004)에 포함된 데이터가 재부팅 동작 동안 통상적으로 손실되므로, 휘발성 메모리 또는 저장 영역(1004)에서 특수한 동작이 반드시 실행될 필요는 없다.
상기에 기술된 바와 같이, 충분할 레벨의 고장 허용을 제공하기 위해, 업데이트 서버 및 프로세스는 예상치 못한 하드웨어 또는 소프트웨어 중단이나 실패에 효율적으로 응답하는 기능을 포함한다. 도 11은 업데이트 패키지(110)에 포함된 명령어 세트의 적절한 설치를 보장하는, 클라이언트 디바이스(104)의 업데이트 에이전트(1025)에 의해 사용되는 고장 허용 프로세스(1300)의 한 실시예를 도시한다. 명령어 세트는 기존 코드 버전을 대체하는, 클라이언트 디바이스(104)와 같은 컴퓨팅 디바이스에 더 새로운 코드 버전을 설치할 수 있는 효과적인 변환 방법 또는 명령어 시퀀스를 제공한다. 한 특성으로, 고장 허용 프로세스(1300)는 업데이트 패키지(110)에 포함된 명령어를 실행하는 동안 손상을 방지하면서, 클라이언트 디바이스(104)에 의해 사용되는 기존 코드 버전을 유리하게 보호하는 일련의 점검 또는 유효성 검사를 포함한다. 더욱이, 고장 허용 프로세스(1300)는 업데이트 코드에 포함된 정보가 업데이트 이후 적절한 디바이스 동작을 보장하는 원하는 정보를 반영함을 보장한다. 고장 허용 시퀀스의 다음 설명은 업데이트 서버(1025)에 의한 업데이트 명령어의 처리에 관련되므로 이 프로세스의 두드러진 특성을 정의한다. 이 프로세스가 도 9 및 도 10과 연관되어 상세히 설명된 상기의 업데이트 프로세스와 연관되어 동작된다는 것을 이해할 것이다. 이와 같이, 고장 허용 시퀀스는 업데이트 프로세스의 통합 부분으로 간주되고, 이 프로세스의 일부는 상술된 업데이트 프로세스와 동등한 기능을 갖는다.
시작 상태(1302)에서 클라이언트 디바이스(104)를 초기화하면, 고장 허용 프로세스(1300)는 상태(1304)로 진행하고, 여기서 업데이트 에이전트(1025)는 "비유휴(not idle)" 상태 인식을 위해 상태 테이블을 점검한다. "비유휴" 상태는 클라이언트 디바이스(104)가 새로운 코드 버전을 생성하도록 업데이트 패키지(1025)의 명령어를 적용하는 업데이트 처리 모드에 있음을 의미한다. 업데이트 프로세스 모드가 인식되지 않으면, 고장 허용 시퀀스는 종료 상태(1306)에서 종료되고, 디바이스는 더 이상 업데이트 처리 없이 정상 모드의 동작으로 계속하여 동작한다. 반대로, 업데이트 처리 모드가 인식되면, 고장 허용 프로세스(1300)는 유효성 검사 상태(1308)로 진행된다. 유효성 검사 상태(1308)에서, 업데이트 에이전트(1025)는 비휘발성 메모리에 저장되었던 저장 업데이트 패키지(110)의 유효성 검사, 시작 어드레스와 작업 뱅크 내용의 ID, 및 백업 뱅크의 시작 어드레스와 내용을 포함하는 하나 이상의 확인 동작 또는 점검을 수행한다.
상태(1308)에서, 이전 업데이트 유효성 검사가 실패된 것으로 업데이트 에이전트(1025)가 판정하면, 업데이트 및 고장 허용 프로세스는 상태(1310)에서 종료된다. 다른 방법으로, 업데이트 에이전트(1025)가 상태(1308)에서 상태 테이블 정보의 유효성을 검사할 수 있으면, 고장 허용 프로세스(1300)는 상태(1312)로 진행되어, 업데이트 에이전트(1025)는 업데이트될 다음 뱅크를 결정한다.
상태(1312)에서, 업데이트 에이전트는 압축되지 않은 업데이트 패키지로부터 뱅크 아이덴티티 정보를 점검하고, 업데이트 프로세스가 종료되고 재개되어야 하는 위치를 찾아낸다. 이는 뱅크 아이덴티티 정보로부터의 크기 및 CRC 정보를 전자 디바이스 내부의 물리적인 뱅크로부터 계산된 기존 및 업데이트된 뱅크 정보와 비교함으로써 행해진다. 한 특성으로, 프로세스는 뱅크 크기 및 CRC 정보를 비교함으로써 적절한 재개점을 결정한다. 업데이트 패키지 명령어 세트의 시작부로부터 순차적으로 진행되어, 예상 크기 및 CRC 정보와 정합되지 않는 뱅크는 업데이트될 제1 뱅크가 된다. 부가하여, 뱅크 복사 함수 동안 업데이트 프로세스가 중단되면, 예를 들어 업데이트된 뱅크 정보를 다시 비휘발성 메모리(1002)의 기존 뱅크에 복사하고 크기 및/또는 CRC 정보가 예상치와 정합되지 않을 때, 백업 뱅크는 마지막으로 업데이트된 뱅크를 복구하는데 사용된다.
업데이트 에이전트(1025)는 이어서 앞서 설명된 바와 같이 상태(1314)에서 뱅크 업데이트를 실행한다. 다음, 상태(1316)에서, 뱅크 업데이트가 성공적인가를 판정하기 위해 일련의 업데이트 유효성 검사가 적용된다. 한 특성으로, 업데이트 에이전트(1025)는 새롭게 업데이트되는 정보와 뱅크에 포함된 오래된 정보에 대응하는 CRC 값 및 뱅크 아이덴티티 정보를 포함하는 뱅크 설명 정보를 점검함으로써 뱅크 유효성 검사를 완수한다. 부가하여, 유효성 검사 작업은 이들 값이 기대치와 정합되는가를 판정하기 위해 오래된 및 새로운 파일 또는 뱅크 크기를 평가한다. 부가하여, 업데이트 에이전트(1025)는 실제 뱅크 설명 정보와 업데이트 패키지(110)에 저장된 뱅크 설명 정보를 비교한다.
한번 이상의 업데이트 유효성 검사가 실패하면, 예를 들어 CRC 코드가 정합되지 못하면, 고장 허용 프로세스(1300)는 다시 상태(1314)에서 뱅크 업데이트를 수행하도록 복귀된다. 업데이트 유효성 검사가 상태(1316)를 통과하면, 고장 허용 프로세스(1300)는 상태(1318)로 진행되어, 업데이트 설치가 완료되었나를 업데이트 에이전트가 판정한다. 업데이트 에이전트(1025)는 이전 뱅크 각각에 대해 적절한 업데이트 설치의 유효성 검사를 위해 이전 뱅크의 뱅크 설명 정보, CRC 또는 크기값을 재점검함으로써 이 작업을 완수한다. 부가하여, 업데이트 에이전트(1025)는 업데이트 설치가 완성되었나를 판정하는데 사용되는 뱅크 위치를 결정하기 위해 카운터 또는 포인터를 사용할 수 있다. 업데이트 설치가 완료되지 않으면, 고장 허용 프로세스(1300)는 업데이트될 다음 뱅크를 결정하기 위해 상태(1312)로 복귀된다. 다른 방법으로, 업데이트 설치가 완료되면, 고장 허용 프로세스(1300)는 클라이언트 디바이스(104)를 재초기화함으로써 종료 상태(1320)에서 종료된다. 더욱이, 업데이트 동작이 종료된 것으로 판정되면, "비유휴" 상태는 클라이언트 디바이스(104)가 재설정 또는 재초기화되면 디바이스 동작 상태를 업데이트 프로세스 동작 모드에서 정상 동작 모드로 변경시키는 "유휴" 상태로 복귀된다.
유리하게, 상술된 고장 허용 프로세스(1300)는 전원이 꺼지거나 데이터가 손상되는 것과 같이 예상치 못한 실패에 대해 동작 소프트웨어 또는 펌웨어 코드를 보호하는데 사용된다. 설치 프로세스에서 전원 실패가 일어나면, 업데이트 에이전트(1025)는 업데이트된 뱅크, 업데이트될 다음 뱅크, 및 업데이트 설치가 완료될 때를 결정할 수 있다. 더욱이, 고장 허용 프로세스(1300)는 하드웨어 또는 소프트웨어 중단, 전원 실패, 데이터 손상, 및/또는 사용자 제어의 범위를 넘어선 다른 최악의 조우에 대해 뱅크 업데이트 설치 및 변환 프로세스를 효과적이고 신뢰성있게 보호한다.
도 12는 보안 및 유효성 검사를 목적으로 사용하는 서명 생성 및 인증 프로세스(1400)의 한 실시예를 도시한다. 한 실시예에서, 업데이트 패키지(110)는 디지털 정보 시퀀스를 안전하게 관리하고, 클라이언트의 프라이버시를 보호하고, 및 데이터 손상 가능성을 줄이기 위한 방식으로 통신 매체를 통해 업데이트 디바이스 서버(102)로부터 전송된다. 서명 생성 및 인증 프로세스(1400)의 구현은 시작 상태(1402)에서 시작되어 상태(1406)로 진행되고, 여기서 디지털 서명 또는 아이덴티티 문자열이 전자 디바이스에 대해 지정된다. 디지털 서명은 전송된 데이터 소스의 유효성을 검사하고 데이터가 현재 전자 디바이스와 사용되도록 설계되었음을 확인하는데 사용되는 정보를 포함한다. 한 실시예에서, 디지털 서명은 업데이트 패키지(110)의 소스를 인증하는데 사용되는 제작자 지정 정보 문자열을 포함한다. 부가하여, 상태(1408)에 도시된 바와 같이, 서명이나 해쉬값(hash value)이 공지된 MD5 알고리즘을 사용하여 생성될 수 있다. MD5 알고리즘은 예를 들어, 전자 디바이스에 업데이트 패키지를 전송한 이후 이어지는 유효성 검사를 위해 업데이트 패키지(110)와 함께 바람직하게 포함되는 디바이스 업데이트 정보로부터 소스 파일의 해쉬값을 생성한다.
한 특성으로, MD5 알고리즘에 의해 결정되는 해쉬값은 디바이스 업데이트 정보의 디지털 지문을 형성하는데 사용된다. 사람의 지문과 같이, 해쉬값은 유일한 값으로, 2개의 디바이스 업데이트 정보 세트(서로에 대한 정보 차이를 포함함)가 동일한 디지털 서명을 갖지 않는다. 이러한 유일성은 해쉬값이 원래의 정보나 명령어 세트의 지문으로서 동작하게 할 수 있고, 및 데이터 무결성 및 비교 유효성 검사를 유지할 목적으로 MD5 기술의 사용을 가능하게 한다. 예를 들어, 통신 매체를 통해 업데이트 패키지를 다운로드 또는 수신할 때, MD5 기술은 실질적으로 계산된 MD5 서명 또는 해쉬값을 업데이트 패키지에 포함된 MD5 서명과 비교함으로써, 다운로드된 업데이트 패키지가 정확하고 수정되지 않은 데이터 파일임을 보장하는데 사용되고, 데이터 파일의 무결성을 검증한다. 이와 같이, 데이터 패키지(110)의 정보나 데이터는 D5 기술 또는 유사한 디지털 화상 서명 방법의 사용을 포함하여 업데이트 패키지(110)로 전송된 정보의 무결성을 보장할 수 있다.
다음에는 상태(1410)에서, MD5 해쉬값 및 디지털 서명이 암호화되어 업데이트 패키지(110)에 포함된다. 한 특성으로, 암호화 프로세스는 데이터 보안도를 더 높이는데 사용된다. 암호화된 해쉬값 및 디지털 서명을 판독하거나 액세스하기 위해, 전자 디바이스는 엔코드된 데이터의 해독 또는 판독을 가능하게 하는 키 또는 패스워드를 소유하게나 액세스하여야 한다. 비대칭 암호화 기술(예를 들면, 공용키(public-key) 암호화) 및 대칭 암호화 기술은 둘 다 업데이트 패키지(110)를 암호화하는데 사용된다. 한 실시예에서, RSA 암호화 또는 공용키 암호화 기술은 배포하기 이전에 해쉬값 및 디지털 서명을 암호화하는데 사용된다.
상태(1410)의 암호화에 이어서, 업데이트 패키지는 클라이언트 디바이스에 배포될 준비가 되고, 업데이트 패키지(110)를 수신하자마자, 클라이언트 디바이스는 상태(1412)에서 인증 프로세스를 계속한다. 클라이언트 디바이스(104)가 업데이트 패키지를 수신할 때, 패키지의 암호화된 부분은 해독되고 디지털 서명 및 해쉬값을 분리된 컴포넌트를 분해한다. 이때, 프로세스(1400)는 상태(1414)로 진행되어, 업데이트 에이전트(1025)는 MD5 해쉬값 및 디지털 서명 정보를 인증한다. 한 특성으로, 전송된 MD5 해쉬값은 계산된 MD5 해쉬값에 비교된다. 두 개의 값이 동일하면, 업데이트 패키지 및 그 내용은 인증되어 업데이트 프로세스가 계속된다. 그렇지 않은 경우, 인증이 실패하면, 업데이트 패키지는 인증되지 못한 것으로 버려진다. 마찬가지로, 디지털 서명이 전자 디바이스에 앞서 저장된 예상 디지털 서명과 정합되면, 수신된 업데이트 패키지(110)는 인증된 것으로 판정된다. 일단 수신된 업데이트 패키지(110)가 상태(1418)에서 인증되면, 서명 생성 및 인증 프로세스(1400)가 종료 상태(1420)에서 종료되고, 업데이트 패키지(110)는 업데이트 에이전트(1025)에 의해 처리된다.
상술된 암호화 구조는 통신 매체를 통해 전송되고 업데이트 패키지(110)에 포함된 디지털 정보의 프라이버시를 유지하는데 유용하다. 보안 및 프라이버시 보호는 무선 네트워크 및 인터넷을 포함하여 모든 종류의 통신 매체를 사용하는 개인들 사이에서 중요한 관심사이다. 그러므로, 서명 생성 및 인증 프로세스(1400)는 업데이트 프로시져에서 보안성을 보장하는 유용한 방법이고 완전하고 간섭되지 않은 패키지로 실제 업데이트 정보를 수신하는데 있어서 신뢰성을 증가시킨다. 일단 인증되면, 클라이언트 디바이스는 업데이트 패키지(110)를 설치하도록 진행되고, 이는 오래된 코드 버전의 펌웨어 또는 동작 소프트웨어를 더 새로운 코드 버전의 펌웨어 또는 동작 소프트웨어로 변환시킨다.
본 발명의 한가지 바람직한 특성은 전자 디바이스의 하드웨어를 수정할 필요 없이 다른 많은 메모리 및 저장 아키텍처에 적용할 수 있다는 점이다. 그러므로, 업데이트 시스템은 기존 전자 디바이스에 포함될 뿐만 아니라 종래 기술의 솔루션과 비교하여 더 효과적이고 덜 번거로운 업데이트 경로를 제공하는 미래 디바이스의 설계에도 적응될 수 있다. 부가하여, 업데이트 패키지를 배포하는 수많은 방법이 업데이트 관리 시스템 및 방법을 사용하여 이루어질 수 있다. 본 발명은 업데이트될 전자 디바이스에 업데이트 패키지를 분산하는데 많은 다른 유형의 통신 매체와 연관되어 사용될 수 있는 것으로 생각된다. 무선 및 유선 네트워크 뿐만 아니라 인터넷 연결 네트워크를 사용하여, 업데이트 패키지는 전자 디바이스에 배포되어 종래 방식으로 자주 업데이트되도록 허용한다. 이러한 통신 매체를 통한 탄력적인 배포는 또한 사용자 상호작용 및 불편함을 최소로 하면서, 많은 수의 전자 디바이스에 업데이트가 배포되도록 허용한다.
한 특성으로, 업데이트 관리 시스템 및 방법은 실질적으로 업데이트 패키지를 적용하는 전자 디바이스의 기능을 변경시키는데 사용될 수 있다. 예를 들어, 제1 디바이스 기능을 전하는 디바이스 내에 저장된 상주 동작 코드나 애플리케이션은 바람직하게 제2 디바이스 기능을 전하는 업데이트된 동작 코드 또는 새로운 애플리케이션으로 변경된다. 한 예에서, 제1 및 제2 디바이스 동작 기능은 게임, 주소록, 계산기, 개인 리마인더, 또는 다른 데이터/정보/애플리케이션과 같은 소프트웨어 응용을 나타낼 수 있다. 동작 코드를 업데이트하면, 디바이스 기능은 실질적으로 제1 디바이스 기능을 제2 디바이스 기능으로 변화시키도록 변경될 수 있다. 예를 들어, 제1 디바이스 기능이 게임이면, 업데이트 패키지는 게임을 나타내는 디지털 정보 시퀀스를 계산기와 같은 또 다른 디바이스 기능으로 변환시키는데 사용될 수 있다. 부가하여, 제1 디바이스 기능은 이전 버전을 제2 디바이스 기능에 의해 반영되는 유사한 기능을 갖는 더 새로운 버전으로 업데이트될 수 있다. 예를 들어, 제1 디바이스 기능이 9 기능 계산기 애플리케이션이면, 이 애플리케이션은 적절한 업데이트 패키지를 적용하여 26 기능 계산기 애플리케이션으로 업데이트될 수 있다.
업데이트 관리 시스템 및 방법은 소프트웨어 애플리케이션이나 디바이스 드라이버의 코드를 한 버전에서 또 다른 버전으로 업데이트하는 탄력적인 수단을 제공하기 위해 개인용 컴퓨터에서 사용되는 것과 같은 소프트웨어 애플리케이션이나 디바이스 드라이버와 연관되어 바람직하게 사용될 수 있다는 것을 이해할 것이다. 한 특성으로, 업데이트 프로세스 동안 사용되는 디지털 정보 시퀀스를 나타내는 상기의 "워드(word)"는 소프트웨어 애플리케이션이나 디바이스 드라이버와 연관된 파일을 나타낼 수 있다. 업데이트하는 동안, 소프트웨어 애플리케이션이나 디바이스 드라이버의 하나 이상의 파일은 개인용 컴퓨터에 존재하는 코드를 유지하는 간단한 방법을 제공하면서 업데이트될 수 있다.
부가하여, 상기의 예에 도시된 바와 같이, 소프트웨어 애플리케이션이나 디바이스 드라이버는 한 버전에서 다음 버전으로 일관된 기능을 유지하도록 업데이트되거나, 필요 또는 원하는 바에 따라 기능이 완전히 변경될 수 있다. 예를 들어, 업데이트될 소프트웨어 애플리케이션이 워드 프로세서를 포함하면, 이 애플리케이션은 이전 버전에서 새로운 버전으로 업데이트되어, 증가된 특성 및 옵션을 제공할 뿐만 아니라 버그를 제거하고 추가 기능을 제공할 수 있다. 다른 방법으로, 애플리케이션은 업데이트 패키지를 적용함으로써 예를 들어, 스프레드시트 또는 데이터베이스 프로그램과 같이 완전히 다른 애플리케이션으로 업데이트될 수 있다. 이러한 방식의 업데이트가 동일한 애플리케이션의 버전 사이에서 배타적으로 변경되는 것에 한정되지 않고 그 대신에 비교적 간단한 업데이트 패키지를 사용하여 완전히 다른 애플리케이션 및 기능을 제공할 수 있는 소프트웨어 애플리케이션의 기능을 변경시키는 매우 융통성있는 수단을 제공한다는 것을 이해할 것이다.
업데이트 시스템 및 방법의 사용으로부터 발생되는 또 다른 특성은 소프트웨어 설치, 유지보수, 및 관리가 매우 용이하다는 점이다. 종래 시스템의 제한은 에러가 발생되기 쉽고 시간이 소모되는 일련의 단계로 사용자가 소프트웨어 애플리케이션을 수동적으로 설치 및 제거하여야 하는 것으로부터 기인된다. 그러나, 업데이트 관리 시스템은 업데이트 패키지를 적용하는 비교적 간단한 프로세스에 의해 소프트웨어 애플리케이션을 하나에서 다른 하나로 설치, 제거, 업데이트, 및 변경시키는데 사용되는 자동화된 설치 프로세스를 제공함으로써 이러한 한계를 극복한다. 그래서, 로컬로(예를 들어 CDROM 디스크나 이동가능형 저장 매체에 포함되는 업데이트 패키지를 적용하여) 또는 원격으로(무선이나 유선 통신 매체를 통해 업데이트 패키지를 적용하여) 하나 이상의 시스템의 자동화 관리를 허용하여 새롭고 더 강력한 방식의 시스템 관리가 실현될 수 있다. 이 방식의 시스템 관리는 종래 방법보다 보안성, 고장 허용, 및 융통성을 증가시키고, 에러에 덜 민감하고 보다 신속하다.
비록 상기에 설명된 본 발명의 실시예가 상기에 설명된 실시예에 적용되는 본 발명의 기본적인 새 특성을 도시하고, 설명하고, 또한 지적하지만, 본 발명의 범위를 벗어나지 않고 당업자에 의해 도시된 디바이스, 시스템, 및/또는 방법의 상세 내용에서 다양한 생략, 대체, 및 변경이 이루어질 수 있는 것을 이해할 것이다. 결과적으로, 본 발명의 범위는 상기 설명에 제한되지 않고 첨부된 청구항에 의해 정의되어야 한다.

Claims (122)

  1. 제1 다수의 디지털 정보 시퀀스를 포함하는 업데이트된 동작 코드로 다수의 분산형 전자 디바이스를 업데이트하는 시스템으로서, -상기 다수의 전자 디바이스는 각각 상기 전자 디바이스 내에 저장된 제2 다수의 디지털 정보 시퀀스를 포함하는 상주 동작 코드를 포함함 -:
    상기 업데이트된 동작 코드를 포함하는 상기 다수의 제1 디지털 정보 시퀀스의 이미지를 상기 상주 동작 코드를 포함하는 상기 제2 다수의 디지털 정보 시퀀스의 이미지와 비교하고, 상기 업데이트된 동작 코드와 상기 상주 동작 코드 사이의 차이를 식별하고, 이어서 상기 상주 동작 코드의 상기 제2 다수의 디지털 정보 시퀀스 중 적어도 일부를 사용하여 상기 업데이트된 동작 코드를 어떻게 생성하는가를 지정하는 명령어 세트를 포함하는 업데이트 패키지를 생성하는 업데이트 생성기;
    상기 업데이트 패키지가 상기 전자 디바이스들에 의해 수신되어 그것에 저장되도록 상기 전자 디바이스에 상기 업데이트 패키지를 배포하는 배포 시스템; 및
    상기 다수의 전자 디바이스 각각에 상주하는 다수의 클라이언트 모듈(client module) - 상기 다수의 클라이언트 모듈은 상기 배포 시스템을 액세스하여 상기 업데이트 패키지를 수신하고, 상기 업데이트 패키지의 명령어 세트는 상기 상주 동작 코드로부터의 상기 제2 다수의 디지털 정보 시퀀스 중 적어도 일부를 사용하여 상기 업데이트된 동작 코드를 생성하도록 상기 클라이언트 모듈들에 의해 실행됨 -
    을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 업데이트된 동작 코드의 이미지 및 상기 상주 동작 코드의 이미지는, 상기 제1 및 제2 다수의 디지털 정보 시퀀스의 구성 및 위치에 관한 정보가 상기 업데이트 생성기에 의해 공지되도록 상기 전자 디바이스에 저장되므로, 각 해당 코드의 정확한 표현을 실질적으로 포함하는 시스템.
  3. 제2항에 있어서,
    상기 업데이트 생성기는 상기 제2 다수의 디지털 정보 시퀀스의 구성 및 위치에 대한 정보를 사용하여 상기 명령어 세트를 생성하고, 상기 상주 동작 코드의 이미지에 상기 명령어 세트를 적용하여 상기 업데이트된 동작 코드의 이미지로 변환시키는 시스템.
  4. 제1항에 있어서,
    상기 업데이트된 동작 코드와 상기 상주 동작 코드 사이에서 식별된 차이는, 상기 각 해당 코드 이미지들을 직접 비교하고 상기 업데이트된 동작 코드와 상기 상주 동작 코드 간의 개별적으로 크기 조정된(discretely sized) 정보 패턴을 식별함으로써 코드에 독립적인 방식(code-independent manner)으로 평가되는 시스템.
  5. 제4항에 있어서,
    상기 개별적으로 크기 조정된 정보 패턴은 길이가 적어도 1 바이트인 정보 패턴을 포함하는 시스템.
  6. 제4항에 있어서,
    상기 개별적으로 크기 조정된 정보 패턴은 길이가 적어도 1 비트인 정보 패턴을 포함하는 시스템.
  7. 제1항에 있어서,
    상기 명령어 세트는 상기 상주 동작 코드의 상기 제2 다수의 디지털 정보 시퀀스를 액세스하고, 이들 디지털 정보 시퀀스를 사용하는 다수의 동작을 포함하여 상기 상주 동작 코드의 디지털 정보 시퀀스를 재사용하고 상기 업데이트된 동작 코드의 디지털 정보 시퀀스로 변환시킴으로써 상기 제1 다수의 디지털 정보 시퀀스 중 적어도 일부를 생성하는 시스템.
  8. 제1항에 있어서,
    상기 명령어 세트의 사용은, 상기 업데이트 패키지에서 사용되는 상기 명령어 세트의 크기가 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변환시키는데 사용되는 대응하는 비트 패턴의 크기보다 작아지도록 상기 전자 디바이스 내에 존재하는 상기 상주 동작 코드를 우선적으로 재사용하는 동작을 지정함으로써 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변환시키는데 요구되는 상기 업데이트 패키지의 크기를 감소시키는 시스템.
  9. 제1항에 있어서,
    상기 디지털 정보 시퀀스는 비트 양식(bit-wise)의 정보 패턴을 포함하는 시스템.
  10. 제1항에 있어서,
    상기 업데이트 패키지는 통신 매체를 통해 상기 배포 시스템과 상기 전자 디바이스 사이에 통신 링크를 확립함으로써 배포되는 시스템.
  11. 제10항에 있어서,
    상기 통신 매체는 무선 네트워크를 포함하는 시스템.
  12. 제10항에 있어서,
    상기 통신 매체는 유선 네트워크를 포함하는 시스템.
  13. 제10항에 있어서,
    상기 통신 매체는 인터넷-접속 통신 매체를 포함하는 시스템.
  14. 제1항에 있어서,
    상기 다수의 분산형 전자 디바이스는 기본적으로 이동 전화기, 셀룰러 폰(cellular phone), 개인 휴대 단말기, 페이저, 위성, 랩탑 컴퓨터, 노트북 컴퓨터, 및 텔레매틱(telematic) 디바이스로 구성된 그룹에서 선택되는 무선 디바이스를 포함하는 시스템.
  15. 제1항에 있어서,
    상기 다수의 분산형 전자 디바이스는 기본적으로 개인용 컴퓨터, 서버 컴퓨터, 데스크탑 컴퓨터, 및 텔레매틱 디바이스로 구성된 그룹에서 선택되는 전자 디바이스를 포함하는 시스템.
  16. 제1항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 시스템.
  17. 제1항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 업데이트될 전자 디바이스에 저장된 제1의 수집된 개인화 정보를 포함하여, 상기 제1의 수집된 개인화 정보를 제2의 수집된 개인화 정보로 변환시키는 시스템.
  18. 제17항에 있어서,
    상기 제1 및 제2의 수집된 개인화 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 개인화 정보를 포함하는 시스템.
  19. 제1항에 있어서,
    상기 상주 동작 코드는 소프트웨어 프로그램의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 상기 소프트웨어 프로그램의 제2 버전을 포함하는 시스템.
  20. 제1 코드 버전을 제2 코드 버전으로 변환시키는 다수의 변환 명령어를 포함하는 업데이트 패키지를 사용하여, 제1 코드 버전을 포함하는 제1 다수의 데이터 시퀀스를 갖춘 전자 디바이스를, 제2 다수의 데이터 시퀀스를 포함하는 제2 코드 버전으로 업데이트하는 시스템으로서,
    상기 제1 다수의 데이터 시퀀스와 상기 제2 다수의 데이터 시퀀스 간의 패턴 차이를 식별하도록 상기 제1 코드 버전과 상기 제2 코드 버전 사이에서 버전 비교를 수행하는 업데이트 생성기 - 상기 식별된 패턴 차이는 식별된 패턴 차이를 구성할 때 사용될 수 있는 상기 제1 다수의 데이터 시퀀스 중 일부를 식별하는 변환 명령어를 사용하여 엔코드되고, 이어서 상기 변환 명령어를 사용하여 상기 업데이트 패키지를 형성함 -;
    상기 업데이트 생성기로부터 상기 업데이트 패키지를 수신하고 상기 업데이트 패키지를 상기 전자 디바이스에 배포하는 배포 시스템; 및
    상기 업데이트 패키지의 상기 변환 명령어를 실행하고, 그에 의해 상기 전자 디바이스에 상주하는 상기 제1 코드 버전을 상기 업데이트된 제2 코드 버전으로 변환시키는 상기 전자 디바이스에 상주하는 업데이트 에이전트(update agent)
    를 포함하는 시스템.
  21. 제20항에 있어서,
    상기 업데이트 패키지의 변환 명령어는 상기 제1 코드 버전을 상기 제2 코드 버전으로 변환하기 위해 상기 식별된 패턴 차이를 분해하는 하나 이상의 비교 함수를 적용하는 효율성을 평가함으로써 선택되는 시스템.
  22. 제21항에 있어서,
    상기 비교 함수의 효율성은 상기 변환 명령어가 적용되는 상기 패턴 차이의 크기와 비교되는 상기 변환 명령어의 결과 크기를 근거로 하는 시스템.
  23. 제22항에 있어서,
    가장 높은 효율성을 갖는 상기 변환 명령어는 상기 업데이트 패키지에 포함되도록 상기 업데이트 생성기에 의해 선택되는 시스템.
  24. 제20항에 있어서,
    상기 제1 및 제2 코드 버전은 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 시스템.
  25. 제20항에 있어서,
    상기 제1 코드 버전은 업데이트될 상기 전자 디바이스에 저장된 제1의 수집된 정보를 포함하여, 상기 제1의 수집된 정보를 상기 제2 코드 버전에 나타내어지는 제2의 수집된 정보로 변환시키는 시스템.
  26. 제25항에 있어서,
    상기 제1 및 제2의 수집된 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 개인화 정보를 포함하는 시스템.
  27. 제20항에 있어서,
    상기 제1 코드 버전은 소프트웨어 프로그램이고, 상기 제2 코드 버전은 소프트웨어 프로그램의 업데이트된 버전을 포함하는 시스템.
  28. 다수의 데이터 블록을 포함하는 업데이트된 동작 코드로 다수의 분산형 전자 디바이스를 업데이트하는 시스템으로서, - 상기 다수의 분산형 전자 디바이스는 각각 다수의 데이터 블록으로서 저장되는 상주 동작 코드를 포함함 -:
    상기 상주 동작 코드의 상기 다수의 데이터 블록을, 상기 업데이트된 동작 코드의 상기 다수의 데이터 블록과 비교하고, 그에 의해 상기 상주 동작 코드의 상기 다수의 데이터 블록 중 적어도 일부를 사용하여 상기 업데이트된 동작 코드를 어떻게 생성하는가를 나타내는 명령어 세트를 포함하는 업데이트 패키지를 생성시키는 업데이트 생성기;
    상기 업데이트 패키지를 포함하고 상기 다수의 분산형 전자 디바이스 각각에 의해 액세스가능한 배포 시스템; 및
    상기 다수의 분산형 전자 디바이스 각각에 상주하는 다수의 클라이언트 모듈 - 상기 다수의 클라이언트 모듈은 상기 업데이트 패키지를 수신하기 위해 상기 분산 시스템을 액세스하고, 상기 명령어 세트는 상기 상주 동작 코드를 포함하는 상기 다수의 데이터 블록을 사용하여 상기 클라이언트 모듈이 상기 업데이트된 동작 코드를 포함하는 상기 다수의 데이터 블록 중 적어도 일부를 생성하도록 상기 클라이언트 모듈에 명령어를 제공함 -
    을 포함하는 시스템.
  29. 제28항에 있어서,
    상기 업데이트 생성기는 상기 상주 동작 코드의 상기 다수의 데이터 블록과, 상기 업데이트된 동작 코드의 상기 다수의 데이터 블록을 비교하고, 상기 동작 코드들 사이의 시퀀스 차이를 식별하는 시스템.
  30. 제29항에 있어서,
    상기 업데이트 생성기는 상기 상주 동작 코드를 포함하는 상기 데이터 블록 중 일부를 사용하여 상기 동작 코드들 사이의 시퀀스 차이를 효과적으로 변환시키고, 그에 의해 상기 업데이트 패키지에 상기 시퀀스 차이를 직접 포함하는 것에 비해 상기 업데이트 패키지의 크기를 감소시키도록 상기 명령어 세트를 형성하는 시스템.
  31. 제30항에 있어서,
    상기 시퀀스 차이는 비트 형식의 차이를 포함하는 시스템.
  32. 제30항에 있어서,
    상기 시퀀스 차이는 바이트 형식의 차이를 포함하는 시스템.
  33. 제28항에 있어서,
    상기 배포 시스템 및 상기 다수의 분산형 전자 디바이스는 통신 매체를 통해 정보를 교환하는 시스템.
  34. 제33항에 있어서,
    상기 배포 시스템 및 상기 다수의 분산형 전자 디바이스에 의해 교환되는 정보 중 적어도 일부는 상기 업데이트 패키지를 포함하는 시스템.
  35. 제33항에 있어서,
    상기 통신 매체는 무선 네트워크를 포함하는 시스템.
  36. 제33항에 있어서,
    상기 통신 매체는 유선 네트워크를 포함하는 시스템.
  37. 제33항에 있어서,
    상기 통신 매체는 인터넷-접속 통신 매체를 포함하는 시스템.
  38. 제28항에 있어서,
    상기 다수의 분산형 전자 디바이스는 기본적으로 이동 전화기, 셀룰러 폰, 개인 휴대 단말기, 페이저, 위성, 랩탑 컴퓨터, 노트북 컴퓨터, 및 텔레매틱 디바이스로 구성된 그룹에서 선택되는 무선 디바이스를 포함하는 시스템.
  39. 제28항에 있어서,
    상기 다수의 분산형 전자 디바이스는 기본적으로 개인용 컴퓨터, 서버 컴퓨터, 데스크탑 컴퓨터, 및 텔레매틱 디바이스로 구성된 그룹에서 선택되는 전자 디바이스를 포함하는 시스템.
  40. 제28항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 시스템.
  41. 제28항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 업데이트될 상기 전자 디바이스에 저장된 제1의 수집된 개인화 정보를 포함하여, 상기 제1의 수집된 개인화 정보를 제2의 수집된 개인화 정보로 변환시키는 시스템.
  42. 제41항에 있어서,
    상기 제1 및 제2의 수집된 개인화 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 개인화 정보를 포함하는 시스템.
  43. 제28항에 있어서,
    상기 상주 동작 코드는 소프트웨어 프로그램의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 상기 소프트웨어 프로그램의 제2 버전을 포함하는 시스템.
  44. 제28항에 있어서,
    상기 상주 동작 코드는 상기 전자 디바이스에 제1 기능을 전달하고, 상기 업데이트된 동작 코드는 상기 전자 디바이스에 제2 기능을 전달하는 시스템.
  45. 제44항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 동일한 기능 종류 또는 애플리케이션 유형인 시스템.
  46. 제44항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 다른 기능 종류 또는 애플리케이션 유형 인 시스템.
  47. 제44항에 있어서,
    상기 상주 동작 코드 및 상기 업데이트된 동작 코드는 상기 동작 코드의 다른 버전을 포함하는 시스템.
  48. 제28항에 있어서,
    상기 상주 동작 코드는 펌웨어(firmware)의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 펌웨어의 제2 버전을 포함하는 시스템.
  49. 다수의 데이터 블록을 포함하는 업데이트된 동작 코드로 다수의 분산형 전자 디바이스를 업데이트하는 시스템으로서 - 상기 다수의 분산형 전자 디바이스는 각각 다수의 데이터 블록으로 저장된 상주 동작 코드를 포함함 -:
    상기 상주 동작 코드의 상기 다수의 데이터 블록을 상기 업데이트된 동작 코드의 상기 다수의 데이터 블록과 비교하고, 그에 의해 상기 업데이트된 동작 코드와 상기 상주 동작 코드 사이에서 다른 업데이트 데이터 블록을 식별하는 업데이트 생성기 - 상기 업데이트 생성기는 상기 상주 동작 코드의 상기 다수의 데이터 블록 중 적어도 일부를 사용하여 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 어떻게 변환시키는가와 상기 업데이트 데이터 블록을 어떻게 생성하는가를 나타내는 명령어 세트를 포함하는 업데이트 패키지를 생성함 -;
    상기 업데이트 패키지를 포함하고 상기 다수의 분산형 전자 디바이스 각각에 의해 액세스가능한 배포 시스템; 및
    상기 다수의 분산형 전자 세트 각각에 상주하는 다수의 클라이언트 모듈 - 상기 다수의 클라이언트 모듈은 상기 업데이트 패키지를 수신할 수 있도록 상기 배포 시스템을 액세스하고, 상기 명령어 세트는 상기 클라이언트 모듈이 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변형되도록 상기 클라이언트 모듈에 명령어를 제공하고, 상기 클라이언트 모듈은 상기 수신된 명령어 세트를 사용하여 상기 업데이트된 데이터 블록 중 적어도 일부를 생성시켜 상기 상주 동작 코드의 데이터 블록에 대해 상기 업데이트된 데이터 블록을 생성하는 동작을 수행함-
    을 포함하는 시스템.
  50. 제49항에 있어서,
    상기 제1 코드 버전과 상기 제2 코드 버전 사이에서 식별된 상기 패턴 차이는 개별적으로 식별가능한 워드 크기를 갖는 시스템.
  51. 제50항에 있어서,
    상기 패턴 차이의 워드 크기는 적어도 1 비트를 포함하는 시스템.
  52. 제50항에 있어서,
    상기 패턴 차이의 워드 크기는 적어도 1 바이트를 포함하는 시스템.
  53. 제50항에 있어서,
    상기 업데이트 생성기는 상기 제2 코드 버전으로 변환된 상기 제1 코드 버전 중 적어도 일부를 사용하여 상기 제1 코드 버전과 상기 제2 코드 버전 사이의 패턴 차이를 어떻게 변환시키는가를 정의하는 상기 변환 명령어를 형성하는 시스템.
  54. 제49항에 있어서,
    상기 배포 시스템 및 상기 다수의 분산형 전자 디바이스는 통신 매체를 통해 정보를 교환하는 시스템.
  55. 제54항에 있어서,
    상기 배포 시스템 및 상기 다수의 분산형 전자 디바이스에 의해 교환되는 정보 중 적어도 일부는 상기 업데이트 패키지를 포함하는 시스템.
  56. 제54항에 있어서,
    상기 통신 매체는 무선 네트워크를 포함하는 시스템.
  57. 제54항에 있어서,
    상기 통신 매체는 유선 네트워크를 포함하는 시스템.
  58. 제54항에 있어서,
    상기 통신 매체는 기본적으로 인터넷-접속 통신 매체, LAN(local area network), WAN(wide area network), 공용 인터넷, 전용 인터넷, 전용 컴퓨터 네트워크, 보안 인터넷, 전용 네트워크, 공용 네트워크, VAN(value added network), 및 대화형 텔레비전 네트워크, 무선 데이터 전송 네트워크, 양방향 케이블 네트워크, 대화형 키오스크(kiosk) 네트워크로 구성된 그룹에서 선택되는 시스템.
  59. 제49항에 있어서,
    상기 전자 디바이스는 기본적으로 이동 전화기, 셀룰러 폰, 개인 휴대 단말기, 페이저, 위성, 랩탑 컴퓨터, 노트북 컴퓨터, 및 텔레매틱 디바이스로 구성된 그룹에서 선택되는 무선 디바이스를 포함하는 시스템.
  60. 제49항에 있어서,
    상기 전자 디바이스는 기본적으로 개인용 컴퓨터, 데스크탑 컴퓨터, 서버 컴퓨터, 및 텔레매틱 디바이스로 구성된 그룹에서 선택되는 디바이스를 포함하는 시스템.
  61. 제49항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 시스템.
  62. 제49항에 있어서,
    상기 상주 동작 코드는 업데이트될 상기 전자 디바이스에 저장된 제1의 수집된 정보를 포함하여, 상기 제1의 수집된 정보를 상기 업데이트된 동작 코드로 나타내어지는 제2의 수집된 정보로 변환시키는 시스템.
  63. 제62항에 있어서,
    상기 제1 및 제2의 수집된 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 개인화 정보를 포함하는 시스템.
  64. 제49항에 있어서,
    상기 상주 동작 코드는 소프트웨어 프로그램의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 상기 소프트웨어 프로그램의 제2 버전을 포함하는 시스템.
  65. 제49항에 있어서,
    상기 상주 동작 코드는 상기 다수의 전자 디바이스에 제1 기능을 전달하고, 상기 업데이트된 동작 코드는 상기 다수의 전자 디바이스에 제2 기능을 전달하는 시스템.
  66. 제65항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 동일한 시스템.
  67. 제65항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 실질적으로 본질이 다른 시스템.
  68. 제49항에 있어서,
    상기 상주 동작 코드는 펌웨어의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 펌웨어의 제2 버전을 포함하는 시스템.
  69. 전자 디바이스의 제1 저장부에 저장된 상주 동작 코드를 업데이트된 동작 코드로 업데이트하는 방법으로서,
    (i) 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변환시키는 다수의 변환 동작을 포함하는 업데이트 패키지를 개발하는 단계;
    (ii) 상기 업데이트 패키지를 상기 전자 디바이스로 전송하는 단계;
    (iii) 상기 상주 동작 코드 중 일부분을 제2 저장부에 복사하는 단계;
    (iv) 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변환시키는 상기 업데이트 패키지의 상기 변환 동작을 사용하여 상기 제2 저장부에 저장된 상기 상주 동작 코드 일부분을 업데이트하는 단계;
    (v) 상기 제1 저장부에 저장된 상기 상주 동작 코드 일부분을 상기 제2 저장부에 저장된 상기 업데이트된 동작 코드 일부분으로 대체하는 단계; 및
    (vi) 상기 상주 동작 코드가 상기 업데이트된 동작 코드로 완전히 업데이트될 때까지 (iii) 내지 (v) 단계를 반복하는 단계
    를 포함하는 방법.
  70. 제69항에 있어서,
    상기 제2 저장부에 저장된 상기 상주 동작 코드 일부분을 업데이트하는 단계는, 상기 제1 저장부에 저장된 상기 상주 동작 코드 중 적어도 일부를 사용하는 변환 동작들을 적용하여, 상기 제2 저장부에 저장된 상기 상주 동작 코드 일부분을 상기 업데이트된 동작 코드 일부분으로 변환시키는 단계를 포함하는 방법.
  71. 제70항에 있어서,
    상기 상주 동작 코드 일부분을 업데이트하는 단계는, 상기 상주 동작 코드 일부 대신에 상기 제2 저장부에 저장된 상기 업데이트된 동작 코드를 복사함으로써 상기 제1 저장부에 저장된 상기 상주 동작 코드 일부분을 대체하는 단계를 더 포함하는 방법.
  72. 제69항에 있어서,
    상기 업데이트 패키지를 개발하는 단계는, 상기 변환 동작들의 적용에 의해 상기 업데이트된 동작 코드를 형성하는데 사용될 수 있는 상주 동작 코드 시퀀스를 포함하는 상기 제1 저장부 내의 위치를 나타내는 하나 이상의 어드레스를 포함하는 해쉬 테이블(hash table)을 생성하는 단계를 포함하는 방법.
  73. 제72항에 있어서,
    상기 업데이트된 동작 코드는 상기 해쉬 테이블에서 지정된 하나 이상의 특정 어드레스에 대응하는 상기 상주 동작 코드 시퀀스를 검색하고, 검색된 상기 상주 동작 코드 시퀀스에 상기 변환 동작을 적용하여, 그에 의해 상기 상주 동작 코드 시퀀스를 업데이트된 동작 코드 시퀀스로 변환시킴으로써 생성되는 방법.
  74. 제69항에 있어서,
    상기 업데이트 패키지를 개발하는 단계는,
    하나 이상의 다른 변환 동작들의 효율성을 평가하여 상기 상주 동작 코드를 상기 업데이트된 동작 코드로 변환시키는 단계; 및
    상주 동작 코드의 이용도를 증가시키는 변환 동작들을 선택하여 상기 업데이트된 동작 코드를 생성하고, 그에 따라 상기 업데이트 패키지의 크기를 감소시키는 단계
    를 더 포함하는 방법.
  75. 제69항에 있어서,
    상기 업데이트 패키지를 상기 전자 디바이스로 전송하는 단계는 무선 통신 매체를 통해 상기 업데이트 패키지를 전송하는 단계를 포함하는 방법.
  76. 제69항에 있어서,
    상기 업데이트 패키지를 상기 전자 디바이스로 전송하는 단계는 기본적으로 인터넷-접속 통신 매체, LAN(local area network), WAN(wide area network), 공용 인터넷, 전용 인터넷, 전용 컴퓨터 네트워크, 보안 인터넷, 전용 네트워크, 공용 네트워크, VAN, 대화형 텔레비전 네트워크, 무선 데이터 전송 네트워크, 양방향 케이블 네트워크, 및 대화형 키오스크 네트워크로 구성된 그룹에서 선택되는 통신 매체를 통해 상기 업데이트 패키지를 전송하는 단계를 포함하는 방법.
  77. 제69항에 있어서,
    제1 저장부에 저장된 상기 상주 동작 코드를 업데이트하는 단계는 비휘발성 저장 매체에 저장된 동작 코드를 업데이트하는 단계를 포함하는 방법.
  78. 제77항에 있어서,
    상기 비휘발성 저장 매체에 저장된 동작 코드를 업데이트하는 단계는 플래시 메모리(flash memory) 저장 매체에 저장된 동작 코드를 업데이트하는 단계를 포함하는 방법.
  79. 제77항에 있어서,
    상기 비휘발성 저장 매체에 저장된 동작 코드를 업데이트하는 단계는 기본적으로 하드 드라이브, 광 드라이브, 테이프 드라이브, 및 EPROM 디바이스로 구성된 그룹에서 선택된 저장 매체에 저장된 동작 코드를 업데이트하는 단계를 포함하는 방법.
  80. 제69항에 있어서,
    상기 상주 동작 코드 일부를 제2 저장부로 복사하는 단계는 상기 상주 동작 코드 일부분을 휘발성 저장 매체로 복사하는 단계를 포함하는 방법.
  81. 제80항에 있어서,
    상기 상주 동작 코드 일부분을 휘발성 저장 매체에 복사하는 단계는 상기 상주 동작 코드 일부분을 랜덤 액세스 메모리 저장 매체에 복사하는 단계를 포함하는 방법.
  82. 제69항에 있어서,
    제1 저장부에 저장된 상기 상주 동작 코드를 업데이트하는 단계는 상기 상주 동작 코드를 포함하는 다수의 뱅크(bank)를 갖춘 상기 제1 저장부의 세분된 부분에 저장된 상기 상주 동작 코드를 업데이트하는 단계를 포함하는 방법.
  83. 제82항에 있어서,
    상기 제2 저장부에 복사된 상기 상주 동작 코드 일부분은 상기 제1 저장부로부터 하나 이상의 뱅크에 존재하는 상기 상주 동작 코드에 대응하는 방법.
  84. 제82항에 있어서,
    상기 변환 동작들은 상기 제1 저장부의 하나 이상의 뱅크에 존재하는 상기 상주 동작 코드를 업데이트된 동작 코드로 변환시키는 방법.
  85. 제69항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 방법.
  86. 제69항에 있어서,
    상기 상주 및 업데이트된 동작 코드는 업데이트될 상기 전자 디바이스에 저장된 제1의 수집된 정보를 포함하여, 상기 제1의 수집된 정보를 제2의 수집된 정보로 변환시키는 방법.
  87. 제86항에 있어서,
    상기 제1 및 제2의 수집된 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 정보를 포함하는 방법.
  88. 제69항에 있어서,
    상기 상주 동작 코드는 소프트웨어 프로그램의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 상기 소프트웨어 프로그램의 제2 버전을 포함하는 방법.
  89. 제69항에 있어서,
    상기 상주 동작 코드는 상기 전자 디바이스에 제1 기능을 전달하고, 상기 업데이트된 동작 코드는 상기 전자 디바이스에 제2 기능을 전달하는 방법.
  90. 제89항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 동일한 기능 종류 또는 애플리케이션 유형으로부터 선택되는 방법.
  91. 제89항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 다른 기능 종류 또는 애플리케이션 유형으로부터 선택되는 방법.
  92. 제69항에 있어서,
    상기 상주 동작 코드는 펌웨어의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 펌웨어의 제2 버전을 포함하는 방법.
  93. 제69항에 있어서,
    상기 업데이트 프로세스 동안 전원이 꺼지거나 손상이 발생되는 경우 상기 업데이트 패키지의 비휘발성 복사가 이용가능해지도록 상기 변환 동작들을 수행하기 이전에, 상기 제1 저장부에 다운로드된 상기 업데이트 패키지의 사본을 형성하는 단계를 더 포함하는 방법.
  94. 제69항에 있어서,
    상기 업데이트 프로세스 동안 전원이 꺼지거나 손상이 발생되는 경우 업데이트된 상주 동작 코드부의 비휘발성 복사가 이용가능해지도록 상기 원래의 동작 코드부를 대체하기 이전에, 상기 제1 저장부에 상기 업데이트된 상주 동작 코드부의 사본을 형성하는 단계를 더 포함하는 방법.
  95. 업데이트가능한 전자 디바이스로서,
    동작 코드가 저장되어 있는 비휘발성 저장부;
    통신 매체를 통해 다수의 명령어를 포함하는 업데이트 패키지를 수신하도록 적응된 휘발성 저장부; 및
    상기 비휘발성 저장부에 저장된 상기 동작 코드를 업데이트하는 상기 업데이트 패키지의 명령어들을 구현하는 컨트롤러 - 상기 컨트롤러는 순차적으로 (i) 상기 비휘발성 저장부로부터 상기 휘발성 저장부로 동작 코드의 원래의 부분을 검색하고, (ii) 상기 휘발성 저장부 내의 상기 검색된 부분에 상기 업데이트 패키지의 명령어들을 적용하여 그에 의해 상기 검색된 원래의 동작 코드 부분을 업데이트된 동작 코드 부분으로 변환시키고, 및 (iii) 상기 원래의 동작 코드 부분을 상기 업데이트된 동작 코드 부분으로 대체하도록 구성됨 -
    를 포함하는 업데이트가능한 전자 디바이스.
  96. 제95항에 있어서,
    상기 비휘발성 저장부는 플래시 메모리 저장 매체를 포함하는 업데이트가능한 전자 디바이스.
  97. 제95항에 있어서,
    상기 비휘발성 저장부는 기본적으로 하드 드라이브, 광 드라이브, 테이프 드라이브, 및 EPROM 디바이스로 구성된 그룹으로부터 선택된 저장 매체를 포함하는 업데이트가능한 전자 디바이스.
  98. 제95항에 있어서,
    상기 휘발성 저장부는 랜덤 액세스 메모리 저장 매체를 포함하는 업데이트가능한 전자 디바이스.
  99. 제95항에 있어서,
    상기 통신 매체는 무선 통신 매체를 포함하는 업데이트가능한 전자 디바이스.
  100. 제95항에 있어서,
    상기 통신 매체는 유선 통신 매체를 포함하는 업데이트가능한 전자 디바이스.
  101. 제95항에 있어서,
    상기 통신 매체는 기본적으로 인터넷-접속 통신 매체, LAN(local area network), WAN(wide area network), 공용 인터넷, 전용 인터넷, 전용 컴퓨터 네트워크, 보안 인터넷, 전용 네트워크, 공용 네트워크, VAN, 대화형 텔레비전 네트워크, 무선 데이터 전송 네트워크, 양방향 케이블 네트워크, 및 대화형 키오스크 네트워크로 구성된 그룹에서 선택되는 업데이트가능한 전자 디바이스.
  102. 제95항에 있어서,
    상기 비휘발성 저장부는 상기 상주 동작 코드를 포함하는 다수의 뱅크로 세분되는 업데이트가능한 전자 디바이스.
  103. 제102항에 있어서,
    상기 휘발성 저장부로 검색된 상기 상주 동작 코드 일부분은 상기 비휘발성 저장부의 상기 하나 이상의 뱅크에 존재하는 상기 상주 동작 코드에 대응하는 업데이트가능한 전자 디바이스.
  104. 제102항에 있어서,
    상기 명령어들은 상기 비휘발성 저장부의 하나 이상의 뱅크에 존재하는 상기 상주 동작 코드를 업데이트된 동작 코드로 변환시키는 업데이트가능한 전자 디바이스.
  105. 제95항에 있어서,
    상기 컨트롤러는 상기 업데이트가능한 전자 디바이스가 상기 상주 동작 코드 또는 상기 업데이트된 동작 코드의 손상으로부터 보호되도록 하는 고장 허용 방식으로 상기 업데이트 패키지의 명령어들을 구현하는 업데이트가능한 전자 디바이스.
  106. 제95항에 있어서,
    상기 업데이트 패키지의 하나 이상의 백업 사본은 전원 중단 또는 디바이스 고장의 결과로서 상기 업데이트 패키지가 손실되지 않도록 상기 비휘발성 저장부에 유지되는 업데이트가능한 전자 디바이스.
  107. 제106항에 있어서,
    전원이 중단되거나 디바이스가 고장나면, 상기 컨트롤러는 상기 업데이트 패키지의 하나 이상의 백업 사본에 포함된 정보를 복원하고, 전원 중단이 일어나기 전에 성공적으로 완료된 것으로 검출된 동작에 대응하는 지점에서 업데이트를 재개하는 업데이트가능한 전자 디바이스.
  108. 제107항에 있어서,
    상기 컨트롤러는 에러 정정 코드 또는 CRC 코드를 사용하여 성공적으로 완료된 동작을 검출함으로써 상기 상주 및 업데이트된 동작 코드를 평가하여 업데이트 설치의 진행을 결정하는 업데이트가능한 전자 디바이스.
  109. 제95항에 있어서,
    상기 업데이트된 동작 코드의 하나 이상의 백업 사본은 전원 중단 또는 디바이스 고장의 결과로 상기 업데이트된 동작 코드가 손실되지 않도록 상기 비휘발성 저장부에 유지되는 업데이트가능한 전자 디바이스.
  110. 제109항에 있어서,
    전원이 중단되거나 디바이스가 고장나면, 상기 컨트롤러는 상기 업데이트된 동작 코드의 하나 이상의 백업 사본에 포함된 정보를 복원하고, 전원 중단이 일어나기 전에 성공적으로 완료된 것으로 검출된 동작에 대응하는 지점에서 업데이트를 재개하는 업데이트가능한 전자 디바이스.
  111. 제110항에 있어서,
    상기 컨트롤러는 에러 정정 코드 또는 CRC 코드를 사용하여 성공적으로 완료된 동작을 검출함으로써 상기 상주 및 업데이트된 동작 코드를 평가하여 업데이트 설치의 진행을 결정하는 업데이트가능한 전자 디바이스.
  112. 제95항에 있어서,
    상기 상주 동작 코드의 하나 이상의 백업 사본은 전원 중단 또는 디바이스 고장의 결과로 상기 상주 동작 코드가 손실되지 않도록 상기 비휘발성 저장부에 유지되는 업데이트가능한 전자 디바이스.
  113. 제112항에 있어서,
    전원이 중단되거나 디바이스가 고장나면, 상기 컨트롤러는 상기 상주 동작 코드의 하나 이상의 백업 사본에 포함된 정보를 복원하고, 전원 중단이 일어나기 전에 성공적으로 완료된 것으로 검출된 동작에 대응하는 지점에서 업데이트를 재개하는 업데이트가능한 전자 디바이스.
  114. 제113항에 있어서,
    상기 컨트롤러는 에러 정정 코드 또는 CRC 코드를 사용하여 성공적으로 완료된 동작을 검출함으로써 상기 상주 및 업데이트된 동작 코드를 평가하여 업데이트 설치의 진행을 결정하는 업데이트가능한 전자 디바이스.
  115. 제95항에 있어서,
    상기 원래의 동작 코드 및 업데이트된 동작 코드는 상기 전자 디바이스에 대한 운영 체제를 형성하는 명령어 및 정보를 포함하는 업데이트가능한 전자 디바이스.
  116. 제95항에 있어서,
    상기 원래의 동작 코드는 업데이트될 상기 전자 디바이스에 저장된 제1의 수집된 정보를 포함하여, 상기 제1의 수집된 정보를 상기 업데이트된 동작 코드로 나타내어지는 제2의 수집된 정보로 변환시키는 업데이트가능한 전자 디바이스.
  117. 제116항에 있어서,
    상기 제1 및 제2의 수집된 정보는 이름, 주소, 전화번호, 지도, 방향, 및 다른 유형의 개인화 정보를 포함하는 업데이트가능한 전자 디바이스.
  118. 제95항에 있어서,
    상기 원래의 동작 코드는 소프트웨어 프로그램의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 상기 소프트웨어 프로그램의 제2 버전을 포함하는 업데이트가능한 전자 디바이스.
  119. 제95항에 있어서,
    상기 원래의 동작 코드는 상기 전자 디바이스로 제1 기능을 전달하고, 상기 업데이트된 동작 코드는 상기 전자 디바이스로 제2 기능을 전달하는 업데이트가능한 전자 디바이스.
  120. 제119항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 동일한 업데이트가능한 전자 디바이스.
  121. 제119항에 있어서,
    상기 제1 기능 및 상기 제2 기능은 실질적으로 본질이 다른 업데이트가능한 전자 디바이스.
  122. 제95항에 있어서,
    상기 원래의 동작 코드는 펌웨어의 제1 버전을 포함하고, 상기 업데이트된 동작 코드는 펌웨어의 제2 버전을 포함하는 업데이트가능한 전자 디바이스.
KR10-2003-7000910A 2000-11-17 2001-11-19 정보의 업데이트 및 배포 시스템 및 방법 KR100506785B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US24960600P 2000-11-17 2000-11-17
US60/249,606 2000-11-17
PCT/US2001/044034 WO2002041147A1 (en) 2000-11-17 2001-11-19 System and method for updating and distributing information

Publications (2)

Publication Number Publication Date
KR20030071750A KR20030071750A (ko) 2003-09-06
KR100506785B1 true KR100506785B1 (ko) 2005-08-08

Family

ID=22944217

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7000910A KR100506785B1 (ko) 2000-11-17 2001-11-19 정보의 업데이트 및 배포 시스템 및 방법

Country Status (7)

Country Link
US (2) US7752616B2 (ko)
EP (1) EP1337917A4 (ko)
JP (1) JP2004514214A (ko)
KR (1) KR100506785B1 (ko)
AU (1) AU2002232426A1 (ko)
CA (1) CA2414281C (ko)
WO (1) WO2002041147A1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468515B2 (en) 2000-11-17 2013-06-18 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
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
KR101494343B1 (ko) 2008-02-22 2015-02-23 삼성전자주식회사 인터넷 공유기의 펌웨어 업그레이드 장치 및 그 제어방법

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1327191B1 (en) 2000-09-22 2013-10-23 Lumension Security, Inc. Non-invasive automatic offsite patch fingerprinting and updating system and method
US7065347B1 (en) 2001-06-27 2006-06-20 Peoplenet Communications Corporation System and method for over the air programming
JP4083505B2 (ja) 2001-08-27 2008-04-30 株式会社リコー 画像形成装置,プログラム更新方法および記録媒体
CA2369228A1 (en) * 2002-01-24 2003-07-24 Alcatel Canada Inc. System and method for managing configurable elements of devices in a network element and a network
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US7340736B2 (en) * 2002-08-22 2008-03-04 Hewlett-Packard Development Company, L.P. Electronic device with an update agent that employs preprocessing techniques for update
US20040068724A1 (en) * 2002-08-30 2004-04-08 Gardner Richard Wayne Server processing for updating dataset versions resident on a wireless device
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US6886141B1 (en) * 2002-10-07 2005-04-26 Qlogic Corporation Method and system for reducing congestion in computer networks
JP2004152279A (ja) * 2002-10-08 2004-05-27 Matsushita Electric Ind Co Ltd プログラム更新方法および端末装置
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
EP1563436A4 (en) * 2002-11-21 2010-01-20 Hewlett Packard Development Co UPDATE NETWORK PROVIDING LIFE CYCLE MANAGEMENT OF UPDATE AND MOBILE COMBINATION PROGRAMS
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
EP1584016A4 (en) * 2003-01-13 2009-03-11 Hewlett Packard Development Co MOBILE COMBINER HAVING THE CAPACITY TO UPDATE ITS UPDATE AGENT
WO2004066091A2 (en) * 2003-01-21 2004-08-05 Bitfone Corporation Update system capable of updating software across multiple flash chips
EP1597668A4 (en) * 2003-02-11 2009-12-23 Hewlett Packard Development Co ELECTRONIC DEVICE FOR SUPPORTING MULTIPLE UPDATING AGENTS
EP1654640B1 (en) * 2003-06-04 2018-08-01 Qualcomm Incorporated Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software
US7343443B1 (en) 2003-07-08 2008-03-11 Hewlett-Packard Development Company, L.P. Updated package generation based on analysis of bank dependency
US20050010913A1 (en) * 2003-07-11 2005-01-13 Chih-Wei Chen Computer code upgrading method and system
US7424706B2 (en) * 2003-07-16 2008-09-09 Microsoft Corporation Automatic detection and patching of vulnerable files
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7792115B2 (en) 2003-07-21 2010-09-07 Qlogic, Corporation Method and system for routing and filtering network data packets in fibre channel systems
US7420982B2 (en) * 2003-07-21 2008-09-02 Qlogic, Corporation Method and system for keeping a fibre channel arbitrated loop open during frame gaps
US7406092B2 (en) * 2003-07-21 2008-07-29 Qlogic, Corporation Programmable pseudo virtual lanes for fibre channel systems
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7861211B2 (en) 2003-07-29 2010-12-28 Hewlett-Packard Development Company, L.P. Mobile handset with update agent implemented in hardware
US7103779B2 (en) * 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
KR20090035044A (ko) 2003-09-26 2009-04-08 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피 네트워크에서의 생성자와 콘텐츠 서버 간의 업데이트 패키지 전송을 위한 업데이트 패키지 카탈로그
FR2860310B1 (fr) * 2003-09-30 2005-12-09 Peugeot Citroen Automobiles Sa Procede de telechargement de donnees pour des calculateurs et dispositif de mise en oeuvre d'un tel procede.
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
EP1685501A1 (en) * 2003-11-18 2006-08-02 Nokia Corporation Method, subject terminal device, target terminal device, data content server, system and computer programs for maintaining and updating data contents
US20050124332A1 (en) 2003-12-08 2005-06-09 Clark David R. Mobile device programming system and method
US20050132351A1 (en) * 2003-12-12 2005-06-16 Randall Roderick K. Updating electronic device software employing rollback
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US9323515B1 (en) 2004-01-16 2016-04-26 Qualcomm Incorporated Network with broker for device management
DE602004026822D1 (de) * 2004-02-27 2010-06-10 Ericsson Telefon Ab L M Programmieren eines Flash-Speichers
US7599970B2 (en) 2004-03-15 2009-10-06 Red Bend Ltd. Method and apparatus for updating a stored version of content stored in a storage device
US8578359B2 (en) 2004-03-15 2013-11-05 Red Bend Ltd. Method and apparatus for reliable in-place update
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7523145B2 (en) * 2004-04-22 2009-04-21 Opentv, Inc. System for managing data in a distributed computing system
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
WO2005116827A1 (en) * 2004-05-31 2005-12-08 Stmicroelectronics Pvt. Ltd. A method for remotely upgrading the firmware of a target device using wireless technology
US7657886B1 (en) * 2004-06-03 2010-02-02 Hewlett-Packard Development Company, L.P. Mobile device with a MMU for faster firmware updates in a wireless network
JP2006048529A (ja) 2004-08-06 2006-02-16 Toshiba Corp ダウンロード方法、ダウンロードシステム、クライアント装置及びサーバ装置
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US7411958B2 (en) * 2004-10-01 2008-08-12 Qlogic, Corporation Method and system for transferring data directly between storage devices in a storage area network
US8295299B2 (en) 2004-10-01 2012-10-23 Qlogic, Corporation High speed fibre channel switch element
US9489496B2 (en) 2004-11-12 2016-11-08 Apple Inc. Secure software updates
KR20060065078A (ko) * 2004-12-09 2006-06-14 삼성전자주식회사 시스템의 펌웨어 업-데이트 방법 및 장치
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US8073926B2 (en) 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US7849462B2 (en) 2005-01-07 2010-12-07 Microsoft Corporation Image server
EP1712992A1 (en) 2005-04-11 2006-10-18 Sony Ericsson Mobile Communications AB Updating of data instructions
WO2006110005A1 (en) 2005-04-15 2006-10-19 Ktfreetel Co., Ltd. Method for providing contents for mobile comunication terminal
JP2008515046A (ja) 2005-04-15 2008-05-08 ケーティーフリーテル・カンパニー・リミテッド コンテンツの提供方法
KR100680296B1 (ko) * 2005-04-15 2007-02-07 주식회사 케이티프리텔 무선 네트워크를 통한 대용량 컨텐츠 이어받기 서비스 제공방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체
JP4891902B2 (ja) * 2005-06-01 2012-03-07 パナソニック株式会社 電子機器、更新サーバ装置、鍵更新装置
US8230414B1 (en) * 2005-06-16 2012-07-24 Infinera Corporation Software distribution and cache management across client machines on a network
CN1794721A (zh) * 2005-07-27 2006-06-28 华为技术有限公司 一种在指定时间下载媒体对象的方法及装置
US9332424B2 (en) 2005-08-05 2016-05-03 Qualcomm Incorporated Centrally managed solution for all device management activities
JP2007087133A (ja) * 2005-09-22 2007-04-05 Seiko Epson Corp ファームウェアの更新技術
US20080148250A1 (en) * 2005-10-28 2008-06-19 Giovanni Motta Update package generation employing matching technique with controlled number of mismatches
ATE491988T1 (de) * 2005-12-20 2011-01-15 Ericsson Telefon Ab L M Erstellung inkrementeller programmaktualisierungen
JP5100664B2 (ja) * 2006-03-01 2012-12-19 アクシス アーベー 複数の装置をアップデートする方法及びシステム
US8364965B2 (en) 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
US7861224B2 (en) * 2006-06-22 2010-12-28 Microsoft Corporation Delta compression using multiple pointers
US8707297B2 (en) * 2006-07-26 2014-04-22 Dell Products L.P. Apparatus and methods for updating firmware
DE102006040395A1 (de) * 2006-08-29 2007-03-15 Siemens Ag Verfahren zur Erzeugung eines größenoptimierten Delta-Files
WO2011130879A1 (en) * 2010-04-23 2011-10-27 Hewlett-Packard Development Company, L.P. Match analysis for encoding optimized update packages
KR100782080B1 (ko) * 2006-09-07 2007-12-04 삼성전자주식회사 이동 통신 단말기 및 시스템의 펌웨어 갱신 방법
US8539474B2 (en) * 2006-09-28 2013-09-17 International Business Machines Corporation Method and system for management of interim software fixes
EP2087644B1 (en) 2006-10-16 2013-04-24 Hewlett-Packard Development Company, L.P. Retrieval of Performance Indicator from an Electronic Device
KR20080037450A (ko) * 2006-10-26 2008-04-30 웹싱크 주식회사 소프트웨어 실행모듈의 업데이트 시스템 및 방법
US8117609B2 (en) * 2006-12-20 2012-02-14 Omx Technology Ab System and method for optimizing changes of data sets
US8375458B2 (en) 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
JP4940967B2 (ja) * 2007-01-30 2012-05-30 富士通株式会社 ストレージシステム、ストレージ装置、ファームウェアの活性交換方法、ファームウェアの活性交換プログラム
JP5065482B2 (ja) 2007-06-19 2012-10-31 クゥアルコム・インコーポレイテッド 無線環境においてデータセットを同期するための方法および機器
CN101370266B (zh) * 2007-08-19 2013-03-20 华为技术有限公司 切换方法、终端重新附着方法
JP4983521B2 (ja) * 2007-10-04 2012-07-25 富士通株式会社 ソフトウェア更新検証装置、方法及びプログラム
US7802129B2 (en) 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
KR101425224B1 (ko) * 2007-11-19 2014-07-31 삼성전자주식회사 펌웨어 업그레이드를 위해 펌웨어를 복호화하는 장치 및방법
EP2090981A1 (en) * 2008-02-14 2009-08-19 Aristocrat Technologies Australia Pty, Ltd Software management system and method
JP5069359B2 (ja) 2008-03-04 2012-11-07 アップル インコーポレイテッド 少なくとも1つのインストールされたプロフィールに基づいてソフトウェアコードの実行を許可するシステム及び方法
EP2329366B1 (en) * 2008-08-04 2013-12-11 Red Bend Ltd. Performing a pre-update on a non volatile memory
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
CN101841594B (zh) * 2009-03-17 2013-05-29 深圳富泰宏精密工业有限公司 便携式电子设备及其固件下载程序下载方法
US8429640B2 (en) 2009-06-05 2013-04-23 Dell Products L.P. System and method for modifying firmware
EP2524307B1 (en) * 2010-01-12 2016-11-02 Google, Inc. Operating system auto-update procedure
CN101924607B (zh) * 2010-08-27 2013-01-23 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及系统
US9069966B2 (en) 2011-10-11 2015-06-30 International Business Machines Corporation Code updates in processing systems
DE102011084569B4 (de) * 2011-10-14 2019-02-21 Continental Automotive Gmbh Verfahren zum Betreiben eines informationstechnischen Systems und informationstechnisches System
US8789034B1 (en) * 2011-12-31 2014-07-22 Parallels IP Holdings GmbH Method for updating operating system without memory reset
US9015702B2 (en) * 2012-01-13 2015-04-21 Vasanth Bhat Determining compatibility of an application with different versions of an operating system
CN102722386B (zh) * 2012-05-28 2015-09-30 华为终端有限公司 生成无线固件升级包的方法和装置
DE102012214793A1 (de) * 2012-08-21 2014-02-27 BSH Bosch und Siemens Hausgeräte GmbH Kommunikationsmodul mit einem untermodul
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9798557B2 (en) 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
CN102902562B (zh) * 2012-09-17 2018-04-27 中兴通讯股份有限公司 一种组件式多模网管补丁包安装方法及装置
US8924950B2 (en) * 2012-12-17 2014-12-30 Itron, Inc. Utility node software/firmware update through a multi-type package
US8938730B2 (en) * 2012-12-17 2015-01-20 Itron, Inc. Utilizing a multi-system set configuration to update a utility node system set
JP6040767B2 (ja) * 2012-12-28 2016-12-07 富士通株式会社 配信システム、配信方法、及びプログラム
US9530009B2 (en) 2013-06-27 2016-12-27 Visa International Service Association Secure execution and update of application module code
US9489190B1 (en) * 2013-09-18 2016-11-08 Amazon Technologies, Inc. Message processing engine
JP6237543B2 (ja) * 2014-09-01 2017-11-29 株式会社デンソー 車載装置
US9886264B2 (en) * 2014-12-09 2018-02-06 Xiaomi Inc. Method and device for upgrading firmware
US11023581B2 (en) 2016-07-28 2021-06-01 Hewlett-Packard Development Company, L.P. Code package variants
WO2018050216A1 (en) * 2016-09-14 2018-03-22 U-Blox Ag Software update system, firmware over the air updating system and method of updating a client device
KR20180073128A (ko) * 2016-12-22 2018-07-02 항저우 순왕 테크놀로지 컴퍼니 리미티드 데이터 블록 비교에 의한 데이터 업데이트 방법
US10761834B2 (en) * 2017-09-21 2020-09-01 Western Digital Technologies, Inc. SSD firmware download dual boot
US10416990B2 (en) * 2018-02-05 2019-09-17 Infosys Limited System and method for seamlessly patching shared libraries in server environment
KR102116814B1 (ko) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 어플리케이션 무중단 배포 시 응용 프로그램 버전 정합성을 위한 방법 및 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램
KR102116813B1 (ko) 2018-06-22 2020-05-29 주식회사 티맥스 소프트 분산 환경 시스템에서의 어플리케이션 무중단 배포 시 불필요한 리소스 인식 및 해제 방안
US11086616B2 (en) 2018-09-25 2021-08-10 Vmware, Inc. Near zero downtime application upgrade
KR102132901B1 (ko) * 2018-10-23 2020-07-10 주식회사 시옷 펌웨어 패키징 및 언패키징 방법
EP3866004A4 (en) * 2018-11-09 2021-11-03 Huawei Technologies Co., Ltd. AIR-WAY UPGRADE PROCESS AND ASSOCIATED DEVICE
US11070618B2 (en) * 2019-01-30 2021-07-20 Valve Corporation Techniques for updating files
JP2022142263A (ja) * 2021-03-16 2022-09-30 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
KR102586649B1 (ko) * 2021-08-03 2023-10-11 시큐리티플랫폼 주식회사 분산형 파일 시스템을 이용한 펌웨어 관리 시스템 및 펌웨어 관리 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807182A (en) * 1986-03-12 1989-02-21 Advanced Software, Inc. Apparatus and method for comparing data groups
CA1341310C (en) * 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
CA2049690C (en) * 1990-08-23 1999-12-28 Masato Maebayashi Firmware modification system wherein older version can be retrieved
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
WO1995018491A2 (en) * 1993-12-29 1995-07-06 Novalink Tech Inc Data communication device
JPH08156329A (ja) 1994-12-12 1996-06-18 Fuji Xerox Co Ltd 画像形成装置
TW313643B (ko) * 1994-12-14 1997-08-21 At & T Corp
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5699275A (en) * 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US5838981A (en) * 1995-10-05 1998-11-17 Ricoh Company, Ltd. Data communication apparatus with a program renewal function
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US5848064A (en) * 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
US6009274A (en) * 1996-12-13 1999-12-28 3Com Corporation Method and apparatus for automatically updating software components on end systems over a network
WO1998056149A1 (en) * 1997-06-06 1998-12-10 Telefonaktiebolaget Lm Ericsson Delta file software loading in cellular telecommunications systems
US6526574B1 (en) * 1997-07-15 2003-02-25 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
US6064814A (en) * 1997-11-13 2000-05-16 Allen-Bradley Company, Llc Automatically updated cross reference system having increased flexibility
US5974454A (en) * 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US7080371B1 (en) * 1998-03-03 2006-07-18 Siebel Systems, Inc. Method, system, apparatus and program product for distribution and instantiation of software upgrades
US6105063A (en) * 1998-05-05 2000-08-15 International Business Machines Corp. Client-server system for maintaining application preferences in a hierarchical data structure according to user and user group or terminal and terminal group contexts
US6564369B1 (en) * 1998-08-20 2003-05-13 Pearson Technical Software, Inc. Conflict checking using configuration images
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
JP2001051851A (ja) * 1999-08-17 2001-02-23 Nec Corp 携帯電子機器のプログラム変更システム及び方法
JP2001067232A (ja) * 1999-08-31 2001-03-16 Hitachi Ltd ソフトウエアの配信システムおよびソフトウエアの受信端末装置
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6976251B2 (en) * 2001-05-30 2005-12-13 International Business Machines Corporation Intelligent update agent
US7254386B2 (en) * 2001-08-10 2007-08-07 Kyocera Wireless Corp. System and method for improved security in handset reprovisioning and reprogramming
US7146609B2 (en) * 2002-05-17 2006-12-05 Sun Microsystems, Inc. Method, system and article of manufacture for a firmware image
JP2004164036A (ja) * 2002-11-08 2004-06-10 Hewlett Packard Co <Hp> 文書の共通性評価方法
EP1597668A4 (en) * 2003-02-11 2009-12-23 Hewlett Packard Development Co ELECTRONIC DEVICE FOR SUPPORTING MULTIPLE UPDATING AGENTS
US20060248172A1 (en) * 2003-06-24 2006-11-02 Thomas Zurawka Method for updating software of an electronic control device by flash programming via a serial interface and corresponding automatic state machine
US7426520B2 (en) * 2003-09-10 2008-09-16 Exeros, Inc. Method and apparatus for semantic discovery and mapping between data sources

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468515B2 (en) 2000-11-17 2013-06-18 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
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US8578361B2 (en) 2004-04-21 2013-11-05 Palm, Inc. Updating an electronic device with update agent code
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
KR101494343B1 (ko) 2008-02-22 2015-02-23 삼성전자주식회사 인터넷 공유기의 펌웨어 업그레이드 장치 및 그 제어방법

Also Published As

Publication number Publication date
US7752616B2 (en) 2010-07-06
EP1337917A4 (en) 2009-04-08
EP1337917A1 (en) 2003-08-27
US20060107260A1 (en) 2006-05-18
US20050268296A1 (en) 2005-12-01
JP2004514214A (ja) 2004-05-13
CA2414281C (en) 2009-06-02
AU2002232426A1 (en) 2002-05-27
WO2002041147A1 (en) 2002-05-23
CA2414281A1 (en) 2002-05-23
KR20030071750A (ko) 2003-09-06
US7797695B2 (en) 2010-09-14

Similar Documents

Publication Publication Date Title
KR100506785B1 (ko) 정보의 업데이트 및 배포 시스템 및 방법
US7805719B2 (en) System and method for updating and distributing information
US6832373B2 (en) System and method for updating and distributing information
CN100456240C (zh) 以故障保险方式向非易失存储器应用自定义软件映象更新
US6742025B2 (en) System and method for server managed modification of operating system data stored within a network device
US8418167B2 (en) Methods and systems for updating content including a compressed version
US7774596B2 (en) System and method for updating firmware in a secure manner
US8233893B2 (en) Mobile handset update package generator that employs nodes technique
US7669195B1 (en) Electronic device network supporting compression and decompression in electronic devices and update generator
US20200334028A1 (en) System and Method for Dynamic Data Deduplication for Firmware Updates
KR101333417B1 (ko) 계층적이고 세그먼트화된 순환 중복 검사(crc)에 의한원격 파일 수리
US20070192532A1 (en) Efficient system and method for updating a memory device
US8176009B2 (en) Performing a pre-update on a non volatile memory
US11138295B2 (en) Method for securely updating firmware components and docking station using the same
CN112424747B (zh) 生成二进制目标文件的方法、处理系统和存储介质
US11379216B2 (en) Software update agent device and software patching method through the same
WO2005088448A1 (en) Method and apparatus for reliable in-place update
EP1584005B1 (en) Mobile handset with a fault tolerant update agent
CN111046389A (zh) 固件组件安全更新的方法以及用以实施的携行计算机站

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170710

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee