KR101213275B1 - 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 - Google Patents
무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 Download PDFInfo
- Publication number
- KR101213275B1 KR101213275B1 KR1020060118496A KR20060118496A KR101213275B1 KR 101213275 B1 KR101213275 B1 KR 101213275B1 KR 1020060118496 A KR1020060118496 A KR 1020060118496A KR 20060118496 A KR20060118496 A KR 20060118496A KR 101213275 B1 KR101213275 B1 KR 101213275B1
- Authority
- KR
- South Korea
- Prior art keywords
- component
- components
- image
- symbol
- symbols
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/38—Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
- H04B1/40—Circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
- G06F9/44563—Sharing
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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
본 발명은 무선 장치에서 사용할 모놀리식(monolithic) 이미지를 제공하기 위한 시스템 및 방법에 관한 것이다. 본 발명에 따른 방법은 이미지를 형성하는 다수의 컴포넌트와 각 컴포넌트로 부터 익스포트(export)가 가능한 모든 기호와 다른 컴포넌트에서 각 컴포넌트에 의해 임포트(import)된 모든 기호를 확인하는 것을 포함하고 있다. 방향 변경 메커니즘은 다른 컴포넌트로부터 임포트된 컴포넌트가 익스포트한 각 기호의 주소를 포함하여 생성되고, 각 컴포넌트는 다른 컴포넌트와 관련된 기호에 대한 각 직접 참조를 방향 변경 메커니즘(redirection mechanism) 참조로 바꾸도록 변경된다. 다른 컴포넌트와 관련된 기호에 대한 각각의 직접 참조를 변경한다. 링커는 호출되어 상기 변경된 컴포넌트에 근거한 최종 이미지를 연결한다.
어셈블러, 기계어, 객체 파일, 메모리, 방향 변경 메커니즘
Description
도 1은 본 발명의 실시예에 따른 시스템을 도시한 도면.
도 2는 도 1의 이미지 생성 시스템의 실시예를 도시한 블록도.
도 3은 도 1의 무선 장치의 실시예를 도시한 블록도.
도 4A 내지 도 4C는 본 발명의 실시 예에 따른 모놀리식(monolithic) 이미지를 포함하는 메모리의 실시 예들을 도시하는 도면.
도 5는 본 발명의 실시 예에 따른 정적 모놀리식 이미지에 대한 방향 변경 메커니즘을 제공하는 방법에 대한 흐름도.
도 6은 본 발명의 실시 예에 따른 실행 가능한 파일을 생성하기 위한 컴파일레이션 시스템을 도시한 도면.
도 7은 본 발명의 실시 예에 따른 정적 모놀리식 이미지에 의사(擬似) DLL 기능을 제공하는 방법에 대한 순서도.
도 8A 내지 도 8B는 본 발명의 실시 예에 따른 모놀리식 이미지와 방향 변경 메커니즘을 포함하는 메모리의 실시 예들을 도시한 도면.
도 9는 본 발명의 실시 예에 따른 방향 변경 메커니즘을 포함하는 기존의 모 놀리식 이미지를 갱신하는 방법에 대한 흐름도.
〈도면의 주요부분에 대한 부호의 설명〉102 : 이미지 생성 시스템 104 : 무선 네트워크
106 : 무선 장치 202 : CPU
204 : 메모리 유닛 206 : I/O 장치
208 : 네트워크 인터페이스 302 : 프로세서
304 : 메모리 306 : 무선 통신 시스템
본 발명은 무선 장치에 대한 소프트웨어를 업데이트하기 위한 시스템 및 방법에 관한 것으로, 보다 상세하게는 무선 장치에서 사용할 모놀리식(monolithic) 이미지를 제공하기 위한 시스템 및 방법에 관한 것이다.
일반적으로 핸드셋 및 다른 무선 장치들은 실행 가능한 명령 형태의 소프트웨어와 메모리에 저장되어 있는 비 실행 데이터를 포함한다. 상기 소프트웨어로 인하여 상기 장치들은 다양한 기능을 실행할 수 있게 되는데, 예를 들면 무선 네트워크를 통한 통신을 수행하고, 착신 호(呼) 표시(call waiting), 착신 호 전환(call forwarding)과 같은 호 특성 처리, 달력 및 주소록을 유지할 수 있다. 그러나, 무선 장치를 최종 사용자에게 제공한 후에는 그 장치에 이미 설치된 소프트웨어에 다 른 소프트웨어를 추가하거나, 수정하기가 어려워진다. 이러한 문제를 해결하기 위하여, 서비스 제공자가 무선 네트워크를 통해 무선 장치로 소프트웨어 업데이트를 전송할 수 있도록 하는 무선 펌웨어 업데이트 기법(FOTA : Firmware Over The Air)이 개발되었다. 이러한 소프트웨어 업데이트를 이용하면 무선 장치의 기존 소프트웨어에 기능을 추가할 수고 있고, 기존 소프트웨어의 문제를 해결하기 위한 버그 수정도 가능하다. 그러나, 상기 FOTA와 같은 업데이트 과정이 무선 장치에 소프트웨어를 전송할 수 있는 방법을 제공하지만, 이러한 업데이트 과정을 이용함에 따른 문제점이 전혀 없는 것은 아니다. 따라서 무선 인터페이스를 통해 무선 장치로 소프트웨어를 효과적으로 제공할 수 있는 방법이 요구된다.
본 발명의 목적은 모바일 장치에서 사용하기 위한 이미지를 제공함에 있어, 향후 업데이트의 영향이 최소화되도록 최종 이미지를 구성하는 패치 최소화 도구용 시스템 및 방법을 제공함에 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 방법은 기계어 코드로 표시되는 이미지를 형성하는 다수의 컴포넌트를 확인하고 각각의 컴포넌트에 대해, 다른 컴포넌트들에 접근할 수 있는 컴포넌트 내의 모든 기호들을 포함하는 익스포트 기호 목록과 상기 컴포넌트가 필요로 하는 다른 컴포넌트 내의 모든 기호들을 포함하는 임포트 기호 목록 생성을 포함한다. 또한, 적어도 하나의 다른 컴포넌트의 입력 기호 목록에 있는 각 컴포넌트의 임포트 기호 목록의 각 기호를 간접 참조를 포함 하는 방향 변경 메커니즘의 생성을 포함한다.
다수 컴포넌트의 각 컴포넌트에 대하여, 또 다른 컴포넌트의 한 기호의 직접 참조 각각 마다 방향 변경 메커니즘의 기호와 연관된 간접 참조를 참조하도록 변경된다. 그러나 한 컴포넌트의 내부 참조는 변경되지 않는다. 최종 이미지는 변경된 컴포넌트들과 방향 변경 메커니즘을 포함한 상태로 생성된다.
상기한 목적을 달성하기 위한 본 발명에 따른 방법은 어셈블러(assembler)로부터 한 이미지의 수신과 상기 이미지를 형성하는 다수 컴포넌트의 확인을 포함한다. 각 컴포넌트로부터 익스포트 가능한 모든 기호와 각 컴포넌트가 다른 컴포넌트로부터 임포트하는 모든 기호들이 확인된다. 방향 변경 메커니즘은 다른 컴포넌트가 임포트하는 컴포넌트가 익스포트한 각 기호의 주소를 포함하여 생성되고, 각 컴포넌트는 다른 컴포넌트와 관련 있는 기호의 각 직접 참조를 상기 방향 변경 메커니즘 참조로 변경하도록 수정된다. 링커는 호출되어 상기 수정된 컴포넌트들을 근거로 한 최종 이미지를 연결한다.
상기한 목적을 달성하기 위한 본 발명에 따른 방법은 기계어 코드의 형태로 수신된 이미지를 형성하는 많은 모듈로부터 적어도 제1 그리고 제2 컴포넌트들을 생성한다. 하나의 익스포트 기호 목록과 임포트 기호 목록은 각 제1과 제2 컴포넌트 각각에 대하여 생성된다. 제1 컴포넌트의 익스포트 기호 목록은 제2 컴포넌트의 임포트 기호 목록과 비교되고, 제2 컴포넌트의 익스포트 기호 목록은 제1 컴포넌트의 임포트 기호 목록과 비교되어 제1 그리고 제2 컴포넌트들 중에 하나의 익스포트 목록에 있는 기호들과 제1 그리고 제2 컴포넌트의 나머지 하나의 임포트 목록에 있 는 기호들을 확인한다. 방향 변경 메커니즘은 각 확인된 기호의 위치 정보를 포함하여 생성된다. 제1 컴포넌트는 제2 컴포넌트의 익스포트 기호의 각 참조를 방향 변경 메커니즘을 참조로 변경하도록 수정되고, 제2 컴포넌트는 제1 컴포넌트의 익스포트 기호의 각각 참조를 방향 변경 메커니즘을 참조로 변경하도록 수정된다.
상기한 목적을 달성하기 위한 본 발명은 , 동적 연결 또는 동적 공유를 지원하지 않는 운영체제가 제어하는 이동 통신 장치의 정적 모놀리식 이미지가 제공된다. 상기 이미지는 상기 이미지를 형성하는 어떤 다른 컴포넌트로부터 상기 이미지를 형성하는 컴포넌트가 임포트하는 이미지 내의 각 기호의 주소를 포함하는 방향 변경 메커니즘을 적어도 하나 포함한다. 그리고 또한 자신이 스스로 보유한 기호를 직접 참조하고 다른 컴포넌트로부터 임포트된 기호에 대해 방향 변경 메커니즘을 참조하는 다수의 컴포넌트를 포함한다.
상기한 목적을 달성하기 위한 본 발명에 따른 시스템은 프로세서, 프로세서와 결합된 메모리, 그리고 상기 프로세서가 수행하는, 메모리에 저장되어 있는 많은 명령들을 포함한다. 그 명령에는 어셈블리 코드에서 기계어 코드에 이르기까지 무선 장치에의 사용을 위한 모놀리식 이미지를 변환하거나 기계어 코드로 확인된 모듈들에 기반을 둔 다수의 컴포넌트의 생성을 위한 명령들이 포함된다. 그리고 각 컴포넌트에 의해서 익스포트가 가능한 각 기호와 각 컴포넌트에서 임포트된 각 기호를 확인하고, 하나의 컴포넌트에 의해서 익스포트 가능하고 또 다른 컴포넌트에 의해서 임포트된 모든 기호를 포함하는 방향 변경 메커니즘의 생성을 위한 명령들을 또한 포함한다. 아울러, 각 컴포넌트를 변경하여 또 다른 컴포넌트와 연관된 익 스포트 기호의 각 참조를 방향 변경 메커니즘을 참조하도록 변경하고, 상기 변경된 컴포넌트들과 방향 변경 메커니즘을 연결시켜 모놀리식 이미지의 최종 버전을 생성한다.
첨부된 도면들과 함께 이하의 상세한 설명을 통하여 본 발명의 여러 양태들을 가장 잘 이해할 수 있다. 관련 산업의 일반 관례에 따라서, 여러 특징을 일정한 척도로 표시하지 않을 수 잇으며, 명확한 설명을 위해 여러 특징의 크기를 임의로 증가시키거나 줄일 수 있다.
본 발명의 다양한 특징의 수행을 위해, 이하의 설명에서는 많은 여러 실시의 예를 제공하고 있음을 알 수 있다. 본 발명을 간결하게 하기 위하여 컴포넌트들과 장치들의 특별한 예들이 이하에 설명된다. 물론 이러한 것들은 단순히 예들일 뿐이고 제한을 두려고 하는 것은 아니다. 그리고, 본 발명은 다양한 예들에서 참조 번호 및/또는 문자를 반복할 수 있다. 이러한 반복은 간결함과 명확함을 위해서이고 그 자체가 다양한 실시의 예와/또는 논의된 구성 사이의 관계에 영향을 끼치려는 것이 아니다.
도 1을 참조하면, 본 발명의 일실시에 따른 시스템(100)을 도시하고 있다. 상기 본 발명에 따른 시스템(100)은 이미지 생성 시스템(102), 무선 네트워크(104), 그리고 무선 장치(106)를 포함한다. 이하에 보다 상세히 설명되는 바와 같이, 상기 이미지 생성 시스템(102)은 실행 가능한 명령과 및/또는 데이터를 포함 하는 이미지를 생성하는 기능을 제공한다. 이때, 상기 이미지는 상기 무선 네트워크(104)를 통해 무선 장치(106)로 전달된다. 그러면, 상기 무선 장치(106)는 상기 전달된 이미지를 사용하여 사용자에게 각종 다양한 기능을 제공하고, 상기 무선 네트워크(104)를 통하여 다른 장치들과 통신한다. 상기 이미지는 기능과 데이터들의 다양한 조합을 포함할 수 있고, 부가적인 특징과 결함 수정 기능들은 상기 이미지 생성 시스템(102)에 의한 이미지를 갱신하는데 사용될 수 있다. 상기 네트워크(104)는 집중형 그리고 애드 혹(ad hoc) 네트워크를 포함하는 어떠한 형태의 네트워크도 될 수 있고, 부호분할다중접속(CDMA), 이동 통신 세계화 시스템(GSM), 직교 주파수 분할 다중(OFCM), 또는 유사한 통신 기술들을 포함하는 어떠한 형태의 네트워크 기술도 사용할 수 있다. 본 발명의 실시 예에서, 상기 네트워크는 패킷-기반 네트워크로 설명하고 있으나, 본 발명은 임의 형태의 전송에도 동일하게 적용될 수 있다.
도 2를 참고하면, 도 1의 이미지 생성 시스템(102)의 실시의 예로 컴퓨터가 도시되고 있다. 즉, 상기 이미지 생성 시스템(102)은 중앙처리장치(CPU)(202), 메모리(204), 입출력(I/O)장치(206), 네트워크 인터페이스(208)를 포함한다. 예를 들어, 상기 네트워크 인터페이스(208)는 매체 접근 제어(MAC) 주소와 각각 연관된 하나 이상의 무선 및 /또는 유선 네트워크 인터페이스 카드(NICs)가 될 수 있다. 상기 네트워크 인터페이스(208)는 상기 네트워크(104)에 직접 연결될 수도 있고, 하나 이상의 다른 네트워크들(미도시.)을 거쳐서 연결될 수도 있다. 한편, 상기 이미지 생성 시스템(102)의 각 구성요소들(202, 204, 206, 208) 버스 시스템(210)에 의해 서로 연결될 수 있다.
상기 이미지 생성 시스템(102)은 다르게 구성될 수 있으며, 등록된 컴포넌트들 각각은 실제로 몇몇 다른 컴포넌트들을 나타낼 수 있음을 이해할 수 있다. 예를 들면, 중앙처리장치(202)는 다중처리기 또는 분산처리 시스템을 나타낼 수 있다. 메모리(204)는 상이한 레벨의 캐쉬 메모리, 메인 메모리, 하드디스크, 원거리 저장 위치를 포함할 수 있고, 입출력 장치(206)는 모니터, 키보드 등을 포함할 수 있다.
또한, 상기 이미지 생성 시스템(102) 내부에 도시하였더라도 일부 구성 요소(예를 들어, 키보드)는 물리적으로 컴퓨터의 외부에 위치할 수 있다. 또한, 상기 구성 요소들(202, 204, 206, 208) 은 일부 또는 전부 분산되어 있을 수 있다. 그러므로, 상기 이미지 생성 시스템(102)은 넓은 범위에서 융통성 있게 구성할 수 있다.
도 3을 참고하면, 도 1에 도시된 무선 장치(106)의 일 실시의 예가 도시되어 있다. 상기 무선 장치(106)는 프로세서(302), 메모리(304), 그리고 무선 통신 시스템(306)을 포함한다. 무선 장치(106)는 셀룰러 폰, PDA, 그리고 랩탑 컴퓨터를 포함하는 어떠한 이동 장치 등이 될 수 있다. 또한, 소정의 운영체제를 이용하여 상기 무선 장치(106)를 제어할 수 있으며, 상기 장치의 사용자가 다양한 기능에 접근하여 이를 사용할 수 있도록 하는 사용자 인터페이스를 제공할 수도 있다.
상기 무선 장치(106)의 메모리(304)는 모든 명령과 데이터가 상기 이미지에 포함되는 것은 아니라고 할지라도, 상기 무선 장치 내에 포함된 실행 가능한 명령들의 이진(binary) 이미지와 데이터를 포함한다. 또한, 본 실시 예에서, 상기 이미 지는 상기 무선 장치에 전송되기에 앞서 생성된 정적(靜的) 관계에 있는 명령과 데이터를 포함하는 모놀리식 이미지이다.
이러한 이미지가 동적 연결 예를 들어, 동적 연결 라이브러리(DLLs) 또는 동적 공유 객체(DSOs)를 지원하지 않는 상대적으로 단순한 운영체제를 포함하는 장치에 종종 사용된다고 할지라도, 정적 모놀리식 이미지의 사용은 상기 무선 장치(106)를 업데이트 할 때 많은 문제점을 야기한다. 그 문제점들은 장치상에 존재하는 상기 이미지가 새로운 이미지로 갱신될 때 일어나는 이미지 갱신들로 인해 자주 발생한다. 이미지가 업데이트 될 때, 장치상에 있는 이미지와 그 장치로 전송될 새로운 이미지와의 차이점들을 두 이미지 사이에 이미지 델타(예를 들어, 변화의 총계)라고 말한다.
이와 같은 문제는 이미지 업데이트가 상기 이미지의 두 부분 사이의 참조에 변화를 야기할 때 발생하는 참조 변경 전파 문제이다. 왜냐하면, 더 이상 동일한 주소에 있지 않은 프로그램 모듈들에 호출이 생성되면서, 상기 이미지는 정적(靜的)이고, 이미지의 한 부분의 변경이 그 이미지의 기능성을 손상시킬 수 있기 때문이다.
상기 참조 변경 전파 문제는 일반적으로 동적 연결 예를 들면, DLLs 나 DSOs의 사용을 통한을 지원하는 운영 체제와 관련된 쟁점이 아니다. 알려진 바와 같이, DLL은 일반적으로 연결보다는 오히려 로드나 실행 시간에 있는 프로그램에 한정되어 있는 실행 가능한 코드 그리고 및/또는 데이터를 포함하고 있는 파일로 정의된다. 다수 어플리케이션은 하나의 DLL을 통하여 코드와 데이터를 동시에 공유할 수 있다. DLLs은 WINDOWS 운영체체와 관련되어 있다. 이때 WINDOWS는 마이크로소프트 Redmond,WA의 등록상표이다. DSO는 일반적으로 실행 시간에 실행 가능한 프로그램의 주소 공간으로 로딩할 수 있는 특별한 형식의 프로그램 코드의 일부분을 생성하는 방법을 제공하는 메커니즘으로 정의될 수 있다. 상기 DSO는 흡사 DSO가 실행 가능 프로그램 기호와 정적으로 연결되어 것과도 같이 그 실행 가능 프로그램 기호 집합의 정보들을 얻는다. DSOs는 유닉스/리눅스(UNIX/LINUX) 운영체제와 관련이 있다.
상기 이미지에 대한 업데이트 작업이 이루어지는 경우, DLLs와 DSOs에 대한 지원 부족은 문제를 발생시킬 수 있다. 왜냐하면, 모놀리식 이미지는 명령들과 데이터의 고정 이진 표현이고, 일단 상기 이미지가 완성되면 다양한 요소들의 상기 주소는 정적(靜的)이기 때문이다. 이로 인해, 이러한 업데이트가 발생하는 경우, 주소들이 변함에 따라 상기 이미지에 점증적(漸增的) 갱신을 제공하기가 어려워진다. 예를 들어, 상기 이미지가 생성될 때, 이미지 내의 서브루틴은 고정 주소와 연관이 있다. 이 주소는 서브루틴을 호출할 필요가 있는 이미지의 다른 부분들에 삽입된다. 그러나, 갱신을 통하여 상기 서브루틴을 원래의 주소에서 새로운 주소로 이동시킬 수 있다. 왜냐하면, 상기 이미지의 다른 부분들은 정적으로 원래의 주소에 연결되어 있기 때문에, 상기 이미지의 다른 부분들은 더 이상 서브루틴을 호출할 수 없고 에러가 일어날 수 있다. 따라서, 무선 장치를 작동시키는 데 있어서 점증적 업데이트를 수행하는 것이 심각한 문제들을 야기할 수 있는 반면, 참조를 전파시킬 수 없는 위와 같은 능력은 모놀리식 이미지를 통하여 변경된다. 이 문제는 도 4A 내지 도 4C에 걸쳐서 매우 상세히 예시되어 있다.
먼저, 도 4A를 참조하면, 모놀리식 이미지(400)의 실시의 예가 도시되어 있다. 모놀리식 이미지(400)는 제1 및 2 명령 영역(402와 406)과 데이터 영역(404)을 포함한다. 이들 영역들(402, 404, 406)은 단지 예시일 뿐이고, 명령과 데이터를 임의의 조합 또는 구성할 수 있다. 도시된 바와 같이, 모놀리식 이미지의 각 영역(402, 404, 406)은 각각의 바로 옆의 부분에 인접해 있고, 제2 명령 영역(406) 다음에는 메모리의 이용 가능한 영역(408)이 있다. 그러나, 제 2 명력 영역(406) 이외의 다른 영역이 업데이트 되는 경우에는 그 업데이트되는 영역과 함께 연속적으로 저장될 수 있는 가용 메모리는 없다.
추가로 도 4B를 참조하면, 도 4A에는 분할된 연결 구조가 예시되어 있다. 상기 분할된 연결 구조는 이미지(400)를 여러 영역(예를 들어, 제1, 제2, 제3 영역(402, 404, 408)으로 나누고 각 영역은 이용 가능한 메모리 블록으로 분리한다. 예를 들면, 제1 명령 영역(402)과 인접하여 이용 가능한 영역(410)이 있고, 제2 명령 영역(404)에 인접하여 이용 가능한 영역(412)있으며, 도 4a에서 전술한 별도의 이용 가능한 영역 (408)이 있다. 주의해야 할 점은 이용 가능한 영역(408)은 현재 이용 가능한 영역(410)과 이용 가능한 영역(412)이 존재하기 때문에 더 작아져 있다는 것이다. 상기 이용 가능한 영역들은 전체 모놀리식 이미지를 재생성할 필요없이 영역(402, 404)을 어느 정도 확장할 수 있게 해준다. 이러한 해결 방안은 몇몇 경우에 있어서 실현 가능한 것처럼 보이지만 도 4C에서 예시된 바와 같이, 상기 이미지의 상기 세그먼트들은 연결된 채로 있고 예약되어 있을 때보다 갱신할 때 기존 에 예정된 메모리보다 메모리가 더 필요한 경우 일반적으로 상기 문제를 해결할 수 없기 때문에 상기 참조 변경 전파 문제를 해결할 수 없다.
도 4C를 참조하면, 명령 영역(402)은, 이용 가능한 영역(412)에 원래 할당된 것보다 더 많은 공간을 필요로 한다. 따라서, 만약 명령 영역 (402)이 인접 블록으로서 있을 경우, 명령 영역(402)는 중첩 영역(414)으로 표시된 것처럼 데이터 영역(404)과 중첩되어야 할 것이다. 본 발명의 실시 예에서, 중첩 영역(414)은 데이터 영역(404)에 오버라이트(overwrite)할 수 있고, 중첩 영역(414)은 비인접영역 또는 독립 영역으로 나뉠 수 있으며, 비인접 영역 또는 독립 영역은 이용 가능한 메모리에 부분적으로 저장될 수 있다. 그렇지 않으면 데이터 영역(404)을 이동시켜야 할 것이다. 이때, 데이터 영역(404)의 시작부분을 오버라이트 하는 것은 그 기능을 훼손할 수 있다. 상기에서 설명한 바와 같이, 데이터 영역(404)을 옮기는 것 또한 정적으로 연결된 참조들이 훼손되는 것처럼 그 기능에 해를 줄 수 있다.
일반적으로, 세그먼트식 연결 구조에 의해 제공되는 이용 가능한 인접 메모리 공간이 없는 이미지 파일을 이용하는 경우보다 세그먼트식 연결 구조가 더 좋은 해결책을 제시하는 것이 일반적이지만, 이 구조는 모놀리식 이미지와 관련된 문제점들을 만족스럽게 해결하지는 못한다. 예를 들어, 세그먼트식 연결 구조를 생성하기 위하여, 스캐터(scatter)파일과 같은 파일이 이용될 수 있다. 알려진 바와 같이, 상기 스캐터(scatter)파일은 링커에게 메모리 상의 파일이나 오브젝트를 어디에 로드할 것인지를 알려주는데 사용된다. 일반적으로 스캐터(scatter)파일을 생성하는 데에는 시간이 걸린다. 더구나, 세그먼트들 사이에 남아있는 이용 가능한 영 역들은 해당 세그먼트에 예상되는 크기의 증가분을 수용할 수 있는 만큼 충분히 커야 하므로, 세그먼트식 연결 구조는 상대적으로 많은 양의 메모리를 소비하는 경향이 있다. 그렇다 해도, 이용 가능한 영역들은 업데이트 및 결함 수정으로 인하여 상대적으로 빨리 오버플로가 발생할 수 있는데 이것은 새로운 스캐터(scatter)파일을 생성해야 한다는 것을 의미한다. 세그먼트들 사이에 기능 이동 또한 새로운 스캐터(scatter)파일의 생성을 요구할 수 있다. 세그먼트식 연결 구조에 요구되는 복잡도와 프리 메모리는 일반적으로 코드 크기에 비례한다.
일반적으로 제3의 라이브러리에 관해서 세그먼트식 연결을 수행하기가 불가능하다. 그리고, 상기 세그먼트식 연결 구조는 세그먼트들 사이의 참조를 유지하므로 한 세그먼트의 변경은 한 이미지에서 모든 참조들을 갱신해야 할 필요성이 요구된다. 이러한 그리고 그 외의 이유들 때문에, 읽기/쓰기 데이터, 읽기 전용 데이터, 비 초기화 데이터에 대한 변화가 이미지에 대한 큰 변화를 초래할 수 있다.
일반적으로, 모놀리식 이미지가 나타내는 소프트웨어에 있어서 가용한 융통성은 거의 없다. 상기 이미지는 무선 장치 외의 도구들을 이용하여 생성되고, 생성이 완료되면 상기 무선 장치로 전송된다. 무선 장치의 상대적으로 단순한 운영체제와 모놀리식 이미지의 사용으로 인하여 부가적인 특징들과 결함 수정과 같은 업데이트 작업은 상기 전체 이미지에 대한 변경과 상기 무선 장치로의 전송을 필요로 할 수 있다. 이것은 종종 많은 이유들 때문에 비실용적이다. 긴 시간 동안 고객의 대역폭을 사용하는 것은 비실용적일 뿐만 아니라 정부의 규제들도 업데이트 작업에 걸리는 시간에 제한을 둘 수 있다. 예를 들면, 정부 차원에서 규제되는 911 제한 규정은 5분 내에 갱신 작업이 이루어지는 것을 요구할 수 있다. 이와 같이, 이동 장치상의 기존 이미지의 큰 부분의 갱신은 종종 실행할 수 없다.
도 5를 참조하면, 정적 모놀리식 이미지를 생성할 때, 참조 변경 전파 문제를 해결하기 위한방법(500)의 일 실시 예를 보여주고 있다. 먼저, 방법(500)에 따르면 502단계에서 상기 이미지를 구성하는 다수의 컴포넌트를 확인한다. 이후에 보다 상세히 설명되는 바와 같이, 상기 컴포넌트들은 상기 이미지를 생성하는 모듈들을 나타내고, 상기 같은 이미지로부터 형성되는 세그먼트식 연결 구조의 세그먼트들과는 관련이 거의 또는 전혀 없다. 하나의 컴포넌트 또는 모듈은 미리 정해진 타입이거나 사용자가 정의한 타입일 수 있다.
504단계에서는, 익스포트 기호 목록과 임포트 기호 목록이 각 컴포넌트별로 생성된다. 상기 익스포트 기호 목록은 상기 컴포넌트의 외부에서 사용할 수 있는 모든 기호 예를 들면, 변수들과 함수들과 같은 기호들을 포함한다. 상기 임포트 기호 목록은 상기 컴포넌트가 다른 컴포넌트들로부터 호출할 필요가 있을 모든 기호들을 포함한다. 익스포트 기호 목록과 임포트 기호 목록은 예시를 위한 목적으로 사용되고, 상기 기호들을 확인 및 추적하는 다른 프로세스들이 사용될 수 있는 것을 알 수 있다. 예를 들어, 모든 익스포트 기호들과 여기에 해당하는 컴포넌트들을 포함하는 하나의 목록이 사용될 수 있고, 또 다른 목록은 모든 임포트 기호들과 여기에 해당하는 컴포넌트들을 포함할 수 있다. 또 다른 실시 예로서, 상기 목록들은 하나의 목록으로 통합될 수 있다. 하나의 컴포넌트로부터 익스포트 가능한 기호들과 다른 컴포넌트 중에 하나의 컴포넌트에 의해서 임포트된 기호들을 확인하는 다 른 메커니즘들 역시 사용될 수 있다.
506단계에서는, 하나 또는 그 이상의 방향 변경 메커니즘 예를 들어,점프 테이블(jump table) 또는 단판(單板, veneers))들은 익스포트 및 임포트 기호 목록을 근간으로 하여 생성된다. 점프 테이블은 서브루틴들의 주소를 포함하는 배열이다. 예를 들어, 점프 테이블은 각 서브루틴에 간접 참조를 제공하는 것이다. 따라서, 한 컴포넌트가 상기 배열에서 특정한 요소를 참조한다면, 그 컴포넌트는 해당되는 서브루틴으로 방향이 바뀔 것이다. 하나의 단판은 서브루틴 호출을 생성하는 데 사용되는 명령들의 짧은 연속이다. 컨포넌트 호출은 한계-범위 분기 명령(limited-range branch instruction)과 같은 명령을 사용하여 단판으로 제어를 넘긴다. 그러면, 상기 단판은 제어를 적절한 목적지로의 전송을 허가하는 메커니즘에 의하여 목적 서브루틴으로 제어를 넘긴다. 따라서, 점프 테이블과 단판은 방향 변경을 가능하게 한다. 비록 사용된 특정한 방향 변경 메커니즘에 따라서 몇몇 변경 작업이, 필요할지라도, 다른 방향 변경 메커니즘들은 대체될 수 있음을 알 수 있다.
방향 변경 메커니즘을 생성하기 위한 방법(500)은 상기 익스포트 및 임포트 기호 목록들을 점검하여 익스포트 및 임포트 기호 목록에 포함된 기호들을 확인한다. 익스포트 및 임포트 기호 목록에 포함된 기호들만이 방향 변경 메커니즘에 포함될 수 있다. 508단계에서, 컴포넌트들 사이에 모든 직접 참조들은 방향 변경 메커니즘을 가리키도록 변경된다. 예를 들면, 다른 컴포넌트의 한 기능에 대한 직접 참조 호출을 가지는 컴포넌트는, 상기 호출하는 컴포넌트로 하여금 적절한 기능을 갖도록 하는, 방향 변경 메커니즘에 대한 참조 호출을 포함하도록 변경된다. 따라 서, 컴포넌트들 사이의 모든 직접 참조들은 제거되고, 상기 이미지는 의사 DLL 기능을 가지게 된다. 상기 변화된 컴포넌트에의 접근을 필요로 하는 각 컴포넌트를 변경하지 않고 방향 변경 메커니즘의 적절한 주소를 변경시킴으로써 하나의 컴포넌트에 대한 변화를 나타낼 수 있다.
도 6을 참조하면, 컴파일링 시스템(600)의 일 실시의 예는 도 1에서의 상기 이미지 생성 시스템(102)에 있어서 실행 가능한 프로그램(612)을 컴파일하는 다양한 모듈들을 사용한다. 소프트웨어 프로그램은 보통 상위 수준 언어 예를 들어, 소스 코드와 같은 언어로 쓰여지고 오브젝트 코드와 같은 기계 판독 언어로 변환된다. 용어 및 실제 처리에서 다소 차이가 있을 수 있지만, 컴파일링 시스템(600)은 통상적인 변환 과정에서 사용되는 모듈을 제공하며, 프리프로세서(preprocessor, 602), 컴파일러(604), 어셈블러(606), 그리고 링커(linker, 610)를 포함한다. 이들 프리프로세서(preprocessor, 602), 컴파일러(604), 어셈블러(606), 그리고 링커(linker, 610)는 통상적으로 사용되는 모듈로서, 특정 프로그래밍 언어 및/또는 플랫폼과 관련되어 있는 것이 일반적이다.
한편, 의사 DLL 링커(608)는 상기 어셈블러(606)와 링커(610) 사이의 프로세스에 삽입되어, 링킹에 앞서 어셈블러의 출력을 수정하며, 이에 대해서는 더 상세히 후술하겠다.이와 같이 배치함으로써 의사 DLL 링커(608)가, 다양한 파일들이 너무 커져서 쉽게 다룰 수 없게 되기 전에 그 다양한 파일들을 다룰 수 있게 할 수 있다.
상기 프리프로세서(602)는 컴파일 대상 소스 프로그램의 상이한 부분들의 수 집을 담당한다. 상기 컴파일러(604)는 프리프로세서(602)의 출력을 받아서 어셈블리 언어 코드로 변환하고 상기 어셈블러(606)는 상기 어셈블리 언어 코드를 기계어 코드로 변환한다. 그러고 나면, 통상적인 방식대로, 상기 링커(610)는 상기 기계어 코드를 받아서 그 기계어 코드에 의해 참조되는 라이브러리나 다른 외부 모듈들을 확인하고, 이 모듈들을 기계어 코드에 설정하여 상기 최종적인 이미지(612)를 생성한다.
본 발명의 실시 예에서, 의사 DLL 링커(608)는 상기 어셈블러(606)가 생성한 기계어 코드를 수신하고 이를 변경하여 링커(610)를 호출하여 상기 변경된 코드를 연결하도록 한다. 이때, 어셈블러(606)와 링커(610)는 의사 DLL 링커(608)를 포함하지 않은 시스템의 경우라도 기본적인 차이가 없을 수 있음을 유의해야 한다. 예를 들어, 어셈블러(606)는 링커(610)가 아닌 의사 DLL 링커(608)를 호출하도록 변형될 수 있으며, 어셈블러로부터의 상기 호출을 의사 DLL 링커가 인터셉트할 수 있다. 또 다른 실시의 예에서, 상기 어셈블러의 출력을 파일에 기록하고, 상기 의사 DLL 링커(608)가 상기 링커(610)를 호출하기에 앞서, 상기 파일에 따라 작용할 수 있다. 이때, 상기 링커(610)는 변경되지 않아도 된다.
이와 같이, 기계어 코드 수준의 코드를 확인하고 다루어야 하는 필요과, 기계어 코드는 일반적으로 특정한 플랫폼/아키텍처에 대하여 생성된다는 사실로 인하여, 다른 의사 DLL 링커(608)는 상기 의사 DLL 기능이 제공되는 각 플랫폼마다 쓰여질 필요가 있다는 것은 주지의 사실이다. 예를 들면, 다른 의사 DLL 링커는 플러그 인 또는 BFD(Binary File Descriptor; 이진 파일 기술어)와 같이, 오브젝트 코 드를 다루는데 사용되는 프로그래밍 툴에 대한 모듈로서 공급될 수 있다. 알려진 바와 같이, BFD는 한 어플리케이션으로 하여금 오브젝트 파일의 형식에도 불구하고, 오브젝트 파일에 작용하는 일련의 루틴을 이용하게 하는 라이브러리를 사용하는 소프트웨어 툴이다. BFD의 백 엔드(back end)를 생성하여 이를 BFD 라이브러리에 추가함으로써 새로운 오브젝트 파일의 형식을 공급할 수 있다. BFD는 하나의 프론트 엔드(front end)와 각 오브젝트 파일 형식에 대한 하나의 백 엔드로서, 하나 또는 그 이상의 백 엔드로 나뉘어진다. 상기 프론트 엔드는 어느 백 엔드를 사용할지 그리고 백 엔드 루틴을 언제 호출할지를 결정하는 것 뿐만 아니라, 사용자 인터페이스를 제공하고 메모리와 다양한 표준 자료 구조를 관리한다. 각 백 엔드는 상기 프론트 엔드가 프론트 엔드 자신의 표준 형식을 유지하기 위하여 사용할 수 있는 일련의 호출들을 제공한다. 따라서, 특정한 플랫폼/아키텍처에 대한 각 의사 DLL 링커는 BFD와 같은 툴에 대한 백 엔드로써 제공될 수 있다.
도 7을 참조하면, 다른 실시의 예에 따른 방법(700)은 모놀리식 이미지에 대한 변화들이 상기 이미지에서 제공하는 직접 참조에 영향을 줄 때 야기되는 문제점을 다루는 데 사용될 수 있다. 본 실시의 예에서 상기 방법(700)은, 도 6에 대하여 상기 예시된 바와 같이 최종 이미지를 컴파일레이션하는 동안, 어셈블링 프로세스와 링킹 프로세스 사이에서 일어난다. 방법(700)이 완료된 후, 상기 최종 이미지는 방향 변경 메커니즘을 보유한 정적인 모놀리식 이미지이다. 점프 테이블이 예시의 목적으로써 본 발명의 실시 예에서 방향 변경 메커니즘으로 사용된다고 할지라도, 비록 사용된 특정한 방향 변경 메커니즘에 따라서 몇몇 변경 작업이 필요하다 할지 라도 상기 점프 테이블은 다른 방향 변경 메커니즘 예를 들면, 베니어(veneer)로 대체될 수 있음을 알 수 있다.
702단계에서, 어셈블러로부터 이미지가 수신된다. 상기 의사 DLL 링커는 상기 어셈블러가 생성한 기계어 코드 부분을 확인하고 다룰 수 있다. 상기에서 설명한 바와 같이 상이한 의사 DLL 링커는 제공된 각 특정한 플랫폼/아키텍처에 대해 필요할 수 있다.
704단계에서, 상기 방법(700)은 컴포넌트 설명 파일(component description file)과 같은 정의 파일을 존재시킬지 결정한다. 상기 컴포넌트 설명 파일은 사용자가 최종 이미지를 생성하는데 사용되는 몇몇 또는 모든 컴포넌트를 정의할 수 있게 해 준다. 본 발명의 실시 예에서 컴포넌트는 어셈블러가 정의한 대로의 비록 파일이나 오브젝트가 요구되는 대로 정의된다고 할지라도 파일이나 오브젝트에 한정되지 않는다. 각 컴포넌트는 재배치가 가능한 모듈들의 집합체일 수 있고, 그 집합체는 미리 정의될 수 있는데, 예를 들면, 파일 저장고(archive)가 될 수 있다. 예를 들어, (“*.a “나 “*.lib”의 이름을 갖고 있는 파일 저장고는 다수의 모듈들을 포함하는 라이브러리가 될 수 있고, 상기 라이브러리 자체가 컴포넌트로 동일시될 수 있다. 컴포넌트들을 확인하기 위하여, 방법(700)은 기계어 코드를 조사하여 다양한 코드들 사이의 동질성을 확인하고, 만약 별도의 지시가 없으면, 그러한 동질성에 기초를 둔 컴포넌트들을 생성한다.
컴포넌트 설명 파일이 존재하지 않는 경우, 상기 방법(700)은 706단계로 진행하여 미리 정해진 정의들을 이용하여 상기 컴포넌트들을 확인하고 생성한다. 예 를 들면, 미리 정해진 정의를 통하여 단일 컴포넌트와 결합된 비(非)라이브러리 파일들을 가지고, 하나의 컴포넌트를 연관된 모듈들의 집합체로 정의할 수 있다. 예를 들어, 예를 들어, 단일 라이브러리 또는 다른 정의된 집합체로 정의할 수 있다. 따라서, 두 개의 라이브러리와 다수의 비(非)라이브러리 파일들이 있는 경우, 706단계에서 확인된 3개의 컴포넌트가 있게 된다.
그러나, 컴포넌트 설명 파일이 존재할 경우, 방법(700)은 708단계로 진행하여 컴포넌트 설명 파일 722를 이용하여 상기 파일에 설명된 컴포넌트들을 확인하고 생성한다. 이는 사용자로 하여금 요구되는 대로 컴포넌트를 정의하도록 해 준다. 예를 들면, 상기 사용자는 다수의 라이브러리를 단일 컴포넌트와 결합시키고 하나의 라이브러리를 다수의 컴포넌트로 분리하는 등등을 할 수 있다. 사용자 정의나 미리 정해진 정의들은, 사용자가 어떤 컴포넌트들을 정의하고 다른 컴포넌트들이 미리 정해진 정의에 따라 정의될 수 있도록 하여, 서로 혼합될 수 있음을 알 수 있다. 예시할 목적으로, 도 4A에 대해 더 참조하여 살펴보면, 명령 영역(402)과 데이터 영역(404)은 컴포넌트 A이고, 명령 영역(408)은 컴포넌트 B이다.
710단계에서, 방법(700)은 각 컴포넌트에 대해 익스포트 기호 목록을 생성한다. 본 예에서,하나의 기호는 변수이거나 함수이다. 상기 익스포트 기호 목록은 다른 컴포넌트(예를 들면, 컴포넌트의 어플리케이션 프로그래밍 인터페이스(API)와 관련된 기호)에 접근 가능한 컴포넌트 내의 모든 기호들의 목륵이다.
앞서 도 4A의 예에 계속하여, 명령 영역(402)이 세 함수인 함수 1, 함수 2, 그리고 함수 3을 포함한다고 가정하면, 상기 데이터 영역(404)은 변수 X, 그리고 명령 영역(406)은 함수 4와 변수 Y 그리고 Z을 포함하게 된다. 이는 하기 표 1에 예시되어 있다.
컴포넌트 A |
컴포넌트 B (명령어 부분(406) |
||
|
명령어 부분(402) | 데이터 부분(404) | 함수 4, Z |
총 함수/변수 | 함수 1, 함수 2, 함수 3 |
X, Y |
함수 1 그리고 함수 3은 모두 컴포넌트 A(다시 말해, 함수 1과 함수 3은 컴포넌트 A의 API에 있음)의 외부에서 접근 가능하지만, 함수 2는 그렇지 않다. 변수 X는 컴포넌트 A의 외부에서 이용 가능하지만, 변수 Y는 그렇지 않다. 함수 4와 변수 Z는 모두 컴포넌트 B의 외부에서 접근 가능하다. 각 컴포넌트의 외부에서 이용 가능한 함수와 변수 각각은 해당 컴포넌트의 익스포트 목록에 위치할 수 있다. 이는 하기 표 2에 예시되어 있다.
컴포넌트 A |
컴포넌트 B (명령어 부분(406)) |
||
|
명령어 부분(402) | 데이터 부분(404) | 함수 4, Z |
총 함수/변수 | 함수 1, 함수 2, 함수 3 |
X, Y | |
익스포트 기호 목록 | 함수 1, 함수 3, X |
함수 4, Z |
712단계에서, 상기 방법(700)은 각 컴포넌트에 대한 임포트 기호를 생성한다. 상기 임포트 기호 목록은 다른 컴포넌트에서 호출할 필요가 있는 컴포넌트의 모든 기호들의 목록이다. 이와 함께, 상기 익스포트 그리고 임포트 기호 목록들은 컴포넌트들 사이의 모든 가능한 참조들을 포함한다.
앞의 예에 계속하여, 오로지 함수 1 그리고 함수 2만이 함수 1, 함수 2, 그리고 함수 3을 호출하지만, 함수 3은 컴포넌트 B에 포함되어 있는 함수 4를 호출한다. 예를 들어, 상기 호출들은 컴포넌트 A의 내부적인 사항이다. 그리고, 컴포넌트 A는 변수 X(컴포넌트 A 내의)와 컴포넌트 Z(컴포넌트 B 내의)에 접근할 필요가 있다. 컴포넌트 B는 컴포넌트 A로부터 함수 1에 접근할 필요가 있다. 다른 컴포넌트부터 어느 한 컴포넌트에 의해서 호출되는 각 함수와 변수들은 호출 컴포넌트의 임포트 목록에 배치된다. 예를 들면, 변수 Z는 컴포넌트 B에 포함되어 있기 때문에 컴포넌트 A의 임포트 목록에 배치되나, 변수 X는 같은 컴포넌트 내에 포함되어 있기 때문에(비록 다른 모듈이라고 할지라도) 임포트 목록에 있지 않다. 이는 하기 표 3에 예시되어 있다.
컴포넌트 A |
컴포넌트 B (명령어 부분(406)) |
||
명령어 부분(402) | 데이터 부분(404) |
||
총 함수/변수 | 함수 1, 함수 2, 함수 3 |
X, Y | 함수 4, Z |
익스포트 기호 목록 | 함수 1, 함수 3, X |
함수 4, Z | |
임포트 기호 목록 | 함수 4, Z |
함수 1 |
714단계에서는, 익스포트 기호 목록과 임포트 기호 목록에 있는 모든 기호들이 확인되고, 716단계에서는, 상기 확인된 기호들과 이에 해당 주소들은 상기 점프 테이블에 배치된다. 따라서, 상기 점프 테이블만이 입력 기호에 해당되는 각 익스포트 기호에 대한 참조를 포함한다. 오로지 호출 컴포넌트 외부의 기호 호출만이 점프 테이블을 참조한다. 예를 들어, 호출 컴포넌트 외부의 기호 호출은 상기 컴포넌트 자신 안에 포함된 기호를 참조하지 않는 호출을 말한다.
함수 1 그리고 함수 3 모두 컴포넌트 A의 외부에 접근 가능할지라도, 다른 컴포넌트는 함수 3을 호출할 필요가 없기 때문에, 함수 1만이 현재 프로그램에서 항상 호출된다. 그러므로, 함수 3은 점프 테이블에 배치되지 않는다. 함수 4와 변수 Z 역시, 모두 외부 컴포넌트들이 호출할 수 있으므로, 점프 테이블에 배치된다. 이는 하기 표 4에 예시되어 있다.
컴포넌트 A |
컴포넌트 B (명령어 부분(406)) |
||
명령어 부분(402) |
데이터 부분(404) | ||
총 함수/변수 | 함수 1, 함수 2, 함수 3 |
X, Y | 함수 4, Z |
익스포트 기호 목록 | 함수 1, 함수 3, X |
함수 4, Z | |
임포트 기호 목록 | 함수 4, Z |
함수 1 | |
점프 테이블 내의 기호 |
함수 1, 함수 4, Z |
718단계에서, 방법(700)은 컴포넌트들 사이의 모든 직접 참조를 변경하여 상기 점프 테이블을 참조한다. 예를 들면, 컴포넌트 A에 있어서 함수 4와 변수 Z에 대한 모든 참조는 컴포넌트 B를 직접 참고하기보다는 오히려 상기 점프 테이블을 참조하도록 변경된다. 그리고 컴포넌트 B에 있어서 함수 1에 대한 모든 참조는 컴포넌트 A를 직접 참조하기보다는 오히려 점프 테이블을 참조하도록 변경된다. 따라서, 함수 1, 함수 4, 그리고 변수 Z에 대한 다른 주소를 가져오는 상기 이미지에 대한 변경들은 호출 컴포넌트의 각 직접 참조를 수정할 필요를 대신하여 점프 테이블에서 해당되는 방향 변경 주소를 수정함으로써 확정될 수 있다.
720단계에서, 링커(예를 들면 도 6의 링커(610))는 최종적인 이미지를 연결하기 위해 호출된다. 상기 최종 이미지는 상기 수정된 컴포넌트들과 상기 점프 테이블을 포함한다. 일단 완성되면, 상기 이미지는 무선 장치로 전송될 수 있다.
도 8A를 더 참조하면, 본 예에서, 모놀리식 이미지(800)는 컴포넌트 A(참조 번호 802로 표시된)와 컴포넌트 B(참조 번호 804로 표시된)를 포함한다. 컴포넌트 A는 인접 메모리 공간(806)과 연관이 있고, 컴포넌트 B는 인접 메모리 공간(808)과 연관이 있다. 상기 메모리 공간(806과 808)은 해당 컴포넌트에 얼마간의 인접한 확장 공간을 제공한다. 상기 모놀리식 이미지(800)에 대한 단일 점프 테이블(810)이거나 다수의 점프 테이블들이 사용될 수 있다(도 8B에서 예시된 점프 테이블 810과 812과 같이). 예를 들면, 어떤 실시의 예에서, 작은 점프 테이블은 기호의 위치에 해당하는 주소와 단일 명령에서 점프 명령에 해당하는 주소를 제공할 수 있기 때문에 보다 작은 공간이 필요할 수 있다. 이와는 대조적으로, 큰 점프 테이블은 개별적인 로드 주소와 점프 명령들이 필요하다. 만약 더 작은 점프 테이블이 사용된 경우, 각 테이블에 포함된 기호들은 오로지 특정 컴포넌트만이 필요할 때, 하나 또는 두 개의 점프 테이블을 이용하도록 나누어질 수 있다는 것을 알 수 있다. 그러나 기호와 점프 테이블의 어떠한 조합도 사용할 수 있다.
예시할 목적으로, 어떠한 크기의 이미지도 사용될 수 있다는 것을 알고 있지만, 상기 이미지 자체는 대략 22메가바이트(MB)정도 된다. 각 점프 테이블(각 컴포넌트별 점프 테이블을 가정)은 대략 4킬로바이트(KB)가 된다. 상기 가용 메모리 공간(806 그리고 808)의 크기는 대략 4킬로바이트(KB)에서 16킬로바이트(KB)이고 하나 또는 그 이상의 컴포넌트를 포함하는 각 4메가바이트(KB)의 공간 뒤에 위치할 수 있다. 나머지 메모리는 대략 250킬로바이트(KB)에서 800킬로바이트(KB) 사이의 인접한 메모리 공간을 구성한다. 이러한 값들은 오로지 예시를 위한 것이고 상기 이미지, 점프 테이블, 가용 메모리 공간 그리고 나머지 메모리의 크기는 필요한 어떠한 크기가 될 수 있음을 알 수 있다.
도 9를 참조하여 살펴보면, 또 다른 실시의 예에서 방법(900)은 방향 변경 장치를 통해 미리 생성되고, 무선 장치에 저장되어 있는 기존의 이미지를 갱신과 같은 동작 수행을 위한 이미지 패치에 사용된다. 예를 들면, 상기 방법(900)은 도 1의 이미지 생성 시스템(102)에서 실행될 수 있다. 902단계에서, 상기 방법(900)은 기존 이미지와 새 이미지 사이의 이미지 델타를 결정하여 그 두 이미지 사이의 차이를 확인한다. 904단계에서, 상기 이미지의 방향 변경 메커니즘에 포함된 모든 기호의 주소에 대한 모든 변경은 상기 이미지 델타에 기초하여 확인된다. 906단계에서, 상기 방향 변경 메커니즘의 주소들은 갱신되어 상기 확인된 변경 사항들을 반영한다. 908단계에서, 모든 컴포넌트와 방향 변경 메커니즘의 갱신 사항들은 무선 장치에 전송된다. 본 발명의 실시 예들을 상세히 설명하였지만, 당업계에서 통상의 지식을 가진 자라면, 많은 변경이 본 발명의 신규 내용과 이점(利點)을 현저히 벗어나지 않는 한 본 발명의 예시한 실시 예들을 다양하게 변형할 수 있다는 것을 쉽게 이해할 것이다. 또한, 상기에서 몇몇 실시 예들과 관련하여 예시하고 설명한 특징과 다른 실시 예들과 관련하여 상기 예시하고 설명한 특징들을 결합할 수 있다. 따라서, 이와 같은 모든 변형예들은 본 발명의 범위 내에 포함된다.
본 발명에 따르면, 모바일 장치에서 사용하기 위한 이미지를 업데이트할 때, 패치 최소화 모듈에 의해 패치 크기를 최소화함으로써 업데이트의 영향이 최소화될 수 있는 장점이 있다.
Claims (18)
- 무선 장치에 사용되는 모놀리식(monolithic) 이미지를 제공하는 방법에 있어서,기계어 코드로 표현되는 이미지를 생성하는 다수의 컴포넌트들을 확인하는 단계와,상기 컴포넌트들 각각이, 다른 컴포넌트들에 접근 가능한 컴포넌트 내에 있는 모든 기호들을 포함하는 익스포트 기호 목록과, 상기 컴포넌트가 필요로 하는 다른 컴포넌트들 내에 있는 모든 기호들을 포함하는 임포트 기호 목록을 생성하는 단계와,적어도 하나의 다른 컴포넌트의 임포트 기호 목록에 있는 각 컴포넌트의 상기 익스포트 기호 목록에 있는 각 기호의 간접 참조를 포함하는 방향 변경 메커니즘을 생성하는 단계와,상기 컴포넌트들 각각이, 컴포넌트 내부에 대한 참조는 변경 없이, 상기 다른 컴포넌트의 기호에 대한 각각의 직접 참조를 상기 방향 변경 메커니즘의 기호와 관련되는 간접 참조로 변경하는 단계와,상기 간접 참조를 포함하는 컴포넌트들과 상기 방향 변경 메커니즘을 포함하는 최종 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제1항에 있어서, 상기 컴포넌트들을 확인하는데 사용하기 위한 컴포넌트 설명 파일에서 하나의 컴포넌트에 대한 적어도 하나의 기준을 정의하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제2항에 있어서, 상기 컴포넌트 설명 파일이 상기 컴포넌트들을 확인하기 위해 사용되는지를 결정하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제3항에 있어서, 상기 결정 결과, 상기 컴포넌트 설명 파일이 상기 컴포넌트들을 확인하기 위해 사용되지 않는 경우, 상기 컴포넌트들을 확인하기 위해 미리 정해진 컴포넌트의 정의를 사용하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제1항에 있어서, 상기 방향 변경 메커니즘을 생성하는 단계는, 적어도 하나의 점프 테이블을 생성하는 단계를 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제1항에 있어서, 상기 방향 변경 메커니즘을 생성하는 단계는, 적어도 하나의 단판(單板)을 생성하는 단계를 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제1항에 있어서, 상기 이미지가 어셈블러로부터 직접 수신되고, 상기 최종 이미지가 상기 어셈블러가 직접 호출하는 링커의 호출을 통해서 생성되는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제1항에 있어서, 무선 펌웨어 업그레이드(Firmware Over The Air)를 이용하여 상기 이미지를 무선 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 무선 장치에 사용되는 모놀리식 이미지를 제공하는 방법에 있어서,기계어 코드로 표현되는 이미지를 생성하는 다수의 컴포넌트들을 확인하는 단계와,상기 컴포넌트들 각각이, 다른 컴포넌트들에 접근 가능한 컴포넌트 내에 있는 모든 기호들을 포함하는 익스포트 기호 목록과, 상기 컴포넌트가 필요로 하는 다른 컴포넌트들 내에 있는 모든 기호들을 포함하는 임포트 기호 목록을 생성하는 단계와,적어도 하나의 다른 컴포넌트의 임포트 기호 목록에 있는 각 컴포넌트의 익스포트 기호 목록에 있는 각 기호의 간접 참조를 포함하는 방향 변경 메커니즘을 생성하는 단계와,상기 컴포넌트들 각각이, 컴포넌트 내부에 대한 참조는 변경 없이, 상기 다른 컴포넌트의 기호에 대한 각각의 직접 참조를 상기 방향 변경 메커니즘의 기호와 관련되는 간접 참조로 변경하는 단계와상기 간접 참조를 포함하는 컴포넌트들과 상기 방향 변경 메커니즘을 포함하는 최종 이미지를 생성하는 단계를 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제9항에 있어서, 상기 다수의 컴포넌트들을 확인하는 단계는, 사용자에 의해 제공된 컴포넌트 설명 파일에 포함된 컴포넌트 정의를 사용하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제9항에 있어서, 상기 다수의 컴포넌트들을 확인하는 단계는, 미리 정의된 설명 파일에 포함된 컴포넌트 정의를 사용하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제9항에 있어서, 상기 기호는 변수와 함수 중 어느 하나인 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제9항에 있어서, 상기 컴포넌트들 중에서 적어도 하나는 다수의 모듈을 포함하며, 컴포넌트를 생성하는 상기 다수의 모듈을 그룹별로 분류하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 무선 장치에서 사용할 모놀리식 이미지를 제공하기 위한 방법에 있어서,기계어 코드 형태로 수신된 이미지를 생성하는 다수의 모듈에서 제1과 제2 컴포넌트를 생성하는 단계와,상기 제1과 제2 컴포넌트 각각에 대한 익스포트 기호 목록과 임포트 기호 목록을 생성하는 단계와,상기 제1 컴포넌트의 익스포트 기호 목록을 상기 제2 컴포넌트의 임포트 기호 목록과 비교하고 상기 제2 컴포넌트의 익스포트 기호 목록을 상기 제1 컴포넌트의 임포트 기호 목록과 비교함으로써, 상기 제1과 제2 컴포넌트 중에 하나의 익스포트 기호 목록에 있는 기호들과 상기 제1과 제2 컴포넌트 중에 나머지 하나의 임포트 기호 목록에 있는 기호들을 확인하는 단계와,상기 확인된 기호들의 위치를 포함하는 방향 변경 메커니즘을 생성하는 단계와상기 제1 컴포넌트를 변경하여 상기 제2 컴포넌트의 익스포트 기호에 대한 각 참조를 상기 방향 변경 메커니즘에 대한 참조로 변경하고, 상기 제2 컴포넌트를 변경하여 상기 제1 컴포넌트의 익스포트 기호에 대한 각 참조를 상기 방향 변경 메커니즘에 대한 참조로 변경하는 단계를 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제14항에 있어서, 링커를 호출하여 상기 변경된 제1과 제2 컴포넌트와 상기 방향 변경 메커니즘을 기반으로 실행 가능한 이미지를 생성하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 방법.
- 제14항에 있어서, 다수의 모듈을 미리 정의된 컴포넌트 정의 집합에 근거하여 상기 제1과 제2 컴포넌트로 조직화하는 단계를 더 포함하는 것을 특징으로 하는 모놀리식 이미지를 제공하는 방법.
- 무선 장치에서 사용할 모놀리식 이미지를 제공하는 시스템에 있어서,프로세서;상기 프로세서와 연결된 메모리; 그리고상기 프로세서의 실행을 위해 상기 메모리에 저장되어 있는 다수의 명령들을 포함하며,상기 명령들은, 무선 장치에 사용할 모놀리식 이미지를 어셈블리 코드에서 기계어 코드로 전환하기 위한 명령과, 기계어 코드를 통해 확인된 모듈에 기초를 둔 다수의 컴포넌트들을 생성하기 위한 명령과, 각 컴포넌트와 각 컴포넌트에 의해서 익스포트 가능한 각 기호에 의해서 임포트 가능한 각 기호를 확인하기 위한 명령과, 한 컴포넌트에 의해서 익스포트 가능하고 다른 컴포넌트에 의해서 임포트된 모든 기호를 포함하는 방향 변경 메커니즘을 생성하기 위한 명령과 각 컴포넌트를 변경하여 다른 컴포넌트와 연관된 익스포트 기호의 각각 참조를 방향 변경 메커니즘을 참조하도록 변경하기 위한 명령과, 상기 변경된 컴포넌트와 상기 방향 변경 메커니즘을 연결하여 최종 버전의 모놀리식 이미지를 생성하기 위한 명령을 포함하는 것을 특징으로 하는 모놀리식 이미지 제공 시스템.
- 제17항에 있어서, 상기 최종 버전의 모놀리식 이미지를 무선 장치로 전송하는 네트워크 인터페이스를 더 포함하는 것을 특징으로 하는 모놀리식 이미지 제공시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06125266A EP1806655A3 (en) | 2005-12-01 | 2006-12-01 | System and method for providing monolithic image for use in a wireless device |
CN2006100644771A CN101026826B (zh) | 2005-12-01 | 2006-12-01 | 用于提供在无线装置中使用的整体映像的系统和方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74133405P | 2005-12-01 | 2005-12-01 | |
US60/741,334 | 2005-12-01 | ||
US11/334,600 | 2006-01-18 | ||
US11/334,600 US7735075B2 (en) | 2005-12-01 | 2006-01-18 | System and method for a pseudo dynamic link library (DLL) linker for a monolithic image in a wireless device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070057666A KR20070057666A (ko) | 2007-06-07 |
KR101213275B1 true KR101213275B1 (ko) | 2012-12-17 |
Family
ID=38120236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060118496A KR101213275B1 (ko) | 2005-12-01 | 2006-11-28 | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7735075B2 (ko) |
KR (1) | KR101213275B1 (ko) |
CN (1) | CN101026826B (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070132774A1 (en) * | 2005-12-01 | 2007-06-14 | Samsung Electronics Co., Ltd. | System and method for a patch minimization tool |
US7921206B2 (en) * | 2007-04-18 | 2011-04-05 | Nec Laboratories America, Inc. | Visibility and control of wireless sensor networks |
US8281294B1 (en) * | 2007-11-12 | 2012-10-02 | Nvidia Corporation | System and method for representing and managing a multi-architecture co-processor application program |
US8276132B1 (en) * | 2007-11-12 | 2012-09-25 | Nvidia Corporation | System and method for representing and managing a multi-architecture co-processor application program |
CN101782860B (zh) * | 2009-01-21 | 2013-10-09 | 华为技术有限公司 | 一种程序链接方法及装置 |
CN101697131B (zh) * | 2009-11-04 | 2013-07-03 | 中兴通讯股份有限公司 | 一种可重定位文件动态加载的方法及装置 |
US9152438B2 (en) * | 2010-04-19 | 2015-10-06 | Qualcomm Incorporated | Object linking based on a determined linker order |
CN101916194B (zh) * | 2010-06-01 | 2013-06-12 | 浙江大学 | 一种无线传感网节点程序的部署方法 |
CN103218428B (zh) * | 2013-04-09 | 2016-07-06 | 深圳市九洲电器有限公司 | 一种动态链接方法及系统 |
US9753710B2 (en) * | 2013-11-07 | 2017-09-05 | Netronome Systems, Inc. | Resource allocation with hierarchical scope |
US20150379064A1 (en) * | 2014-06-25 | 2015-12-31 | Linkedin Corporation | Dependency management during model compilation of statistical models |
US10248545B2 (en) * | 2016-02-17 | 2019-04-02 | Parasoft Corporation | Method for tracking high-level source attribution of generated assembly language code |
CN113204377B (zh) | 2020-01-31 | 2022-12-06 | 华为技术有限公司 | 一种动态链接库的加载方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216537A1 (en) | 2002-11-18 | 2005-09-29 | James Jiang | Dynamic addressing (DA) using a centralized DA manager |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206951A (en) * | 1987-08-21 | 1993-04-27 | Wang Laboratories, Inc. | Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types |
US5193191A (en) * | 1989-06-30 | 1993-03-09 | Digital Equipment Corporation | Incremental linking in source-code development system |
US5623604A (en) * | 1992-11-18 | 1997-04-22 | Canon Information Systems, Inc. | Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral |
US5835743A (en) * | 1994-06-30 | 1998-11-10 | Sun Microsystems, Inc. | Application binary interface and method of interfacing binary application program to digital computer |
US5701491A (en) * | 1995-05-31 | 1997-12-23 | Microsoft Corporation, Inc. | Method and system for transitioning the network mode of a workstation |
EP0833246B1 (en) * | 1996-09-27 | 2014-11-26 | Texas Instruments Incorporated | A method of producing a computer program |
US5938766A (en) * | 1997-03-21 | 1999-08-17 | Apple Computer, Inc. | System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables |
US7080371B1 (en) * | 1998-03-03 | 2006-07-18 | Siebel Systems, Inc. | Method, system, apparatus and program product for distribution and instantiation of software upgrades |
DE19915135A1 (de) * | 1998-03-27 | 1999-11-04 | Nec Corp | Verfahren zur Erzeugung einer Verknüpfungshinweis-Datei und Tool/Instrument dafür |
US6701356B1 (en) * | 1998-04-15 | 2004-03-02 | Ciena Corporation | Method and apparatus for automatically downloading profile and image files for optical network elements |
US6079015A (en) * | 1998-04-20 | 2000-06-20 | Motorola, Inc. | Data processing system having selectable exception table relocation and method therefor |
FR2781582B1 (fr) * | 1998-07-21 | 2001-01-12 | Technical Maintenance Corp | Systeme de telechargement d'objets ou de fichiers pour mise a jour de logiciels |
US6298481B1 (en) * | 1998-10-30 | 2001-10-02 | Segasoft, Inc. | System for modifying the functionality of compiled computer code at run-time |
US6698016B1 (en) * | 2000-08-29 | 2004-02-24 | Microsoft Corporation | Method for injecting code into another process |
US6684395B2 (en) * | 2000-12-28 | 2004-01-27 | Intel Corporation | Multiple image dynamic bind and load procedure for a multi-processor |
TWI275260B (en) * | 2001-04-16 | 2007-03-01 | Interdigital Tech Corp | Circuits for use in and for determining an address for bits prior to rate matching using an address of bits after rate matching |
US7155710B2 (en) * | 2001-06-08 | 2006-12-26 | Igt | Method and apparatus for gaming device software configuration |
US7251812B1 (en) * | 2001-10-31 | 2007-07-31 | Microsoft Corporation | Dynamic software update |
CN100473138C (zh) * | 2003-04-02 | 2009-03-25 | 松下电器产业株式会社 | 数据再生装置、视频显示装置和使用它们的软件更新系统 |
US7089270B2 (en) * | 2003-06-20 | 2006-08-08 | Innopath Software | Processing software images for use in generating difference files |
EP1676195A4 (en) | 2003-10-23 | 2007-08-29 | Innopath Software Inc | DYNAMIC ADDRESSING BY CENTRALIZED DYNAMIC ADDRESSING MANAGER |
US7376945B1 (en) * | 2003-12-02 | 2008-05-20 | Cisco Technology, Inc. | Software change modeling for network devices |
WO2005074621A2 (en) | 2004-02-02 | 2005-08-18 | Innopath Software, Inc. | Dynamic addressing (da) using a centralized da manager |
US7266805B2 (en) * | 2004-12-22 | 2007-09-04 | Timesys Corporation | Systems and methods for generating software and hardware builds |
-
2006
- 2006-01-18 US US11/334,600 patent/US7735075B2/en not_active Expired - Fee Related
- 2006-11-28 KR KR1020060118496A patent/KR101213275B1/ko not_active IP Right Cessation
- 2006-12-01 CN CN2006100644771A patent/CN101026826B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216537A1 (en) | 2002-11-18 | 2005-09-29 | James Jiang | Dynamic addressing (DA) using a centralized DA manager |
Also Published As
Publication number | Publication date |
---|---|
US20070130565A1 (en) | 2007-06-07 |
US7735075B2 (en) | 2010-06-08 |
KR20070057666A (ko) | 2007-06-07 |
CN101026826B (zh) | 2011-11-30 |
CN101026826A (zh) | 2007-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101213275B1 (ko) | 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법 | |
US20070132774A1 (en) | System and method for a patch minimization tool | |
US9250875B1 (en) | Table of contents pointer value save and restore placeholder positioning | |
TWI439931B (zh) | 用於增加三角差動效能之目的碼之產生 | |
US20070089090A1 (en) | Method and system for protecting source code | |
CN102722387B (zh) | 动态打补丁的方法和装置 | |
JP2007521529A (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
US20060070053A1 (en) | Dynamic linking of modules in a pre-operating system environment | |
US20050204351A1 (en) | Dynamic addressing (DA) using a centralized DA Manager | |
US6665671B2 (en) | System and method for optimization of shared data | |
US20010047512A1 (en) | Method and system for linking multiple processors having shared memory | |
US20090172338A1 (en) | Feedback linker for increased delta performance | |
US7814467B2 (en) | Program optimization using object file summary information | |
CN102364433B (zh) | 在ARM处理器上实现Wine构建工具移植的方法 | |
KR20090035521A (ko) | Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법 | |
CN110659088A (zh) | 一种嵌入式环境下程序扩展的方法及系统 | |
US7844734B2 (en) | Dynamic addressing (DA) using a centralized DA manager | |
US10152307B2 (en) | Specifying user defined or translator definitions to use to interpret mnemonics in a computer program | |
KR100478463B1 (ko) | 응용 프로그램의 동적링크 방법 | |
CN114546515B (zh) | 动态加载静态库的模块、固件及设备和C库转Lua库的方法 | |
CN115495158A (zh) | 微内核操作系统中系统服务动态构建方法 | |
CN115981654A (zh) | 减小软件更新的传送大小 | |
EP1793311A2 (en) | System and method for a patch minimization tool | |
EP1806655A2 (en) | System and method for providing monolithic image for use in a wireless device | |
KR20070081868A (ko) | 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151127 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161129 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |