KR20050086687A - 전자 파일 업데이트 동안 디바이스 메모리 관리 - Google Patents

전자 파일 업데이트 동안 디바이스 메모리 관리 Download PDF

Info

Publication number
KR20050086687A
KR20050086687A KR1020057008813A KR20057008813A KR20050086687A KR 20050086687 A KR20050086687 A KR 20050086687A KR 1020057008813 A KR1020057008813 A KR 1020057008813A KR 20057008813 A KR20057008813 A KR 20057008813A KR 20050086687 A KR20050086687 A KR 20050086687A
Authority
KR
South Korea
Prior art keywords
memory
electronic file
component
file
size
Prior art date
Application number
KR1020057008813A
Other languages
English (en)
Inventor
류셍 펭
Original Assignee
이노패스 소프트웨어, 아이엔시.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이노패스 소프트웨어, 아이엔시. filed Critical 이노패스 소프트웨어, 아이엔시.
Publication of KR20050086687A publication Critical patent/KR20050086687A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

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

Abstract

메모리 관리를 실행함에 있어서, 호스트 디바이스의 업그레이드 클라이언트(130)는 제 1 및 제 2 메모리 영역의 순차적 검색을 실행함으로써 새로운 소프트웨어 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정한다. 상기 새로운 소프트웨어 컴포넌트는 원시 소프트웨어 파일(110)의 컴포넌트의 업데이트된 버전이다. 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 블록의 사이즈를 초과할 때, 상기 업그레이드 클라이언트(130)는 사용되지 않는 메모리 블록을 제거하도록 상기 제 1 메모리 영역을 다시쓰고, 상기 제 1 및 제 2 메모리 영역을 재분배하며, 상기 새로운 컴포넌트를 상기 제 2 메모리 영역으로 쓰고, 그리고 벡터 테이블을 업데이트한다. 호스트 디바이스 소프트웨어 컴포넌트에 액세스하기 위해서, 상기 업그레이드 클라이언트는 상응하는 소프트웨어 파일의 식별 정보를 포함하는 호스트 디바이스(104)의 주 프로그램으로부터 함수 호출을 수신하고, 상기 벡터 테이블로부터 상기 상응하는 소프트웨어 파일의 시작 주소를 읽으며, 그리고 상기 상응하는 소프트웨어 파일에 대한 호출을 생성한다.

Description

전자 파일 업데이트 동안 디바이스 메모리 관리{DEVICE MEMORY MANAGEMENT DURING ELECTRONIC FILE UPDATING}
본 발명은 전자식 파일 업데이트시 메모리 관리에 관한 것이다.
호스트 디바이스의 특정 기능을 구현하기 위하여 중앙처리장치(CPU)에서 실행되는 소프트웨어는 종종 시간에 따라 변화한다. 상기 변화는 소프트웨어의 버그를 보정하거나, 기술을 진보시키거나, 또는 호스트 디바이스에 새로운 특징을 추가하기 위하여 이루어질 수 있다. 특히, 휴대 전화와 같은 모바일 무선 장치에서 임베디드 소프트웨어는 흔히 다른 휴대용 장치나 프로세싱 시스템보다 많은 버그를 포함하고 그리고 일반적으로 새로운 특징을 추가하기 위하여 자주 업데이트를 필요로 한다.
소프트웨어는 ASCII(American Standard Code for Information Interchange) 플레인 텍스트 파일 또는 이진 코드 형태의 파일을 하나이상을 포함한다. 소프트웨어 파일은 컴포넌트(components) 또는 모듈로 일컬어지는 작은 유닛으로 나누어질 수 있다. 현재의 기술에서, UNIX 플랫폼 또는 개인용 컴퓨터(PC)는 다수의 소프트웨어 컴포넌트를 포함하고, 상기 각 컴포넌트는 상응하는 운영 시스템(OS)으로 지원되는 파일 시스템을 통해 독립적으로 관리되고 업데이트된다. UNIX 플랫폼이나 PC 상에서 호스트된 소프트웨어 파일 또는 소프트웨어 컴포넌트를 업데이트하기 위하여 사용되는 정보는 인터넷을 통하여 전달되거나, 또는 플로피 디스크, CD-ROM 또는 콤팩트 플래시 카드와 같은 보조 저장 매개체로부터 로딩될 수 있다.
반면, 대부분의 모바일 무선 장치에서, 실시간 OS(RTOS)는 모든 소프트웨어 컴포넌트가 하나의 큰 파일로서 링크되는 경우에 흔히 사용된다. 또한, 어떠한 파일 시스템지원도 이러한 모바일 무선 장치에는 제공되지 않는다. 게다가, 상기 하나의 큰 파일은 무선, 적외선, 또는 시리얼 링크와 같은 느린 통신 링크를 이용하여 상기 디바이스로 프리로딩(preloading)되거나 임베디드(embedded)될 필요가 있다.
도 1은 바이트-레벨 파일 디퍼렌싱(differencing) 및 업데이팅(FDU) 알고리즘을 이용하여, 전자식 파일을 업데이트하기 위한 시스템의 블록도이다.
도 2는 소프트웨어 업그레이드 시스템의 블록도이다.
도 3은 디바이스 메모리의 블록도이다.
도 4는 넌-크리티컬(non-critical) 컴포넌트 업데이트의 흐름도이다.
도 5는 크리티컬 컴포넌트 업데이트의 흐름도이다.
도 6은 각각의 업그레이드가능한 EBSC에 대하여 예비 메모리 할당을 이용한 정적 어드레싱의 흐름도이다.
도 7은 도 6에서 정적 어드레싱 메모리 관리를 지원하도록 구성된 호스트 디바이스 메모리 일부의 블록도이다.
도 8은 업그레이드가능한 EBSC의 그룹에 대하여 예비 메모리 할당을 이용한 정적 어드레싱의 흐름도이다.
도 9는 도 8에서 정적 어드레싱 메모리 관리를 지원하도록 구성된 호스트 디바이스 메모리 일부의 블록도이다.
도 10은 정적 어드레싱을 지원하는 클라이언트 디바이스 ROM 맵(map)의 블록도이다.
도 11은 정적 어드레싱을 이용한 임베디드 소프트웨어 개발 및 전개 과정의 블록도이다.
도 12는 동적 어드레싱을 이용하여 EBSC 또는 EBSC 그룹의 업데이트를 위한 흐름도이다.
도 13은 동적 어드레싱을 이용한 함수 호출(function call)의 흐름도이다.
도 14는 동적 어드레싱을 지원하는 클라이언트 디바이스 ROM 맵의 블록도이다.
도 15는 도 3 및 도 14의 실시예에서, 업그레이드 클라이언트, 임베디드 소프트웨어 영역, DMM 라이브러리, 벡터 테이블, 및 가비지(garbage) 테이블을 포함한 메모리 컴포넌트 사이의 상호작용을 보여주는 호스트 디바이스 메모리의 블록도이다.
도 16은 지정 API(reservation application programming interface)를 이용한 새로운 버전의 EBSC를 수용하도록 메모리 영역을 지정하는 흐름도이다.
도 17은 예약 API 원리를 이용하여 새로운 버전의 EBSC를 수용하도록 메모리 영역을 할당하는 흐름도이다.
도 18은 임베디드 소프트웨어(가비지 수집(collection))의 사용되지 않은 영역의 수집을 위한 흐름도이다.
도 19는 예약 API의 업그레이드 동작 전후의 호스트 디바이스 메모리의 블록도이다.
도 20은 업그레이딩 및 가비지 수집 동작에 뒤따르는 상기 호스트 디바이스 메모리의 블록도이다.
도 21은 동적 어드레싱을 이용하여 임베디드 소프트웨어 개발 및 전개 과정의 블록도이다.
느린 통신 링크를 통해 큰 파일을 업데이트하는데 있어 장애 요인에는 업데이트된 파일을 디바이스로 전달하는 시간이 포함된다. 차등(difference) 파일이 업데이트/개정을 위한 파일 호스팅 디바이스로 전달되는 경우, 상기 차등 파일을 전달하기 위한 통신 시간 및 상기 차등 파일을 처리하고 상기 타겟 파일을 업데이트/개정하기 위해 수신 장치에서 사용되는 시간(본원에서, 호스트 디바이스 프로세싱 시간으로 일컬어짐) 둘다를 포함한다. 업데이트된 소프트웨어 파일 또는 소프트웨어 컴포넌트 정보를 전송하기 위하여 델타(delta) 파일을 사용하면 통신 시간을 상당히 줄이는 반면, 상기 호스트 디바이스 프로세싱 시간의 감소는 호스트 디바이스 구조에 의해 적어도 부분적으로 명령을 받는다.
상기 호스트 디바이스는 휴대 전화 및 다른 모바일 통신 디바이스, 개인 휴대정보 단말기(PDA), 및 개인용 컴퓨터를 포함한 많은 프로세서-기반 디바이스 중 하나가 될 수 있다. 휴대 전화를 사용하면, 가령 일반적인 휴대 전화 구조는 플래시 ROM 또는 플래시 메모리로 일컬어지는 플래시 읽기-전용 메모리(ROM), 및 RTOS를 포함한다. 상기 플래시 메모리 및 상기 RTOS는 상기 호스트 디바이스 프로세싱 시간을 줄이려는 목적에 잠재적으로 장애 요인을 도입한다.
호스트 디바이스 프로세싱 시간을 감소시키는데 있어서 플래시 메모리에 관하여 발생하는 문제는 플래시 메모리에서 쓰기 동작이 실행되는 방식과 관련된다. 플래시 메모리는 블록, 섹터, 또는 세그먼트로 일컬어지는 유닛 내에 할당되고, 상기 블록, 섹터, 또는 세그먼트 각각은 수많은 바이트를 포함한다. 일반적인 플래시 메모리에 대한 쓰기(다시쓰기)는 전체 유닛을 지우고 쓰는(다시쓰는) 것을 필요로하는데, 이는 단일 비트 또는 바이트가 쓰여질 수(다시쓰여질 수) 없기 때문이다. 따라서, 플래시 메모리 내에 저장된 파일을 업데이트하거나 개정하는데 필요한 시간은 일반적으로 단일 바이트가 쓰여질 수(다시 쓰여질 수) 있는 다른 형태의 저장장치 또는 메모리에 저장된 파일을 업데이트하거나 개정하는데 필요한 시간보다 일반적으로 크다.
호스트 디바이스 프로세싱 시간을 줄이는데 있어서 상기 RTOS에 관하여 발생하는 문제는 호스트 디바이스 소프트웨어 프로그램이 구성되고 관리되는 방식과 관련된다. 일반적인 셀룰러 전화의 RTOS는 런타임(runtime)시 함수 호출에 대하여 파일 관리 및 동적 어드레스 해결책을 지원하지 않는다. 따라서, 모든 임베디드 소프트웨어 컴포넌트 또는 셀룰러 전화의 프로그램은 하나의 큰 호스트 프로그램으로 링크되고, 상기 호스트 프로그램 내의 함수는 이 함수의 컴파일된 시작 어드레스를 통해 직접 상기 호스트 프로그램의 일부분으로부터 호출된다. 따라서, 파일 관리 및 함수 호출에 대한 동적 어드레스 해법이 지원되는 일반적인 컴퓨터 OS와는 대조적으로, 일반적인 셀룰러 전화 RTOS는 다수의 소프트웨어 컴포넌트를 독립적인 파일로 관리하는 능력이 없으며 또한 런타임 호출 어드레스 해법을 통해 상기 소프트웨어 컴포넌트 중 하나로부터 함수 호출을 지원하는 능력도 없다. 결과적으로, RTOS를 포함하는 시스템의 호스트 프로그램은 하나의 큰 프로그램을 관리하고, 상기 프로그램의 함수에 직접 액세스하도록 정적 어드레싱을 이용한다.
일반적인 디바이스 구조는 소프트웨어 컴포넌트를 업데이트하고 개정할 때 문제가 발생하는데, 그 이유는 상기 업데이트 또는 개정이 호스트 프로그램 사이즈에 변화를 일으킬 때 상기 호스트 프로그램에서 업데이트된/개정된 소프트웨어 컴포넌트에 뒤이어 상기 소프트웨어 컴포넌트의 시작 어드레스에 결과적으로 변화가 있기 때문이다. 소프트웨어 컴포넌트의 시작 어드레스에서의 변화로 인해, 상기 소프트웨어 컴포넌트 내의 명령/데이터 어드레스 및 상기 호스트 프로그램에서의 상응하는 호출 어드레스를 업데이트할 필요가 생긴다. 이는 프로세싱 시간 면에서 매우 비용이 많이 들 수 있다. 따라서, 임베디드 소프트웨어 업데이트/개정과 연계된 호스트 디바이스 프로세싱 시간은 플래시 메모리에 데이터를 비효율적으로 다시쓰는 것에 대부분 기인하고 그리고 소스 코드 레벨에서 임베디드 소프트웨어에 대한 작은 변화는 이진 코드 레벨에서 임베디드 소프트웨어에 큰 변화를 발생시킬 수 있다.
메모리 관리 시스템 및 방법은 본원에서 상세히 설명된다. 메모리 관리를 실시함에 있어서, 호스트 디바이스의 업그레이드 클라이언트는 제 1 및 제 2 메모리 영역의 순차적인 검색을 실시함으로써 새로운 소프트웨어 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정한다. 상기 새로운 소프트웨어 컴포넌트는 원시(original) 소프트웨어 파일의 컴포넌트의 업데이트된 버전 또는 업그레이드된 버전이다. 새로운 컴포넌트 사이즈가 원시 전자식 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 업데이트 클라이언트는 제 1 메모리 영역의 원시 메모리 블록을 할당하여 수신된 컴포넌트를 쓰게 된다. 원시 메모리 블록은 원시 전자식 파일의 상응하는 컴포넌트를 포함한다.
새로운 컴포넌트 사이즈가 원시 전자식 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 업그레이드 클라이언트는 상기 수신된 컴포넌트를 저장하기에 충분히 큰 메모리 블록에 대하여 상기 제 1 메모리 영역의 사용되지 않은 부분을 검색한다. 상기 업그레이드 클라이언트는 만일 하나가 상기 제 1 메모리 영역 내에 위치할 경우 적절한 사이즈의 메모리 블록을 지정하고, 그렇지 않으면 상기 업그레이드 클라이언트는 제 2 메모리 영역을 검색한다. 상기 업그레이드 클라이언트는 만일 하나가 상기 제 2 메모리 영역 내에 위치할 경우 적절한 사이즈의 메모리 블록을 지정한다.
그러나, 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 블록의 사이즈보다 클 경우, 상기 업그레이드 클라이언트는 사용되지 않은 메모리 블록을 제거하도록 상기 제 1 메모리 영역을 다시쓰기(rewrite)한다. 상기 제 1 메모리 영역의 다시쓰기에 이어, 상기 업그레이드 클라이언트는 상기 제 2 메모리 영역의 소프트웨어 컴포넌트를 상기 제 1 메모리 영역의 사용되지 않는 부분으로 순차적으로 다시쓰기를 함으로써 상기 제 1 및 제 2 메모리 영역을 재분배(reapportion)한다. 이후, 상기 업그레이드 클라이언트는 상기 제 2 메모리 영역의 부분으로서 상기 제 1 메모리 영역의 나머지 사용되지 않는 부분을 재지정한다. 상기 배분배에 이어, 상기 업그레이드 클라이언트는 새로운 컴포넌트를 제 2 메모리 영역으로 쓰고 그리고 벡터 테이블을 업데이트한다.
호스트 디바이스 소프트웨어 컴포넌트의 액세스에 있어서, 상기 업그레이드 클라이언트는 상기 호스트 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 소프트웨어 파일의 식별 정보를 포함한다. 상기 업그레이드 클라이언트는 상기 벡터 테이블에 액세스하기 위해 상기 식별 정보를 사용하고 그리고 상기 벡터 테이블로부터 상응하는 소프트웨어 파일의 시작 어드레스를 읽는다. 상기 식별 정보와 함께 상기 벡터 테이블로부터 상기 시작 어드레스를 이용하면, 상기 업그레이드 클라이언트는 상응하는 소프트웨어 파일에 호출을 생성한다.
도 1은 바이트-레벨 파일 디퍼렌싱 및 업데이팅(FDU) 알고리즘을 이용하여 전자식 파일을 업데이트하기 위한 시스템의 블록 다이어그램이다. 상기 FDU 알고리즘은 디퍼렌싱 컴포넌트 및 업데이팅 컴포넌트를 포함한다. 상기 디퍼렌싱 알고리즘(본원에서 파일 디퍼렌싱 알고리즘으로 일컬어지며 관련된 출원에서 상세히 설명됨)은 전자식 파일의 원시 버전 및 새로운 버전으로부터 제 1 컴퓨터 시스템에서 차등 파일을 생성한다. 상기 업데이팅 알고리즘(본원에서 파일 업데이팅 알고리즘으로 일컬어지며 관련된 출원에서 상세히 설명됨)은 차등 파일 및 원시 파일의 호스티드 카피(hosted copy)를 이용하여 제 2 컴퓨터 시스템 상에 새로운 파일의 카피를 생성한다.
도 1에서, 제 1 컴퓨터 시스템(102) 및 제 2 컴퓨터 시스템(104)은 통신 경로(106)를 통해 통신한다. 상기 컴퓨터 시스템(102 및 104)은 당분야에 공지된 방식으로 함께 동작하는 연산 장치의 수집을 포함한다. 상기 컴퓨터 시스템(102 및 104)은 또한 보다 큰 컴퓨터 시스템 내부에 컴포넌트를 포함한다. 통신 경로(106)는 상기 컴퓨터 시스템(102 및 104) 사이에서 파일이 통신되거나 전송되는 어떤 매개체를 포함한다. 따라서, 상기 경로(106)는 무선 연결, 유선 연결, 및 하이브리드 무선/유선 연결을 포함한다. 상기 통신 경로(106)는 또한 LAN(local area networks), MAN(metropolitan area networks), WAN(wide area networks), 전용 네트워크, 인터오피스(interoffice) 또는 백엔드(backend) 네트워크, 및 인터넷 등을 포함하는 네트워크로의 연결을 포함한다. 더욱이, 상기 통신 경로(106)는 플로피 디스크, 하드 디스크 드라이브, 및 CD-ROM 디스크, 및 플래시 RAM, USB 연결, RS-232 연결, 전화선, 버스, 및 전자 메일 메시지와 같은 제거가능한 고정 매개체를 포함한다.
제 1 통신 시스템(102)은 전자식 파일의 원시 또는 오래된 버전(110) 및 새로운 버전(112)을 수신한다. 상기 새로운 버전(112)은 일반적으로 상기 원시 파일(110)의 업데이트된 또는 개정된 버전이지만, 제한적이지는 않다. 상기 전자식 파일(110 및 112)은 동적 링크 라이브러리 파일, 공유된 객체 파일, 임베디드 소프트웨어 컴포넌트(EBSC), 펌웨어 파일, 실행가능한 파일, 헥스(hex) 데이터 파일을 포함하는 데이터 파일, 시스템 구성 파일, 및 개인용 데이터를 포함하는 파일 등을 포함하지만, 제한적이지는 않다. 상기 파일의 형태가 바이트 스트림으로 간주될 수 있기 때문에, 이후 파일은 바이트 시스템으로 설명될 수 있다.
상기 파일 디퍼렌싱 알고리즘(114)은 새로운 파일(112)을 수신하고, 이를 원시 파일(110)과 비교하며, 그리고 아래에 설명되는 방식으로 상기 비교된 파일들 사이의 바이트-레벨 차이를 계산한다. 상기 파일 디퍼렌싱 알고리즘(114)은 또한 상기 파일 차이의 계산 이전에 상기 파일의 사이즈를 감소시키기 위하여 원시 파일(110)과 새로운 파일(112)을 사전처리(pre-process)할 수 있다. 상기 파일 디퍼렌싱 알고리즘(114)은 상기 비교 과정에서 차이 파일(116)(본원에서 델타 파일로 일컬어짐)을 생성한다.
상기 델타 파일(116)의 콘텐츠는 상기 새로운 파일과 원시 파일 사이의 바이트-레벨 차이를 효과적으로 표현한다. 상기 델타 파일(116)은 아래에 설명되는 바와 같이, 연계된 파일의 현재 버전 또는 새로운 버전과 상기 파일의 이전의 버전 사이의 차이를 나타내는 대체 및 삽입 동작의 실제 데이터와 함께 메타-데이터(meta-data)를 포함한다. 상기 파일 디퍼렌싱 알고리즘(114)은 최소수의 바이트 및 지정된 포맷 또는 프로토콜을 이용하여 상기 델타 파일(116) 내의 상기 원시 파일(110)과 새로운 파일(112) 사이의 차이를 제공하고, 따라서 공간내에 최적화된 델타 파일을 제공한다.
상기 델타 파일(116)은 상기 통신 경로(106)를 통해 또 다른 컴퓨터 시스템(104)으로 전달되거나 전송된다. 전달 이전에, 상기 델타 파일(116)은 당분야에 알려진 압축(compression) 기술을 이용하여 압축되지만, 제한적이지는 않다. 상기 수신용 컴퓨터 시스템(104) 상에서 호스트된 파일 업데이팅 알고리즘(118)은 새로운 파일(112)의 카피를 생성하기 위하여 상기 호스트된 원시 파일(110)과 함께 상기 델타 파일(116)을 사용한다. 상기 새로운 파일(112)의 카피는 이후, 개정 또는 업데이팅을 위하여 상기 클라이언트 디바이스(104) 상에 호스트된 원시 파일(110)을 업데이트하는데 사용된다. 이러한 업데이트 프로세스를 종료시, 상기 제 2 컴퓨터 시스템(104) 상에 저장된 원시 파일(110)은 제 1 컴퓨터 시스템에서 수신된 새로운 파일과 동일하다.
원시 파일과 새로운 파일 사이의 차이는 일반적으로 새로운 파일 보다 작고, 따라서 만일 상기 차이가 전송되어서 전체 새로운 바이트 스트림을 대신하여 저장된다면 상당한 저장 및 전송 절감을 이루게 된다. 이는 특히, 느리고 비용이 많이 드는 무선 또는 셀룰러 연결을 통해 업데이트되는 모바일 전자 디바이스 호스팅 프로그램에서 중요하다.
도 2는 본원에서 업그레이드 시스템으로 일컬어지는 소프트웨어 업그레이드 시스템(200)의 블록도이다. 상기 업그레이드 시스템(200)은 모바일 전자 디바이스, 모바일 통신 디바이스, 휴대 전화, 개인 휴대 단말기, 컴퓨터, 및 다른 프로세서-기반 디바이스 등을 포함하는 클라이언트 디바이스용 소프트웨어 유지 및 응용 관리를 지원하는 델타 파일 및 파일 업데이팅 알고리즘을 사용한다. 이러한 지원은 캐리어 및 디바이스 제조업자들이 무선 기반구조(infrastructure)를 통해 전자식 파일 콘텐트 및 응용을 효과적으로 분배하도록 함으로써, 펌웨어로부터 임베디드 구현예까지의 모든 디바이스 소프트웨어에 제공된다.
상기 업그레이드 시스템(200)은 서비스 제공자의 무선 기반구조의 다양한 메커니즘을 통해 새롭고 개정된 소프트웨어 파일을 모바일 클라이언트 디바이스로 제공하는 것을 지원함으로써 디바이스 호출을 예방한다. 이러한 시스템의 기능은 소프트웨어 디스트리뷰터(distributor)로부터 새롭고 개정된 소프트웨어를 수신함으로써 그리고 상기 파일 디퍼렌싱 알고리즘을 이용하여 상기 새로운 소프트웨어로부터 델타 파일을 생성함으로써 이루어진다. 상기 델타 파일은 서비스 제공자의 기반구조를 통해 상기 클라이언트 디바이스로 전달된다. 상기 파일 업데이팅 알고리즘을 포함한 상기 수신 또는 클라이언트 디바이스의 업그레이드 클라이언트는 상기 클라이언트 디바이스에 호스트된 대상 소프트웨어를 업데이트하기 위해 델타 파일을 사용한다.
상기 업그레이드 시스템(200)은 디바이스 소프트웨어와 하드웨어 사이의 다른 라이프 사이클(life cycle)을 가능하게 한다. 상기 업그레이드 시스템은 따라서, JavaTM CLDC(Connected Limited Device Configuration) libraries, MPEG-1(Moving Pictures Experts Group-1) Layer Ⅲ(MP3) driver, 통신 소프트웨어, 및 브라우저 응용예와 같은 크리티컬 소프트웨어 컴포넌트가 상기 호스트 디바이스 하드웨어보다 빨리 발전하고 그리고 모바일 디바이스 제조업자가 디바이스의 새로운 생성을 제공하는 것보다 빠른 주기로 업데이트되는 점에서 최신의 디바이스 기능성을 지원한다. 상기 업그레이드 시스템(200)은 아래에서 보다 상세히 설명된다.
도 2에서, 상기 업그레이드 시스템(200)은 디바이스(212)와의 무선 연결을 통해 클라이언트 디바이스(104) 상의 임베디드 소프트웨어 컴포넌트를 유지하고, 따라서, 무선 캐리어가 최신의 데이터 서비스를 모든 사용자에게 계속적으로 제공하도록 한다. 상기 업그레이드 시스템(200)은 제한적이지는 않지만, 새로운 소프트웨어 컴포넌트 디스트리뷰터 또는 소프트웨어 컴포넌트 디스트리뷰터(202), 서비스 제공자 업그레이드 컴포넌트(203-205), 및 상기 클라이언트 디바이스(104) 상에 호스트된 업그레이드 클라이언트(130)를 포함한다. 상기 서비스 제공자 업그레이드 컴포넌트는 소프트웨어 컴포넌트 증명 서버(203)와 업그레이드 매니저(205) 사이에 연결된 업그레이드 서버(204)를 포함한다.
상기 소프트웨어 컴포넌트 디스트리뷰터(202)는 웹-기반(web-based) 사용자 인터페이스를 제공하고, 이 인터페이스에 의해 소프트웨어 제공자는 향상된 MP3 드라이버, 업그레이드된 JavaTM 2 플랫폼, 마이크로 에디션(J2METM) 모바일 정보 디바이스 프로파일(MIDP) 라이브러리, 또는 특징부-추가된(feature-added) 어드레스 북 응용예와 같은 새로운 임베디드 디바이스 소프트웨어 컴포넌트를 패키지화하여 출시(release)한다. 소프트웨어 컴포넌트 디스트리뷰터(202)의 기능에는 디바이스 정보의 레지스터링(registering)이 포함되고 그리고 디바이스 정보를 상기 소프트웨어 컴포넌트 인증 서버로 제공하는 것이 포함된다. 또한, 상기 소프트웨어 컴포넌트 디스트리뷰터(202)는 새로운 EBSC 및 원시 EBSC를 수신하고, 파일 디퍼렌싱 알고리즘, 레지스터, 및 패키지 임베디드 소프트웨어를 이용하여 상기 EBSC와의 바이트-레벨 파일 차이를 계산하며, 그리고 임베디드 소프트웨어 패키지를 상기 소프트웨어 컴포넌트 인증 서버로 제출한다. 상기 새로운 소프트웨어는 출시 후, 유선, 무선, 또는 하이브리드 유/무선 네트워크 연결(220)을 통해 서비스 제공자 업그레이드 컴포넌트(203-205)로 제공된다.
한 실시예에서 상기 소프트웨어 컴포넌트 디스트리뷰터(202)는 클라이언트 디바이스 제조업자의 프로세싱 시스템에서 호스트된다. 대안적 실시예에서, 상기 소프트웨어 컴포넌트 디스트리뷰터(202)는 소프트웨어 제공자의 프로세싱 시스템에서 호스트된다. 또 다른 대안적 실시예에서, 상기 소프트웨어 컴포넌트 디스트리뷰터(202)는 통신 서비스 제공자 가령, 업그레이드 컴포넌트(203-205)의 프로세싱 시스템에서 호스트된다.
상기 서비스 제공자 업그레이드 컴포넌트(203-205)는 상기 소프트웨어 컴포넌트 디스트리뷰터(202), 클라이언트 디바이스(104), 및 서비스 제공자의 기반구조(210-218)의 현존하는 컴포넌트 사이에 연결되고, 이때 상기 기반구조에는 현존하는 게이트웨이(gateway)(210) 및 통신 기반구조(212), 빌링(billing) 서버(214), 로깅(logging) 서버(216), 및 인증 서버(218)가 포함된다. 상기 소프트웨어 컴포넌트 증명 서버(203)는 디바이스 제조업자에게 인터페이스를 제공하고, 따라서 디바이스 제조업자로부터 임베디드 소프트웨어 패키지에서 새로운 디바이스 정보를 수신한다. 상기 소프트웨어 컴포넌트 증명 서버(203)는 또한 상기 소프트웨어 컴포넌트 디스트리뷰터로부터 소프트웨어 컴포넌트 제출 요구를 수신하고, 새로운 소프트웨어 패키지의 승인/거절의 통지를 제출용 업그레이드 서버에 제공하며, 제출되고 승인된 소프트웨어 패키지에 대한 디스크 관리를 제공하고, 그리고 승인된 소프트웨어 패키지를 재패키지화하여 업그레이드 서버에 분배한다. 더욱이, 상기 소프트웨어 컴포넌트 증명 서버(203)는 소프트웨어 컴포넌트 제출 과정에서 잠재적인 개입(intrusion) 및 데이터 간섭(tampering)에 대하여 캐리어-그레이드(carrier-grade) 보안 제어를 제공한다.
업그레이드 매니저(205)는 상기 소프트웨어 컴포넌트 증명 서버(203)와 상기 업그레이드 서버(204) 사이의 인터페이스로서 작용하며, 웹-기반 사용자 인터페이스를 제공하는데, 상기 웹-기반 사용자 인터페이스에 의해 무선 캐리어 시스템 관리자는 임베디드 디바이스 소프트웨어 컴포넌트의 업그레이를 입증하고 승인한다. 또한 상기 업그레이드 매니저(205)는 최적의 디바이스 관리에 대한 소프트웨어 및 데이터 패키징을 형성하고, 원격 변화 통보를 계획하며, 그리고 업데이트 방법 모니터 시스템을 제어한다. 또한, 상기 업그레이드 매니저(205)는 현존하는 기반구조의 시스템 또는 백엔드 시스템(빌링(billing), 사용자 데이터베이스 인증, 웹 포털)과의 통합을 제공하고, 따라서 인증, 액세스 제어, 및 현존하는 빌링(214) 및 로깅(216) 서버로의 통합을 결정하기 위한 흐름을 제공한다.
상기 업그레이드 서버(204)는 임베디드 소프트웨어 컴포넌트 업그레이드를 실시하기 위해서 인증, 연결, 및 모바일 디바이스와의 통신을 포함한 기능을 제공한다. 클라이언트 디바이스(104)는 무선 연결(212), 유선 연결, 하이브리드 유/무선 연결, 및 클라이언트 디바이스와의 다른 네트워크 연결 등을 통해 상응하는 서비스 제공자에게 적합한 방식으로 통신이 이루어질 수 있다. 게다가, 상기 업그레이드 서버(204)는 현존하는 빌링, 데이터 수집, 및 서비스 제공자의 로깅 서비스를 지원한다.
상기 업그레이드 서버(204) 및 클라이언트 디바이스(104) 사이의 통신의 한 예로서, 델타 파일이 상기 업그레이드 서버(204)로부터 클라이언트 디바이스(104)로의 전달을 위해 사용가능할 경우, 상기 서버(204)는 업데이팅에 사용가능한 소프트웨어 컴포넌트가 있음을 클라이언트 디바이스 사용자에게 통지하도록 사용자 통지를 전송한다. 상기 사용자 통지는 SMS(Short Message Service) 푸시 프로토콜, HTTP(Hypertext Transfer Protocol), 또는 WAP(Wireless Application Protocol)를 통해 텍스트 메시지의 형태를 취할 수 있지만, 제한적이지는 않다. 핸드셋 사용자로부터 확인을 수신할 때, 상기 업그레이드 서버(204)는 원시 핸드셋 데이터 통신 프로토콜을 사용하여 델타 파일을 요청 핸드셋으로 전송한다.
상기 핸드셋으로부터 확인 수신에 응답으로, 상기 업그레이드 서버(204)는 사용자 및/또는 요청 디바이스를 인증하고, 상기 요청 디바이스의 필수적 기능 및 제한을 확인한다. 상기 업그레이드 서버(204)의 인증에 이어, 클라이언트 디바이스 구성 데이터의 매니저는 상기 요청 디바이스(104)의 임베디드 소프트웨어 컴포넌트의 현재 버전을 식별하고, 적절한 델타 파일을 식별하여 상기 요청 디바이스(104)로 전달하며, 업그레이드의 트랜잭션(transaction) 상태를 로그(log)하고, 그리고 그 결과를 상기 업그레이드 매니저(205)에게 보고한다. 상기 업그레이드 서버(204)의 한 실시예는 자동적인 오류 복구 메커니즘을 포함한다. 게다가, 상기 업그레이드 서버(204)는 공중으로 상기 소프트웨어 업그레이드 서비스를 작동/작동정지시키고, 그리고 멀리있는 사용자에게 소프트웨어 변화를 알려준다.
도 1에서, 업그레이드 클라이언트(130)는 제한적이지는 않지만, 클라이언트 디바이스(104)의 디바이스 메모리(300) 내에 임베드된다. 상기 업그레이드 클라이언트(130)는 상기 호스트 디바이스(104)의 구성 데이터를 저장하고 관리하며, 파일 업데이팅 알고리즘(118)을 이용하여 임베디드 디바이스 소프트웨어 컴포넌트의 관리 및 업그레이딩을 허용한다. 상기 업그레이드 클라이언트(130)는 단순한 사용자 인터페이스를 지원하고, 모바일 디바이스 소프트웨어로 통합된다. 실행시, 상기 업그레이드 클라이언트(130)는 특정 서비스 제공자에게 적합한 방식으로, 어떤 임베디드 소프트웨어 컴포넌트의 원격 변화를 자동적으로 검출하고, 사용자에게 임베디드 소프트웨어 컴포넌트 업그레이드를 통보하며, 그리고 캐리어 및/또는 사용자 제어를 바탕으로 소프트웨어 컴포넌트를 업그레이드한다. 상기 업그레이드 클라이언트(130)는 또한 자동적인 오류 복구 메커니즘을 포함한다.
클라이언트 디바이스는 업데이트 절차에 관여하기 전에 수만은 디바이스 매개변수들의 상태를 결정한다. 이러한 결정은 업데이트 절차에 대하여 상기 디바이스를 사전-검증(pre-qualify)하거나, 또는 상기 클라이언트 디바이스의 조건에서 상기 업데이트 절차는 일단 시작되면 종료될 수 있음을 증명하기 위하여 이루어진다. 상기 클라이언트 디바이스의 사전-검증에는 상기 클라이언트 디바이스가 크레이들(cradle) 또는 차징(charging) 모드에 있는지, 상기 클라이언트 디바이스가 시리얼 케이블에 연결되어 있는지, 배터리 차지의 상태가 상기 업데이팅 프로세스를 실행하기에 충분한지, RSSI(Received Signal Strength Indication) 또는 신호 강도가 상기 데이터 전달에 충분한지, 그리고 대상 EBSC가 현재 사용 중인지를 결정하는 것이 포함된다.
한 실시예의 업그레이드 시스템(200)은 수많은 형태의 소프트웨어 파일 또는 델타 파일을 통한 컴포넌트 업데이트를 지원한다. 업데이트가 지원되는 파일 형태에는 실행가능한 파일, 바이트 스트림 파일, 및 데이터 파일이 포함되지만, 제한적이지는 않다. 상기 실행가능한 파일 또는 이미지 파일은 작업을 실행하기 위해 클라이언트 디바이스에서 사용되는 소프트웨어 파일을 포함하는데, 가령 운영 시스템(OS), 하드웨어 디바이스 드라이버, 및 KVM(K Virtual Machine) 파일을 예로 들 수 있다. 상기 바이트 스트림 파일은 다른 실행가능한 파일에서 사용된 파일을 포함하며, 가령 아이콘 파일, 로고 파일, 및 MP3 파일을 예로 들 수 있다. 데이터 파일에는 개인적인 사용 데이터, 및 핸드셋 레퍼런스 데이터를 갖는 파일을 포함하며, 가령, 캘리브레이션 구성 파일, PIM(Protocol Independent Multicast) 파일, 및 시스템 구성 파일을 예로 들 수 있다.
도 3은 한 실시예에서 디바이스 메모리(300)의 블록도이다. 상기 디바이스 메모리(300)는 플래시 ROM이지만, 많은 형태의 메모리 및/또는 메모리 조합 형태가 상기 디바이스 메모리(300)의 대안적인 실시예에서 사용될 수 있다. 상기 디바이스 메모리(300)는 임베디드 소프트웨어 영역(302), 업그레이드 클라이언트 디바이스 매개변수에 대한 영역(306), 및 디바이스 메모리 관리 영역(308)을 포함한다. 파일 업데이팅 알고리즘(118)에 따른 업그레이드 클라이언트(130)는 한 실시예의 임베디드 소프트웨어 영역(302)에 저장된다. 디바이스 메모리 관리 영역(308)은 DMM(device memory management) 라이브러리(310), 벡터 테이블(312), 및 가비지 테이블(314)을 호스트한다.
델타 파일 또는 대안으로 새로운 EBSC를 수신할 때, 상기 업그레이드 클라이언트(130)는 임베디드 소프트웨어, 임베디드 소프트웨어 컴포넌트(EBSC), 및 EBSC 그룹을 포함하는 파일들의 개정 및 업데이팅을 제어한다. 상기 업그레이드 클라이언트는 업데이트될 파일 형태에 따라 EBSC를 업데이트하기 위해 수많은 방법을 사용하고, 그리고 이러한 업데이트를 지원하기 위해 클라이언트 디바이스 제조업자에 의해 할당된 자원을 사용한다. 상기 업데이트 방법에는 관련된 응용예에서 상세히 설명되는 바와 같이 아래에 한정되지는 않는다: 운영 시스템(OS)의 업데이팅, 통신 프로토콜 및 지정된 ROM을 이용한 다른 크리티컬 소프트웨어 컴포넌트; 상기 OS의 업데이팅, 통신 프로토콜 및 지정된 RAM을 이용한 다른 크리티컬 컴포넌트; 지정된 ROM 또는 RAM이 없는 경우에 통신 프로토콜의 업데이팅; 및 넌-크리티컬 EBSC의 단일-라인 업데이트.
한 실시예의 업데이트 방법에는 넌-크리티컬 컴포넌트 업데이트 및 크리티컬 컴포넌트 업데이트를 포함한다. 이러한 범주는 아래에서 설명되겠지만, 업데이트를 위한 클라이언트 디바이스의 소프트웨어 컴포넌트를 사용하는 것을 바탕으로 한다.
넌-크리티컬 컴포넌트는 상기 업데이트 프로세스 과정에서의 오류에 뒤이어 공중으로 쉽게 복원되는 임베디드 소프트웨어 컴포넌트(EBSC)를 포함한다. 넌-크리티컬 컴포넌트의 예에는 브라우저 및 KVM 파일이 포함되지만, 제한적이지는 않다. 도 4는 한 실시예에서 넌-크리티컬 컴포넌트 업데이트의 흐름도(400)이다. 델타 파일로써 업데이트시, 상기 클라이언트 디바이스는 블록(402)에서 네트워크 연결을 통해 업그레이드 서버로부터 델타 파일을 수신한다. 상기 델타 파일은 상기 클라이언트 디바이스에서 수신시, 블록(404)(가령, RAM 및/또는 ROM 저장장치)에서 디바이스 메모리의 지정된 영역으로 쓰여진다. 상기 클라이언트 디바이스의 업그레이드 클라이언트는 이후 블록(406)에서 상기 델타 파일을 이용하여 원시 파일 또는 EBSC로부터 새로운 파일 또는 EBSC의 카피를 생성한다. 상기 새로운 파일의 카피는 블록(408)에서 지정된 RAM 또는 ROM으로 쓰여진다. 블록(410)에서, 상기 새로운 파일의 카피는 이후, 지정된 메모리로부터 상기 원시 파일 또는 EBSC를 포함하는 메모리 위치로 쓰여진다.
크리티컬 컴포넌트는 상기 업데이트 절차 또는 디바이스 동작에 중요한 EBSC에서 사용되는 소프트웨어 컴포넌트를 포함한다. 또한, 크리티컬 컴포넌트는 상기 업데이트 프로세스 동안의 오류에 뒤이어 공중으로 쉽게 복원되지 않는 EBSC를 포함한다. 상기 크리티컬 컴포넌트의 예에는 운영 시스템 파일, 프로토콜 스택(stack), 업그레이드 클라이언트 파일, 통신 라이브러리, 및 디스플레이 또는 LCD 드라이버 파일이 포함되지만, 제한적이지는 않다. 상기 업데이트 절차는 이러한 두 개의 범주 사이에서 약간 다르다.
도 5는 한 실시예에 따른 크리티컬 컴포넌트 업데이트의 흐름도(500)이다. 델타 파일을 이용하여 업데이트를 실행시, 상기 클라이언트 디바이스는 블록(502)에서 네트워크 연결을 통해 상기 업그레이드 서버로부터 델타 파일을 수신한다. 앞서 설명된 바와 같이, 상기 델타 파일은 실행가능한 파일, 바이트 스트림 파일, 및 데이터 파일의 파일 또는 EBSC 업그레이드를 포함할 수 있다. 한 실시예의 무선 네트워크는 셀룰러 서비스 제공자의 무선 네트워크이지만 제한적이지는 않다.
상기 델타 파일의 수신시, 업데이트를 위하여 대상으로 정해진 원시 파일 또는 EBSC는 블록(504)(가령, RAM 및/또는 ROM 저장장치)에서 상기 클라이언트 디바이스의 플래시 ROM으로부터 상기 업데이트 프로세스 동안 사용을 위해 지정된 메모리 영역으로 카피된다. 상기 클라이언트 디바이스는 상기 업데이팅 소프트웨어 컴포넌트를 저장할 때 사용을 위해 상기 지정된 메모리 영역을 할당한다. 상기 델타 파일은 또한 블록(506)에서 상기 업데이트 프로세스 동안의 사용을 위해 지정된 상기 메모리 영역으로 쓰여진다.
상기 클라이언트 디바이스의 업그레이드 클라이언트는 이후 블록(508)에서 새로운 파일의 카피를 생성하기 위해 상기 델타 파일과 함께 상기 원시 파일의 호스트된 카피를 사용한다. 상기 새로운 파일의 카피는 블록(510)에서 가령, 상기 클라이언트 디바이스의 지정된 메모리와 같은 상기 클라이언트 디바이스의 사전에 지정된 메모리로 쓰여진다. 이러한 프로세스는 필요시 반복된다.
생성에 이어, 상기 새로운 파일의 카피는 블록(512)에서 지정된 메모리로부터 상기 원시 파일을 포함하는 원시 메모리 위치로 쓰여진다. 상기 새로운 파일의 사이즈가 상기 원시 파일의 사이즈보다 작거나 같을 때, 상기 새로운 파일은 상기 원시 파일의 메모리 위치로 쓰여짐으로써 원시 파일을 대체하게 된다.
앞서 설명된 바와 같이, 파일의 개정은 새롭고 업데이트된 EBSC를 상기 호스트 디바이스의 메모리 위치로 쓰는 것을 포함한다. 흔히, 상기 새로운 EBSC는 정확히 동일한 사이즈가 되지 않거나 또는 원시 EBSC와 정확히 동일한 시작 어드레스를 갖는다. 한 실시예의 업그레이드 클라이언트는 상기 EBSC 사이즈나 시작 어드레스에 상관없이 새로운 EBSC의 쓰기를 수용하기 위하여 정적 어드레싱 및 동적 어드레싱을 포함하는 디바이스 메모리 관리 옵션을 제공한다.
업그레이드 가능한 EBSC의 정적 어드레싱은 일반적으로 업데이트시 지정된 메모리 영역을 이용하여 SC 또는 EBSC 그룹의 사이즈를 변화시키도록 하고 반면, 상기 시작 어드레스는 변화되지 않는다. 따라서, 정적 어드레싱을 사용시, 전체 임베디드 소프트웨어(EEBS) 파일은 만일 EBSC 또는 EBSC 그룹의 시작 어드레스가 변화를 필요로 하는 경우에 다시 쓰여지지만, 상기 실시예는 제한적이지 않다.
업그레이드 가능한 EBSC의 동적 어드레싱은 보다 많은 개선된 메모리 관리를 허용하는 반면, 일반적으로 각각의 업데이트시 상기 EBSC 또는 EBSC 그룹의 시작 어드레스 또는 사이즈 모두의 변경을 지원한다. 한 실시예의 업그레이드 클라이언트는 한 세트의 응용 프로그램 또는 프로그래밍 인터페이스(API)와 하나이상의 데이터 테이블 사이의 상호작용을 이용하여 동적 어드레싱을 지원한다. 동적 어드레싱은 ROM 활용 및 디바이스 메모리 맵 디자인의 효율을 증가시키지만, 업데이트 오류의 낮은 가능성으로써 보다 빠른 업데이트 프로세싱을 지원한다. 정적 어드레싱 및 동적 어드레싱은 아래에서 보다 상세히 설명된다.
한 실시예의 정적 어드레싱은 두 개의 대안을 포함하며, 하나는 각각의 업그레이드 가능한 EBSC에 대한 지정 메모리 할당을 포함하고, 다른 하나는 특정 그룹의 EBSC에 대한 지정 메모리 할당을 포함한다. 상기 지정 메모리 할당은 소프트웨어 업데이트를 수용하기 위하여 각각의 EBSC 또는 EBSC 그룹에 대한 메모리 할당을 수정한다. 따라서, 소프트웨어의 향후 성장을 수용하기 위해서 부가적인 ROM이 있을 것이지만, 추가 메모리는 ROM에 한정되지 않는다.
도 6은 한 실시예에서 각각의 업그레이드 가능한 EBSC에 대하여 지정 메모리 할당을 이용하는 정적 어드레싱의 흐름도(600)이다. 동작시, 상기 업그레이드 클라이언트는 블록(602)에서 새로운 EBSC를 수신한다. 상기 새로운 EBSC는 소프트웨어 컴포넌트 디스트리뷰터로부터 수신될 수 있거나 또는 상기 원시 EBSC 및 델타 파일로부터 상기 업그레이드 클라이언트에 의해 생성될 수 있다. 상기 업그레이드 클라이언트는 블록(604)에서 상기 새로운 EBSC의 사이즈를 결정한다. 상기 업그레이드 클라이언트는 블록(606)에서 상기 새로운 EBSC의 사이즈가 상응하는 EBSC(상기 새로운 EBSC가 대체하는)의 사이즈를 초과하는지를 결정한다. 상기 새로운 EBSC 사이즈가 상기 원시 EBSC의 사이즈를 초과하지 않을 때, 상기 업그레이드 클라이언트는 블록(610)에서 메모리 블록 및 상기 원시 EBSC를 저장하는 연계된 지정 메모리 영역으로 상기 새로운 EBSC를 쓰게 된다. 상기 새로운 EBSC의 쓰기에 이어, 블록(612)에서는 추가로 새로운 EBSC를 수신하는 오퍼레이션으로 되돌아간다.
도 7은 도 6의 실시예에서, 정적 어드레싱 메모리 관리를 지원하도록 구성된 호스트 디바이스 메모리(702)의 한 부분에 대한 블록도이다. 비교를 위해, 정적 어드레싱을 지원하도록 구성되지 않은 호스트 디바이스 메모리(704)의 부분이 도시되어 있다. 정적 어드레싱을 지원하는 상기 메모리(702)는 각각의 업그레이드 가능한 EBSC에 대한 지정 메모리 영역을 포함한다. 이 실시예에서, 업그레이드 가능한 EBSC는 디바이스를 제조시 식별된다. 지정 메모리 영역은 이후 각각의 업그레이드 가능한 EBSC에 상응하도록 제공된다. 상기 지정 메모리 영역이 상응하는 EBSC와 함께 위치하도록 도시되어 있지만, 디바이스 메모리 내의 어느 곳에 위치하거나 분배될 수 있다. 지정된 메모리의 양을 최소화하는 경우, 지정된 메모리 영역은 업그레이드 가능하지 않은(non-upgradeable) EBSC에 대하여 제공되지 않지만 제한적이지는 않다.
이 실시예에서, 상기 업그레이드 가능한 EBSC는 EBSC 1, EBSC 2, 및 EBSC 5로서 식별되고 그리고 지정된 메모리 영역 1, 2, 및 5는 상기 업그레이드 가능한 EBSC 각각에 대하여 제공된다. 각각의 지정된 메모리 영역 1, 2, 및 5는 디바이스 제조업자에 의해 결정된 사이즈이다. 상기 업그레이드 가능한 EBSC에 대한 향후 업그레이드 및 개정은 앞서 설명된 바와 같이, 상기 업그레이드/개정이 상기 업그레이드된 EBSC의 사이즈가 상기 원시 EBSC의 사이즈를 초과할 때, 상응하는 지정된 메모리 영역을 사용한다.
도 8은 한 실시예에서 업그레이드 가능한 EBSC의 그룹에 대하여 지정 메모리 할당을 이용하는 정적 어드레싱의 흐름도(800)이다. 동작시, 상기 업그레이드 클라이언트는 블록(802)에서 새로운 EBSC를 수신한다. 다시, 상기 새로운 EBSC는 상기 소프트웨어 컴포넌트 디스트리뷰터로부터 수신될 수 있거나, 혹은 상기 원시 EBSC 및 델타 파일로부터 상기 업그레이드 클라이언트에 의해 생성될 수 있다. 상기 업그레이드 클라이언트는 블록(804)에서 새로운 EBSC의 사이즈를 결정한다. 상기 업그레이드 클라이언트는 블록(806)에서 상기 새로운 EBSC의 사이즈가 상응하는 EBSC(상기 새로운 EBSC가 대체하는)의 사이즈를 초과하는지를 결정한다. 상기 새로운 EBSC 사이즈가 상기 원시 EBSC의 사이즈를 초과하지 않을 때, 상기 업그레이드 클라이언트는 지정하고, 이후 블록(808)에서 상기 상응하는 원시 EBSC를 포함하는 EBSC 그룹 저장 메모리 블록으로 상기 새로운 EBSC를 쓰게 된다. 상기 새로운 EBSC 사이즈가 상기 원시 EBSC의 사이즈를 초과할 때, 상기 업그레이드 클라이언트는 지정하고 그리고 블록(810)에서 상기 새로운 EBSC를 상기 메모리 블록 및 상기 원시 EBSC를 저장하는 연계된 지정 메모리 영역으로 쓴다. 상기 새로운 EBSC의 쓰기에 이어, 오퍼레이션은 블록(812)에서 부가적인 새로운 EBSC를 수신하도록 되돌아간다.
도 9는 도 8의 실시예에서, 정적 어드레싱 메모리 관리를 지원하도록 구성된 호스트 디바이스 메모리(902)의 한 부분의 블록도이다. 비교를 위해, 정적 어드레싱을 지원하도록 구성되지 않는 호스트 디바이스 메모리(904)의 한 부분이 도시되어 있다. 정적 어드레싱을 지원하는 호스트 메모리(902)는 업그레이드가능한 EBSC의 지정된 그룹에 대하여 지정 메모리 영역을 포함한다. 이러한 대안에서, 업그레이드 가능한 EBSC는 디바이스의 제조시 식별된다. 이 실시예에서, EBSC 1, 2, 4, 5, 및 8은 업그레이드 가능하다.
디바이스 제조업자는 수많은 인자들 중 적어도 하나를 이용하여 상기 업그레이드 가능한 EBSC를 그룹화한다. 예를 들어, 유사한 업데이트 주기를 갖는 EBSC는 그룹을 형성할 수 있다. 또한, 업데이트/개정될 유사한 가능성을 갖는 EBSC가 그룹을 형성할 수 있다. 더욱이, 관련되거나 상호작용(interworking) 기능의 EBSC가 그룹을 형성할 수 있다. 아래의 그룹화는 이 실시예의 목적을 위해 만들어진다: EBSC 1, 4, 및 5는 EBSC 그룹 1을 형성하고, EBSC 3 및 7은 그룹 2를 형성하며, EBSC 6 및 9는 그룹 3을 형성하고, 그리고 EBSC 2 및 8은 그룹 4를 형성한다.
그룹화에 이어, 상기 디바이스 제조업자는 각각의 업데이트가능한 EBSC 그룹에 상응하는 지정 메모리 영역을 제공한다. 상기 지정 메모리 영역이 상기 상응하는 EBSC 그룹과 함께 위치하도록 도시되어 있지만, 디바이스 메모리내 어느 곳에도 위치할 수 있다. 업그레이드가능하지 않는 EBSC가 하나이상의 그룹 내에 배치되는 반면, 어떠한 지정된 영역도 지정된 메모리의 양을 최소화하도록 제공되지는 않지만 제한적이지는 않다.
이 실시예에서, 상기 업그레이드 가능한 EBSC 그룹은 EBSC 그룹 1 및 EBSC 그룹 4로서 식별되고, 그리고 지정된 메모리 영역 G1 및 G4는 상기 업그레이드 가능한 EBSC 그룹 각각에 대하여 제공된다. 각각의 지정된 메모리 영역 G1 및 G4는 디바이스 제조업자에 의해 결정된 사이즈를 갖는다. 상기 업그레이드 가능한 EBSC 그룹에 대한 향후 업그레이드 및 개정은 상기 업그레이드/개정이 상기 업그레이드된 EBSC 그룹의 사이즈가 상기 원시 EBSC 그룹의 사이즈를 초과하도록 할 때 상응하는 지정 메모리 영역을 사용한다.
앞서 설명된 EBSC 또는 EBSC 그룹의 다시쓰기는 상기 다시쓰여진 EBSC 또는 EBSC 그룹을 포함하는 파일 내부의 서브루틴의 시작 주소를 변화시킬 수 있다. 서브루틴 시작 주소의 변화는 상응하는 호출 어드레스에서의 변화를 일으키고, 이때 상기 상응하는 호출 어드레스에 의하여 호스트 디바이스의 다른 서브루틴은 상기 다시쓰여진 서브루틴에 액세스한다. 따라서, 한 실시예에서, 상기 업그레이드 클라이언트는 다시쓰여진 EBSC 또는 EBSC 그룹에서 서브루틴에 상응하는 호출 어드레스의 업그레이딩을 지원한다. 이러한 호출 어드레스 업그레이드는 다시쓰여진 EBSC 또는 EBSC 그룹에서 서브루틴에 상응하는 호출 어드레스를 포함하는 어떤 블록을 상기 호스트 디바이스 메모리 내에 다시 쓰는 것을 포함한다. 이러한 호출 어드레스 변화가 일반적으로 소수의 바이트와 관련되기 때문에, 상기 호출 어드레스를 포함하는 블록의 업그레이딩은 상기 호출 어드레스를 포함하는 EBSC를 업데이팅하는 것보다 효과적인 것으로 알려져 있다.
도 10은 한 실시예에서 정적 어드레싱을 지원하는 클라이언트 디바이스 ROM 맵(1000)의 블록도이다. 상기 ROM은 아래의 영역을 포함하지만, 제한적인 것은 아니다: 부트(boot) 코드 영역(1002), 임베디드 소프트웨어 영역(1004), EBSC 작용 메모리 영역(1006), 업그레이드 클라이언트 디바이스 매개변수 영역(1008), 및 지정되지 않은 목적을 위해 지정된 하나이상의 영역(1010).
상기 부트 코드 영역(1002)은 디바이스 부팅 시퀀스 코드를 저장한다. 상기 임베디드 소프트웨어 영역(1004)은 클라이언트 디바이스의 임베디드 소프트웨어를 저장한다. 상기 임베디드 소프트웨어는 가령, 브라우저의 소프트웨어, KVM(K Virtual Machine), 통신 라이브러리, 실시간 OS, 그래픽 드라이버, 및 업그레이드 클라이언트를 포함하지만, 제한적이지는 않다. 각각의 업그레이드 가능한 EBSC 또는 EBSC 그룹에 대한 메모리 할당은 앞서 설명된 바와 같이, 소프트웨어 업데이트를 수용하도록 변경된다. 따라서, 소프트웨어의 향후 성장을 수용하도록 추가적인 ROM이 지정될 것이다. 상기 추가 지정된 ROM은 상응하는 EBSC 또는 EBSC 그룹의 초기 버전의 사이즈의 대략 5%-20%가 되지만, 제한적이지는 않다.
상기 EBSC 작용 메모리 영역(1006)은, EBSC 또는 EBSC 그룹의 새로운 버전이 업그레이드 클라이언트에 의해 생성된 이후 및 상기 새로운 버전이 상기 EBSC 또는 EBSC 그룹의 원시 버전이 차지하는 임베디드 소프트웨어 영역(1004)의 메모리 위치로 쓰여지기 이전에, EBSC 또는 EBSC 그룹의 새로운 버전을 일시적으로 저장한다. 상기 작용 영역(1006)의 추정된 사이즈는 크리티컬 및 넌-크리티컬 컴포넌트를 포함하여 이러한 메모리 영역을 이용하는 모든 EBSC 또는 EBSC 그룹 중 가장 큰 것의 사이즈이다.
상기 업그레이드 클라이언트 디바이스 매개변수 영역(1008)은 상기 업그레이드 클라이언트에 구체적인 클라이언트 디바이스 구성 데이터 및 매개변수를 저장한다. 상기 영역(1008)의 추정된 사이즈는 상기 클라이언트 디바이스에 호스트된 디바이스 구성에 관련된 업그레이드 가능한 EBSC의 수에 상응한다.
도 11은 한 실시예에서, 정적 어드레싱을 이용한 임베디드 소프트웨어 및 전개 프로세스(1100)의 블록도이다. 상기 블록도는 소프트웨어 컴포넌트 디스트리뷰터(1102)에 의한 EBSC 개발에서부터, 가령 정적 어드레싱에 기초한 디바이스 메모리 관리와 함께 한 실시예의 업그레이드 클라이언트를 이용한 디바이스 ROM 초기화까지의 프로세스를 도시하고 있다.
소프트웨어 컴포넌트 디스트리뷰터(1102)의 컴포넌트들은 새로운 EBSC의 소스 코드를 수신하고, 상기 새로운 EBSC 소스 코드를 컴파일(1103)한다. 상기 컴파일(1103)은 결과적인 EBSC 객체 코드를 링커(1106 및 1116)로 결합하고, 상기 링커(1106 및 1116)는 새로운 EBSC의 레지스트레이션(registration)의 부분으로서 상기 새로운 EBSC 객체 코드로부터 새로운 헥스 파일(텍스트) 또는 바이너리 파일(1118)을 생성한다. 상기 새로운 헥스 파일은 새로운 EBSC에 상응한다.
정적 어드레싱을 지원함에 있어서, 상기 소프트웨어 컴포넌트 디스트리뷰터 또는 서비스 제공자는 각각의 업그레이드 가능한 EBSC에 대한 추가 메모리를 삽입하도록 원시 맵 파일을 수정한다. 한 실시예에서, 링커(1106)는 수정된 맵 파일(1104)을 생성한다. EBSC 그룹화가 사용될 때, 원시 맵 파일은 EBSC를 그룹화하고 그리고 각각의 업그레이드 가능한 EBSC 그룹에 대한 추가 메모리를 삽입하도록 수정된다. 상기 맵 파일(1104)의 수정은 상응하는 객체 파일과 함께 비어있는 파일 또는 그룹을 삽입하도록 링커(1106)를 이용하여 상기 링크 파일을 에디팅(editing)하는 것을 포함한다.
벡터 생성 툴(1105)은 상기 수정된 맵 파일(1104)로부터 벡터 테이블 파일(1108)을 생성한다. 상기 벡터 테이블 파일(1108)은 클라이언트 디바이스(1112) 내의 업그레이드 클라이언트 디바이스 매개변수에 대하여 상기 지정된 ROM 영역(1110)으로 다운로드된다. 도 1에서, 상기 업그레이드 클라이언트(130)는 벡터 테이블(1108)을 관리하고, 상기 벡터 테이블(1108)은 EEBS(entire embedded software)가 다시쓰여지지 않는다면 변하지 않은 채로 남는다. 상기 링커(1116)는 또한 새로운 헥스 또는 바이너리 파일(1118)을 생성하도록 상기 수정된 맵 파일(1104)을 사용한다. 추가로, 상기 링커(1116)는 헥스 파일/맵 파일 경로 쌍 연계(hex file/map file path pair associations)의 목록을 지정하거나 생성한다. 상기 헥스 파일(1118)은 상기 클라이언트 디바이스(1112)의 임베디드 소프트웨어 영역(1120)으로 다운로드되지만, 대안적 실시예에서 상기 클라이언트 디바이스 메모리의 다른 영역으로 다운로드될 수 있다.
앞서 설명된 정적 어드레싱이 상기 호스트 디바이스 프로세싱 시간을 감소시키고 크리티컬 소프트웨어 컴포넌트의 업데이팅을 가능하게 하지만, 모든 업그레이드 및 개정을 수용하지는 않는다. 게다가, EBSC의 다시쓰기가 상응하는 지정된 메모리 영역의 사이즈를 초과할 때 정적 어드레싱의 사용은 전체 디바이스 메모리의 다시쓰기를 필요로한다. 결과적으로, 실시예에서는 정적 어드레싱에 대한 대안으로 동적 어드레싱이 사용된다.
동적 어드레싱은 새로운 파일 버전의 사이즈가 원시 파일 버전의 사이즈를 초과하는 전자식 파일 업데이트 및 개정을 허용한다. 동적 어드레싱을 지원함에 있어서, 한 실시예의 업그레이드 클라이언트는 파일 업데이트 프로세스 및 함수 호출 프로세스 동안 상기 디바이스 메모리를 효과적으로 관리하고, 이때 상기 함수 호출 프로세스에서 주 프로그램은 업데이트된 EBSC를 포함하는 함수들을 호출한다.
동적 어드레싱을 이용한 메모리 관리의 실행에 있어서, 상기 업그레이드 클라이언트는 새로운 소프트웨어 컴포넌트를 수용할 만큼 충분히 큰 메모리 블록을 식별하고 지정하는데, 이는 하나이상의 제 1 및 제 2 메모리 영역을 포함하는 호스트 디바이스 메모리 영역을 순차적으로 검색하여 이루어진다. 새로운 컴포넌트 사이즈가 상기 검색된 메모리 영역의 사용가능한 블록의 사이즈를 초과할 때, 상기 업그레이드 클라이언트는 아래에 설명되는 바와 같이, 사용되지 않는 메모리 블록을 제거하도록 제 1 메모리 영역을 다시쓰고, 상기 제 1 및 제 2 메모리 영역을 재배분하며, 새로운 컴포넌트를 제 2 메모리 영역으로 쓰고, 그리고 벡터 테이블을 업데이트한다.
도 12는 한 실시예에서 동적 어드레싱을 이용하여 EBSC 또는 EBSC 그룹을 업그레이드하는 흐름도(1200)이다. 상기 업그레이드 클라이언트는 블록(1202)에서 새로운 EBSC 버전을 수신한다. 상기 새로운 EBSC 버전은 원시 EBSC 버전으로부터 생성되고, 상응하는 델타 파일은 대안으로 상기 소프트웨어 컴포넌트 디스트리뷰터로부터 수신된다. 메모리 영역은 블록(1204)에서 새로운 EBSC 버전의 저장을 수용하기 위하여 상기 클라이언트 디바이스 내에서 식별되고 지정된다. 블록(1206)에서, 업그레이드 클라이언트의 컴포넌트는 새로운 EBSC 버전을 상기 지정된 메모리 영역으로 쓴다. 블록(1208)에서 상기 벡터 테이블로 업데이트가 이루어짐으로써, 상기 새로운 EBSC 버전에 의한 벡터 테이블의 정보를 변화시키게 된다. 블록(1210)에서, 상기 가비지 테이블에 업데이트가 이루어짐으로써, 새로운 EBSC 버전의 쓰기로부터 상기 사용되지 않는 메모리 영역의 어떤 변화를 반영하게 된다.
동적 어드레싱을 이용하여 호스트 디바이스 내의 소프트웨어 컴포넌트에 액세스하기 위해서, 상기 업그레이드 클라이언트는 상응하는 소프트웨어 파일의 식별 정보를 포함한 상기 호스트 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 상기 벡터 테이블로부터 상응하는 소프트웨어 파일의 시작 어드레스를 읽으며, 그리고 상응하는 소프트웨어 파일에 대한 호출을 생성한다. 제 1 EBSC가 제 2 EBSC를 호출할 때, 상기 업그레이드 클라이언트는 함수 호출 시퀀스를 변화시킴으로써 정적 어드레스를 이용하여 상기 제 2 EBSC를 직접 호출하는 대신에, 상기 제 1 EBSC는 정적 어드레스를 이용하여 업그레이드 클라이언트의 API를 호출한다. 상기 호출된 API는 상응하는 정적 어드레스 및 상기 런타임 벡터 테이블의 인수(arguments)를 이용하여 하나의 호출에 대하여 수신된 호출을 제 2 EBSC로 전환한다.
도 13은 한 실시예에서, 동적 어드레싱을 이용하는 함수 호출의 흐름도(1300)이다. 상기 호스트 디바이스의 주 프로그램은 상기 호스트 디바이스 메모리에 저장된 EBSC를 이용하여 사용자-요청된 함수를 지원한다. 함수가 사용자에 의해 요청될 때, 상기 호스트 디바이스의 주 프로그램의 EBSC는 정적 어드레스를 이용하여 상기 업그레이드 클라이언트의 컴포넌트를 직접 호출함으로써 특정 함수와 연계된 EBSC를 호출한다. 호출에 대한 응답으로, 상기 업그레이드 클라이언트는 블록(1302)에서, 함수 또는 EBSC 식별(identification) 및 상기 함수에 대한 인수를 포함하는 주 프로그램으로부터 정보를 수신한다. 상기 업그레이드 클라이언트는 블록(1304)에서 벡터 테이블에 액세스하고, 상기 벡터 테이블은 상기 EBSC의 상응하는 시작 어드레스와 함께 주 프로그램에 사용가능한 각각의 EBSC에 대한 엔트리(entries)를 포함한다. 상기 업그레이드 클라이언트는 블록(1306)에서 시작 어드레스 및 상기 벡터 테이블로부터 연계된 인수를 읽는다. 상기 주 프로그램으로부터 수신된 호출된 EBSC의 정보와 함께 시작 어드레스 정보를 이용하면, 상기 업그레이드 클라이언트는 블록(1308)에서 실제 함수에 대한 호출, 및 모든 수신된 인수와 함께 상응하는 EBSC를 생성한다.
도 14는 한 실시예에서 동적 어드레싱을 지원하는 클라이언트 디바이스 ROM 맵(1400)의 블록도이다. 상기 ROM은 아래의 영역을 포함하지만 제한적이지는 않다: 부트 코드 영역(1402), 임베디드 소프트웨어 영역(1404), EBSC 업데이트 영역(1406), 업그레이드 클라이언트 디바이스 매개변수 영역(1408), 디바이스 메모리 관리 영역(1410), 및 지정되지 않은 목적을 위한 하나이상의 영역(1412). 이러한 메모리 영역의 각각은 아래에서 설명되지만, 대안적 실시예는 당업자에게 공지된 많은 다른 영역 구성을 사용할 수 있다.
상기 부트 코드 영역(1402)은 디바이스 부팅 시퀀스 코드를 저장한다. 상기 임베디드 소프트웨어 영역(1404)은 상기 클라이언트 디바이스의 임베디드 소프트웨어를 저장한다. 상기 임베디드 소프트웨어는 가령, 브라우저의 소프트웨어, KVM, 통신 라이브러리, 실시간 OS, 그래픽 드라이버, 및 업그레이드 클라이언트 등을 포함한다.
상기 EBSC 업데이트 영역(1406)은 임베디드 소프트웨어 컴포넌트의 새로운 버전을 저장한다. 상기 영역(1406)의 추정된 사이즈는 상기 디바이스들 사이에서 변화할 것이다. 그러나, 일반적으로 상기 EBSC 업데이트 영역(1406)은 상기 임베디드 소프트웨어 영역(1404)의 사이즈의 대략 10%-20%가 될 것이다.
상기 업그레이드 클라이언트 디바이스 매개변수 영역(1408)은 상기 업그레이드 클라이언트에 지정된 클라이언트 디바이스 구성 데이터 및 매개변수를 저장한다. 상기 업그레이드 클라이언트 디바이스 매개변수 영역(1408)의 추정된 사이즈는 상기 클라이언트 디바이스에 호스트된 디바이스 구성에 관련된 업그레이드 가능한 EBSC의 수에 상응한다.
상기 디바이스 메모리 관리 영역(1410)은 메모리 매개변수, 벡터 테이블 및 가비지 엔트리 테이블을 저장한다. 상기 영역(1410)의 추정된 사이즈는 상기 클라이언트 디바이스 상에 호스트된 디바이스 메모리 관리에 관련된 업그레이드 가능한 EBSC의 수에 상응한다.
상기 디바이스 메모리 관리 영역(1410)의 메모리 매개변수에는 ROM 수, 시작 어드레스, 및 디바이스 메모리 관리에 대한 지정된 ROM 영역의 사이즈, 및 디바이스 메모리 관리를 위한 지정된 ROM 영역(1410)에서 다음 사용가능한 메모리의 시작 어드레스 및 사이즈가 포함된다. 상기 메모리 매개변수는 또한 벡터 테이블 및 가비지 엔트리 테이블의 사이즈, 및 상기 가비지 엔트리 테이블 내의 유효 엔트리의 수를 포함한다. 상기 벡터 테이블은 상기 EBSC 식별, ROM 수, 시작 어드레스, 및 업그레이드 가능한 EBSC의 사이즈를 포함한다. 상기 가비지 엔트리 테이블은 ROM 수, 시작 어드레스, 및 모든 가비지 엔트리의 사이즈를 포함한다.
도 15는 도 13 및 14에서, 업그레이드 클라이언트(130), 임베디드 소프트웨어 영역(302), DMM 라이브러리(310), 벡터 테이블(312), 및 가비지 테이블(314)을 포함하는 메모리 컴포넌트들 사이의 상호작용의 예를 보여주는 디바이스 메모리(300)의 블록도이다. 상기 DMM 라이브러리(310)는 세 개의 API(1502-1506)를 포함한다. 상기 API(1502-1506)는 디바이스 메모리 관리를 위한 지정된 ROM 영역, EBSC에 대한 지정된 메모리, 및 EBSC 업데이트를 위해 지정된 영역을 조작하는데 사용된다. 상기 API는 함수 어드레스 전환을 위한 API(1502), EBSC의 새로운 버전의 지정을 위한 API(1504), 및 가비지 수집을 위한 API(1506)을 포함하며, 아래에서 각각 설명된다.
상기 함수 어드레스 전환 API(1502)는 도 13과 관련하여 앞서 설명된 바와 같이, 특정 호스트 디바이스 함수와 연계된 EBSC에 대한 호스트 디바이스의 주 프로그램(1510)으로부터 호출을 생성한다. 상기 호스트 디바이스의 주 프로그램(1510)은 상기 함수 어드레스 전환 API(1502)를 직접 호출함으로써 특정 함수와 연계된 EBSC를 호출한다. 상기 API(1502)의 직접 호출은 상기 EBSC의 직접 호출을 대신하여 이루어진다. 상기 호출시, 상기 함수 어드레스 전환 API(1502)는 함수 식별 정보 및 상기 함수에 대한 인수를 포함하는 정보를 상기 주 프로그램(1510)으로부터 수신한다.
상기 호출에 대한 응답으로, 상기함수 어드레스 전환 API(1502)는 상기 벡터 테이블(312)에 액세스한다. 상기 벡터 테이블(312)은 상기 디바이스 메모리(302) 내의 함수의 상응하는 시작 어드레스와 함께 상기 주 프로그램(1510)에 사용가능한 각각의 함수에 대한 엔트리를 포함한다. 상기 함수 어드레스 전환 API(1502)는 상기 벡터 테이블(312)로부터 상기 주 프로그램(1510)에 의해 요청된 함수의 시작 어드레스를 읽고, 그리고 상기 주 프로그램(1510)으로부터 수신된 호출된 EBSC의 정보와 함께 상기 시작 어드레스 정보를 이용하여, 모든 수신된 인수와 함께 상기 실제 함수에 대한 호출을 생성한다.
한 실시예의 업그레이드 클라이언트(130)는 본원에서 지정 API(1504)로 일컬어지는 EBSC(1504)의 새로운 버전의 지정을 위한 API를 사용함으로써, EBSC 또는 EBSC 그룹의 새로운 버전을 수용하도록 메모리 내의 영역을 설정하고 지정한다. 도 15에서, 상기 지정 API(1504)는 상기 업그레이드 클라이언트(130)에 의해 호출될 때 새로운 EBSC 버전에 대하여 파일 사이즈를 포함한 식별 정보를 수신한다. 새로운 EBSC 버전의 파일 사이즈는 상기 새로운 EBSC 버전을 저장하도록 상기 디바이스 ROM(302)에 지정될 영역의 사이즈이다. 상기 지정 API(1504)는 메모리(302) 내부의 적절한 영역을 설정하고, 상기 메모리 영역을 성공적으로 지정할 때 상기 요청된 지정 영역의 시작 어드레스를 되돌린다. 도 16은 한 실시예에서 상기 지정 API(1504)를 이용하여 새로운 버전의 EBSC를 수용하도록 메모리 영역의 지정에 대한 흐름도(1600)이다.
요청된 사이즈의 메모리 블록을 할당함에 있어서, 상기 지정 API(1504)는 아래와 같은 원칙을 적용하지만, 대안적 실시예에서는 동등한 결과를 이루기 위해 다른 원칙을 적용할 수 있다. 도 17은 메모리 블록을 설정하기 위한 흐름도(1700)로서, 한 실시예에서, 상기 지정 API(1504)의 원칙을 이용하여 EBSC의 새로운 버전을 수용한다. 블록(1702)에서 상기 새로운 EBSC의 사이즈에 대한 정보를 수신할 때, 상기 지정 API(1504)는 블록(1704)에서 상기 새로운 EBSC의 사이즈가 원시 EBSC의 사이즈를 초과하는지를 결정한다. 상기 새로운 EBSC의 사이즈가 상응하는 원시 EBSC의 사이즈보다 작거나 같으면, 상기 지정 API(1504)는 블록(1706)에서 새로운 EBSC를 수용하도록 상기 상응하는 원시 EBSC가 차지하는 메모리 블록을 할당한다. 그렇지 않으면, 상기 지정 API(1504)는 상기 지정된 메모리 영역의 사용가능한 메모리로부터 상기 요청된 사이즈를 갖는 메모리 블록을 설정하고자 한다.
상기 검색을 계속함에 있어서, 상기 지정 API(1504)는 블록(1708)에서 상기 요청된 사이즈를 갖는 메모리 블록에 대하여 상기 클라이언트 디바이스의 지정된 메모리 영역을 검색한다. 만일 적절한 사이즈의 블록이 상기 지정된 메모리 영역에서 발견되면, 상기 지정 API(1504)는 블록(1710)에서 새로운 EBSC를 수신하도록 상기 메모리 블록을 할당한다. 만일 적절한 사이즈의 메모리 블록이 상기 지정된 메모리 영역에서 사용가능하지 않으면, 상기 지정 API(1504)는 블록(1712)에서 상기 가비지 테이블(314)에 액세스한다. 상기 지정 API(1504)는 상기 주 프로그램의 사용되지 않은 영역을 검색하도록 블록(714)에서 가비지 테이블(314)의 정보를 사용함으로써, 상기 가비지 테이블(314) 내의 엔트리에 상응하는 사용되지 않은 영역 사이에서 상기 요청된 사이즈의 메모리 블록을 설정하게 된다. 본원에서 가비지 영역으로 일컬어지는 한 실시예의 사용되지 않은 영역은 주 프로그램의 사용되지 않은 영역을 포함하지만 제한적이지는 않다. 만일 적절한 사이즈의 메모리 블록이 상기 사용되지 않는 메모리 영역에서 발견되면, 상기 지정 API(1504)는 블록(716)에서 상기 새로운 EBSC를 수신하도록 상기 블록을 할당한다.
한 실시예에서 상기 지정 API(1504)는, 만일 상기 지정 API가 적절한 사이즈의 메모리 블록을 설정할 수 없다면, 본원에서 가비지 수집(garbage collection)으로 일컬어지는 프로세스를 블록(1718)에서 개시한다. 또한 상기 지정 API(1504)는 상기 가비지 테이블(214)의 모든 엔트리가 점령되어 있을 때 가비지 수집을 개시한다. 한 실시예에서, 본원에서 가비지 수집 API(1506)로 일컬어지는 가비지 수집(1506)에 대한 API는 상기 지정 API(1504)에 의해 호출된다. 가비지 수집에 대한 API는 일반적으로 어떠한 인수로 수신하지 않으며 그리고 EBSC 및 EBSC 업데이트를 위하여 지정된 영역내에 모든 가비지를 소거한다.
앞서 설명된 바와 같이, 상기 지정 API(1504)는, 만일 상기 지정 API(1504)가 상기 요청된 지정 사이즈에 대하여 충분한 메모리를 발견할 수 없거나 또는 만일 상기 가비지 엔트리 테이블이 가득차게 된다면, 가비지 수집을 개시한다. 도 18은 한 실시예에서 가비지 수집의 흐름도(1800)이다. 가비지 수집을 개시할 때, 상기 지정 API(1504)는 상기 가비지 수집 API(1506)를 호출한다. 호출될 때, 상기 가비지 수집 API(1506)는 블록(1802)에서 상기 가비지 테이블 엔트리를 읽고, 상기 디바이스 메모리의 임베디드 소프트웨어 영역이 다시쓰여지게 함으로써, 블록(1804)에서 메모리의 EBSC를 메모리 내에 순차적으로 패킹업(packing up)한다. 대안적인 실시예는 상기 EBSC를 상기 주 메모리 내에 패킹 다운하지만, 제한적이지는 않다. 이러한 패킹 동작은 상기 임베디드 소프트웨어 영역에서 사용되지 않는 영역을 제거한다.
이러한 패킹 동작에 이어, 상기 가비지 수집 API(1506)는 블록(1806)에서 상기 지정된 메모리 영역에 저장된 각각의 EBSC의 사이즈를 평가하고, 그리고 임베디드 소프트웨어 영역의 쓰기에 이어 상기 임베디드 소프트웨어 영역의 주 프로그램에 남아있는 사용되지 않는 메모리 블록에 대하여 상기 사이즈를 비교한다. 이러한 평가는 상기 임베디드 소프트웨어 영역의 다시쓰기 이후 남아있는 사용되지 않는 메모리의 양이 상기 지정된 메모리 영역의 EBSC를 수용할 수 있는지를 결정함으로써, 가능하다면, 상기 EBSC는 상기 지정된 메모리 영역 외부로 이동되어서 상기 디바이스 메모리의 임베디드 소프트웨어 영역으로 이동될 수 있다. 상기 지정된 메모리 영역의 EBSC는 순차적으로 평가되지만 제한적이지는 않다. 상기 EBSC는 블록(1808)에서, 상기 지정된 메모리 영역으로부터 상기 EBSC 사이즈가 허용되는 임베디드 소프트웨어 영역으로 다시쓰여진다. 상기 EBSC가 한 실시예에서 다시쓰여질 때, 상기 EBSC는 패킹된 EBSC에 이어 상기 임베디드 소프트웨어 영역 내에 순차적으로 저장된다.
상기 지정된 메모리 영역에 저장된 상기 EBSC의 평가는, 모든 EBSC가 상기 임베디드 소프트웨어 영역으로 이동될 때까지 또는 상기 지정된 메모리 영역의 EBSC를 수용하기에 충분히 큰 상기 임베디드 소프트웨어 영역에 남아있는 영역이 없도록 결정이 이루어질 때까지, 계속된다. 임베디드 소프트웨어 영역에 수용될 수 없는 EBSC는 상기 지정된 메모리 영역에 남지만, 상기 실시예는 제한적이지 않다.
상기 패킹 및 이동 동작의 종료시, 상기 가비지 수집 API(1506)는 블록(1810)에서 상기 호스트 디바이스의 주 메모리의 사용되지 않은 메모리 블록을 지정된 메모리 영역으로 재지정함으로써 상기 호스트 디바이스 메모리를 재분배한다. 또한, 상기 지정된 메모리 영역의 포인터는 블록(1812)에서 상기 지정된 메모리 영역 내부의 사용가능한 메모리의 시작 어드레스를 관리하도록 리셋된다. 또한, 블록(1814)에서 상기 가비지 테이블은 상기 사용되지 않는 메모리 영역의 상태를 반영하도록 다시쓰여진다. 상기 업그레이드 클라이언트(130)는 EBSC의 원시 버전이 차지하는 메모리 영역을 제외한 메모리 영역으로 EBSC의 새로운 버전을 쓰는 과정에 이어 상기 벡터 테이블(312)을 또한 업데이트한다.
도 15, 17, 19, 및 20을 참조로 업그레이딩 및 가비지 수집 동작이 이어진다. 도 19는 한 실시예에서 상기 지정 API의 업그레이딩 동작 이전(1902) 및 이후(1904)의 예시적인 호스트 디바이스 메모리의 블록도이다. 도 20은 한 실시예에서 업그레이딩 및 가비지 수집 동작에 이어 호스트 디바이스 메모리(2004)의 블록도이다.
상기 실시예는 지정 API에 의한 새로운 버전의 EBSC 8에 관한 정보를 수신하는 것으로부터 시작된다. EBSC 8의 새로운 버전의 파일 사이즈를 수신할 때, 상기 새로운 버전의 사이즈가 상기 원시 EBSC의 사이즈보다 작은지 또는 같은지에 대하여 결정이 이루어진다. 이 실시예에서, EBSC 8의 원시 버전은 400 바이트를 포함하고 반면 EBSC 8의 새로운 버전은 380 바이트를 포함한다. 따라서, 상기 지정 API는 EBSC 8의 새로운 버전을 수신하기 위하여 상기 EBSC 8의 원시 버전이 차지하는 영역(1920)을 할당한다.
상기 실시예는 상기 지정 API에 의해 EBSC 8의 새로운 버전에 대한 정보의 수신으로써 계속된다. EBSC 5의 새로운 버전의 파일 사이즈를 수신할 때, 상기 새로운 버전의 사이즈가 상기 원시 EBSC의 사이즈보다 작은지 또는 같은지에 대한 결정이 이루어진다. 이 실시예에서, EBSC 5의 원시 버전은 300 바이트를 포함하고, 반면 EBSC 5의 새로운 버전은 360 바이트를 포함한다. 새로운 버전의 사이즈가 원시 버전의 사이즈보다 클 때, 상기 지정 API는 지정된 메모리 영역(1910)에서 사용가능한 메모리로부터 상기 요청된 사이즈를 갖는 메모리 블록을 설정하고자 한다. 이 실시예에서, 메모리는 상기 지정된 메모리 영역(1910)에서 사용가능하고, 따라서 상기 지정 API는 EBSC 5의 새로운 버전을 수신하도록 상기 지정된 메모리(1910) 내의 영역(1922)을 할당한다. 더욱이, 상기 지정 API는 EBSC 5의 원시 버전이 차지하는 영역을 사용되지 않는 영역(1924)으로 할당한다.
다음으로, 상기 지정 API는 EBSC 7의 새로운 버전에 관한 정보를 수신한다. EBSC 7의 원시 버전은 550 바이트를 포함하지만, EBSC 7의 새로운 버전은 560 바이트를 포함한다. 새로운 버전의 사이즈가 원시 버전의 사이즈보다 클 때, 상기 지정 API는 상기 지정된 메모리 영역(1910) 내의 사용가능한 메모리로부터 상기 요청된 사이즈를 갖는 메모리 블록을 설정하고자 한다. 이 실시예에서, 메모리는 상기 지정된 메모리 영역(1910)에서 사용가능하고, 따라서 상기 지정 API는 EBSC 7의 새로운 버전을 수신하기 위하여 상기 지정된 메모리(1910) 내의 다음 사용가능한 영역(1926)을 할당한다. 더욱이, 상기 지정 API는 EBSC 7의 원시 버전이 차지하는 영역을 사용되지 않는 영역(1928)으로 할당한다.
실시예가 계속될 때, 상기 지정 API는 EBSC 2의 새로운 버전에 관한 정보를 수신한다. 상기 EBSC 2의 원시 버전이 330바이트를 포함하는 반면, EBSC 2의 새로운 버전은 360 바이트를 포함한다. 상기 지정 API는 적절한 사이즈의 영역이 상기 지정된 메모리 영역(1910) 내에서 사용가능하지 않는가를 결정하고 그리고 상기 가비지 테이블(314)에 액세스한다. 상기 가비지 테이블(314)은 상기 가비지 테이블(314) 내의 엔트리를 이용하여 식별된 상기 가비지 영역 사이에서 상기 요청된 사이즈의 메모리 영역을 설정하기 위해 사용된다. 이 실시예에서는 적절한 사이즈의 사용되지 않은 영역(1930)이 식별되고, 상기 지정 API는 EBSC 2의 새로운 버전을 수신하기 위해 상기 사용되지 않은 영역(1930)을 할당한다.
앞서 설명된 바와 같이, 상기 지정 API는, 만일 상기 지정 API가 상기 요청된 지정 사이즈에 대하여 충분한 메모리를 발견할 수 없거나 또는 상기 가비지 엔트리 테이블이 가득차게 되면, 가비지 수집을 개시한다. 이 실시예에서는, EBSC 2의 새로운 EBSC 버전에 대하여 상기 지정된 메모리 영역에서의 할당에 이어 다음 새로운 EBSC 버전이 수신되면 가비지 수집이 개시된다는 점을 가정한다. 한 실시예의 가비지 수집은 상기 호스트 디바이스 메모리에서 EBSC를 패킹 업하고, 결과적으로 EBSC의 순서는 EBSC1, EBSC 4, EBSC 2, EBSC 3, EBSC 6, EBSC 8, EBSC 5, 및 EBSC 7이 되는 새로운 호스트 디바이스 메모리 구성을 만든다. 대안적인 실시예의 가비지 수집 과정은 상기 호스트 디바이스 메모리 내에 EBSC를 패킹 다운한다.
도 21은 한 실시예에서 동적 어드레싱을 이용한 임베디드 소프트웨어 개발 및 전개 프로세스의 블록도(2100)이다. 도 21은 동적 어드레싱에 기초한 디바이스 메모리 관리에 따른 한 실시예의 업그레이드 클라이언트를 이용하여, 상기 소프트웨어 컴포넌트 디스트리뷰터(2102)에 의한 EBSC 개발로부터 디바이스 ROM 초기화까지의 프로세스를 도시한다.
상기 소프트웨어 컴포넌트 디스트리뷰터(2102)의 컴포넌트들은 새로운 EBSC의 소스 코드를 수신하고, 상기 새로운 EBSC 소스 코드를 컴파일(2103)한다. 컴파일(2103)은 결과적인 EBSC 객체 코드를 링커(2106 및 2116)에 연결하고, 이 링커(2106 및 2116)는 새로운 EBSC의 레지스트레이션의 부분으로서 상기 새로운 EBSC 객체 코드로부터 새로운 헥스 파일(텍스트) 또는 이진 파일(2118)을 생성한다. 상기 새로운 헥스 파일은 상기 새로운 EBSC에 상응한다.
동적 어드레싱을 지원함에 있어서, 상기 소프트웨어 컴포넌트 디스트리뷰터(2102)는 맵 파일(2104)을 생성하기 위해서 컴파일러(2103) 링커(2106)를 사용한다. 상기 맵 파일(2104)은 EBSC의 상응하는 초기 벡터 테이블(2108)을 생성하도록 벡터 생성 툴(2105)에서 사용된다. 상기 벡터 테이블(2108)은 이후 상기 링커(2116)로 제공되고, 상기 링커(2116)는 초기 벡터 테이블(2108)을 이용하여 헥스(텍스트) 또는 이진 파일(2118)을 생성한다. 상기 헥스(텍스트) 또는 이진 파일(2118)은 클라이언트 디바이스(2112)의 임베디드 소프트웨어 영역(2120)으로 다운로드되지만, 대안적인 실시예에서는 상기 헥스 파일(2118)이 클라이언트 디바이스(2112)의 다른 메모리 영역으로 쓰여질 수 있다. 상기 업그레이드 클라이언트의 DMM 라이브러리의 컴포넌트들은 벡터 테이블(2108)을 관리하고, EBSC의 동적 어드레싱을 지원한다. 상기 DMM 라이브러리는 업그레이드 클라이언트 디바이스 매개변수(2110)에 대하여 지정된 영역에 저장된 벡터 테이블(2108)과 중첩한다.
전자식 파일 업데이팅 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 연계된 방법은 전자식 파일의 업데이트를 위한 시스템을 포함하고, 이때 상기 시스템은 델타 파일을 생성하는 파일 디퍼렌싱 및 업데이팅 시스템의 제 1 성분을 포함하는 제 1 디바이스, 및 하나이상의 결합을 통해 상기 제 1 디바이스로부터 델타 파일을 수신하는 제 2 디바이스를 포함한다.
상기 제 2 디바이스는 상기 제 2 디바이스의 전자식 파일을 업데이트하도록 구성되는 파일 디퍼렌싱 및 업데이팅 시스템의 제 2 성분을 포함하며, 이는
- 상기 델타 파일로부터 새로운 전자식 파일의 하나이상의 새로운 성분을 읽고, 이때 상기 새로운 전자식 파일은 원시 전자식 파일의 업데이트된 버전이 되며,
- 제 1 및 제 2 메모리 영역의 순차적 검색을 실행하여 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리의 사이즈를 초과할 때 재분배되며,
- 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰고, 그리고
- 상기 새로운 컴포넌트가 상기 원시 전자식 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때 벡터 테이블을 업데이트하는
단계들에 의한다.
상기 제 2 디바이스는 또한 디바이스의 전자식 파일에 액세스하도록 구성되는 파일 디퍼렌싱 및 업데이팅 시스템의 제 2 컴포넌트를 포함하고, 이는
- 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자식 파일의 식별 정보를 포함하며,
- 상기 벡터 테이블로부터 상응하는 전자식 파일의 시작 어드레스를 읽고, 그리고
- 상기 시작 어드레스 및 식별 정보를 이용하여 상응하는 전자식 파일에 대한 호출을 생성하는
단계들에 의한다.
한 실시예의 시스템의 제 2 디바이스는 전자식 파일의 액세스에 사용하기 위해 제 1 및 제 2 API를 추가로 포함한다.
한 실시예의 시스템의 제 2 디바이스는 전자식 파일의 액세스에 사용하기 위해 제 3 API(application programming interface)를 추가로 포함한다.
한 실시예의 시스템의 제 1 디바이스는 상기 제 2 디바이스에 호스트된 소프트웨어의 하나이상의 제공자에 의하여 액세스 가능한 프로세서-기초한 디바이스를 포함한다.
한 실시예의 시스템의 제 2 디바이스는 개인용 컴퓨터, 휴대용 컴퓨팅 디바이스, 셀룰러 전화, 휴대용 통신 디바이스, 개인 휴대정보 단말기 중 선택된 하나이상의 프로세서-기초한 디바이스를 포함한다.
한 실시예의 시스템의 연결은 무선 연결, 유선 연결, 하이브리드 무선/유선 연결, 및 LAN(local area networks)을 포함한 하나이상의 네트워크와의 연결, MAN(metropolitan area networks), WAN(wide area networks), 전용 네트워크, 백엔드 네트워크, 인터넷, 및 플로피 디스크, 하드 디스크 드라이브, 및 CD-ROM을 포함한 제거가능한 고정 매체, 및 전화 라인, 버스, 및 전자 메일 메시지 중 하나이상이다.
한 실시예의 원시 전자 파일 및 새로운 전자 파일은 동적 링크 라이브러리 파일을 포함한 소프트웨어 파일, 공유된 객체 파일, 임베디드 소프트웨어 컴포넌트(EBSC), 펌웨어 파일, 실행가능한 파일, 헥스 데이터 파일을 포함한 데이터 파일, 시스템 구성 파일, 및 개인용 데이터를 포함하는 파일을 포함한다.
전자 파일 업데이트 동안 디바이스 메모리 관리를 위하여 앞서 설명된 시스템 및 연계된 방법은 호스트 디바이스 내의 디바이스 메모리 관리에 대한 방법을 포함하고, 이 방법은
- 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 식별 정보를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며, 이때 상기 식별 정보는 수신된 컴포넌트의 사이즈를 포함하고,
- 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 수신된 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되며,
- 상기 지정된 메모리 블록의 어드레스를 제공하고, 그리고
- 수신된 컴포넌트를 상기 지정된 메모리 블록에 쓰는 과정에 의하여 상기 원시 전자 파일을 업데이트하는
단계들에 의한다.
호스트 디바이스에서 디바이스 메모리 관리를 위한 방법은, 상기 수신된 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 제 1 메모리 영역 내의 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때, 제 1 테이블을 업데이트하는 단계를 추가로 포함하고, 이때 상기 제 1 테이블은 상기 호스트 디바이스의 전자 파일의 컴포넌트들의 컴포넌트 정보, 컴포넌트 식별을 포함한 컴포넌트 정보, ROM(read only memory) 넘버, 시작 어드레스, 및 사이즈를 포함한다.
한 실시예의 방법에서, 식별하고 지정하는 단계는 상기사이즈가 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때 상기 제 1 메모리 영역의 원시 메모리 블록을 지정하는 단계를 포함하고, 이때 상기 원시 메모리 블록은 상기 원시 전자 파일의 상응하는 컴포넌트를 포함한다.
한 실시예의 방법에서, 식별하고 지정하는 단계는, 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 저장하기에 충분히 큰 메모리 블록에 대하여 제 1 메모리 영역의 사용되지 않은 부분 및 상기 제 2 메모리 영역 중 적어도 하나를 검색하는 단계를 포함한다.
한 실시예의 방법에서, 제 1 메모리 영역의 다시쓰기 및 제 2 메모리 영역의 재분배는
- 상기 제 1 영역의 사용되지 않은 메모리 블록에 상응하는 하나이상의 엔트리를 포함하는 제 2 테이블을 읽고,
- 상기 제 1 메모리 영역의 컴포넌트를 순차적으로 패킹하도록 상기 제 1 메모리 영역의 컴포넌트를 다시 쓰고 그리고 상기 사용되지 않은 메모리 블록을 통합하며,
- 상기 제 2 메모리 영역의 각 컴포넌트의 사이즈를 순차적으로 평가하고 그리고 상기 제 2 메모리 영역의 컴포넌트의 사이즈 및 상기 통합된 사용되지 않는 메모리 블록의 사이즈가 허용하는 상기 제 1 메모리 영역으로 상기 제 2 메모리 영역의 컴포넌트를 다시쓰며,
- 상기 순차적인 평가 및 다시쓰기에 이어, 상기 통합된 사용되지 않는 메모리 블록의 나머지 블록을 식별하고,
- 상기 통합된 사용되지 않는 메모리 블록의 나머지 블록을 상기 제 2 메모리 영역 상기 제 2 메모리 영역의 부분으로 지정함으로써 상기 제 2 메모리 영역을 재분배하며,
- 상기 재분배된 제 2 메모리 영역의 사용가능한 메모리의 시작 어드레스를 유지하도록 상기 제 2 메모리 영역의 포인터(pointer)를 설정하고, 그리고
- 제 2 테이블을 업데이트하는
단계들을 추가로 포함한다.
한 실시예의 방법에서, 상기 제 2 테이블의 엔트리는 ROM 넘버, 시작 어드레스, 및 사이즈를 포함하는 상기 사용되지 안흔 메모리 블록의 정보를 포함한다.
호스트 디바이스에서 디바이스 메모리 관리를 위한 방법은 상기 호스트 디바이스의 전자 파일에서 제공되는 함수들의 액세스를 추가로 포함하는데, 이는
- 상기 호스트 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하며,
- 벡터 테이블로부터 상응하는 전자 파일의 시작 어드레스를 읽고, 그리고
- 상기 시작 어드레스 및 식별 정보를 이용하여 상응하는 전자 파일에 대한 호출을 생성하는
단계들에 의한다.
전자 파일의 업데이트 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 연계된 방법은 파일 업데이트 동안 디바이스 메모리 관리에 대한 방법을 포함하고, 이때 상기 방법은
- 상기 수신된 컴포넌트의 식별 정보를 이용하여 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 사이즈를 결정하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 제 1 메모리 영역의 원시 메모리 블록을 상기 수신된 컴포넌트를 쓰기 위한 영역으로 할당하고, 이때 상기 원시 메모리 블록은 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하며,
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 저장하기에 충분히 큰 메모리 블록에 대하여 제 1 메모리 영역의 사용되지 않은 부분 및 제 2 메모리 영역 중 적어도 하나를 검색하고, 그리고
- 상기 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때, 상기 사용되지 않는 부분을 제거하도록 제 1 메모리 영역을 다시쓰고, 상기 제 1 및 제 2 메모리 영역을 재분배하며, 그리고 상기 제 2 메모리 영역의 메모리 블록을 상기 수신된 컴포넌트를 쓰기 위한 영역으로 할당하는
단계들을 포함한다.
한 실시예의 방법에서, 상기 제 1 메모리 영역의 다시쓰기는
- 상기 제 1 메모리 영역의 사용되지 않는 부분에 상응하는 하나이상의 엔트리를 포함하는 테이블을 읽고, 그리고
- 상기 제 1 메모리 영역의 컴포넌트들을 순차적으로 패킹하도록 상기 제 1 메모리 영역의 컴포넌트들을 다시쓰고 그리고 상기 사용되지 않는 메모리 블록을 통합하는
단계들을 추가로 포함한다.
한 실시예의 방법에서, 상기 제 1 및 제 2 메모리 영역의 재분배는
- 상기 제 2 메모리 영역의 각 컴포넌트들의 사이즈를 순차적으로 평가하고 그리고 상기 제 2 메모리 영역의 컴포넌트의 사이즈 및 상기 다시쓰여진 제 1 메모리 영역의 통합된 사용되지 않은 메모리 블록의 사이즈가 허용할 때 상기 제 2 메모리 영역의 컴포넌트를 상기 다시쓰여진 제 1 메모리 영역으로 쓰며,
- 상기 순차적인 평가 및 쓰기 단계에 이어, 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 식별하고,
- 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 상기 제 2 메모리 영역의 부분으로 지정함으로써 상기 제 1 및 제 2 메모리 영역을 재분배하며,
- 상기 재분배된 제 2 메모리 영역의 사용가능한 메모리의 시작 어드레스를 관리하도록 상기 제 2 메모리 영역의 포인터(pointer)를 설정하고, 그리고
- 상기 테이블을 업데이트하는
단계들을 추가로 포함한다.
전자 파일 업데이트 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 연계된 방법은 전자 디바이스의 메모리를 관리하는 방법을 포함하고, 이때 상기 디바이스의 전자 파일을 업데이트하는 것을 포함하는데, 이는
- 새로운 전자 파일의 하나이상의 새로운 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
- 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하며, 이때 상기 제 1 메모리 영역은 상기 사용되지 않은 메모리 블록을 제거하도록 다시쓰여지고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되며,
- 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰고,
- 상기 새로운 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함한 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때, 상기 벡터 테이블을 업데이트하는
단계들에 의한다.
전자 디바이스의 메모리를 관리하는 방법은 상기 디바이스의 전자 파일에 액세스하는 단계를 추가로 포함하며, 이는
- 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하며,
- 상기 벡터 테이블로부터 상응하는 전자 파일의 시작 어드레스를 읽고, 그리고
- 상기 시작 어드레스 및 식별 정보를 이용하여 상응하는 전자 파일에 대한 호출을 생성하는
단계에 의한다.
한 실시예의 방법에서, 상기 식별 정보는 함수 식별 및 상기 함수에 대한 인수를 포함한다.
전자 파일의 업데이트 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 방법은 다음을 포함하는 장치를 포함한다:
- 새로운 전자 파일의 하나이상의 새로운 컴포넌트를 수신하는 수단으로서, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이 되는 상기 수신 수단,
- 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하는 수단으로서, 이때 상기 제 1 메모리 영역은 상기 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되는 상기 식별 및 지정 수단,
- 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰게 됨으로써 상기 원시 전자 파일을 업데이트 하는 수단, 및
- 상기 새로운 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때 벡터 테이블을 업데이트하는 수단.
한 실시예의 장치는 개인용 컴퓨터, 휴대용 컴퓨팅 디바이스, 셀룰러 전화, 휴대용 통신 디바이스, 및 개인 휴대정보 단말기 중에서 선택된 하나이상의 프로세스-기초한 디바이스를 포함한다.
한 실시예의 장치는 메모리 블록을 식별하고 지정하는 수단으로서 제 1 API를 포함한다.
한 실시예의 장치는
- 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하는 수단으로서, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하는 상기 함수 호출을 수신하는 수단,
- 상기 벡터 테이블로부터 상응하는 전자 파일의 시작 어드레스를 읽는 수단, 및
- 상기 시작 어드레스와 상기 식별 정보를 이용하여 상응하는 전자 파일에 대한 호출을 생성하는 수단
을 추가로 포함한다.
한 실시예의 장치는 함수 호출을 수신하는 수단으로서 제 2 API를 포함한다.
전자 파일 업데이트 동안 디바이스 메모리 관리를 위해 앞서 설명된 시스템 및 연계된 방법은 실행가능한 명령어를 포함한 전자기 매체를 포함하고, 이때 상기 실행가능한 명령어는 프로세싱 시스템에서 실행시 다음의 단계들에 의하여 전자 파일 및 파일 컴포넌트를 업데이트 한다:
- 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 식별 정보를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며, 이때 상기 식별 정보는 수신된 컴포넌트의 사이즈를 포함하고,
- 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 수신된 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별 및 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 사이즈가 상기 제 1 및 제 2 메모리 영역이 사용가능한 메모리 블록의 사이즈를 초과할 때 상기 제 1 및 제 2 메모리 영역은 재분배되며,
- 지정된 메모리 블록의 어드레스를 제공하고, 그리고
- 상기 수신된 컴포넌트를 상기 지정된 메모리 블록으로 쓰게 함으로써 상기 원시 전자 파일을 업데이트한다.
전자 파일 업데이팅 동안 디바이스 메모리 관리를 위하여 앞서 설명된 시스템 및 방법은 전자 파일을 업데이트하기 위한 시스템을 포함하고, 델타 파일을 생성하는 파일 디퍼렌싱 및 업데이팅 시스템의 제 1 컴포넌트를 포함하는 제 1 디바이스, 및 하나이상의 결합을 통하여 상기 제 1 디바이스로부터 상기 델타 파일을 수신하는 제 2 디바이스를 포함한다. 한 실시예의 제 2 디바이스는 다음의 단계들에 의하여 상기 제 2 디바이스의 전자 파일을 업데이트하도록 구성된 파일 디퍼렌싱 및 업데이팅 시스템의 제 2 컴포넌트를 포함한다:
- 상기 델타 파일을 통해 새로운 전자 파일의 하나이상의 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
- 상기 수신된 컴포넌트의 사이즈를 결정하고,
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 수신된 컴포넌트를 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 쓰며, 그리고
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 쓴다.
전자 파일의 업데이트 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 연계된 방법은 전자 파일의 업데이트 방법을 포함하고,
- 새로운 전자 파일의 하나이상의 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
- 상기 수신된 컴포넌트의 사이즈를 결정하고,
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 수신된 컴포넌트를 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 쓰며, 그리고
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 쓰는
단계들을 포함한다. 한 실시예의 방법에서, 하나이상의 컴포넌트는 한 그룹의 컴포넌트를 포함한다.
전자 파일 업데이트 동안 디바이스 메모리 관리에 대하여 앞서 설명된 시스템 및 연계된 방법은 다음을 포함하는 장치를 포함한다:
- 새로운 전자 파일의 하나이상의 컴포넌트를 수신하는 수단으로서, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전인 상기 컴포넌트를 수신하는 수단,
- 상기 수신된 컴포넌트의 사이즈를 결정하는 수단,
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 수신된 컴포넌트를 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 쓰는 수단, 및
- 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 쓰는 수단.
본 발명의 태양은 다양한 회로로 프로그램된 기능으로 구현될 수 있으며, ASIC을 비롯하여, FPGA(field programmable gate arrays), PAL(programmable array logic), 전기적으로 프로그램가능한 로직 및 메모리 디바이스 그리고 표준 셀-방식 디바이스와 같은 PLD(programmable logic devices)를 예로 들 수 있다. 본 발명의 태양을 구현하는 다른 가능한 예로는 EEPROM과 같은 메모리를 갖는 마이크로컨트롤러, 임베디드 마이크로프로세서, 펌웨어, 소프트웨어 등을 들 수 있다. 더욱이, 본 발명의 태양은 소프트웨어-방식 회로 에뮬레이션을 갖는 마이크로프로세서, 이산 로직(순차적 및 결합적), 주문형 디바이스, 퍼지(신경) 로직, 퀀텀(quantum) 디바이스, 및 상기 디바이스의 혼합 형태로 구현될 수 있다. 물론, MOSFET, CMOS와 같은 기술, ECL(emitter-coupled logic)과 같은 바이폴러 기술, 폴리머 기술(가령, 실리콘-결합된 폴리머 및 금속-결합된 폴리머-금속 구조체), 혼합된 아날로그 및 디지털 등의 다양한 컴포넌트 형태로 제공될 수 있다.

Claims (30)

  1. 전자 파일을 업데이트하기 위한 시스템에 있어서, 상기 시스템은
    - 델타 파일을 생성하는 파일 디퍼렌싱 및 업데이팅 시스템의 제 1 컴포넌트를 포함하는 제 1 디바이스,
    - 하나이상의 결합을 통해 상기 제 1 디바이스로부터 상기 델타 파일을 수신하는 제 2 디바이스로서, 이때 상기 제 2 디바이스는 상기 파일 디퍼렌싱 및 업데이팅 시스템의 제 2 컴포넌트를 포함하는 상기 제 2 디바이스
    를 포함하고,
    상기 제 2 디바이스의 전자 파일을 업데이트 하는 것은
    - 상기 델타 파일로부터 새로운 전자 파일의 하나이상의 새로운 컴포넌트를 읽고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되며,
    - 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰고, 그리고
    - 상기 새로운 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때 벡터 테이블을 업데이트하는
    기능들에 의하며, 그리고
    상기 디바이스의 전자 파일을 액세스하는 것은
    - 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하며,
    - 상기 벡터 테이블로부터 상기 상응하는 전자 파일의 시작 어드레스를 읽고, 그리고
    - 상기 시작 어드레스 및 식별 정보를 이용하여 상기 상응하는 전자 파일에 대한 호출을 생성하는
    기능들에 의하는 것을 특징으로하는 전자 파일을 업데이트하기 위한 시스템.
  2. 제 1 항에 있어서, 이때 상기 제 2 디바이스는 전자 파일을 업데이트하는데 사용하기 위해 제 1 및 제 2 API를 추가로 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  3. 제 1 항에 있어서, 이때 상기 제 2 디바이스는 전자 파일에 액세스하는데 사용하기 위해 제 3 API를 추가로 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  4. 제 1 항에 있어서, 이때 상기 제 1 디바이스는 상기 제 2 디바이스에 호스트된 소프트웨어의 하나이상의 제공자에 의하여 액세스 가능한 프로세서-기초한 디바이스를 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  5. 제 1 항에 있어서, 이때 상기 제 2 디바이스는 개인용 컴퓨터, 휴대용 컴퓨터, 셀룰러 전화, 휴대용 통신 디바이스, 및 개인 휴대정보 단말기 중에서 선택된 하나이상의 프로세서-기초한 디바이스를 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  6. 제 1 항에 있어서, 이때 상기 하나이상의 결합은 무선 결합, 유선 결합, 하이브리드 무선/유선 결합, 및 LAN(local area networks), MAN(metropolitan area networks), WAN(wide area networks), 전용 네트워크, 백엔드 네트워크, 및 인터넷 등을 포함하는 네트워크와의 결합을 포함하고, 또한 플로피 디스크, 하드 디스크 드라이브, 및 CD-ROM, 및 전화선, 버스, 및 전자 메일 메시지와 같은 제거가능한 고정 매체를 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  7. 제 1 항에 있어서, 이때 상기 원시 및 새로운 전자 파일은 다이너믹 링크 라이브러리 파일, 공유된 객체 파일, 임베디드 소프트웨어 컴포넌트(EBSC), 펌웨어 파일, 실행가능한 파일, 헥스 데이터 파일을 포함하는 데이터 파일, 시스템 구성 파일, 및 개인용 데이터를 포함하는 파일을 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  8. 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법에 있어서, 상기 방법은
    - 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 식별 정보를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며, 이때 상기 식별 정보는 수신된 컴포넌트의 사이즈를 포함하고,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 수신된 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별 및 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되며,
    - 상기 지정된 메모리 블록의 어드레스를 제공하고, 그리고
    - 상기 수신된 컴포넌트를 상기 지정된 메모리 블록에 쓰는 과정에 의하여 상기 원시 전자 파일을 업데이트하는
    단계들을 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  9. 제 8 항에 있어서, 상기 방법은 상기 수신된 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 제 1 메모리 영역 내의 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때, 제 1 테이블을 업데이트하는 단계를 추가로 포함하고, 이때 상기 제 1 테이블은 상기 호스트 디바이스의 전자 파일의 컴포넌트들의 컴포넌트 정보, 컴포넌트 식별을 포함한 컴포넌트 정보, ROM(read only memory) 넘버, 시작 어드레스, 및 사이즈를 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  10. 제 8 항에 있어서, 이때 상기 식별 및 지정 단계는 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때 상기 제 1 메모리 영역의 원시 메모리 블록을 지정하는 단계를 포함하고, 이때 상기 원시 메모리 블록은 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  11. 제 10 항에 있어서, 이때 상기 식별 및 지정 단계는 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때 상기 수신된 컴포넌트를 저장하기에 충분히 큰 메모리 블록에 대하여 상기 제 1 메모리 영역의 사용되지 않은 부분과 상기 제 2 메모리 영역 중 적어도 하나를 검색하는 단계를 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  12. 제 8 항에 있어서, 이때 상기 제 1 메모리 영역의 다시쓰기와 상기 제 2 메모리 영역의 재분배는
    - 상기 제 1 영역의 사용되지 않은 메모리 블록에 상응하는 하나이상의 엔트리를 포함하는 제 2 테이블을 읽고,
    - 상기 제 1 메모리 영역의 컴포넌트를 순차적으로 패킹하도록 상기 제 1 메모리 영역의 컴포넌트를 다시쓰며 그리고 상기 사용되지 않은 메모리 블록을 통합하고,
    - 상기 제 2 메모리 영역의 각 컴포넌트의 사이즈를 순차적으로 평가하고 그리고 상기 제 2 메모리의 컴포넌트의 사이즈 및 상기 통합된 사용되지 않은 메모리 블록의 사이즈가 허용하는 상기 제 1 메모리 영역으로 상기 제 2 메모리 영역의 컴포넌트를 다시쓰며,
    - 상기 순차적인 평가 및 다시쓰기에 이어, 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 식별하고,
    - 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 상기 제 2 메모리 영역의 부분으로 지정함으로써 상기 제 2 메모리 영역을 재분배하며,
    - 상기 재분배된 제 2 메모리 영역의 사용가능한 메모리의 시작 어드레스를 관리하도록 상기 제 2 메모리 영역의 포인터를 설정하고, 그리고
    - 상기 제 2 테이블을 업데이트하는
    단계들을 추가로 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  13. 제 12 항에 있어서, 이때 상기 제 2 테이블의 엔트리는 ROM 넘버, 시작 어드레스, 및 사이즈를 포함하는 사용되지 않은 메모리 블록의 정보를 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  14. 제 8 항에 있어서, 상기 방법은
    - 상기 호스트 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하며,
    - 벡터 테이블로부터 상기 상응하는 전자 파일의 시작 어드레스를 읽고, 그리고
    - 상기 시작 어드레스 및 상기 식별 정보를 이용하여 상기 상응하는 전자 파일에 대한 호출을 생성하는
    기능들에 의하여 상기 호스트 디바이스의 전자 파일에서 제공된 함수에 액세스하는 단계를 추가로 포함하는 것을 특징으로 하는 호스트 디바이스에서 디바이스 메모리 관리를 위한 방법.
  15. 파일 업데이트 동안 디바이스 메모리 관리를 위한 방법에 있어서, 상기 방법은
    - 수신된 컴포넌트의 식별 정보를 이용하여 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 사이즈를 결정하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 제 1 메모리 영역의 원시 메모리 블록을 상기 수신된 컴포넌트를 쓰기 위한 영역으로 할당하고, 이때 상기 원시 메모리 블록은 상기 원시 전자 파일의 상기 상응하는 컴포넌트를 포함하며,
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 수신된 컴포넌트를 저장하기에 충분히 큰 메모리 블록에 대하여 제 1 메모리 영역의 사용되지 않은 부분 및 제 2 메모리 영역 중 적어도 하나를 검색하고, 그리고
    - 상기 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때, 상기 사용되지 않는 부분을 제거하도록 제 1 메모리 영역을 다시쓰고, 상기 제 1 및 제 2 메모리 영역을 재분배하며, 그리고 상기 제 2 메모리 영역의 메모리 블록을 상기 수신된 컴포넌트를 쓰기 위한 영역으로 할당하는
    단계들을 포함하는 것을 특징으로 하는 파일 업데이트 동안 디바이스 메모리 관리를 위한 방법.
  16. 제 15 항에 있어서, 이때 상기 제 1 메모리 영역의 다시쓰기는
    - 상기 제 1 메모리 영역의 사용되지 않은 부분에 상응하는 하나이상의 엔트리를 포함하는 테이블을 읽고, 그리고
    - 상기 제 1 메모리 영역의 컴포넌트를 순차적으로 패킹하고 상기 사용되지 않은 메모리 블록을 통합하도록 상기 제 1 메모리 영역의 컴포넌트를 다시쓰는
    단계들을 추가로 포함하는 것을 특징으로 하는 파일 업데이트 동안 디바이스 메모리 관리를 위한 방법.
  17. 제 15 항에 있어서, 이때 상기 제 1 및 제 2 메모리 영역을 재분배하는 단계는
    - 상기 제 2 메모리 영역의 각 컴포넌트들의 사이즈를 순차적으로 평가하고 그리고 상기 제 2 메모리 영역의 컴포넌트의 사이즈 및 상기 다시쓰여진 제 1 메모리 영역의 통합된 사용되지 않은 메모리 블록의 사이즈가 허용할 때 상기 제 2 메모리 영역의 컴포넌트를 상기 다시쓰여진 제 1 메모리 영역으로 쓰며,
    - 상기 순차적인 평가 및 쓰기 단계에 이어, 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 식별하고,
    - 상기 통합된 사용되지 않은 메모리 블록의 나머지 블록을 상기 제 2 메모리 영역의 부분으로 지정함으로써 상기 제 1 및 제 2 메모리 영역을 재분배하며,
    - 상기 재분배된 제 2 메모리 영역의 사용가능한 메모리의 시작 어드레스를 관리하도록 상기 제 2 메모리 영역의 포인터를 설정하고, 그리고
    - 상기 테이블을 업데이트하는
    단계들을 추가로 포함하는 것을 특징으로 하는 파일 업데이트 동안 디바이스 메모리 관리를 위한 방법.
  18. 전자 디바이스의 메모리를 관리하는 방법에 있어서, 상기 방법은
    - 상기 디바이스의 전자 파일을 업데이트하고, 그리고
    - 상기 디바이스의 전자 파일을 액세스하는
    단계들을 포함하며,
    이때 상기 디바이스의 전자 파일을 업데이트 하는 단계는
    - 새로운 전자 파일의 하나이상의 새로운 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되며,
    - 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰고, 그리고
    - 상기 새로운 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때 벡터 테이블을 업데이트하는
    기능들에 의하며, 그리고
    상기 디바이스의 전자 파일을 액세스하는 단계는
    - 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하고, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하며,
    - 상기 벡터 테이블로부터 상기 상응하는 전자 파일의 시작 어드레스를 읽고, 그리고
    - 상기 시작 어드레스 및 식별 정보를 이용하여 상기 상응하는 전자 파일에 대한 호출을 생성하는
    기능들에 의하는 것을 특징으로 하는 전자 디바이스의 메모리를 관리하는 방법.
  19. 제 18 항에 있어서, 이때 상기 식별 정보는 함수 식별 및 상기 함수에 대한 인수를 포함하는 것을 특징으로 하는 전자 디바이스의 메모리를 관리하는 방법.
  20. 한 장치에 있어서, 상기 장치는
    - 새로운 전자 파일의 하나이상의 새로운 컴포넌트를 수신하는 수단으로서, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이 되는 상기 수신 수단,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 새로운 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별하고 지정하는 수단으로서, 이때 상기 제 1 메모리 영역은 상기 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 제 1 및 제 2 메모리 영역은 상기 새로운 컴포넌트의 사이즈가 상기 제 1 및 제 2 메모리 영역의 사용가능한 메모리 블록의 사이즈를 초과할 때 재분배되는 상기 식별 및 지정 수단,
    - 상기 새로운 컴포넌트를 상기 지정된 메모리 블록으로 쓰게 됨으로써 상기 원시 전자 파일을 업데이트 하는 수단, 및
    - 상기 새로운 컴포넌트가 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 블록을 제외한 메모리 블록으로 쓰여질 때 벡터 테이블을 업데이트하는 수단
    을 포함하는 것을 특징으로 하는 장치.
  21. 제 20 항에 있어서, 이때 상기 장치는 개인용 컴퓨터, 휴대용 컴퓨팅 장치, 셀룰러 전화, 휴대용 통신 디바이스, 및 개인 휴대정보 단말기 중에서 선택된 하나이상의 프로세서-기초한 디바이스를 포함하는 것을 특징으로 하는 장치.
  22. 제 20 항에 있어서, 이때 상기 메모리 블록을 식별하고 및 지정하는 수단은 제 1 API인 것을 특징으로 하는 장치.
  23. 제 20 항에 있어서, 상기 장치는
    - 상기 디바이스의 주 프로그램으로부터 함수 호출을 수신하기 위한 수단으로서, 이때 상기 함수 호출은 상응하는 전자 파일의 식별 정보를 포함하는 상기 호출 수신 수단,
    - 상기 벡터 테이블로부터 상기 상응하는 전자 파일의 시작 어드레스를 읽기 위한 수단, 및
    - 상기 시작 어드레스 및 식별 정보를 이용하여 상기 상응하는 전자 파일에 대한 호출을 생성하기 위한 수단
    을 추가로 포함하는 것을 특징으로 하는 장치.
  24. 제 23 항에 있어서, 이때 상기 함수 호출을 수신하기 위한 수단은 제 2 API인 것을 특징으로 하는 장치.
  25. 전자 파일 및 파일 컴포넌트를 업데이트하는 실행가능한 명령어를 포함하는 컴퓨터 판독형 매체에 있어서, 상기 컴퓨터 판독형 매체는 프로세싱 시스템에서 실행시
    - 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 식별 정보를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며, 이때 상기 식별 정보는 수신된 컴포넌트의 사이즈를 포함하고,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 수신된 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별 및 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 사이즈가 상기 제 1 및 제 2 메모리 영역이 사용가능한 메모리 블록의 사이즈를 초과할 때 상기 제 1 및 제 2 메모리 영역은 재분배되며,
    - 지정된 메모리 블록의 어드레스를 제공하고, 그리고
    - 상기 수신된 컴포넌트를 상기 지정된 메모리 블록으로 쓰게 함으로써 상기 원시 전자 파일을 업데이트하는
    기능들을 구현하는 것을 특징으로 하는 컴퓨터 판독형 매체.
  26. 전자 파일 및 파일 컴포넌트를 업데이트하는 실행가능한 명령어를 포함하는 전자기 매체에 있어서, 상기 컴퓨터 판독형 매체는 프로세싱 시스템에서 실행시
    - 새로운 전자 파일의 하나이상의 수신된 컴포넌트의 식별 정보를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며, 이때 상기 식별 정보는 수신된 컴포넌트의 사이즈를 포함하고,
    - 제 1 및 제 2 메모리 영역의 순차적 검색을 실시하여 상기 수신된 컴포넌트를 수용하기에 충분히 큰 메모리 블록을 식별 및 지정하며, 이때 상기 제 1 메모리 영역은 사용되지 않는 메모리 블록을 제거하도록 다시쓰여지고 그리고 상기 사이즈가 상기 제 1 및 제 2 메모리 영역이 사용가능한 메모리 블록의 사이즈를 초과할 때 상기 제 1 및 제 2 메모리 영역은 재분배되며,
    - 지정된 메모리 블록의 어드레스를 제공하고, 그리고
    - 상기 수신된 컴포넌트를 상기 지정된 메모리 블록으로 쓰게 함으로써 상기 원시 전자 파일을 업데이트하는
    기능들을 구현하는 것을 특징으로 하는 전자기 매체.
  27. 전자 파일을 업데이트하기 위한 시스템에 있어서, 상기 시스템은
    - 델타 파일을 생성하는 파일 디퍼렌싱 및 업데이팅 시스템의 제 1 컴포넌트를 포함하는 제 1 디바이스,
    - 하나이상의 결합을 통해 상기 제 1 디바이스로부터 상기 델타 파일을 수신하는 제 2 디바이스로서, 이때 상기 제 2 디바이스는 상기 파일 디퍼렌싱 및 업데이팅 시스템의 제 2 컴포넌트를 포함하는 상기 제 2 디바이스
    를 포함하고,
    상기 제 2 디바이스의 전자 파일을 업데이트하는 것은
    - 델타 파일을 통해 새로운 전자 파일의 하나이상의 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
    - 상기 수신된 컴포넌트의 사이즈를 결정하고,
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 상기 수신된 컴포넌트를 쓰고, 그리고
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 상기 수신된 컴포넌트를 쓰는
    기능들에 의하여 구현되는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 시스템.
  28. 전자 파일을 업데이트하기 위한 방법에 있어서, 상기 방법은
    - 새로운 전자 파일의 하나이상의 컴포넌트를 수신하고, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전이며,
    - 상기 수신된 컴포넌트의 사이즈를 결정하고,
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 상기 수신된 컴포넌트를 쓰고, 그리고
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 상기 수신된 컴포넌트를 쓰는
    단계들을 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 방법.
  29. 제 28 항에 있어서, 이때 상기 하나이상의 컴포넌트는 한 그룹의 컴포넌트를 포함하는 것을 특징으로 하는 전자 파일을 업데이트하기 위한 방법.
  30. 한 장치에 있어서, 상기 장치는
    - 새로운 전자 파일의 하나이상의 컴포넌트를 수신하기 위한 수단으로서, 이때 상기 새로운 전자 파일은 원시 전자 파일의 업데이트된 버전인 상기 수신 수단,
    - 상기 수신된 컴포넌트의 사이즈를 결정하기 위한 수단,
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈보다 작거나 같을 때, 상기 원시 전자 파일의 상응하는 컴포넌트를 포함하는 원시 메모리 영역으로 상기 수신된 컴포넌트를 쓰기 위한 수단, 및
    - 상기 사이즈가 상기 원시 전자 파일의 상응하는 컴포넌트의 사이즈를 초과할 때, 상기 원시 메모리 영역과 연계된 지정된 메모리 영역으로 상기 수신된 컴포넌트를 쓰기 위한 수단
    포함하는 것을 특징으로 하는 장치.
KR1020057008813A 2002-11-18 2003-11-18 전자 파일 업데이트 동안 디바이스 메모리 관리 KR20050086687A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/298,458 2002-11-18
US10/298,458 US7007049B2 (en) 2002-11-18 2002-11-18 Device memory management during electronic file updating

Publications (1)

Publication Number Publication Date
KR20050086687A true KR20050086687A (ko) 2005-08-30

Family

ID=32297458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057008813A KR20050086687A (ko) 2002-11-18 2003-11-18 전자 파일 업데이트 동안 디바이스 메모리 관리

Country Status (7)

Country Link
US (2) US7007049B2 (ko)
EP (1) EP1570340A4 (ko)
JP (1) JP4409438B2 (ko)
KR (1) KR20050086687A (ko)
CN (1) CN1781075B (ko)
AU (1) AU2003295668A1 (ko)
WO (1) WO2004046910A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008054132A1 (en) * 2006-10-31 2008-05-08 Sk Telecom Co., Ltd. Terminal having platform library dynamic linking function and method of controlling the same
KR100860753B1 (ko) * 2007-01-03 2008-09-29 삼성전자주식회사 펌웨어 업그레이드를 위한 장치 및 방법
KR20210102003A (ko) * 2020-02-11 2021-08-19 한국조선해양 주식회사 용접기용 네트워크 카드
KR20220064136A (ko) * 2020-11-11 2022-05-18 주식회사 엘지유플러스 전자 디바이스 및 펌웨어 업데이트 방법

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
CN1650256B (zh) * 2002-04-01 2010-04-28 株式会社Ntt都科摩 通信终端的软件更新方法、通信终端以及软件更新系统
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US7206910B2 (en) * 2002-12-17 2007-04-17 Oracle International Corporation Delta object replication system and method for clustered system
US7257873B2 (en) * 2003-01-31 2007-08-21 Laivins Kenneth T Method for manufacturing hand guards
US7320009B1 (en) * 2003-03-28 2008-01-15 Novell, Inc. Methods and systems for file replication utilizing differences between versions of files
JP4100241B2 (ja) * 2003-04-24 2008-06-11 ソニー株式会社 情報処理装置、情報処理方法、プログラム、記憶媒体
US7349929B2 (en) * 2003-04-25 2008-03-25 Sap Ag Accessing data based on user identity
US7757261B2 (en) * 2003-06-20 2010-07-13 N2 Broadband, Inc. Systems and methods for providing flexible provisioning architectures for a host in a cable system
US20040261092A1 (en) * 2003-06-20 2004-12-23 N2 Broadband, Inc. Systems and methods for selling a consumer electronics host device and enhanced services associated with a cable system
US7627868B2 (en) * 2003-06-20 2009-12-01 N2 Broadband, Inc. Systems and methods for distributing software for a host device in a cable system
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files
US7958505B2 (en) * 2003-06-20 2011-06-07 Ericsson Television, Inc Systems and methods for distributing software for a host device in a cable system
US7194756B2 (en) * 2003-06-20 2007-03-20 N2 Broadband, Inc. Systems and methods for provisioning a host device for enhanced services in a cable system
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7031972B2 (en) 2003-07-21 2006-04-18 Innopath Software, Inc. Algorithms for block-level code alignment of software binary files
US20050020308A1 (en) * 2003-07-23 2005-01-27 David Lai Dynamically binding Subscriber Identity Modules (SIMs)/User Identity Modules (UIMs) with portable communication devices
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
KR100871778B1 (ko) * 2003-10-23 2008-12-05 이노패스 소프트웨어, 아이엔시. 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
EP1530139A1 (en) * 2003-11-05 2005-05-11 Sap Ag Method and computer system for workflow management
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
JP4408692B2 (ja) * 2003-12-19 2010-02-03 富士通株式会社 通信装置管理プログラム
US8838754B1 (en) * 2004-01-26 2014-09-16 Qualcomm Incorporated Mobile device with a management forest in a device management network
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US7739679B2 (en) * 2004-04-06 2010-06-15 Hewlett-Packard Development Company, L.P. Object ordering tool for facilitating generation of firmware update friendly binary image
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7689982B1 (en) * 2004-05-07 2010-03-30 Hewlett-Packard Development Company, L.P. Transparent linker profiler tool with profile database
JP4176043B2 (ja) * 2004-05-18 2008-11-05 三洋電機株式会社 データ記録方法およびデータ記録装置
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7516451B2 (en) 2004-08-31 2009-04-07 Innopath Software, Inc. Maintaining mobile device electronic files including using difference files when upgrading
WO2006052946A2 (en) * 2004-11-08 2006-05-18 Innopath Software, Inc. Static file system differencing and updating
KR100653179B1 (ko) * 2004-12-17 2006-12-04 한국전자통신연구원 플랫폼 동적 업그레이드 기능을 가지는 무선통신단말기 및그 방법
US7200390B1 (en) * 2004-12-30 2007-04-03 Cellco Partnership Device software update transport and download
US7483929B2 (en) * 2005-02-08 2009-01-27 Pro Softnet Corporation Systems and methods for storing, backing up and recovering computer data files
US8561049B2 (en) * 2005-08-23 2013-10-15 Red Bend Ltd. Method and system for updating content stored in a storage device
US20070078907A1 (en) * 2005-10-05 2007-04-05 Ming-Tsung Chiang Method for updating function of handheld apparatus through plug-and play (PnP) storage device
US8056072B2 (en) * 2005-10-31 2011-11-08 Microsoft Corporation Rebootless display driver upgrades
US8554748B1 (en) * 2005-11-30 2013-10-08 Netapp, Inc. Method and apparatus for differential file based update for embedded systems
KR100750169B1 (ko) * 2006-03-08 2007-08-21 삼성전자주식회사 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
KR101426710B1 (ko) * 2006-07-14 2014-09-23 삼성전자주식회사 휴대단말기의 버전정보 갱신 장치 및 방법
US7788259B2 (en) * 2006-07-21 2010-08-31 Microsoft Corporation Locating, viewing and interacting with information sources
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
WO2008025017A2 (en) 2006-08-24 2008-02-28 Chumby Industries, Inc. Configurable personal audiovisual device for use in networked application-sharing system
US7769976B2 (en) * 2006-12-12 2010-08-03 International Business Machines Corporation Identifying code that wastes virtual memory
US7958331B2 (en) * 2006-12-13 2011-06-07 Seagate Technology Llc Storage device with opportunistic address space
US20080154986A1 (en) * 2006-12-22 2008-06-26 Storage Technology Corporation System and Method for Compression of Data Objects in a Data Storage System
US9449047B2 (en) 2007-06-19 2016-09-20 Sybase, Inc. Dynamic modification of schemas in streaming databases
FR2918191B1 (fr) * 2007-06-28 2010-02-26 Wavecom Procede de programmation in situ d'au moins un moyen de stockage non volatile d'un dispositif de communication sans fil, equipement de programmation et paquet a telecharger correspondants.
EP2015561A1 (fr) * 2007-07-10 2009-01-14 Nagracard S.A. Procédé d'envoi d'un code exécutable à un dispositif de réception et procédé d'exécution de ce code
TWI344288B (en) * 2007-07-23 2011-06-21 Arcadyan Technology Corp Embedded system with web-based user interface, firmware structure thereof, and method for providing information thereof
US8745012B2 (en) * 2007-08-10 2014-06-03 Sybase, Inc. Log-structured store for streaming data
US8255899B2 (en) * 2007-10-24 2012-08-28 Oracle International Corporation Techniques for upgrade dependency management
JP2009271848A (ja) * 2008-05-09 2009-11-19 Fujitsu Microelectronics Ltd ファイルシステム及びデータ管理方法
US20110161931A1 (en) * 2009-12-31 2011-06-30 International Business Machines Corporation Automated stream-based change flows within a software configuration management system
CN102129375B (zh) * 2010-01-12 2014-07-02 中国移动通信集团公司 一种移动终端系统升级的方法和设备
US9176744B2 (en) * 2011-05-20 2015-11-03 Citrix Systems, Inc. Quickly provisioning a virtual machine by identifying a path to a differential file during pre-boot
CN102231671B (zh) * 2011-06-01 2014-12-31 上海聚力传媒技术有限公司 用于对待升级对象进行升级的方法、装置、设备和系统
US9026718B2 (en) * 2012-06-11 2015-05-05 Samsung Electronics Co., Ltd. Method and apparatus for fault tolerant FOTA update with single backup block write
US8813061B2 (en) * 2012-10-17 2014-08-19 Movimento Group Module updating device
US9128798B2 (en) 2012-10-17 2015-09-08 Movimento Group Module updating device
US8949556B2 (en) 2012-12-10 2015-02-03 International Business Machines Corporation Cloud management of device memory based on geographical location
US20150215374A1 (en) * 2013-03-13 2015-07-30 Google Inc. Delivering an update for a web application
GB2516435A (en) * 2013-04-05 2015-01-28 Continental Automotive Systems Embedded memory management scheme for real-time applications
CN105378709A (zh) 2013-04-18 2016-03-02 鲁斯兰·阿尔伯特维奇·施格布特蒂诺夫 由移动计算设备进行文件管理的系统和方法
CN103336703B (zh) * 2013-07-08 2018-09-18 惠州Tcl移动通信有限公司 生成升级包的方法、服务器、软件升级方法、移动终端
US9639548B2 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Selecting files for compaction
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
US10163179B2 (en) 2015-03-27 2018-12-25 Intel Corporation Method and apparatus for intelligent cloud-based graphics updates
CN104935469A (zh) * 2015-06-30 2015-09-23 浪潮(北京)电子信息产业有限公司 一种日志信息分布式存储方法及系统
CN106708548A (zh) * 2015-11-13 2017-05-24 阿里巴巴集团控股有限公司 程序升级方法和终端设备
CN105278998A (zh) * 2015-11-17 2016-01-27 北京联合众为科技发展有限公司 一种单片机固件升级方法
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器
US10309792B2 (en) 2016-06-14 2019-06-04 nuTonomy Inc. Route planning for an autonomous vehicle
US11092446B2 (en) 2016-06-14 2021-08-17 Motional Ad Llc Route planning for an autonomous vehicle
US10126136B2 (en) 2016-06-14 2018-11-13 nuTonomy Inc. Route planning for an autonomous vehicle
US10829116B2 (en) 2016-07-01 2020-11-10 nuTonomy Inc. Affecting functions of a vehicle based on function-related information about its environment
CN106250188B (zh) * 2016-07-29 2019-08-23 捷开通讯(深圳)有限公司 一种系统固件映像文件的生成方法及系统
US10857994B2 (en) 2016-10-20 2020-12-08 Motional Ad Llc Identifying a stopping place for an autonomous vehicle
US10473470B2 (en) 2016-10-20 2019-11-12 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10331129B2 (en) 2016-10-20 2019-06-25 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
US10681513B2 (en) 2016-10-20 2020-06-09 nuTonomy Inc. Identifying a stopping place for an autonomous vehicle
CN111373367A (zh) * 2017-09-07 2020-07-03 惠普发展公司,有限责任合伙企业 操作系统更新
CN110083381B (zh) * 2018-01-26 2023-04-28 启碁科技股份有限公司 增量升级的方法及装置
CN111124465B (zh) * 2019-11-28 2023-06-20 武汉虹信技术服务有限责任公司 一种跨网络c/s程序远程升级方法及系统
CN111045714B (zh) * 2019-12-19 2022-03-01 歌尔股份有限公司 一种固件更新方法、装置、耳机及计算机可读存储介质
CN111885412B (zh) * 2020-07-06 2022-08-09 深圳市宝泽科技有限公司 Hdmi信号传屏方法及无线传屏器
US11693643B2 (en) * 2021-08-05 2023-07-04 Accenture Global Solutions Limited Network-based solution module deployment platform
CN113867818B (zh) * 2021-09-28 2024-04-16 潍柴动力股份有限公司 一种ini文件的生成方法、装置、计算机设备及介质
CN115878140A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 应用升级方法、装置、网卡和设备

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
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
US5444764A (en) * 1993-07-01 1995-08-22 Motorola, Inc. Method of providing a subscription lock to a radiotelephone system
US5806078A (en) 1994-06-09 1998-09-08 Softool Corporation Version management system
US5742905A (en) * 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5634052A (en) * 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US5574906A (en) 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5778426A (en) * 1995-10-23 1998-07-07 Symbios, Inc. Methods and structure to maintain a two level cache in a RAID controller and thereby selecting a preferred posting method
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5864757A (en) * 1995-12-12 1999-01-26 Bellsouth Corporation Methods and apparatus for locking communications devices
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US5850565A (en) 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
AU8397298A (en) 1997-07-15 1999-02-10 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
EP1008048B1 (en) 1997-08-29 2001-10-31 Hewlett-Packard Company Data backup and recovery systems
US6157924A (en) * 1997-11-07 2000-12-05 Bell & Howell Mail Processing Systems Company Systems, methods, and computer program products for delivering information in a preferred medium
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6018747A (en) 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6076148A (en) * 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
US6035423A (en) 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6078967A (en) * 1998-02-25 2000-06-20 Hewlett-Packard Company System for upgrading functionality of a peripheral device utilizing a removable ROM having relocatable object code
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) * 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6233589B1 (en) 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
EP0981099A3 (en) 1998-08-17 2004-04-21 Connected Place Limited A method of and an apparatus for merging a sequence of delta files
US6167258A (en) * 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6226784B1 (en) * 1998-10-14 2001-05-01 Mci Communications Corporation Reliable and repeatable process for specifying developing distributing and monitoring a software system in a dynamic environment
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6163811A (en) * 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6457175B1 (en) * 1998-11-09 2002-09-24 Tut Systems, Inc. Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6327671B1 (en) * 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6594822B1 (en) 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6401239B1 (en) 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6466999B1 (en) * 1999-03-31 2002-10-15 Microsoft Corporation Preprocessing a reference data stream for patch generation and compression
US6654746B1 (en) * 1999-05-03 2003-11-25 Symantec Corporation Methods and apparatuses for single-connection file synchronization workgroup file update
US6574657B1 (en) 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
IL129947A (en) 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
AU2001229332A1 (en) * 2000-01-10 2001-07-24 Connected Corporation Administration of a differential backup system in a client-server environment
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
JP2003525495A (ja) 2000-03-01 2003-08-26 コンピュータ アソシエイツ シンク,インコーポレイテッド コンピュータ・ファイルのアーカイブを更新する方法及びシステム
US6651190B1 (en) 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6662163B1 (en) * 2000-03-30 2003-12-09 Voxware, Inc. System and method for programming portable devices from a remote computer system
US6775423B2 (en) 2000-05-03 2004-08-10 Microsoft Corporation Systems and methods for incrementally updating an image in flash memory
US6898564B1 (en) * 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
US6535894B1 (en) 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
AU2001272970A1 (en) 2000-06-22 2002-01-02 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6795834B2 (en) * 2000-06-26 2004-09-21 Fujitsu Limited Apparatus, method, and storage medium for file management
US6669564B1 (en) * 2000-06-27 2003-12-30 Electronic Arts Inc. Episodic delivery of content
GB2369213B (en) * 2000-07-04 2005-02-23 Honda Motor Co Ltd Electronic file management system
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020120697A1 (en) * 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
KR100602394B1 (ko) 2000-08-15 2006-07-20 시게이트 테크놀로지 엘엘씨 동작 코드용 듀얼 모드 데이터 압축 방법
US6754816B1 (en) * 2000-10-26 2004-06-22 Dell Products L.P. Scalable environmental data calculation method customized by system configuration
US7058941B1 (en) * 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
KR100520058B1 (ko) * 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications
US20020129107A1 (en) * 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6442660B1 (en) 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
EP1445888A4 (en) * 2001-10-12 2010-07-07 Panasonic Corp CONTENT PROCESSING APPARATUS AND CONTENT PROTECTION PROGRAM
US7483970B2 (en) 2001-12-12 2009-01-27 Symantec Corporation Method and apparatus for managing components in an IT system
US7600021B2 (en) * 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
US20040031027A1 (en) * 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20040193643A1 (en) 2003-03-27 2004-09-30 O'brien John C. Method and system for tracking contracts
US20050010870A1 (en) * 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US7379884B2 (en) * 2003-09-11 2008-05-27 International Business Machines Corporation Power on demand tiered response time pricing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008054132A1 (en) * 2006-10-31 2008-05-08 Sk Telecom Co., Ltd. Terminal having platform library dynamic linking function and method of controlling the same
KR100860753B1 (ko) * 2007-01-03 2008-09-29 삼성전자주식회사 펌웨어 업그레이드를 위한 장치 및 방법
KR20210102003A (ko) * 2020-02-11 2021-08-19 한국조선해양 주식회사 용접기용 네트워크 카드
KR20220064136A (ko) * 2020-11-11 2022-05-18 주식회사 엘지유플러스 전자 디바이스 및 펌웨어 업데이트 방법

Also Published As

Publication number Publication date
CN1781075A (zh) 2006-05-31
US7007049B2 (en) 2006-02-28
WO2004046910A1 (en) 2004-06-03
US7779055B2 (en) 2010-08-17
EP1570340A1 (en) 2005-09-07
JP2006506747A (ja) 2006-02-23
US20040098427A1 (en) 2004-05-20
AU2003295668A1 (en) 2004-06-15
US20050257023A1 (en) 2005-11-17
CN1781075B (zh) 2010-09-01
JP4409438B2 (ja) 2010-02-03
EP1570340A4 (en) 2008-03-12

Similar Documents

Publication Publication Date Title
KR20050086687A (ko) 전자 파일 업데이트 동안 디바이스 메모리 관리
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
KR100871778B1 (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
US7313577B2 (en) Generating difference files using module information of embedded software components
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
CN105657191A (zh) 一种基于Android系统的应用增量升级方法及系统
WO2005096145A2 (en) Method and apparatus for dynamic extension of device management tree data model on a mobile device
WO2002075531A1 (en) Method for loading and executing an application in an embedded environment
US20100017503A1 (en) Download server and method for installing and updating application program using partitioning of shared library
CN106569880A (zh) 一种Android应用间动态共享资源的方法及系统
WO2023202299A1 (zh) 一种sdk升级方法、装置以及计算机设备
CA2267549A1 (en) Loading and unloading of application components
CN110888658A (zh) 应用程序中功能模块的动态化方法、装置及存储介质
US7669197B1 (en) Embedded system employing component architecture platform
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN112947956B (zh) 一种应用软件升级方法
CN115374083A (zh) 数据源的切换方法、装置、电子设备及存储介质
KR100444945B1 (ko) 이동단말기를 위한 효율적인 이동데이터 관리 방법
CN116661844A (zh) 配置文件处理方法、应用程序更新方法、装置、服务器

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application