KR100422103B1 - 네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법 - Google Patents

네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법 Download PDF

Info

Publication number
KR100422103B1
KR100422103B1 KR10-1998-0704950A KR19980704950A KR100422103B1 KR 100422103 B1 KR100422103 B1 KR 100422103B1 KR 19980704950 A KR19980704950 A KR 19980704950A KR 100422103 B1 KR100422103 B1 KR 100422103B1
Authority
KR
South Korea
Prior art keywords
terminal
section
code
package
memory
Prior art date
Application number
KR10-1998-0704950A
Other languages
English (en)
Other versions
KR19990076824A (ko
Inventor
제임스 에이. 하우허
고든 제이. 프리드맨
Original Assignee
파워티브이, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 파워티브이, 인코포레이티드 filed Critical 파워티브이, 인코포레이티드
Publication of KR19990076824A publication Critical patent/KR19990076824A/ko
Application granted granted Critical
Publication of KR100422103B1 publication Critical patent/KR100422103B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/65Arrangements characterised by transmission systems for broadcast
    • H04H20/76Wired systems
    • H04H20/77Wired systems using carrier waves
    • H04H20/78CATV [Community Antenna Television] systems
    • H04H20/79CATV [Community Antenna Television] systems using downlink of the CATV systems, e.g. audio broadcast via CATV network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/86Arrangements characterised by the broadcast information itself
    • H04H20/91Arrangements characterised by the broadcast information itself broadcasting computer programmes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • H04N21/4351Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream involving reassembling additional data, e.g. rebuilding an executable program from recovered modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

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

Abstract

컴퓨터 프로그램을 터미널 내로 다운로딩하기 전에 그 프로그램을 처리하기 위한 시스템은 컴파일링된 그러나 연결되지 않은 프로그램(307) 내의 어떤 정보를 처리하는 패키저(303)를 포함한다. 패키저(303)는 다운로딩 전에 종착 터미널(302) 내의 디스패치 테이블의 지식 및 다른 정보를 기초로 해서 정의되지 않은 심볼 및 재배치를 부분적으로 분석한다. 또한, 패키저는 개별 코드, 데이터, 디스패치 테이블 및 임시 심볼 영역의 크기를 결정하고, 이 크기 정보를 헤더(309d) 내로 도입하며, 부분적으로 분석된 심볼을 비롯하여 헤더 및 상기한 영역들을 포함하는 데이터 스트림을 케이블 텔레비젼 네트워크 내의 가정용 통신 터미널(HCT)과 같은 하나 이상의 터미널에 전송한다. 각 수신 터미널(302)은 크기 정보를 추출하고 각 개별 영역을 저장하는데 필요한 양의 메모리만을 할당함으로써, 임시 보유 버퍼가 필요없게 된다. 그런 후, 수신 터미널은 실행가능 명령을 재배치하여 실행을 위한 컴퓨터 프로그램을 준비한다.

Description

네트워크를 통한 전송 전에 컴퓨터 프로그램을 처리하기 위한 장치 및 방법{APPARATUS AND METHOD FOR PREPROCESSING COMPUTER PROGRAMS PRIOR TO TRANSMISSION ACROSS A NETWORK}
예약 텔레비젼 시스템(subscription TV)의 HCT와 같은 터미널로 컴퓨터 소프트웨어를 다운로딩할 수 있는 시스템은 잘 알려져 있다. 예를 들어, 'Reprogrammable Subscriber Terminal'이란 발명의 명칭을 가진 미국 특허 제 5,440,632 호에는 일련의 트랜잭션(a series of transactions)에서 코드를 다운로딩하여 가입자 터미널을 재프로그래밍하는 수단을 구비한 시스템이 개시되고 있는데, 이러한 시스템을 사용해서 새로운 어플리케이션(new applications)을 추가하거나 구식 또는 불완전한 소프트웨어를 대체할 수 있다.
멀티미디어 어플리케이션 및 고성능 그래픽과 같은 새로운 특징이 필요하게됨에 따라, HCT에서의 처리 능력 및 메모리 요건이 추가되었다. 불행하게도, 메모리는 HCT에서 상당히 값비싼 요소이기 때문에, 메모리를 비효율적으로 사용하면 용인할 수 없을 정도로 가격이 비싸질 가능성이 있다.
본 출원의 발명자들이 판단하건대, 새로운 또는 수정된 컴퓨터 프로그램을 HCT내로 연결 또는 로딩하기 위한 종래의 방법은 HCT에서의 메모리 사용을 비효율적으로 되게 하므로, 필요한 메모리의 양을 최소화하기 위해서는 혁신적인 방법이 요구된다. 특히, HCT가 통상적으로 헤드엔드 또는 다른 다운로딩 소스(headend or other downloading source)로부터 컴퓨터 프로그램을 로딩하는 방식은 그 HCT에서 커다란 메모리 공간을 필요로 한다. 일 예로서, 종래의 방법은 새로이 다운로딩된 이미지를 위해 최종 지정 메모리 영역(the final destination memory areas)을 할당하는 것 외에도 새로운 또는 수정된 이미지를 수신하기 위해 HCT내에 버퍼를 할당해야만 한다. 이 할당된 버퍼 영역이 기본적으로 낭비적인 것인데, 그 이유는 그 버퍼 영역이 로딩 후에는 필요 없기 때문이다.
다른 예로서, 새로운 프로그램을 다운로딩하기 위한 종래의 방법에서는, 완전한 실행가능 이미지를 HCT내로 다운로딩하기 전에 연결해야만 하기 때문에 HCT내로 별도의 프로그램들을 선택적으로 다운로딩할 수 없게 되거나, 또는 HCT내에 연결 로더(linking loader)를 필요로 하기 때문에 불필요한 메모리 공간이 요구되어 HCT 소프트웨어 설계가 복잡하게 된다. 이들 및 기타 다른 문제점들을 고려해 볼 때, 종래의 다운로딩 방법은 상당한 단점을 가질 것으로 판단된다.
<발명의 요약>
본 발명은 상기한 문제점들을 다운로딩 소스(예를 들어, 개발 컴퓨터(development computer), 헤드엔드 컴퓨터 또는 이들의 조합)와 HCT와 같은 터미널 간에 연결 로더 기능을 현명하게 분할시키는 것에 의해 해결한다. 특히, 연결 로더에 의해 통상적으로 수행되는 많은 기능은 터미널 내로의 다운로딩 전에 '패키징(packaging)' 단계에서 대신 수행된다. 다운로딩 소스의 '패키저' 유틸리티('packager' utility)는 컴파일러의 출력에서 동작하여 터미널에서 로더에 의해 수행되는 로딩 동작을 간단하게 한다. 여러 실시예에서, '패키저'는 (1) 부분적인 코드 재배치(partial code relocation); (2) 로드 크기 파라미터 결정(determination of load size parameters); 및 (3) 원래의 코드 유형에 무관하게 공통 포맷으로의 실행가능 코드 포맷팅(formatting executable code into a common format)을 포함하는 기능들을 수행할 수 있다. 이들 각 기능에 대해서는 별도로 후술한다.
부분적인 코드 재배치. 실행가능 코드를 생성하는 종래의 패러다임은 소스 코드를 오브젝트 코드(object code)로 컴파일링하는 단계와, 오브젝트 코드를 실행가능 이미지 내로 연결 및 재배치하는 단계와, 실행가능 이미지를 터미널 내로 다운로딩하는 단계로 이루어진다. 이와는 달리, 본 발명은 (1) 소스 코드를 오브젝트 코드로 컴파일링하는 단계와, (2) 다운로딩 소스에서 알려진 터미널에 관한 디스패치 테이블 맵퍼(dispatch table mapper) 및 다른 정보를 사용하여 컴파일 후에 소정의 정의되지 않은 심볼을 분석함으로써 오브젝트 코드를 '패키징'하는 단계와, (3) 케이블 네트워크를 통해서 터미널로 '패키지드(packaged)' 코드를 다운로딩하는 단계와, (4) (필요에 따라) 어떤 나머지 코드를 터미널에서 재배치하는 단계를 고려한다. 따라서, 많은 전통적인 연결 로더 기능들이 터미널로부터 다운로딩 소스로 오프-로드되어(off-loaded) 터미널에서의 메모리 요건이 감소된다.
다운로딩 소스의 패키저는 터미널내의 디스패치 테이블에 대한 지식을 갖기 때문에, 그 패키저는 로드 스트림(load stream)을 터미널로 전송하기 전에 많은 어드레스를 분석할 수 있어, 로드 동작 속도가 빠르게 되고 로드 스트림의 크기가 감소된다. 예를 들어, 패키저는 컴파일러가 발생한 '프로그램 카운터에 관련된 브랜치(branch relative to program counter)' 명령을 터미널 내의 로더에 전송하기 전에 그 명령을 절대 명령(절대 어드레스에 대한 브랜치(branch to absolute address))으로 대체할 수 있으며, 패키저는 또한 역의 동작을 행할 수 있다(즉, 패키저는 절대 브랜치를 상대 브랜치로 변환한다. 따라서, 로드 스트림의 크기가 감소되어 터미널로부터 많은 어드레스 재배치 동작이 제거된다. (예를 들어, 분석되지 않은 어드레스가 터미널로 전송할 때 로드 스트림내의 그 분석되지 않은 어드레스의 위치를 나타내기 위해 보조 정보를 전송할 필요가 있는데, 다운로딩 소스에서 이들 어드레스를 분석함으로써 보조 정보가 제거되어 메모리 공간이 절약된다. 요약하면, 연결 로더가 통상 수행하는 재배치 기능들 중의 어떤 것들은 다운로딩 소스에서 행해질 수 있는 것들과 터미널에서 로더가 수행해야만 하는 것들로 분할된다.
헤드엔드에서 로드 크기 파라미터의 결정. 다운로딩 소스의 '패키저(packager)'는 얼마나 큰 다양한 로더 스트림 부분들이 존재할 것인가를 판단하여 그 크기 정보를 터미널에 사전에 전송함으로써, 그 후에는 로딩 동작을 수행하는데 필요한 최소한의 메모리만을 할당할 필요가 있다. 따라서, 터미널내의 로더는 각각의 개별 로드 스트림 세그먼트(load stream segment)에 대해 메모리 공간을 영구적으로 할당할 수 있으면서도 낭비적인 중간 저장 영역을 할당할 필요가 없다.
예를 들어, 400 킬로바이트 로드 스트림을 다운로딩 소스로부터 수신하려는 경우, 그 중의 200 킬로바이트는 수정되지 않은 코드를 구성하고 100킬로바이트는 수정가능한 데이터를 구성할 것이며 나머지 100 킬로바이트는 로딩 동작 후에 폐기될 임시적인 심볼 정보를 구성할 것이다. (종래와 같이, 코드 및 데이터 세그먼트는 전형적으로 메모리에서 여러 다른 영역으로 분리되어 코드가 ROM내에 저장될 수 있게 하거나 메모리에 기록될 수 없게 한다.)
종래의 로더는 로더 스트림을 보유하기 위해 400 킬로바이트의 저장 공간을 할당할 것이고, 이어서 (얼마나 많은 코드가 존재하는 지의 결정 후) 코드를 보유하기 위해 200 킬로바이트의 버퍼를 할당하며, (얼마나 많은 코드가 존재하는 지의 결정 후) 데이터를 보유하기 위해 100 킬로바이트의 버퍼를 할당하며, 임시적인 심볼 정보를 보유하기 위해 100 킬로바이트의 버퍼를 할당할 것이다. 이 종래의 방법은 실행가능한 이미지를 보유하는데 궁극적으로 필요한 것보다 2배 많은 메모리를 필요로 한다.
종래의 로더는 로딩 동작 동안 중간 데이터를 저장하기 위해 디스크 드라이브에 액세스하나, HCT는 전형적으로 그러한 디스크를 갖지 않으며 아주 제한적인메모리만을 갖는다. 따라서, 터미널은 로딩 동작 동안 중간 데이터 저장 영역을 사용할 수 없다. 단지 200 킬로바이트의 코드 영역만이 필요하다는 것을 사전에 식별할 수 있기 때문에, 400 킬로바이트를 할당하고 필요없는 것을 폐기하는 대신에, 터미널은 실제 로딩 전에 200 킬로바이트만을 그의 메모리에 할당할 수 있게 된다.
공통 포맷으로의 실행가능 코드 포맷팅. 각종 실시예에서, 패키저는 실행가능 코드를 터미널내의 로더가 사용하기 위한 공통 포맷으로 '디스틸(distill)'할 수 있다. 따라서, 터미널내의 로더는 패키저에 대한 여러 다른 코드 파일 포맷(different code fileformats)(COFF, ELF, PEF)을 처리하는 오프로딩에 의해 가능한 간단하게 될 수도 있다. 공통 포맷을 사용함으로써 또한 네트워크를 통해 터미널 내로 로딩할 필요가 있는 코드의 크기를 감소시킬 수 있는 더 이상의 최적화를 가능하게 한다.
본 발명의 다른 특징 및 장점은 다음의 상세 설명, 도면 및 청구의 범위를 통해 명백해 질 것이다.
본 발명은 일반적으로 네트워크를 통해 터미널 예를 들어 가정용 통신 터미널(home communications terminal (HCT))로 컴퓨터 프로그램을 다운로딩(downloading)하기 위한 시스템에 관한 것이다. 본 발명은 특히 컴퓨터 프로그램을 그러한 터미널에서의 실행을 위해 다운로딩하여 준비할 수 있는 효율을 증대시키는 장치 및 방법에 관한 것이다.
도 1은 본 발명의 다양한 관점에 따라 코드가 다운로딩되고 실행될 수도 있는 가정용 통신 터미널(HCT)에 대한 한가지 가능한 구성을 도시한 도면이다.
도 2는 본 발명의 다양한 관점에 따라 로딩가능한 모듈 패키지를 발생하기 위한 것으로서, 각 스테이지에서 생성된 결과를 포함하는 일련의 스테이지를 도시한 도면이다.
도 3은 다운로딩 소스(301)의 패키저(303)가 디스패치 테이블 맵퍼(308)를사용하여 오브젝트 코드 명령 세트(307)를 로드 패키지(309)로 어떻게 변환하는가를 도시한 도면이다.
도 4는 본 발명의 다양한 관점에 따라 네트워크를 통해 터미널 내로 다운로딩될 수 있는 로드 패키지(309)에 대한 가능한 포맷을 도시한 도면이다.
도 5는 도 4로부터 로드 패키지의 부분들을 저장하기 위해 코드, 데이터, 디스패치 테이블 및 임시적인 심볼에 대한 개별 영역을 할당할 수도 있는 터미널에 대한 한가지 가능한 메모리 할당 방안을 도시한 도면이다.
도 6은 실행을 위해 터미널 내로 다운로딩되고 준비되는 로드 패키지 내로 오브젝트 코드 명령 세트를 변환하기 위해서 수행될 수도 있는 각종 단계를 도시한 도면이다.
도 7a는 패키지(703)가 어떻게 하나 이상의 컴파일링된 오브젝트 코드 모듈 A, B 및 C를 패키지(704)내로 조합하여 네트워크를 통해 다운로딩하고 이어서 터미널 로더(705)에 의해 로딩할 수 있는가를 도시한 도면이다.
도 7b는 패키저(703)에 의해 수행될 수 있는 바와 같은 다운로딩 소스의 부분적인 재배치 프로세스(도 6의 단계(601))를 상세히 도시한 도면이다.
도 7c는 수개 입력 파일의 각각으로부터의 섹션들이 도 7b에 도시한 프로세싱 단계들을 수행하기 전에 어떻게 조합될 수 있는가를 도시한 도면이다.
도 8은 예로서 도 3의 터미널 로더(304)에 의해 터미널에서 수행될 수 있는 나머지 재배치 단계(도 6의 단계(609))를 상세히 도시한 도면이다.
도 1은 다운로딩 모듈 패키지에 대한 한가지 가능한 터미널로서 작용할 수도 있는 가정용 통신 터미널(HCT)에 대한 블럭도이다. 터미널은 CPU 카드(100), 그래픽 카드(101), 디코더 카드(102), 디스플레이 패널 및 키패드(103), 메인 프로세싱 보드(main processing board)(104), 프론트 엔드(front end)(105), 튜닝 섹션(tuning section)(106) 및 오디오 섹션(audio section)(107)을 포함할 수도 있다. 본 발명의 원리는 어떤 적절한 CPU(100a) 예를 들어 PowerPC 또는 Motorola 68000 시리즈와 더불어 적절한 EPROM(100c) 및 RAM(100b)을 사용해서 실시할 수도 있을 것이다. 또한, CPU(100a) 상에서 실행되는 응용 프로그램은 당해 기술분야에서 잘 알려진 각종 주변장치 예를 들어 마우스, 게임 콘트롤러, 키패드, 네트워크 인터페이스(mouse, game controllers, keypads, network interfaces) 등과 상호 작동할 수 있을 것이다.
도 2는 본 발명의 다양한 관점에 따라 다운로딩 소스에서 로딩가능한 모듈 패키지를 발생하기 위한 것으로서, 각 스테이지에서 생성된 결과를 포함하는 일련의 스테이지를 도시한 도면이다. 스테이지(201)에서 개발 시스템상의 사용자는 C와 같은 적당한 프로그래밍 언어로 소스 코드를 생성할 수도 있다. 예를 들어, 프로그래머는 터미널에 연결된 텔레비젼 세트 상에서 터미널 사용자가 포커를 할 수 있게 하는 새로운 비디오 게임 어플리케이션을 생성할 수도 있다.
스테이지(202)에서, 종래의 C 컴파일러와 같은 컴파일러는 소스 코드를 오브젝트 코드 파일(203)로 변환하나, 종래의 방법과는 달리, 오브젝트 파일을 실행가능 이미지 내로 연결 및 로딩하지 않으며, 이후의 연결 및 로딩을 위해 터미널에즉시 전송하지 않는다. 대신에, 패키저(205)가 프로그램 자원(204)을 사용해서 오브젝트 파일(203)을 헤더를 가진 로드가능 모듈 패키지(206)로 변환한다. 프로그램 자원(204)은 더욱 상세히 후술하는 바와 같이 각 터미널내의 디스패치 테이블 엔트리에 대한 심볼 명칭(symbol names)의 맵핑을 포함할 수도 있다.
예를 들어, 패키저(205)는 오브젝트 코드(203)내의 재배치 명령을 심볼에 대응하는 기능이 알려진 디스패치 테이블 엔트리를 통해 액세스될 수 있다는 지식을 기초로 하여 절대 명령에 의해서 대체할 수도 있어, 네트워크를 통해 중간 로더 정보를 전송할 필요가 없게 된다. 각종 실시예에서, 로드가능 모듈(206)은 그 다음 최종 로딩을 위해 하나 이상의 터미널에 네트워크를 통해서 전송된다. 로딩가능 모듈 패키지는 예로서, 기능 라이브러리(library of functions), 운영 시스템 패치 또는 익스텍션(operating system patch or extension), 시스템 자원 또는 응용 프로그램을 포함할 수도 있다.
도 3은 케이블 텔레비젼 네트워크와 같은 네트워크(N)를 통해 터미널(302)내로 다운로딩하기 위해 다운로딩 소스(301)의 패키저(303)가 오브젝트 코드 파일(307)을 헤더 영역(309d)을 가진 모듈 패키지(309)로 어떻게 변환하는가를 도시한 도면이다. 패키저(303)는 물리적으로 다운로딩 소스(301)에 상주할 필요가 없으며 그대신 개발 컴퓨터 상에 상주할 수도 있다. 물론 구성요소들의 다른 구성도 가능하다.
일반적으로, 소스코드의 응용 프로그램 또는 다른 집합(305)은 C 또는 C++ 컴파일러와 같은 종래의 컴파일러(306)에 의해서 오브젝트 코드(307)로 컴파일링된다. 도 3에 도시한 바와 같이, 오브젝트 코드(3070은 실행될 수 있기 전에 분석될 필요가 있는 명령 및 데이터에 대한 각종 유형의 참조(various types of references to instructions and data)를 포함할 수도 있다. 예를 들어, 오브젝트 코드(307)는 어플리케이션 프로그래밍 인터페이스 루틴에 대한 참조(a reference to an application programming interface routine)(307a)(TV_set_chan), 일반 라이브러리 기능에 대한 참조(a reference to a general library function)(307b)(GLib_3D_Draw) 및 절대 메모리 위치에 대한 참조(a reference to an absolute memory location0(307e)(OF62 hex)를 포함할 수도 있다. 본 발명의 다양한 관점에 따르면, 패키저(303)는 이들 정의되지 않은 심볼 중의 어떤 것들을 터미널(302)로 전송하기 전에 모듈 패키지(309)내의 분석된 심볼들로 변환한다. 패키저(303)는 이들 심볼을 디스패치 테이블 맵퍼(308)를 사용해서 분석할 수도 있다. 디스패치 테이블 맵퍼(308)는 심볼을 터미널(302)내의 디스패치 테이블 엔트리에 맵핑할 수도 있는 엔트리를 포함한다.
터미널(302)은 포인터 및/또는 브랜치(점프) 명령의 엔트리(entries of pointers and/or branch (jump) instructions)를 포함하는 디스패치 테이블(310)을 포함한다고 생각한다. 따라서, 예를 들어, 비디오 게임과 같은 실행가능한 응용 프로그램(313)이 운영 시스템 기능을 호출하는 경우, 그 호출은 그 기능에 대한 코드가 개시되는 운영 시스템(312)내의 메모리 위치에 대한 포인터를 포함하는 디스패치 테이블(310)을 통해서 '패치된다(patched)'. 이같은 특징은 그들 기능을 호출하는 프로그램을 수정하지 않고서도 그들 기능이 운영 시스템에서 대체되거나 이동될수 있게 한다. 또한, 그 특징은 운영 시스템이 영구적으로 ROM내에 저장될 수 있게 하나(즉, 기능들은 ROM내의 메모리 어드레스에 패치될 수 있게 하나), 디스패치 테이블(310)내의 포인터를 변경하는 것에 의해 변경내용이 다른 수정가능한 메모리 위치 내로 '패치'될 수 있게 한다.
따라서, 예를 들어, 운영 시스템 기능의 새로운 버전은 그 새로운 버전을 수정가능한 메모리 내에 단순히 저장하고 디스패치 테이블(310)내의 그 기능에 대한 포인터를 변경함으로써 설치될 수 있어, 그 새로운 버전은 기능의 ROM 버전을 더 이상 가리키지 않게 된다(즉, 그 기능은 다른 메모리 영역내의 새로운 버전으로 다시 향하게 된다.).
기능에 대한 포인터 대신에, 실제 점프 또는 브랜치 명령을 디스패치 테이블(310)내의 엔트리로서 사용하여 처리 속도를 높일 수도 있다. 따라서, 예를 들어, 실행가능 그래픽 어플리케이션(313)이 디스패치 테이블(310)내의 위치(164c)에 맵핑된 기능을 참조하는 경우, 그 위치에 대한 엔트리는, 로딩되어야만 하는 포인터 및 이에 후속하는 그 위치에 대한 브랜치 명령 대신에, 직접 실행될 수 있는 'X에 대한 브랜치(branch to X)' 명령을 포함한다.
다시 다운로딩 소스(301)내의 패키저(303)의 동작을 참조하여, 컴파일러(306)의 출력이 튜닝 목적으로 터미널의 현재 채널 번호를 세팅하는 TV_set_chan에 대한 참조한다고 가정한다. 패키저(303)는 요구되는 기능(TV_set_chan)이 터미널(302)내에 있는 디스패치 테이블(310)의 테이블 엔트리(164C)(hex)를 통해 패치될 수 있음을 나타내는 디스패치 맵퍼(308)내의 대응하는 엔트리(308a)를 찾는다. 따라서, 패키저(303)는 오브젝트 코드내의 심볼 TV_set_chan에 대한 참조를 디스패치 테이블 엔트리(164C)에 대한 참조에 의해 대체한다. 이렇게 한 후에는, 패키지의 다운로딩 후 그 명령을 더 이상 재배치할 필요가 없어 심볼 공간이 절약된다.
다른 예로서, GLib_3D_Draw가 패키저(303)에 알려진 공유 라이브러리(shared library)내에 있다고 가정한다. 패키저(303)는 파일(307)내의 심볼 GLib_3D_Draw을 변경하여 공유 라이브러리내의 심볼을 참조할 수 있다. 이것은 먼저 그 심볼을 가진 라이브러리가 패키지(309)에 추가된 테이블에서 확실하게 참조될 수 있게 함으로써 행해진다. 공유 라이브러리 테이블은 그 공유 라이브러리의 명칭을 포함할 수 있으며, 테이블내의 각 엔트리 위치는 심볼이 참조하는 공유 라이브러리를 나타내기 위해 심볼내의 인덱스로서 사용될 수 있다. 따라서, 패키저(309)내의 심볼은 GLib_3D_Draw에 대한 실제 값을 포함하는 공유 라이브러리의 공유 라이브러리 테이블 내로 인덱스를 포함시키며, 패키저(303)는 다른 관련 정보(GLib_3D_Draw가 있는 섹션, 데이터 또는 코드 및 그 섹션 내로의 오프셋)를 공유 라이브러리로부터 패키저(309)내의 심볼 테이블 내로 복사할 수 있다. 따라서, 터미널 로더(304)는 이 정보를 사용하여 터미널 내로 로딩되어야만 하고 심볼에 대한 패키지내의 어떤 참조를 재배치해야만 하는 공유 라이브러리 내에 관련 섹션(코드 또는 데이터)을 위치시킬 수 있다.
각 터미널내의 '터미널' 디스패치 테이블 외에도, 각 모듈은 그 모듈 외부로 호출될 수 있는 어떤 기능(즉, 소위 '수출(exported)' 기능)에 대한 엔트리를 포함하는 자신의 디스패치 테이블과 연관되었을 수도 있다. 이들 디스패치 테이블은 모듈 디스패치 테이블(MDT)내로 연결되고 각 터미널 내로의 저장을 위해 로드 패키지 내에 포함될 수 있으며, 각 터미널은 그 후 MDT를 추출하여 그 MDT를 사용해서 터미널의 디스패치 테이블과 연관하여 기능을 참조할 수 있다. 모듈내의 모든 '수출' 기능에 대해 디스패치 테이블을 발생하기 위해서 매크로가 사용될 수 있다.
주목할 것은, 패키징 단계를 컴파일링 단계 내로 조합시킴으로써 컴파일러 자체가 상술한 바와 같이 어떤 참조를 분석할 수 있게 되며, 또한, 컴파일링 및 패키징 단계들이 다른 시간에 또는 다른 기계에서 수행될 수도 있다는 것이다.
터미널(302)은 로드 패키지(309)를 수신하여 그로부터 헤더 정보를 추출하는 터미널 로더(304)를 포함한다(후술하는 도 4의 설명 참조) 또한, 터미널(302)은 분석할 심볼들을 포함하는 심볼 리스트(311)를 포함할 수도 있다. 심볼 리스트(311)는 운영 시스템을 참조하여 완전히 분석된 심볼을 포함할 수 있는 터미널 로더(304)내로 컴파일링되는 스태틱 리스트(static list)로부터 또한 도입 로드 스트림(incoming load stream)으로부터 공급될 수 있다. 이 심볼 리스트는 (상술한 바와 같은) 공유 라이브러리 심볼을 참조할 수 있거나 로드 스트림의 국부적인 데이터 및 코드 섹션(load stream's local data and code sections)을 참조할 수 있다. 공유 라이브러리 섹션을 참조하는 심볼들 내의 정보는 공유 라이브러리내의 심볼들에 대한 참조를 재배치하기 위해서 공유 라이브러리의 코드 및 데이터 영역의 개시와 함께 사용될 수 있다. 국부적인 심볼 내에 포함된 정보는 로드 스트림이 로드되는 코드 및 데이터 영역의 개시와 함께 로드 스트림의 국부적인 심볼에 대한참조를 분석하는데 사용될 수 있다.
일반적으로, 더욱 상세히 후술하는 바와 같이, 터미널 로더(304)는 로드 패키지를 다운로딩 소스(301)로부터 수신하고, 그로부터 헤더를 추출하고, 그 헤더 정보에 기초하여 개별 메모리 영역을 할당하고, 그 개별 영역으로부터의 데이터를 복호하며, 어떤 나머지 분석되지 않은 참조를 분석함으로써, 실행가능 그래픽 어플리케이션(313)과 같은 준비된 모듈을 생성한다.
도 4는 터미널 내로 로딩될 패키지(309)가 어떻게 헤더(401)에 의해 선행하는 세그먼트화된 데이터 스트림으로서 전송될 수 있는가를 도시한다. 예를 들어, 새로운 비디오 게임 어플리케이션이 기존 터미널 상에 설치하려는 경우, 그 어플리케이션은 도 4에 도시된 것과 같이 패키지 내로 포맷팅되고 터미널에 데이터 스트림으로 전송될 수도 있다. 이러한 전송은 포인트-포인트 요청에 응답하여 발생할 수도 있거나, 그 대신 멀티캐스트 다운로딩된 방법에 의해 수행될 수도 있다.
도 4에 도시한 바와 같이, 로드 패키지는 바람직하게는 로드 패키지에서 후속하는 각종 섹션의 크기를 나타내는 헤더(401)를 포함한다. 예를 들어, 도 4에 도시한 바와 같이, 헤더(401)는 로드 모듈의 명칭을 나타내는 명칭(401a), 로드 패키지 내에 포함된 모듈 디스패치 테이블(Module Dispatch Table : MDT)의 번호를 나타내는 필드(401b), 디지털 기호에 의해 로드 패키지를 인증하는데 사용될 수 있는 인증 정보(authentication information)(401c), 로드 패키지내의 코드 섹션(401)의 크기(401d), 로드 패키지내의 데이터 섹션(403)의 크기(401e)를 포함할 수도 있다. 이들 크기는 바람직하게는 패키징 프로세스의 일부로서 패키저(303)에 의해서 결정되며 헤더 내로 삽입된다.
또한, 패키저(303)는 의사(pseudo)-ROM(401m)의 크기(코드 섹션 및 수정가능한 자원에 대해 필요한 ROM의 크기), 사용자 데이터(401n)의 크기(데이터 섹션 및 수정가능한 자원의 크기) 및 임시 메모리(401o)의 크기(심볼, 코드 및 데이터 재배치, 스트링 테이블(string table), 자원 엔트리, 공유 라이브러리 테이블의 크기)와 같은 소정의 총 크기를 포함할 수 있다. 이들 크기는 각 유형의 얼마나 많은 메모리 영역을 할당할 것인지를 결정하기 위해 터미널 로더(304)에 의해서 사용될 수 있다.
헤더(401)에는 도 4에 도시한 바와 같이 실제 코드, 데이터, 심볼, 재배치 및 다른 섹션이 후속한다. 각종 실시예에서, 모듈 패치 테이블(MDT)은 그에 대한 개별 영역을 생성하는 것이 아니라 데이터 섹션(403)내에 저장될 수도 있다.
도 4에 도시한 로드 패키지는 바람직하게는 (402, 403 등)과 같은 각각의 개별 영역을 압축하는 것에 의해서 네트워크를 통한 전송 속도를 높이기 위해 압축될 수도 있다. 터미널 로더(304)는 도 4에 도시한 데이터 스트림을 수신할 때, 헤더(401)로부터 크기를 추출하여 개별 메모리 영역들을 할당함으로써 도 4에 도시한 영역들을 저장 및 (선택사양적으로) 복호한다.
도 5는 HCT와 같은 터미널내의 메모리를 도입 패키지를 효과적으로 로딩하기 위해 어떻게 할당하는가를 도시한다. 종래와 같이, 메모리(500)는 사용자-모드 코드에 의해 수정될 수 없는 메모리 어드레스(도 5에서 방화벽(501)위에 있는, 즉 슈퍼바이저 모드 코드(by supervisor mode code)에 의해서만 수정될 수 있는 메모리)를 사용자-모드 코드에 의해서 수정될 수도 있는 어드레스(도 5에서 방화벽(501) 아래에 있는, 즉 터미널 상에서 실행하는 응용 프로그램에 의해서 수정될 수도 있는 메모리)로부터 분리하는 '방화벽(firewall)'(501)에 의해서 분할된다.
도 5에서 볼 수 있는 바와 같이, 방화벽(501)위에 있는 메모리(500)의 보호된 부분은 예를 들어 보호된 운영 시스템 데이터를 포함할 수도 있는 디스패치 테이블 영역(502), 운영 시스템 영역(503), 코드 영역(504) 및 '다른(other)' 영역(505)으로 분할된다. 이와 유사하게, 방화벽(501)아래에 있는 메모리(500)의 비보호된 부분은 데이터 영역(506), 임시 저장 영역(507) 및 '다른' 영역(508)으로 분할된다. 도 5의 빗금친 영역은 이미 할당된 것으로서 터미널 로더(304)에 의해 사용될 수 없는 메모리 영역을 나타낸다.
본 발명의 다양한 관점에 따르면, 터미널 로더(304)(도 3 참조)는 헤더(401)(도 4 참조)를 수신하고, 그로부터 의사-ROM(이것은 코드 섹션(402)에 대한 ROM 및 자원 데이터(410)으로부터의 수정불가능한 자원을 포함함), 사용자 데이터(이것은 데이터 섹션(403)에 대한 수정가능한 메모리 및 자원 데이터(410)으로부터의 수정가능한 자원을 포함함) 및 패키지의 로딩 시에만 사용한 후에 폐기할 임시 저장 수단(예를 들어, 심볼 섹션(404), 코드 재배치 섹션(405), 데이터 재배치 섹션(406), 스트링 테이블(407), 공유 라이브러리 테이블(408) 및 자원 엔트리(409))의 크기를 추출한다. 터미널 로더(304)는 그 후 대응하는 메모리 영역을 메모리(500)의 적당한 방화벽 부분에 할당한다. 섹션들은 그 다음 할당된 메모리 영역의 적당한 부분 내로 판독된다. 주목할 것은, 섹션들이 패키지 내에서 나타나는 순서가 섹션들이 메모리(500)내에서 나타나는 순서와 동일할 필요는 없으나, 그들 섹션을 할당된 메모리의 부분들에 조금씩(in a 'piecemeal' fashion) 판독함으로써 다운로딩딘 프로그램이 메모리의 정확한 영역들 내로 판독될 수 있으면서도 커다란 중간 저장 영역을 낭비하지 않는다는 것이다.
따라서, 예를 들면, 터미널 로더(304)는 의사-ROM 유형 정보에 대해 메모리 영역(504, 505)내에 메모리를 할당하고, 코드 섹션(402)을 영역(504)내로 판독하며, (409)내의 대응하는 자원 엔트리에 의해서 수정불가능한 것으로서 태그(tag)된 (410으로부터의) 각 자원을 수정가능한 영역(508)내로 판독한다. 터미널 로더(304)는 또한 로딩 동안 임시적으로 사용하기 위해 영역(507)을 할당하며, 심볼 섹션(404), 코드 재배치 섹션(405), 데이터 재배치 섹션(406), 스트링 테이블(407), 공유 라이브러리 테이블(408) 및 자원 엔트리(409)를 영역(507)내로 판독한다. 터미널 로더(304)는 또한 섹션(502)내로부터 (401b)가 나타내는 크기의 MDT에 대한 메모리를 할당하며, 그 MDT를 수정불가능한 영역(502)내로 복사한다. 헤더를 데이터 스트림에서 데이터 영역에 선행케 하여 터미널 로더(304)가 데이터 스트림의 나머지 도입 부분들에 대해 메모리 영역을 할당할 수 있게 하는 것이 바람직하다.
각종 실시예에서, 코드, 데이터, 디스패치 테이블 및 일회용 심볼 영역의 각각은 네트워크를 통한 전송을 위해 압축될 수도 있다. 따라서, 각각의 압축된 영역은 잘 알려진 원리에 의해서 적당한 메모리 영역 내로 복사되고 '적소에 압축(decompressed in place)'될 수 있다. 이러한 데이터 압축을 사용하면, 헤더내에 전송된(그리고 메모리 내에 할당된) 상기한 영역들의 크기가 복호된 크기에 대응할 것이며, 복호는 압축된 영역이 그 할당된 영역 내에 로딩된 후에 진행될 것이다.
도 4 및 5에 도시한 방법은 각 터미널에 중요한 메모리 절약 이점을 제공한다. 각 메모리 영역의 크기를 결정하고 이 크기 정보를 로드 스트림의 시점에서 전송함으로써, 터미널 로드(304)는, 전체 도입 데이터 스트림의 저장을 위해 커다란 임시적인 보유 영역을 할당한 다음에 데이터 스트림의 언패킹(unpack) 및 더 이상의 처리를 위해 별도의 메모리 영역을 할당하는 대신에, 도입 데이터의 보유에 필요한 최소한의 별도의 메모리 영역만이 필요하다.
도 6은 터미널 내로 다운로딩하기 위한 모듈 패키지 내로 오브젝트 코드 명령 세트를 변환하기 위해서 수행될 수도 있는 일련의 단계를 도시한다. 단계(601) 내지 단계(605) 중의 어떤 것들 또는 모두는 다운로딩 소스 또는 인증 소스에서 수행될 수도 있으며, 단계(606) 내지 단계(610)는 HCT와 같은 터미널 내에서 수행될 수도 있다.
단계(601)에서, 도 3의 패키저(303)와 같은 패키징 유틸리티(packaging utility)를 사용하여 터미널내의 알려진 디스패치 테이블과 같은 프로그램 자원에 따라 오브젝트의 부분적인 재배치를 수행할 수도 있다. 이 프로세스는 더욱 상세히 후술한다. 단계(602)에서, 패키지내의 코드, 데이터, 디스패치 테이블 영역 및 일회용 심볼의 크기를 부분적인 재배치에 기초하여 계산할 수도 있다. 단계(603)에서 상기한 영역들의 각각을 압축할 수도 있으며, 단계(604)에서 상기한 크기들을 포함하는 헤더를 가진 패키지를 포맷팅할 수도 있다. 단계(605)에서, 헤더를 가진 포맷팅된 패키지를 네트워크를 통해서 터미널에 전송한다.
단계(606)에서, 수신 터미널은 헤더를 추출하고 대응하는 영역들의 각각에 필요한 메모리 영역을 결정한다. 단계(607)에서, 도 5에 도시한 메모리 할당 방안에 따라서 할당한다. 단계(608)에서, 각 영역을 적소에 복호하여 그 영역을 메모리내의 자신의 전체 용량으로 확장한다. 복호 외에, 터미널은 디지털 기호를 검사하여 각각의 다운로딩된 패키지의 진실성(authenticity)을 확실하게 할 수도 있다. 단계(609)에서, 터미널 로더(304)는 더욱 상세히 후술하는 바와 같이 터미널에서 어떤 나머지 재배치를 수행한다. 마지막으로, 단계(610)에서, 재배치된 어플리케이션을 터미널에서 실행할 수도 있다.
패키저(303)는 패키징 프로세스의 제어를 위해 사용자 입력을 받아들이도록 구현할 수도 있다. 예를 들어, 다음 유형의 코맨드를 사용하여 로드가능 모듈(309)로의 오브젝트 코드(307)의 변환을 제어할 수도 있다.
(1) 새로운 모듈 패키지를 생성하여 그 내에 포함된 모듈의 명칭을 특정. 모듈의 명칭은 모듈 디스패치 테이블의 명칭과 동일할 필요는 없다.
(2) 특정된 파일로부터 코맨드를 판독하여 처리. 예를 들어, 이것은 심볼 명칭의 맵핑을 포함하는 정의 파일(definitions file)를 터미널의 모듈 디스패치 테이블내의 엔트리로 공급함으로써 터미널 상에 상주하는 어플리케이션 프로그래밍 인터페이스(application programming interface : API) 기능에 대한 참조를 분석하는데 사용될 수 있다.
(3) 시스템 자원을 모듈 패키지에 추가. 시스템 자원은 예로서 그래픽 이미지 또는 디지털화된 사운드 파일(digitized sound file)을 실행하기 위해 어플리케이션이 필요로 할 수도 있는 어떤 것이다. 자원은 수정가능한 것 또는 수정불가능한 것일 수 있다. 터미널 로더는 바람직하게는 수정가능한 자원을 판도/기록 메모리 내로 배치하고 수정불가능한 자원을 터미널내의 ROM내로 배치한다.
(4) 심볼 명칭 및 그의 시스템 어드레스를 특정하는 것에 의해 심볼을 패키지에 추가. 심볼은 프로시저, 변수, I/O 디바이스 등을 나타낸다.
(5) 모듈의 기본 어드레스(module's base address)를 세팅. 이것은 모듈의 코드 섹션을 터미널 메모리 내에 로딩할 어드레스를 특정하는데 사용될 수 있다.
(7) 하나 이상의 오브젝트 파일을 그의 파일 명칭을 리스팅하는 것에 의해 모듈 패키지에 추가. 오브젝트 파일은 각종 포맷 예로서 COFF, ELF 또는 PEF 포맷(이들 각각은 공업 표준 포맷임)으로 공급되고, 패키저는 이들을 공통의 포맷으로 변환한다.
(7) 모듈 패키지를 특정 파일 명칭 내에 저장.
(8) 특정 파일 내에 저장된 모듈 패키지를 개방. 이것은 예로서 자원을 모듈 패키지에 추가하기 전에 사용될 수 있다.
(9) 기존 모듈 패키지로부터 시스템 자원을 삭제.
(10) 기존 모듈 패키지로부터 (심볼 자체가 아닌) 심볼 값을 삭제. 따라서, 정의되지 않은 심볼 값이 남는다.
(11) 모듈 패키지의 스트립(strip)(더이상 필요하지 않은 재배치 및 전체 심볼을 삭제한다.). 이것은 로딩을 더 빠르게 하고 모듈 패키지 파일의 크기를 감소시키는 최적화이다.
(12) 재배치(코드와 데이터, 코드와 코드 및 데이터와 데이터간에 참조를 생성하는 프로세스). 이 프로세스는 오브젝트 파일이 모듈 패키지에 추가된 후에 자동적으로 수행될 수 있다. 재배치는 간단히 실행가능한 것들을 추가하거나 모듈 패키지로부터 제거함으로써 이미 재배치된 모듈 패키지에서 반복될 수 있다.
(13) 분석되지 않은 참조를 보여줌. 이것은 심볼이 분석되었음을 확인할 목적으로 패키저가 찾지 못할 수도 있는 것들에 대한 참조를 보여주기 위해서 사용될 수 있다.
물론 다른 방법도 가능하므로, 상기한 유형의 코맨드에 한정할 의도는 없다. 모듈은 다음과 같은 하나 이상의 형태를 취할 수도 있다.
(1) 동적 연결 라이브러리(dynamic link library : DLL)와 유사한 기능 라이브러리; 이들 기능은 터미널에서 다른 어플리케이션에 의해 호출가능하다.
(2) 운영 시스템에 이미 포함된 기능들에 대한 대체 코드를 포함하는 운영 시스템 패치 또는 익스텐션. 일단 패치가 터미널 내로 로딩된 후에는 구 코드에 대한 포인터가 대체 코드에 대한 포인터로 갱신된다.
(3) 새로운 폰트 또는 사운드 클립(new font or sound clip)과 같은 시스템 자원.
(4) 응용 프로그램.
본 발명의 다양한 관점에 따라, 각 모듈에는 터미널에서 모듈을'진수(launch)'시키는데 사용될 수도 있는 독특한 식별자(unique identifier)가 할당될 수도 있다. 또한, 각 모듈은 터미널내의 운영 시스템에 다음과 같은 정보를 포함하는 모듈 디스패치 테이블을 제공할 수도 있다.
(1) 모듈의 디스패치 테이블내의 엔트리 수. 이것은 패키저에 의해서 결정될 수도 있다. 모듈이 터미널 내에 로딩될 때 그의 디스패치 테이블은 시스템의 디스패치 테이블에 추가되며; 그 모듈이 언로딩될 때 그의 디스패치 테이블은 시스템의 디스패치 테이블로부터 언로딩된다.
(2) 모듈 정보 스트링에 대한 포인터. 이것은 버전 번호, 저자, 날짜 등을 식별하는 텍스트 스트링과 같은 모듈에 관한 정보를 포함한다. 이 정보 스트링 엔트리 바로 뒤에는 실제 모듈 디스패치 테이블 자체가 포함된다.
(3) 모듈의 초기화 방법. 이것은 터미널이 모듈의 로딩 후에 즉시 그 모듈을 초기화할 수 잇게 한다. 달리 말해서, 모듈은 그 자체가 초기화되게 하는 루틴에 대한 포인터를 제공한다.
(4) 모듈 중단 방법에 대한 포인터. 이것은 터미널이 모듈을 언로딩되게 하고 그의 디스패치 테이블을 자유롭게 할 수 있다. 달리 말해서, 모듈은 실행 시에 모듈을 언로딩시키고 그의 디스패치 테이블을 자유롭게 하는 루틴에 대한 포인터를 제공한다.
각 모듈 디스패치 테이블은 다음과 같은 항목에 대한 엔트리를 포함할 수도 있다.
(1) 어플리케이션의 메인 루프(application's main loop)에 대한 포인터(이것은 어플리케이션의 일차 엔트리 포인트를 식별한다.). 일단 어플리케이션이 로딩되면, 터미널내의 어플리케이션 매니저(Application Manager)는 어플리케이션의 메인 루프를 실행하여 어플리케이션을 실행한다.
(2) 어플리케이션 플래그(application flags)(이것은 어플리케이션이 백그라운드에서만 실행될 것이고 활성화될 수 없는지 또는 플래그가 없는지를 나타내는데 사용될 수 있다.
(3) 어플리케이션 스택 크기(application stack size) (할당하기 위한 스택의 바이트 크기). 이것은 디폴트 크기 또는 사전설정된 상수로 세팅될 수도 있다.
(4) 어플리케이션 우선순위(application priority)(이것은 현재 실행중인 어플리케이션의 상대적 우선순위를 결정하는데 사용된다).
(5) 어플리케이션 자원에 대한 포인터(그래픽 이미지 또는 디지털화된 사운드 파일과 같이 어플리케이션이 실행을 위해 필요로 하는 것들). 자원을 모듈 패키지에 추가하는 경우, 이 엔트리는 패키저에 의해서 자동적으로 추가될 수도 있다.
도 7a는 본 발명의 다양한 관점에 따라 어떻게 패키저(703)가 어떻게 하나 이상의 컴파일링된 오브젝트 코드 모듈 A, B 및 C를 패키지(704)내로 처리하여 네트워크를 통해서 다운로딩한 후에 터미널 로더(705)에 의해 로딩하는가를 도시한다. 상술한 바와 같이, 각종 사용자 코맨드는 패키저(703)에 입력되어 패키징 프로세스를 제어할 수 있다.
종래와 같이, 각각의 컴파일링된 오브젝트 코드 모듈은 여러 다른 유형의 정보에 대한 각종 섹션을 포함할 수도 있다. 도 7a내의 모듈 A는 실행가능 명령을 포함하는 코드 섹션(700a), 수정가능한 데이터 항목을 포함하는 데이터 섹션(700b), 코드 섹션(700a)내의 어떤 명령들이 재배치될 필요가 있음(즉, 그들이 알려지지 않은 어드레스에 대한 브랜치를 포함함)을 나타내는 플래그를 포함하는 코드 재배치 섹션(700c), 데이터 섹션(700b)내의 어떤 데이터 항목들이 재배치될 필요가 있음(즉, 그들이 알려지지 않은 위치를 참조함)을 나타내는 플래그를 포함하는 데이터 재배치 섹션(700d) 및 특정한 심볼이 국부적인 것인지 또는 외부적인 것인지를 나타내는 심볼 테이블(700f)을 포함한다. 모듈 B 및 C는 유사한 섹션들을 포함한다. 본 발명의 다양한 관점에 따르면, 패키저(703)는 네트워크를 통한 전송 전에 어떤 심볼 및 재배치를 분석하는 것에 의해 모듈 A, B 및 C를 패키지로 패키징함으로써, 전송되어야만 하는 정보의 양이 감소되고 터미널 로더(705)가 필요로 하는 메모리의 양이 감소되게 한다.
도 7b는 패키저(703)에 의해 수행될 수 있는 부분적인 코드 재배치 프로세스(도 6의 단계(601))를 상세히 도시한다. 일반적으로, 어떤 재배치의 수행 전에 모든 심볼을 처리하는 것이 바람직할 수도 있다.
단계(70)에서, 각각의 정의되지 않은 심볼은 오브젝트 모듈 예로서 모듈 A로부터 검색된다. 단계(711)에서, 심볼 테이블 내에 더 이상의 심볼이 있는지의 여부를 판단하는 테스트를 행한다. 이때 더 이상의 심볼이 있다고 가정하면 단계(712)가 실행되고, 그렇지 않으면 단계(717)에서 재배치 엔트리 처리를 행한다.
단계(712)에서는, 정의되지 않은 심볼이 패키지에 알려진 운영 시스템 어드레스를 참조하는 지를 판단하는 테스트를 행한다. 패키저는 예로서 운영 시스템 심볼의 맵핑을 포함하는 파일을 각 터미널 내의 디스패치 테이블 엔트리에 제공하는 사용자 코맨드에 의해 그러한 지식을 얻을 수도 있다. 심볼이 알려진 운영 시스템 심볼인 경우, 단계(713)에서, 심볼의 어드레스를 운영 시스템 루틴 또는 그 심볼에 대한 섹션을 참조하는 디스패치 테이블 엔트리에 대응하는 절대 어드레스로 대체한다. 그 후, 단계(710)에서 다음의 정의되지 않은 심볼에 대한 처리를 재개한다.
단계(714)에서는, 정의되지 않은 심볼이 패키저에 알려진 공유 라이브러리를 참조하는 지의 여부를 판단하는 테스트를 행한다. 패키저는 예로서 공유 라이브러리 명칭의 맵핑을 포함하는 파일에 심볼을 제공하는 사용자 코맨드에 의해 그러한 지식을 얻을 수도 있다. 심볼이 알려진 공유 라이브러리 심볼인 경우, 그 공유 라이브러리 어드레스를 참조하도록 심볼을 수정한다. 이를 위해, 테이블을 공유 라이브러리의 명칭에 관한 정보를 포함하는 패키저(704)에 추가할 수도 있으며, 테이블내의 각 엔트리의 위치를 심볼에 대한 인덱스로서 사용할 수 있다. 패키저는 공유 라이브러리로부터의 관련 정보(예를 들어, 심볼이 있는 데이터 또는 코드 섹션과, 그 섹션 내로의 오프셋)를 패키지 내로 복사하여, 터미널 로더(705)가 네트워크를 통한 다운로딩 후 심볼을 참조하는 어떤 재배치 엔트리의 재배치를 완료할 수 있도록 한다. 단계(715) 후, 단계(710)에서 다음의 정의되지 않은 심볼에 대한 처리를 재개한다.
일반적으로 말해서, 심볼이 운영 시스템 또는 알려진 고유 라이브러리 내에 있지 않은 경우, 단계(716)에서 심볼을 정의되지 않은 채로 남겨 둘 수도 있으며, 터미널 로더(705)는 네트워크를 통해서 차후 로딩되는 또는 터미널 내에 이미 존재하는 정보에 입각해서 심볼 분석 프로세스를 완료할 수도 있다.
모든 정의되지 않은 심볼들을 분석한 후, 단계(717)에서 부분적인 재배치 처리를 개시할 수 있다. 단계(717)에서, 모듈로부터 다음의 재배치 엔트리(코드 또는 데이터)를 검색한다. 단계(718)에서, 분석할 더 이상의 재배치 엔트리가 있는 지의 여부를 판단하는 테스트를 행하여, 모든 재배치 엔트리의 끝에 도달한 경우에는 단계(727)로 분기된다.
단계(718)에서 더 이상의 재배치 엔트리가 존재한다고 가정하면, 단계(719)에서 재배치가 알려진 어드레스를 가진 심볼을 참조하는 지의 여부를 판단하는 테스트를 수행한다. 만일 그러하다면, 단계(723)에서, 엔트리를 재배치하고(즉, 참조된 데이터 또는 명령의 어드레스를 잘 알려진 기법에 따라 조정하고), 재배치 엔트리를 삭제한다. 그런 후, 단계(726)에서 심볼에 대한 참조 카운트를 감소시켜, 제로로 되면 심볼 자체를 심볼 테이블로부터 삭제한다.
단계(720)에서 재배치가 현재 모듈 내로의 절대 브랜치를 포함한다고 판단되면, 단계(724)에서 브랜치 명령을 상대 브랜치로 변환하고 타겟 어드레스(target address)를 재배치가 참조하는 심볼의 어드레스와 심볼로 분기될 브랜치 명령의 어드레스 간의 차이로서 계산한다. 예로서, 오브젝트 코드내의 오프셋 0x2000에 위치하는 명령이 그 코드내의 오프셋0x3000에 위치하는 국부적인 심볼에 대한 절대 브랜치라고 가정한다. 그 브랜치 명령은 상대 브랜치로 변환되고 타겟 어드레스는 0x3000 - 0x2000인 0x1000이다. 재배치 엔트리도 제거되는데, 이는 그것이 더 이상 필요하지 않기 때문이다. 그 후, 단계(726)에서는, 그것이 참조하는 심볼에 대한참조 카운트를 감소시켜, 제로로 되는 경우에 심볼 자체를 삭제한다.
단계(721)에서 재배치가 모듈에 대해 국부적인 데이터 또는 코드를 참조한다고 판단되면, 단계(725)에서 재배치 엔트리를 수정하여, 그것이 코드 또는 데이터 섹션 내로의 오프셋을 적절한 것으로서 포함하도록 하고, 그것이 참조하는 어떤 섹션(코드 또는 데이터 섹션)을 나타내는 비트가 세팅되도록 하며, 그 정보가 존재하고 어떠한 심볼도 필요하지 않음을 나타내게 플러그가 세팅되도록 한다. 그 후, 단계(726)에서 대응하는 심볼 참조 카운트를 감소시켜, 그 참조 카운트가 제로로 되는 경우에 심볼을 삭제한다.
단계(719, 720, 또는 721)에서 재배치가 어떠한 기준에도 일치하지 않으면, 단계(722)에서 재배치 엔트리를 홀로 남겨두고, 단계(717)에서 다음의 재배치 엔트리에 대한 처리를 재개한다. 달리 말해서, 재배치는 터미널 내로의 다운로딩 후 터미널 로더(705)가 재배치하도록 남겨진다.
단계(718)를 다시 참조하면, 일단 모든 재배치 엔트리가 처리된 후, 단계(727)에서 재배치 및 심볼 섹션을 '압축'한다. 달리 말해서, 삭제된 심볼 및 재배치 엔트리에 대응하는 메모리 공간을 제거하여 패키지(704)내에 나머지 정의되지 않은 심볼 또는 재배치 엔트리를 저장하는데 필요한 전체 공간을 '압축'한다. 또한, 심볼 명칭과 연관된 문자 스트링을 저장하는데 사용되는 스트링 테이블 섹션을 압축하여 나머지 심볼에 대해 필요한 스트링만이 유지되게 할 수 있다. 일단 이 압축 결과, 모듈 A, B 및 C의 전송에 필요한 대역폭이 감소된다는 것인데, 이는 패키저(703)가 터미널 로더(705)에 의해서 수행될 필요가 있을 심볼 분석 및 재배치중의 어떤 것들을 수행했기 때문이다. 또한, 상기한 압축의 결과, 터미널 로더(705)가 임시적인 로딩 정보 즉 정의되지 않은 심볼 및 재배치 엔트리를 저장하기 위해 각 터미널 내에 할당될 메모리 공간이 덜 필요하다는 것이다.
단계(728)에서는 상기 실행된 단계들에 기초하여 패키지에 대한 헤더를 생성한다. 예로서, 도 4에 도시한 바와 같이, 집합 코드 섹션(aggregate data section)(403)의 크기, 디스패치 테이블(404a)의 크기 및 잔여 배치 정보 예로서 (404 내지 409)를 결정한다. 이들 크기는 코드, 데이터 및 다른 영역을 패키저에 대한 각 모듈로부터 추출하고 그들을 함께 가산하여 결정함으로써, 상술한 부분적인 재배치 프로세스의 결과로써 삭제되는 심볼이 적어진다.
각 패키저의 디스패치 테이블 부분은 매크로(macro)를 사용하여 각 모듈에 대한 생성된 디스패치 테이블들을 연결함으로써 생성될 수 있다. 일반적으로 말해서, 각 모듈은 모듈 외부로 호출될 수 있는 어떤 기능(소위 '수출' 기능)에 대한 엔트리를 포함하는 그 자신의 디스패치 테이블과 연관될 수도 있다. 이들 디스패치 테이블은, 연결된 후, 각 ROM내로 저장되어 변질을 방지할 수 있다. 매크로는 모듈내의 모든 '수출' 기능에 대한 디스패치 테이블을 발생하는데 사용될 수 있으며, 이 디스패치 테이블은 예로서 (700b)와 같은 데이터 섹션 내에 초기에 저장될 수 있다(도 7a 참조). 패키저(703)(도 7a 참조)는 각각의 그러한 디스패치 테이블의 위치를 찾고, 그의 크기를 제1 엔트리로서 초기화하며, 그 테이블들을 터미널 로더(705)에 대한 다운로딩을 위해 디스패치 테이블 엔트리 내로 연결할 수 있다. 터미널 로더(705)는 테이블의 길이를 추출할 수 있으며, 그로부터의 엔트리를 메모리 내로 복사할 수 있는데, 그들 엔트리는 운영 시스템 디스패치 테이블과 연결될 수 있다.
도 7c는 수개의 입력 파일의 각각으로부터의 섹션들이 어떻게 도 7b에 도시한 처리 단계의 수행 전에 조합될 수 있는 지를(즉, 도 7a에 도시한 바와 같이, 다수의 사전 컴파일링된 입력 파일들이 단일의 패키저(704)내로 조합될 수 있는 지를) 도시한 것이다. 단계(730)에서, 각 입력 파일로부터의 대응하는 섹션들을 연결에 의해 단일 섹션 내로 조합한다(즉, 코드 섹션들의 모두를 단일 코드 섹션 내로 연결하고, 데이터 섹션들의 모두를 단일 코드 섹션 내로 연결하는 등).
다음, 단계(731)에서는, 섹션들 내에 포함된 모든 오프셋을 연결을 고려하여 조정한다. 따라서, 한 파일내의 다른 섹션들에 대한 그 파일내의 모든 오프셋 또는 인덱스를 조정해야 하는데, 이는 그들이 이제 이전 파일을 추종할 수도 있기 때문이다. 예를 들어, 제1 파일이 300바이트의 크기를 가진 코드 섹션을 가지면, 제2 파일의 코드 섹션내의 오프셋에 대한 제2 파일내의 참조는 300 만큼 증가되어야 하는데, 이는 그 코드가 제1 파일의 코드 섹션 뒤에 연결되는 때 그 양만큼 오프셋되기 때문이다.
마지막으로, 단계(732)에서, 모든 재배치 엔트리, 심볼 테이블 엔트리 및 스트링 테이블 엔트리를 파일 유형(예로서, COFF, ELF 또는 PEF 포맷)과 무관한 공통의 포맷으로 변환할 수 있다. 어떤 적합한 포맷을 사용할 수 있는데, 이것은 포맷들 간의 직접적인 변환을 통해 행할 수 있다(예로서, 공통 포맷은 그 포맷과 동일한 의미론 정보(semantic information)를 포함할 수 있으나, 그 대신 다른 구조적인 포맷을 사용할 수 있다.). 섹션들 중의 어떤 것들을 직접 포함하지는 않으나 그 대신에 그들 섹션이 추론될 수 있게 하는 정보를 포함하는 입력 포맷의 경우, 공통 포맷으로의 적정한 변환을 입력 포맷내의 정보에 근거해서 수행한다.
도 8은 터미널내의 나머지 코드 재배치 단계들(도 6의 단계(609)) 즉 어떻게 터미널 로더(705)가 터미널에서의 실행을 위해 각각의 다운로딩된 패키지를 준비하는데 필요한 나머지 단계들을 수행하는가를 상세히 도시한다. 단계(801)에서, 다운로딩된 패키지 내에 참조되는 모든 공유 라이브러리의 위치를 찾아내어 그 라이브러리를 맵핑한다. 일반적으로 말해서, 터미널 로더(705)는 공유 라이브러리의 명칭에 인덱스를 맵핑하는 다운로딩된 패키지 내에 포함된 공유 라이브러리 테이블을 사용하여, 패키지가 필요로 하는 모든 공유 라이브러리를 찾아내고, 공유 라이브러리에 대한 코드 및 데이터에 대한 포인터들을 포함하는 라이브러리의 정보 구조에 대해 각 인덱스로부터의 새로운 테이블 맵핑을 구축한다. 공유 라이브러리를 찾지 못하면, 경고를 기록하고 테이블 냉의 정보 구조 어드레스를 제로로 세팅하여, 공유 라이브러리가 존재하지 않음을 나타낼 수 있다.
단계(802)에서, 다음의 재배치 엔트리를 다운로딩 패키지로부터 추출한다. 단계(803)에서, 분석할 더 이상의 재배치 엔트리가 있는 지를 알기 위한 테스트를 행하여, 재배치 엔트리 섹션의 끝에 이른 경우에는 단계(812)로 진행해서 재배치를 완료한다.
처리할 더 이상의 재배치 엔트리가 있다고 가정하면, 단계(804)에서 재배치가 공유 라이브러리내의 심볼을 참조하는 지의 여부를 판단하는 테스트를 행한다.판단 결과, 그러하다면, 단계(807)에서 공유 라이브러리 위치에 근거해서 엔트리를 재배치하고 재배치를 삭제한다. 이것은 심볼에 대한 인덱스에 의해서 참조되는 공유 라이브러리 정보 구조의 위치를 찾아냄으로써 행할 수 있다. 공유 라이브러리 정보 구조가 제로인 경우(공유 라이브러리가 존재하지 않음을 나타내는 경우)에는 재배치를 건너뛰고, 공유 라이브러리 정보 구조가 제로가 아닌 경우에는 정보 구조에서 규정되는 코드 또는 데이터의 어드레스와 심볼내의 표시된 오프셋을 사용해서 재배치를 행한다. 그런 후 단계(802)에서 처리를 재개한다.
단계(805)에서, 재배치 엔트리는 모듈 디스패치 테이블(MDT)내의 심볼을 참조하며, 그 다음 단계(808)에서 디스패치 테이블을 사용해서 참조(명령 또는 데이터)를 재배치한다. 터미널 로더(705)는 정보 구조에 대한 명칭의 맵핑을 유지할 수 있다. 이 정보 구조는 로딩된 각 패키지에 대한 디스패치 테이블 어드레스를 포함한다. MDT가 모듈에 대한 국부적인 MDT이면, 터미널 로더(705)에 의해서 초기화되는 실제 MDT를 그 모듈 내의 MDT 대신에 사용할 수도 있다.
단계(806)에서 재배치가 모듈에 대해 국부적인 코드 또는 데이터를 참조하면, 단계(809)에서 종래의 방법들을 사용해서 엔트리를 재배치하는데, 이는 코드 및 데이터 섹션의 시작의 어드레스가 터미널(705)이 알지 못하고 재배치가 섹션 인디케이터(section indicator)(코드 또는 데이터) 및 섹션 내로의 오프셋을 포함하기 때문이다.
재배치가 단계(804, 805 또는 806)내의 테스트들 중의 어떤 것도 충족하지 못하면, 재배치가 정의되지 않는다. 모든 재배치 엔트리가 처리된 후에는,단계(812)에서 재배치를 완료하고 그 처리된 모듈을 실행할 수도 있다.
당업자라면 알 수 있듯이, 본 발명은 다양하게 수정 및 변경될 수 있으며, 특정 값에 대한 참조는 단지 예에 불과하다. 본 발명을 케이블 텔레비젼 네트워크에 대해 적용하였으나, '네트워크'란 용어로써 위성 전송 네트워크, 무선 전송 수단 및 다른 통신 매체를 포괄하고자 한다. 또한, '모듈'이란 용어는 응용 프로그램, 부분적인 프로그램, 운영 시스템, '패치(patches)', 데이터 테이블, 해석가능 명령 그룹(groups of interpretable instructions)등을 포함한다.
따라서, 당업자라면 이해할 수 있듯이, 본 발명은 특정 설명된 범위 내에서가 아니라 청구의 범위 내에서 실시될 수 있다.

Claims (27)

  1. 터미널 내에서 실행하기 위한 컴퓨터 프로그램을 준비하는 방법에 있어서,
    (1) 컴퓨터에서, 정의되지 않은 심볼을 포함하는 오브젝트 코드를, 상기 오브젝트 코드 내의 소정 심볼들과 터미널 내의 알려진 어드레스를 상관시키는 테이블에 근거하여 부분적으로 분석된 심볼을 포함하는 패키지로 변환하는 단계 -상기 패키지는 상기 부분적으로 분석된 심볼을 참조하는 컴퓨터 명령을 포함하는 코드 섹션과, 수정가능한 데이터 값을 포함하는 데이터 섹션과, 상기 코드 섹션 및 데이터 섹션의 크기를 나타내는 헤더를 포함함-;
    (2) 상기 패키지를 네트워크를 통해 상기 터미널로 전송하는 단계;
    (3) 상기 터미널에서, 상기 단계(2)에서 전송된 상기 패키지를 수신하는 단계; 및
    (4) 상기 터미널에서, 상기 패키지 내의 나머지 정의되지 않은 심볼을 상기 터미널 내에 저장된 정보에 기초하여 분석하는 단계
    를 포함하는 컴퓨터 프로그램 준비 방법.
  2. 제1항에 있어서,
    상기 오브젝트 코드는 상기 오브젝트 코드 내의 다른 곳에 있는 정의되지 않은 메모리 위치에 대한 기준을 제각기 나타내는 재배치 엔트리들을 포함하며, 상기 방법은 상기 단계(2) 전에
    (a) 상기 재배치 엔트리들 중의 하나와 상기 단계(1)에서 분석된 심볼에 기초하여 상기 정의되지 않은 메모리 위치에 대한 하나 이상의 기준을 재배치하는 단계;
    (b) 상기 재배치 엔트리를 상기 오브젝트 코드로부터 삭제하는 단계; 및
    (c) 상기 정의되지 않은 메모리 위치에 대한 상기 재배치된 기준을 패키지 내로 저장하는 단계
    를 더 포함하고, 상기 단계(4)는 상기 패키지 내의 나머지 재배치 엔트리를 상기 터미널 내에 저장된 정보에 기초하여 분석하는 단계를 포함하는 컴퓨터 프로그램 준비 방법.
  3. 제2항에 있어서,
    상기 단계(a)는 절대 메모리 참조를 상대 메모리 참조로 대체하는 단계를 포함하는 컴퓨터 프로그램 준비 방법.
  4. 제1항에 있어서,
    상기 단계(1) 전에, 대응하는 코드 및 데이터 섹션을 개별적으로 컴파일링된 모듈로부터 상기 오브젝트 코드 내로 연결하는 단계를 더 포함하는 컴퓨터 프로그램 준비 방법.
  5. 제1항에 있어서,
    상기 단계(4) 전에:
    (5) 상기 터미널 내에 있는 메모리의 보호된 부분 내의 수정불가능한 코드 섹션의 크기에 대응하는 제1 메모리 영역과, 상기 터미널 내에 있는 메모리의 보호되지 않는 부분 내의 수정가능한 데이터 섹션의 크기에 대응하는 제2 메모리 영역을 할당하는 단계;
    (6) 상기 수정불가능한 코드 섹션을 상기 수신한 패키지로부터 상기 메모리의 보호된 부분 내로 저장하고, 상기 수정가능한 데이터 섹션을 상기 수신한 패키지로부터 상기 메모리의 보호되지 않은 부분 내로 저장하는 단계
    를 더 포함하는 컴퓨터 프로그램 준비 방법.
  6. 제5항에 있어서,
    상기 단계(6)는 적어도 하나의 사전 로딩된 응용 프로그램을 이미 포함하는 메모리 내로 상기 수정불가능한 코드 섹션 및 상기 수정가능한 데이터 섹션을 저장하는 단계를 포함하는 컴퓨터 프로그램 준비 방법.
  7. 제1항에 따라 준비되는 컴퓨터 프로그램을 포함하는 것을 특징으로 하는 터미널.
  8. 컴퓨터 프로그램을 가정용 통신 터미널(HCT) 내로 다운로딩하기 위한 방법에 있어서,
    (0) 컴퓨터에서, 오브젝트 코드 집단 내에 포함된 적어도 몇 개의 실행가능한 컴퓨터 명령을 모듈 디스패치 테이블 내에 포함된 심볼들에 대한 참조들을 기초로 하여 재배치함으로써, 부분적으로 재배치된 오브젝트 코드를 생성하는 단계;
    (1) 컴퓨터에서, 상기 부분적으로 재배치된 오브젝트 코드를 패키지로 변환하는 단계 -상기 패키지는 실행가능한 컴퓨터 명령들을 포함하는 코드 섹션과, 상기 코드 섹션으로부터 분리되고 수정가능한 데이터 요소들을 포함하는 데이터 섹션과, 상기 코드 섹션 및 데이터 섹션으로부터 분리되며 상기 코드 섹션 내의 실행가능한 컴퓨터 명령들을 재배치하는데 필요한 임시 정보를 포함하는 임시 저장 섹션과, 상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션의 각각에 대한 크기를 포함하는 헤더를 포함함-;
    (2) 상기 단계(1)의 패키지를 네트워크를 통해 전송하기 위한 단계;
    (3) 상기 HCT에서, 상기 단계(2)에서 전송된 상기 패키지를 수신하는 단계;
    (4) 상기 헤더 내에 포함된 상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션의 크기에 따라 이들 각 섹션에 대해서 상기 HCT의 메모리 내에 개별 영역을 할당하는 단계; 및
    (5) 상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션의 각각을 상기 수신한 패키지로부터 상기 할당된 개별 메모리 영역 내로 복사하는 단계
    를 포함하는 컴퓨터 프로그램 다운로딩 방법.
  9. 제8항의 방법에 따라 다운로딩된 컴퓨터 프로그램을 포함하는 가정용 통신터미널.
  10. 제8항에 있어서,
    상기 할당된 개별 메모리 영역 내에 있는 상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션 중의 적어도 하나를 압축 해제하는 단계를 더 포함하는 컴퓨터 프로그램 다운로딩 방법.
  11. 제8항에 있어서,
    상기 수신한 패키지로부터 복사된 상기 하나 이상의 실행가능한 컴퓨터 명령을 재배치하는 단계를 더 포함하는 컴퓨터 프로그램 다운로딩 방법.
  12. 제11항에 있어서,
    상기 재배치하는 단계는 상기 모듈 디스패치 테이블 내에 포함된 심볼에 대한 참조에 기초하여 상기 하나 이상의 실행가능한 컴퓨터 명령을 재배치하는 단계를 더 포함하는 컴퓨터 프로그램 다운로딩 방법.
  13. 제8항에 있어서,
    상기 단계(1) 전에, 상기 컴퓨터 내에서, 상기 모듈 디스패치 테이블 내에 포함된 심볼에 대한 참조에 기초하여 상기 실행가능한 컴퓨터 명령들 중의 적어도 몇 개를 재배치하는 단계를 더 포함하는 컴퓨터 프로그램 다운로딩 방법.
  14. 제8항에 있어서,
    상기 단계(5)는 상기 코드 섹션을 수정으로부터 보호되는 메모리 영역 내로 복사하고, 상기 임시 저장 섹션을 수정될 수 있는 메모리 영역 내로 복사하는 단계를 포함하는 컴퓨터 프로그램 다운로딩 방법.
  15. 예약 텔레비젼 네트워크로부터 정보를 수신하기에 적합한 터미널에 있어서,
    수정으로부터 보호된 메모리 위치를 포함하는 제1 영역과 수정으로부터 보호되지 않는 메모리 위치를 포함하는 제2 영역으로 분할된 메모리;
    실행가능한 컴퓨터 명령들을 포함하는 코드 섹션과, 상기 코드 섹션으로부터 분리되고 수정가능한 데이터 요소들을 포함하는 데이터 섹션과, 상기 코드 섹션 및 데이터 섹션으로부터 분리되며 상기 코드 섹션 내의 실행가능한 컴퓨터 명령들을 재배치하는데 필요한 임시 정보를 포함하는 임시 저장 섹션과, 상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션의 각각에 대한 크기를 포함하는 헤더를 포함하는 패키지를 상기 네트워크로부터 수신하기 위한 수단;
    상기 코드 섹션을 저장하는 상기 제1 영역의 일부분과 상기 데이터 섹션 및 상기 임시 저장 섹션을 저장하는 상기 제2 영역의 일부분을 상기 헤더로부터 추출된 크기들에 기초하여 할당하기 위한 수단; 및
    상기 코드 섹션을 상기 제1 영역 내로 복사하고 상기 데이터 섹션 및 상기 임시 저장 섹션을 상기 제2 영역 내로 복사하기 위한 수단
    을 포함하며, 상기 메모리는 상기 코드 섹션 내의 하나 이상의 상기 실행가능한 컴퓨터 명령들 내의 참조들을 상기 터미널 내에서 실행되는 운영 시스템의 부분들에 맵핑시키는 디스패치 테이블을 더 포함하는 터미널.
  16. 제15항에 있어서,
    상기 코드 섹션 내의 하나 이상의 실행가능한 컴퓨터 명령을 상기 임시 저장 섹션 내에 포함된 정보에 기초하여 재배치하기 위한 수단을 더 포함하는 터미널.
  17. 제15항에 있어서,
    상기 메모리는 상기 코드 섹션 내의 하나 이상의 상기 실행가능한 컴퓨터 명령들 내의 참조들을 상기 터미널 내에서 실행되는 운영 시스템의 부분들에 맵핑시키는 디스패치 테이블을 더 포함하는 터미널.
  18. 제17항에 있어서,
    상기 실행가능한 코드 섹션은 상기 디스패치 테이블의 지식에 기초하여 상기 네트워크를 통한 전송 전에 재배치되는 명령을 포함하는 터미널.
  19. 제15항에 있어서,
    상기 코드 섹션, 데이터 섹션 및 임시 저장 섹션의 각각은 압축되며, 상기 터미널은 이들 섹션을 제각기의 메모리 영역 내로 복사한 후에 각 섹션을 압축 해제하는 터미널.
  20. 제15항에 있어서,
    상기 터미널은 상기 실행가능한 컴퓨터 명령들의 하나 이상을 재배치하기 위해 상기 패키지 내에 포함된 공유 라이브러리 테이블을 사용하며, 상기 임시 저장 영역 내의 대응하는 재배치 엔트리를 삭제하는 터미널.
  21. 컴퓨터 코드를 예약 텔레비젼 터미널로 전송하기 위한 것으로서, 네트워크에 결합된 적어도 하나의 컴퓨터를 포함하는 시스템에 있어서,
    상기 컴퓨터는
    (1) 소스 코드를 정의되지 않은 심볼 및 상기 예약 텔레비젼 터미널 내에서 실행되는 실행가능한 명령을 포함하는 오브젝트 코드로 컴파일링하는 단계;
    (2)어떤 정의되지 않은 심볼들을 상기 예약 텔레비젼 터미널 내의 알려진 어드레스와 상관시키는 테이블에 근거해서 상기 오브젝트 코드 내의 상기 정의되지 않은 심볼들의 전체가 아닌 몇 개를 분석함으로써 상기 오브젝트 코드를 모듈 패키지로 패키징하는 단계 -상기 모듈 패키지는 상기 부분적으로 분석된 심볼을 참조하는 컴퓨터 명령을 포함하는 코드 섹션과, 수정가능한 데이터 값을 포함하는 데이터 섹션과, 상기 코드 섹션 및 데이터 섹션의 크기를 나타내는 헤더를 포함함; 및
    (3) 상기 모듈 패키지를 상기 네트워크를 통해 상기 예약 텔레비젼 터미널로 전송하기 위한 단계
    를 수행하도록 프로그램된 컴퓨터 코드 전송 시스템.
  22. 제21항에 있어서,
    상기 컴퓨터는 상기 심볼에 대응하는 기능이 상기 예약 텔레비젼 터미널내의 알려진 터미널 디스패치 테이블을 통해 액세스될 수 있다는 지식에 기초하여 재배치가능한 명령을 절대 명령으로 대체하도록 프로그램된 컴퓨터 코드 전송 시스템.
  23. 제21항에 있어서,
    상기 모듈 패키지는 응용 프로그램을 포함하는 컴퓨터 코드 전송 시스템.
  24. 제21항에 있어서,
    상기 네트워크는 유선 예약 케이블 텔레비젼 네트워크를 포함하는 컴퓨터 코드 전송 시스템.
  25. 제21항에 있어서,
    상기 네트워크는 위성 전송 네트워크를 포함하는 컴퓨터 코드 전송 시스템.
  26. 분석된 심볼 및 분석되지 않은 심볼을 포함하는 패키지를 예약 텔레비젼 네트워크를 통해 다운로딩 소스로부터 수신하기에 적합한 예약 텔레비젼 터미널에 있어서,
    상기 다운로딩 소스로부터 수신된 명령을 실행하는 중앙 처리 유니트; 및
    수정으로부터 보호된 메모리 위치를 포함하는 제1 영역과 수정으로부터 보호되지 않는 메모리 위치를 포함하는 제2 영역으로 분할된 메모리
    를 구비하며, 상기 중앙 처리 유니트 및 상기 메모리는:
    (1) 상기 분석된 심볼 및 분석되지 않은 심볼을 포함하는 패키지를 상기 예약 텔레비젼 네트워크를 통해 상기 다운로딩 소스로부터 수신하는 단계;
    (2) 상기 패키지로부터의 코드 섹션을 저장하기 위해 상기 제1 영역 내에 제1 메모리 블록을 할당하고 상기 패키지로부터의 데이터 섹션을 저장하기 위해 상기 제2 영역 내에 제2 메모리 블록을 할당하되, 상기 패키지와 관련하여 전송된 코드 및 데이터 크기에 기초하여 수행하는 단계;
    (3) 상기 코드 섹션을 제1 영역 내로 복사하고 상기 데이터 섹션을 제2 영역 내로 복사하는 단계; 및
    (4) 상기 패키지내의 분석되지 않은 심볼을 상기 패키지 내에 포함된 정보에 기초하여 분석하는 단계
    를 수행하는 터미널 로더 기능으로 프로그램된 예약 텔레비젼 터미널.
  27. 제26항에 있어서,
    상기 메모리는 상기 코드 섹션 내의 하나 이상의 명령 내의 참조들을 상기 터미널 내에서 실행되는 운영 시스템의 부분들에 맵핑시키는 디스패치 테이블을 포함하는 예약 텔레비젼 터미널.
KR10-1998-0704950A 1995-12-29 1996-12-27 네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법 KR100422103B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/578,202 US5734822A (en) 1995-12-29 1995-12-29 Apparatus and method for preprocessing computer programs prior to transmission across a network
US8/578,202 1995-12-29
US08/578,202 1995-12-29

Publications (2)

Publication Number Publication Date
KR19990076824A KR19990076824A (ko) 1999-10-25
KR100422103B1 true KR100422103B1 (ko) 2004-04-17

Family

ID=24311850

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0704950A KR100422103B1 (ko) 1995-12-29 1996-12-27 네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법

Country Status (6)

Country Link
US (1) US5734822A (ko)
EP (1) EP0870235B1 (ko)
KR (1) KR100422103B1 (ko)
AU (1) AU1466497A (ko)
DE (1) DE69637182T2 (ko)
WO (1) WO1997024674A1 (ko)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3813669B2 (ja) * 1995-10-27 2006-08-23 松下電器産業株式会社 端末装置及び端末装置の能力情報通知方法
US5859982A (en) * 1996-06-05 1999-01-12 Sun Microsystems, Inc. Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
US5922050A (en) * 1996-07-02 1999-07-13 Sun Microsystems, Inc. Method and apparatus for controlling a device on a network
US6192469B1 (en) * 1996-09-17 2001-02-20 Standard Microsystems Corporation Relocatable code storage in an integrated circuit with an embedded microprocessor
JP3605242B2 (ja) * 1996-11-12 2004-12-22 富士通株式会社 データ送信装置、データ受信装置、およびデータファイル記憶媒体
US6758755B2 (en) 1996-11-14 2004-07-06 Arcade Planet, Inc. Prize redemption system for games executed over a wide area network
US5950010A (en) * 1996-11-25 1999-09-07 J.D. Edwards World Source Co. System and method for customized application package building and installation
US6928653B1 (en) 1997-11-06 2005-08-09 United Video Properties, Inc. Interactive electronic television program guide with database configurability
US6253370B1 (en) * 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
US6658492B1 (en) * 1998-03-20 2003-12-02 Sun Microsystems, Inc. System and method for reducing the footprint of preloaded classes
JPH11312154A (ja) * 1998-04-28 1999-11-09 Nec Corp 協同作業支援システム及び記録媒体
US6360255B1 (en) * 1998-06-25 2002-03-19 Cisco Technology, Inc. Automatically integrating an external network with a network management system
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
US6578201B1 (en) * 1998-11-20 2003-06-10 Diva Systems Corporation Multimedia stream incorporating interactive support for multiple types of subscriber terminals
US6751670B1 (en) * 1998-11-24 2004-06-15 Drm Technologies, L.L.C. Tracking electronic component
US7127515B2 (en) 1999-01-15 2006-10-24 Drm Technologies, Llc Delivering electronic content
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
AU5910800A (en) * 1999-06-30 2001-01-31 Accenture Llp A system, method and article of manufacture for tracking software sale transactions of an internet-based retailer for reporting to a software publisher
US7640571B1 (en) * 1999-07-15 2009-12-29 General Instrument Corporation Method and apparatus for preventing disruptions in set-top terminal function due to the download of updated programming or data to the set-top terminal
US6904611B1 (en) * 1999-09-03 2005-06-07 General Instrument Corporation Method and system for directing the download of software and firmware objects over a network such as a cable television system
US6578194B1 (en) * 1999-09-08 2003-06-10 International Business Machines Corporation System and method using extended relocation types and operations in relocating operations
US20060195400A1 (en) * 2000-10-13 2006-08-31 Patrick Patterson Controlling access to electronic content
US6542167B1 (en) 2000-01-28 2003-04-01 Wind River Systems, Inc. System and method for flexible software linking
US8090856B1 (en) * 2000-01-31 2012-01-03 Telecommunication Systems, Inc. Intelligent messaging network server interconnection
US7035989B1 (en) 2000-02-16 2006-04-25 Sun Microsystems, Inc. Adaptive memory allocation
US20020046396A1 (en) * 2000-08-02 2002-04-18 Knoll Stephen J. Object file server (OFS)
US7539828B2 (en) * 2000-08-08 2009-05-26 Faronics Corporation Method and system for automatically preserving persistent storage
US20020087956A1 (en) * 2000-09-26 2002-07-04 Pierre-Alain Darlet System and method for linear processing of software modules
US7406681B1 (en) 2000-10-12 2008-07-29 Sun Microsystems, Inc. Automatic conversion of source code from 32-bit to 64-bit
US6957208B1 (en) 2000-10-31 2005-10-18 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for performance analysis using semantic knowledge
CA2346762A1 (en) * 2001-05-07 2002-11-07 Ibm Canada Limited-Ibm Canada Limitee Compiler generation of instruction sequences for unresolved storage devices
US7299462B2 (en) * 2001-05-07 2007-11-20 Stmicroelectronics Limited Relocation format for linking
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
GB0116116D0 (en) * 2001-06-30 2001-08-22 Koninkl Philips Electronics Nv Receiver apparatus and method
US6779732B2 (en) 2001-08-31 2004-08-24 Schulumberger Malco, Inc. Method and apparatus for linking converted applet files
FR2831684B1 (fr) * 2001-10-31 2004-03-05 Gemplus Card Int Installation de programme compile notamment dans une carte a puce
TW571234B (en) * 2001-11-06 2004-01-11 Penbex Data Systems Inc Method and device for packaging and decomposing image file, and image file capable of being packaged and decomposed
JP4087097B2 (ja) * 2001-11-12 2008-05-14 株式会社日立製作所 データベース管理システム情報を考慮したデータ再配置方法およびデータ再配置を行う計算機システム
NL1019876C2 (nl) * 2002-01-31 2003-08-04 Chess Embedded Technology B V Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting.
US20050195975A1 (en) * 2003-01-21 2005-09-08 Kevin Kawakita Digital media distribution cryptography using media ticket smart cards
US7251832B2 (en) * 2003-03-13 2007-07-31 Drm Technologies, Llc Secure streaming container
US7596303B2 (en) * 2003-03-31 2009-09-29 Samsung Electronics Co., Ltd. Apparatus for use with information storage medium containing enhanced AV (ENAV) buffer configuration information, reproducing method thereof and method for managing the buffer
GB2406663B (en) * 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
WO2005043802A1 (en) 2003-10-20 2005-05-12 Drm Technologies, Llc Securing digital content system and method
US20050096918A1 (en) * 2003-10-31 2005-05-05 Arun Rao Reduction of memory requirements by overlaying buffers
US7443883B2 (en) * 2004-12-07 2008-10-28 Comcast Cable Holdings, Llc Method and system of providing customer premise equipment code
EP1768346A1 (en) * 2005-09-23 2007-03-28 Microsoft Corporation Provision of game applications across a network according to the display characteristics of a user terminal
US7581141B2 (en) * 2006-03-01 2009-08-25 Sun Microsystems, Inc. Kernel module compatibility validation
US8959311B2 (en) * 2006-08-25 2015-02-17 Texas Instruments Incorporated Methods and systems involving secure RAM
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
GB2469528B (en) * 2009-04-18 2011-10-05 Saffron Digital Ltd Transcoding video data
US8584120B2 (en) * 2009-11-23 2013-11-12 Julian Michael Urbach Stream-based software application delivery and launching system
US9075634B2 (en) * 2010-07-12 2015-07-07 International Business Machines Corporation Minimizing overhead in resolving operating system symbols
US9213802B2 (en) * 2010-10-15 2015-12-15 Roche Diabetes Care, Inc. Updatability of structured blood glucose tests performed on handheld diabetes management devices
US9235458B2 (en) 2011-01-06 2016-01-12 International Business Machines Corporation Methods and systems for delegating work objects across a mixed computer environment
US9052968B2 (en) * 2011-01-17 2015-06-09 International Business Machines Corporation Methods and systems for linking objects across a mixed computer environment
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
US9357210B2 (en) 2013-02-28 2016-05-31 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
CN105528365A (zh) * 2014-09-30 2016-04-27 国际商业机器公司 用于管理可执行文件的方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4064490A (en) * 1975-09-10 1977-12-20 Nagel Robert H Information retrieval system having selected purpose variable function terminal
US4694490A (en) * 1981-11-03 1987-09-15 Harvey John C Signal processing apparatus and methods
US4965825A (en) * 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US4982430A (en) * 1985-04-24 1991-01-01 General Instrument Corporation Bootstrap channel security arrangement for communication network
CA1337132C (en) * 1988-07-15 1995-09-26 Robert Filepp Reception system for an interactive computer network and method of operation
US5003591A (en) * 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
DE416331T1 (de) * 1989-08-31 1991-07-04 Yokogawa Electric Corp., Musashino, Tokio/Tokyo Line computer.
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5367571A (en) * 1992-12-02 1994-11-22 Scientific-Atlanta, Inc. Subscriber terminal with plug in expansion card
US5440632A (en) * 1992-12-02 1995-08-08 Scientific-Atlanta, Inc. Reprogrammable subscriber terminal
US5600573A (en) * 1992-12-09 1997-02-04 Discovery Communications, Inc. Operations center with video storage for a television program packaging and delivery system
US5600364A (en) * 1992-12-09 1997-02-04 Discovery Communications, Inc. Network controller for cable television delivery systems
US5410698A (en) * 1993-10-12 1995-04-25 Intel Corporation Method and system for dynamic loading of software libraries
US5537141A (en) * 1994-04-15 1996-07-16 Actv, Inc. Distance learning system providing individual television participation, audio responses and memory for every student
US5583563A (en) * 1995-01-12 1996-12-10 Us West Marketing Resources Group, Inc. Method and system for delivering an application in an interactive television network

Also Published As

Publication number Publication date
EP0870235A1 (en) 1998-10-14
AU1466497A (en) 1997-07-28
WO1997024674A1 (en) 1997-07-10
EP0870235B1 (en) 2007-07-25
US5734822A (en) 1998-03-31
DE69637182D1 (de) 2007-09-06
DE69637182T2 (de) 2008-07-31
EP0870235A4 (en) 1999-03-31
KR19990076824A (ko) 1999-10-25

Similar Documents

Publication Publication Date Title
KR100422103B1 (ko) 네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법
US6654765B2 (en) Method and apparatus for providing plug-in media decoders
US6295645B1 (en) Method and apparatus for providing downloadable functionality to an embedded coprocessor
US6980979B2 (en) Method and apparatus for customizing Java API implementations
US20060090157A1 (en) Method of executing virtual machine application program and digital broadcast receiver using the same
CA2145923C (en) Computer operating system providing means for formatting information in accordance with specified cultural preferences
US6694318B2 (en) Split file system
US7243346B1 (en) Customized library management system
KR101104035B1 (ko) 자원 매니페스트
US7735057B2 (en) Method and apparatus for packaging and streaming installation software
US6219787B1 (en) Method and apparatus for extending security model to native code
US6029000A (en) Mobile communication system with cross compiler and cross linker
US6272674B1 (en) Method and apparatus for loading a Java application program
US5884097A (en) Data structure and methods for defining and using attribute data blocks to instantiate objects and describe changes to objects
EP0811910B1 (en) Computer system and method for executing architecture specific code with reduced run-time memory space requirements
CN109614165B (zh) 一种com组件的多版本并行运行方法和装置
US6807559B1 (en) System and method for applet management
JPH0644085A (ja) アクセスを実行する方法及び装置並びにコンピュータシステム
WO2022237610A1 (zh) 程序编译和程序加载方法
JP2007535241A5 (ko)
WO2005109848A2 (en) System and method to conditionally shrink an executable module
US20040107291A1 (en) Data processing system, data processing method, informaton processing device and information processing method, and storage medium
KR20020061543A (ko) 어플리케이션 데이터를 다운로드하기 위한 방법 및 장치
CN111880800B (zh) 应用下载方法与应用下载系统
US20120117553A1 (en) Programmatic dispatch to functions with matching linkage

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: 20130208

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140211

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150206

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160211

Year of fee payment: 13

EXPY Expiration of term