KR100725386B1 - 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기 - Google Patents

가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기 Download PDF

Info

Publication number
KR100725386B1
KR100725386B1 KR1020040077577A KR20040077577A KR100725386B1 KR 100725386 B1 KR100725386 B1 KR 100725386B1 KR 1020040077577 A KR1020040077577 A KR 1020040077577A KR 20040077577 A KR20040077577 A KR 20040077577A KR 100725386 B1 KR100725386 B1 KR 100725386B1
Authority
KR
South Korea
Prior art keywords
virtual machine
application
class
compiled
code
Prior art date
Application number
KR1020040077577A
Other languages
English (en)
Other versions
KR20060028567A (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 삼성전자주식회사
Priority to KR1020040077577A priority Critical patent/KR100725386B1/ko
Priority to US11/227,141 priority patent/US7996826B2/en
Publication of KR20060028567A publication Critical patent/KR20060028567A/ko
Application granted granted Critical
Publication of KR100725386B1 publication Critical patent/KR100725386B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/015High-definition television systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명은 디지털 데이터 방송에 포함되는 가상 머신 응용 프로그램(virtual machine application)을 수행하는 디지털 방송 수신 방법에 관한 것이다.
본 발명에 따른 가상 머신 어플리케이션을 실행하는 방법은, 가상 머신 어플리케이션 신호를 수신하는 단계와, 수신된 신호가 지칭하는 가상 머신 어플리케이션을 다운로드하는 단계와, 다운로드된 가상 머신 어플리케이션에 포함되는 가상 머신 명령 코드를 어플리케이션 수행 전에 미리 컴파일하는 단계와, 미리 컴파일된 가상 머신 명령 코드를 가상 머신을 통하여 실행하는 단계로 이루어진다.
디지털 데이터 방송, 디지털 방송 수신기, 가상 머신, DTV 미들웨어, 컴파일, 바이트 코드, 기계어

Description

가상 머신 어플리케이션을 실행하는 방법 및 그 방법을 이용한 디지털 방송 수신기{Method for executing virtual machine application, and the digital broadcast receiver thereof}
도 1은 가상 머신이 탑재된 디지털 방송 수신기의 대표적인 구성 예를 보여주는 도면이다.
도 2는 자바 언어에서 사용하는 클래스 파일의 일반적인 포맷을 보여주는 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상 머신의 일반적인 구성을 보여주는 도면이다.
도 4는 본 발명의 일 실시예에 따른 전체 동작을 도시한 흐름도이다.
도 5는 도 4의 S27 단계를 세분화하여 도시한 흐름도이다.
도 6은 미리 컴파일시 클래스 파일의 뒷부분에 부가되는 확장 정보의 구성을 나타낸 도면이다.
도 7은 CMethodInfo 정보의 세부적 구성을 나타낸 도면이다.
도 8은 방송 송신자 측에서, 송신하는 클래스 파일의 뒷부분에 첨가할 확장 정보를 나타낸 도면이다.
도 9는 AMethodInfo 정보의 세부적 구성을 나타낸 도면이다.
(도면의 주요부분에 대한 부호 설명)
100 : 디지털 방송 수신기 200 : 가상 머신
24 : JIT 컴파일러 25 : 클래스 로더
26 : 인터프리터 27 : 런타임 시스템
28 : AOT 컴파일러 300 : DTV 미들웨어
본 발명은 가상 머신(virtual machine)에 관한 것으로, 보다 자세하게는 디지털 데이터 방송에 포함되는 가상 머신 응용 프로그램(virtual machine application)을 수행하는 디지털 방송 수신 방법에 관한 것이다. 종래에는 네트워크로부터 다운로드한 가상 머신 응용 프로그램을 수행 중에 즉시(Just-In-Time) 컴파일(기계어로 변환)하면서 수행시키는 방법을 주로 사용한 데 비하여, 본 발명에서는 다운로드된 가상 머신 응용 프로그램이 수행되기 전에 미리(Ahead-Of-Time) 컴파일한 후 기계어로 직접 실행시키는 디지털 방송 수신 방법에 대하여 제시하고자 한다.
가상 머신(Java Virtual Machine)은 어떠한 정보 기기에서도 수행될 수 있는 어플리케이션의 이동성을 보장하는 표준 어플리케이션 수행 환경을 제공한다. 도 1은 가상 머신이 탑재된 디지털 방송 수신기의 대표적인 구성 예를 보여준다. 디지털 방송 수신기(100)는 CPU(10), 메모리(20), 멀티미디어 시스템(30), 외부 기기 통신부(peripherals; 40), 및 버스(bus; 50)로 구성될 수 있다. CPU(10)와, 메모리(20)와, 멀티미디어 시스템(30)과 외부기기 통신부(40)는 디지털 방송 수신기(100) 내부의 버스(50)에 의하여 연결된다.
멀티미디어 시스템(30)에는 튜너(tuner)와, 디멀티플렉서(demultiplexer)와, 제한 접근 시스템(Conditional Access system)과, MPEG 디코더와, 각종 데이터 처리기(그래픽 프로세서, 비디오 프로세서, 오디오 프로세서 등)가 포함된다.
외부 기기 통신부(40)에는 USB 연결 장치, 직렬 연결 장치, 적외선(IR) 연결 장치, 플래시 메모리(Flash memory), 이더넷(ethernet) 통신 장치, 하드 디스크 등이 포함될 수 있다. 이더넷 통신은 LAN, ADSL/케이블 모뎀을 통한 Wide Area Network(WAN) 등의 유선 패킷 통신망이나, 무선 LAN, CDMA/GSM/GPRS 등의 무선/이동통신망, 공중파/케이블/위성 등의 유/무선 방송망 등 여러가지 다양한 형태로 구현될 수 있다. 디지털 방송 수신기에 따라서 위성방송이나 공중파 방송의 경우 IEEE1394, 또는 이더넷 인터페이스를 통하여 LAN이나 ADSL 등에 접속할 수 있다. 그리고, 케이블 방송의 경우 양방향 통신 지원이 케이블 모뎀(cable modem)을 통해서 수행되므로 별도 이더넷 인터페이스가 필요 없이 양방향 통신을 지원할 수 있다. 또한, PVR(Personal Video Recording) 기능을 위하여 EIDE(Enhanced Integrated Device Electronics)나 SCSI(small computer system interface) 등의 인터페이스를 사용한 하드 디스크가 포함될 수도 있다.
메모리(20)에는 DTV 미들웨어(22)와 가상 머신(23)이 상주하는데, DTV 미들웨어(22)는 멀티미디어 시스템(30)과 외부 기기 통신부(40)를 제어한다. 이에 따라 서 가상 머신(23)은 어플리케이션을 수행하게 된다. 가상 머신(23)은 외부로부터 다운로드된 어플리케이션(21)을 메모리(30)에 로딩하여 수행한다.
어플리케이션들은 일반적으로 네트워크를 통하여 외부로부터 전송되며, 하드 디스크나 플래시 메모리 등의 비휘발성 저장 장치에 저장될 수도 있다. 상기 어플리케이션이 공중파나 위성 디지털 방송으로 전송되는 경우, DVB-MHP(Digital Video Broadcasting-Multimedia Home Platform) 규약에 의하여 어플리케이션이 MPEG-2(Moving Picture Expert Group-2)의 DSM-CC(Digital Storage Media-Command and Control) 형태로 전달될 수 있다.
또한, 상기 어플리케이션이 케이블 방송을 통하여 전송되는 경우에는, OCAP(Open Cable Application Platform) 규약에 따라서 Out-of-Band(OOB)를 통해서 전송될 수 있다. 이와 같이 OOB를 이용하는 경우는 MPEG-2 방송 스트림과 별도의 스트림을 통하여 어플리케이션이 전달되는 경우이다.
또 다른 형태의 네트워크 연결은 TCP/IP(Transfer Control Protocol/Internet Protocol) 기반의 인터넷 연결 방법으로서, 케이블 방송의 경우에는 케이블 모뎀을 통한 연결이 있을 수 있고, 공중파/위성 방송의 경우 IEEE 1394나 ASDL 등의 연결 방식이 있을 수 있다.
한편, 가상 머신 어플리케이션들은 클래스 단위로 구성된다. 하나의 어플리케이션은 여러 개의 클래스(class)들을 포함할 수 있으며, 각 클래스 내에는 수행 코드를 포함하는 메소드(method)들이 포함된다. 각 메소드는 바이트 코드로 표현된 수행 명령들로 구성된다.
이러한 가상 머신의 대표적인 예로는 자바(Java) 가상 머신이 있다. 그러나, 본 발명은 특정한 가상 머신에 국한되지 않으며, 마이크로 소프트(Microsoft) 社의 "Common Language Runtime(CLR)"이나 "Smalltalk" 등의 가상 머신 등 다양한 가상 머신에 적용될 수 있다. 다만, 본 발명에서는 설명의 편의를 위해 자바 가상 머신을 예를 들어 설명하도록 할 것이다.
상기 클래스들은 일반적으로 클래스 파일(class file)이라는 특정 파일 포맷으로 전송/저장된다. 도 2는 자바 언어에서 사용하는 클래스 파일의 일반적인 포맷을 보여준다. 클래스 파일 포맷에는 클래스에 관련된 여러가지 속성들을 포함한다. 상기 속성들로는, 기본 속성들을 표시하는 클래스 헤더(class header)와, 모든 상수들을 관리하는 상수 풀(constant pool)과, 클래스의 인터페이스와 필드들에 대한 정보와, 클래스의 메소드 정보 등이 포함된다. 이들 중에서 특히 메소드 정보에는 클래스에 정의된 각 메소드 별로 그 수행코드가 바이트코드 형태로 저장되는 특징이 있다.
이와 같은 종래의 디지털 방송 수신기(100)에서는 DTV 미들웨어(22)의 수행 단계와 가상 머신(23)의 수행 단계가 순차적으로 일어난다. 이와 같은 방법을 사용하면, 어플리케이션이 수행되는 동안 컴파일 과정을 수행하는 기존의 가상 머신의 수행 과정을 그대로 활용하기 때문에 여러가지 단점이 있다.
첫째, 컴파일 과정이 수행 시점에서 일어나기 때문에 컴파일 시간에 의해서 수행 시간이 영향을 받게 된다. 또한, 컴파일된 결과가 나오기 전까지는 인터프리터에 의해서 수행되므로 직접 기계어로 수행하는 것보다 성능이 떨어지게 되고, 이 에 따라서 전반적으로 응답 시간이 느리게 된다. 둘째, 동일한 어플리케이션이 여러 번 수행 및 종료될 경우 매 수행시마다 컴파일을 수행하므로 과거에 수행시점에서 컴파일한 결과를 재활용할 수 없다. 셋째, '자동 시작 옵션'이 설정되지 않고 영구 저장장치에 저장되는 어플리케이션의 경우, 사용자가 직접 아이콘을 선택하기까지 기다렸다 상기 어플리케이션을 수행하게 되므로 기다리는 시간만큼 시스템 자원의 낭비가 초래된다.
한편, 이와 같이 종래의 JIT 컴파일(Just-in-Time compiling)을 이용하는 가상 머신의 단점들을 극복하기 위한 방법들이 제시되고 있다.
미국 특허 6412108호는, 자바 클래스를 수행하기 직전에 자바 바이트코드를 컴파일하는 방법을 제시한다. 이 방법은 인터프리터(interpreter)에 의해 수행되는 시간을 없애고 모든 자바 클래스들이 기계어로 컴파일된 형태로 수행하도록 하는 것이다. 이 방법은 인터프리터에 의해 수행되는 시간만 절약할 뿐, 클래스 수행을 가상 머신에게 요청한 이후에 컴파일이 수행되기 때문에 컴파일하는 시간이 응답 시간에 영향을 주는 문제가 여전히 있다. 또한, 자주 수행되지 않는 자바 메소드들도 함께 컴파일되므로, 경우에 따라 어떤 메소드들은 인터프리터에 의해 수행되는 시간보다 더 많은 시간을 낭비할 수도 있다.
그리고, 미국 특허 6110226호는, 클래스를 미리 컴파일해두고 이러한 클래스들을 저장 매체에 미리 컴파일된 상태로 저장해 두는 방법을 제시한다. 이 방법은 클래스 수행을 가상 머신에게 요청하기 이전에 미리 컴파일하므로 컴파일 시간이 응답 시간에 포함되지 않는 장점이 있다. 그러나, 디지털 방송 수신기와 같은 정보 기기 생산 업체에서 사전에 클래스 파일들을 미리 컴파일해서 저장해두어야 하므로 디지털 방송에서와 같이 동적으로 다운로드되는 클래스들에는 적용하기 어렵다.
미국 특허 6295638호는, 수행시간 (Just-In-Time)에 컴파일된 결과를 파일로 저장해두는 방법에 관한 것이다. 이 방법은 한번 수행된 어플리케이션을 다음 번 수행할 때 이전에 컴파일한 결과를 사용하도록 함으로써 종래의 수행시간 컴파일 방법의 단점을 극복할 수 있다. 즉, 매번 컴파일을 수행하는 데에 따른 컴파일 시간을 줄일 수 있다. 그러나, 처음 컴파일할 때에는 기존의 방법과 동일한 컴파일 시간이 소요되는 단점이 있다. 또한, 위에서 언급되었던 문제 중의 하나인 사용자 입력시까지 대기 시간 중에 시스템 자원을 효율적으로 활용하는 측면이 고려되지 않았다.
한편, 미국 특허 5970249호는, 자바 클래스의 컴파일 과정을 자바 가상 머신의 유휴시간(idle time)에 수행하는 방법에 관한 것이다. 이 방법은 시스템 자원을 효율적으로 활용하는 방법에 대해서 언급하고 있다. 이 방법은 종래의 수행시간 컴파일 개념을 확장하여 클래스가 한번 수행 된 이후의 유휴 시간 동안에 컴파일이 안된 메소드들 중에서 가장 우선 순위가 높은 메소드들을 컴파일하는 것이다. 이 방법은 유휴 시간을 이용하여 컴파일을 수행하므로 기존의 수행시간 컴파일 방법에 비해 시스템 자원의 활용도가 높다는 장점이 있다. 그러나, 여전히 수행 요청 이후에 컴파일을 하게 되므로 컴파일 시간에 의해 응답 시간이 느려지는 문제는 완전히 해결되지 않는다. 또한, 우선순위가 높은 메소드를 판별하기 위해서는 일단 메소드들을 기본적으로 인터프리팅(interpreting)하여야 하므로 수행속도가 늦어지게 된 다.
본 발명은 상기한 문제점을 고려하여 창안된 것으로, 다운로드된 가상 머신 응용 프로그램이 수행되기 전에 미리(Ahead-Of-Time) 컴파일한 후 기계어로 직접 실행시킴으로써 수행시간에 컴파일하는 시간을 줄이고 사용자 응답성을 높이는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여, 본 발명에 따른 가상 머신 어플리케이션을 실행하는 방법은, (a) 가상 머신 어플리케이션 신호를 수신하는 단계; (b) 상기 수신된 신호가 지칭하는 가상 머신 어플리케이션을 다운로드하는 단계; (c) 상기 다운로드된 가상 머신 어플리케이션에 포함되는 가상 머신 명령 코드를 상기 어플리케이션 수행 전에 미리 컴파일하는 단계; 및 (d) 상기 미리 컴파일된 가상 머신 명령 코드를 가상 머신을 통하여 실행하는 단계를 포함한다.
상기 (c)단계는, (c-1) 상기 컴파일되는 가상 머신 명령 코드를 포함하는 클래스를 식별하는 단계; (c-2) 상기 식별된 클래스를 메모리에 로딩하는 단계; (c-3) 상기 로딩된 클래스에 포함된 메소드들 중에서 컴파일되는 메소드를 식별하는 단계; (c-4) 상기 식별된 메소드들에 포함된 가상 머신 명령 코드들을 컴파일하는 단계; 및 (c-5) 상기 컴파일된 클래스를 미리 컴파일된 클래스 파일 포맷으로 저장하는 단계를 포함한다.
상기 (c-1) 단계는, 상기 클래스 파일에 부가적으로 첨가되는 컴파일할 메소 드의 수행 경로 정보를 이용하여 식별하는 것이 바람직하다.
상기 (c-3) 단계는, 상기 클래스 파일에 부가적으로 첨가되는 컴파일할 메소드에 대한 정보를 이용하여 식별하는 것이 바람직하다.
상기 (c-4) 단계는, 상기 클래스 파일에 저장된 중간 구조(intermediate representation)를 이용하여 수행되는 것이 바람직하다.
상기 (c-5) 단계는, 상기 클래스 파일의 뒷부분에, 컴파일된 메소드 인덱스와, 컴파일된 메소드의 기계어 코드와, 컴파일된 메소드를 메모리로 로딩할 때 로딩된 메모리 주소에 맞추어 기계어 코드를 변경하기 위한 재배치 테이블(relocation table)을 부가하는 것이 바람직하다.
상기 가상 머신은 자바 가상 머신이고, 상기 가상 머신 명령 코드는 바이트 코드(byte code)인 것이 바람직하다.
상기 어플리케이션 신호에 자동 시작 신호가 있을 경우에는 상기 (c)단계가 종료되는 즉시 상기 (d)단계를 수행하는 것이 바람직하다.
상기 어플리케이션 신호에 자동 시작 신호가 없을 경우에는 상기 (c)단계가 종료된 후, 상기 어플리케이션의 아이콘을 화면에 표시하고 아이콘을 사용자가 선택할 때에 상기 (d) 단계를 수행하는, 것이 바람직하다.
상기 (c)단계는, 상기 다운로드된 어플리케이션 신호에 저장 옵션이 설정된 경우에 한하여 수행되는 것이 바람직하다.
상기한 목적을 달성하기 위하여, 본 발명에 따른 가상 머신과, 상기 가상 머신과 연동하는 DTV 미들웨어를 포함하는 디지털 방송 수신기는, 가상 머신이 디지 털 방송 수신기에서 동작할 수 있도록 상기 가상 머신과 연동하는 DTV 미들웨어; 가상 머신 어플리케이션 신호를 수신하는 튜너; 상기 DTV 미들웨어의 요청에 따라 상기 수신된 신호가 지칭하는 가상 머신 어플리케이션을 다운로드하는 외부기기 통신부; 및 상기 다운로드된 가상 머신 어플리케이션에 포함되는 가상 머신 명령 코드를 상기 어플리케이션 수행 전에 미리 컴파일하고, 상기 미리 컴파일된 가상 머신 명령 코드를 실행하는 가상 머신을 포함한다.
상기 가상 머신은, 상기 컴파일되는 가상 머신 명령 코드를 포함하는 클래스를 식별하여 메모리에 로딩하며, 상기 로딩된 클래스에 포함된 메소드들 중에서 컴파일되는 메소드를 식별하고 상기 식별된 메소드들에 포함된 가상 머신 명령 코드들을 컴파일하며, 상기 컴파일된 클래스를 미리 컴파일된 클래스 파일 포맷으로 저장하는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 일 실시예에 따른 가상 머신(200)은 내부적으로 여러가지 구성요 소로 이루어지며, 도 1에서의 가상 머신(23)과 마찬가지로 메모리(20) 상에서 동작된다. 도 3은 도 1의 가상 머신(23)의 세부 구성을 보여주는 도면이다. 가상머신은 JIT 컴파일러(Just-In-Time compiler; 24)와, 인터프리터(interpreter; 26)와, 클래스를 메모리로 로드(load)하는 클래스 로더(class loader; 25)와, 수행 시간(runtime)에 필요한 리소스(resources)의 운영을 담당하는 런타임 시스템(runtime system; 27)을 기본적으로 포함하며, AOT 컴파일러(28)를 더 포함한다.
인터프리터(26)는 클래스의 수행 코드를 실행하기 위한 구성요소로서 가상 머신 명령 코드들을 인식하여 해당 명령을 수행하는 역할을 한다. 여기서, 가상 머신 명령 코드란 가상 머신(200)이 직접 인터프리팅(interpreting)하여 상기 코드에 따른 명령을 실행할 수 있는 코드를 의미한다. 이는, CPU에 의하여 직접 인식되어 실행될 수 있는 기계어(machine code)와는 구별된다. 상기 가상 머신(200)이 자바 가상 머신인 경우에, 상기 가상 머신 명령 코드는 바이트 코드(byte code)라고 불리기도 한다.
JIT 컴파일러(24)는 클래스의 수행 중에 가상 머신 명령 코드들을 CPU에서 직접 인식할 수 있는 기계어로 변환해주는 컴파일러이다. 그리고, AOT 컴파일러(Ahead-Of-Time compiler)는 클래스 수행전 또는 어플리케이션 수행전에 가상 머신 명령 코드를 미리 컴파일하여 CPU에서 직접 인식할 수 있는 기계어로 변환해주는 컴파일러이다.
이러한 AOT 컴파일러(28)는 본 발명의 수행을 위한 핵심 구성요소가 된다. 기존의 Just-In-Time 컴파일러도 함께 사용하는 것이 바람직한데, 이는 AOT 컴파일 러(28)에 의해 컴파일되지 않은 메소드들을 수행 중에 컴파일하는데 사용하기 위해서이다.
어디까지나 도면 3에서 나타낸 가상 머신은 소프트웨어의 개념적인 구성을 의미하는 것이며, 실제 구현상에서는 방법에 따라서 세부 구성이 달라질 수 있을 것이다. 예를 들면, 기계어 코드 생성 모듈과 같이 컴파일러들이 공통적으로 활용할 수 있는 모듈은 AOT 컴파일러(28)와 JIT 컴파일러(24)에서 공유가 되도록 구성할 수 있을 것이다. 본 발명에서는 이러한 구현 방법의 가능한 세부 구성은 본 발명의 취지를 어기지 않는 한도 내에서 모든 가능성을 포괄할 수 있다.
도 3과 같은 가상 머신(200) 및 이와 연동하는 DTV 미들웨어(300)는 도 4에 도시된 흐름도에 따라 동작된다. 도 4는 본 발명의 일 실시예에 따라서 디지털 방송 신호로부터 어플리케이션에 관련된 신호를 수신하고, 이를 다운로드 받아서 실행하는 단계를 기술한 것이다.
이러한 단계들은 DTV 미들웨어에서의 수행단계와 가상 머신에서의 수행단계로 구분될 수 있다. 설명의 편의를 위해 여기서는 디지털 방송 수신기가 케이블 방송 표준을 따른다고 가정하고 DTV 미들웨어는 OCAP 표준을 만족한다고 가정한다.
먼저, S10 내지 S26 단계는 DTV 미들웨어(300)에서 수행되는 단계이다. 도 1에서의 DTV 미들웨어(22)과 마찬가지로 본 발명에 따른 DTV 미들웨어(300)도 메모리(20) 상에서 동작될 수 있다.
DTV 미들웨어(300)는 디지털 방송 신호 중 가상 머신 어플리케이션 신호를 수신하면(S10), 상기 어플리케이션이 새로운 어플리케이션인지를 판단한다(S15). 여기서, 새로운 어플리케이션이란, 현재 선택된 서비스(service) 상에서 수행 중이지 않은 어플리케이션을 의미한다. 그 판단 결과, 새로운 어플리케이션이 아니면 그 어플리케이션은 메모리 상에 존재할 것이므로 즉시 실행될 수 있다(S16).
상기 S15에서의 판단 결과 새로운 어플리케이션을 수행하기 위한 신호이면(S15의 예), DTV 미들웨어(300)는 먼저 해당 어플리케이션이 메모리나 영구 저장 장치에 저장되어 있는지 판단한다(S20). 상기 판단 결과 저장되어 있는 경우(S20의 예)에는 미리 컴파일하는 과정(S27)을 수행하지 않고 S30 단계로 진행한다.
상기 판단 결과 저장되어 있지 않을 경우(S20의 아니오), 어플리케이션의 저장 위치를 얻기 위해서 확장 어플리케이션 정보 테이블(eXtended Application Information Table; XAIT)을 참조하여 어플리케이션을 다운로드 한다(S25).
그리고, 어플리케이션에 포함되는 "storage priority 필드" 값이 0인지 확인한다(S26). 수신되는 어플리케이션 신호에 저장 옵션이 설정된 경우(저장을 요함)는 상기 필드의 값이 0 이외의 값을 갖고, 상기 어플리케이션 신호에 저장 옵션이 설정되지 않은 경우(저장을 요하지 않음)는 상기 필드의 값은 0을 갖는다.
만약, storage priority 필드의 값이 0이면(S26의 예), 이 어플리케이션은 저장될 필요가 없는 어플리케이션을 의미하므로 곧바로 다음의 S30 단계로 진행하게 된다. 만약, 이 값이 0이 아니면(S26의 아니오), 이 어플리케이션은 향후 다시 수행될 수 있는 어플리케이션으로서 비휘발성 메모리 내지 영구 저장장치에 저장되어야 함을 의미하므로 DTV 미들웨어(300)는 가상 머신(200)을 호출하여, 가상 머신(200)이 AOT 컴파일러(28)를 이용해서 미리 컴파일을 수행하도록 한다(S27). 다만, 이는 하나의 예로서 영구 저장장치에 저장되는 경우에, "storage priority 필드" 값을 0으로, 저장을 요하지 않는 경우를 1로 약속할 수도 있음은 물론이다.
여기서 DTV 미들웨어(200)는 어플리케이션의 시작 클래스 정보를 XAIT에서 얻어와서 가상 머신에서 컴파일을 하도록 인자로 넘긴다. S27 단계에 대한 보다 자세한 설명은 도 5의 설명에서 하기로 한다.
가상 머신(200)에서 미리 컴파일을 수행한 후, S30 내지 S45 단계는 다시 DTV 미들웨어(300)에서 수행되는 단계이다.
DTV 미들웨어(200)는, 어플리케이션의 신호에 '자동 시작 옵션'이 설정되어 있는지 확인한다(S30). 여기서, '자동 시작 옵션'은 어플리케이션의 수행 신호를 수신한 후, 어플리케이션의 다운로드가 완료되는 즉시 자동으로 수행하도록 하는 옵션을 의미한다. 이 옵션이 설정되어 있으면(S30의 예), 곧바로 가상 머신을 수행하는 단계로 넘어간다. 반면, 이 옵션이 설정되어 있지 않을 경우(S30의 아니오), 어플리케이션을 선택할 수 있는 아이콘(icon)을 화면에 표시하며(S40), 사용자가 아이콘을 선택할 경우에만 가상 머신을 수행하는 단계를 거친 후 S50 단계로 진행한다(S45).
이하 S50 내지 S80 단계는 다시 가상 머신(200)에서 수행되는 동작을 나타낸다. 가상 머신(23)은 먼저, 어플리케이션의 클래스가 가상 머신 메모리에 존재하는지, 즉 로딩되어 있는지 확인하고(S50), 로딩되어 있지 않으면(S50의 아니오) 어플리케이션 수행에 필요한 클래스를 가상 머신 메모리로 로딩한다(S55). 그리고, 클래스 로딩이 끝나면 클래스의 수행 준비를 위해 초기화한다(S60).
본 발명에서는 어떤 클래스가 도 5의 과정을 거쳐서 미리 컴파일되어 있는 경우에는, 클래스가 이미 로딩되어 있으며 실제로 클래스가 수행되는 시점에서 로딩 과정이 생략되므로 어플리케이션의 수행 시점부터의 사용자 응답 속도가 종래의 방법에 비해 빨라지게 되는 것이다.
클래스가 로딩되고 초기화 되어 있으면, 메인(main) 메소드로부터 시작해서 어플리케이션의 수행을 시작하게 된다. 이때, 메소드가 가상 머신 명령 코드로 표현되어 있는지를 판단한다(S65). 그러하지 않다면(S65의 아니오), 메소드는 기계어로 되어 있을 것이므로, 직접 CPU(10)에 의하여 실행된다(S85).
본 발명의 도 5의 과정을 거쳐 클래스가 미리 컴파일되어 있는 경우에는, 상기 클래스에 포함된 메소드는 이미 기계어로 표현이 되어 있기 때문에, 컴파일하는 단계가 생략되고 직접 기계어 수준으로 수행이 된다. 이에 따라서, 수행 시점부터의 사용자 응답 속도가 기존의 방법에 비해 월등히 빨라지게 되는 것이다.
S65의 판단 결과, 미리 컴파일되지 않은 메소드는 가상 머신 명령 코드로 표현되어 있으므로(S65의 예), 해당 메소드를 컴파일 할 것인지를 판단한다(S70). 만약, 컴파일 하지 않을 경우(S70의 아니오), 가상 머신(23)의 인터프리터(26)에서 메소드의 가상 머신 명령 코드를 해석하면서 동시에 상기 메소드에 따른 명령을 수행한다(S80). 일반적으로 메소드를 컴파일 할 것인지는 해당 메소드가 수행된 횟수를 계산해서 일정 임계치를 넘어갈 때 컴파일을 수행하게 된다. 만약, 컴파일 하는 경우라면(S70의 예), 메소드의 가상 머신 명령 코드를 기계어로 컴파일하고(S75), CPU(10)가 직접 기계어로 표현된 메소드를 신속하게 수행할 수 있다(S85).
이상에서, 가상 머신(200) 및 DTV 미들웨어(300), 또는 이들의 각 구성요소들(이하, 모듈이라고 함)은, 소프트웨어 구성요소(software component) 또는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit)과 같은 하드웨어 구성요소(hardware component)로 구현될 수 있다.  그렇지만 상기 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다.  모듈은 어드레싱(addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다.  따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스(class) 구성요소들 및 태스크(task) 구성요소들과 같은 구성요소들과, 프로세스들(processes), 함수들(functions), 속성들(properties), 프로시저들(procedures), 서브루틴들(sub-routines), 프로그램 코드(program code)의 세그먼트들(segments), 드라이버들(drivers), 펌웨어(firmwares), 마이크로코드(micro-codes), 회로(circuits), 데이터(data), 데이터베이스(databases), 데이터 구조들(data structures), 테이블들(tables), 어레이들(arrays), 및 변수들(variables)을 포함한다.  구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.
도 5는 S27 단계를 보다 자세하게 도시한 흐름도이다. 먼저, 가상 머신(200)은 어플리케이션에 존재하는 가상 머신 코드를 포함하는 클래스를 식별한다(S270). 그리고, 가상 머신(200)은 클래스 로드(25)를 이용하여 상기 식별된 클래스 파일을 가상 머신에 할당된 메모리로 로딩한다(S271). 그리고, 클래스 파일(미리 라이브러 리로 갖고 있거나 필요시 다운로드된 것)을 분석하여 컴파일해야 할 메소드들을 확인한 다음(S272), 필요한 메소드들을 기계어로 컴파일한다(S273). 이러한 과정들을 통해 모두 컴파일이 완료되고 컴파일할 메소드가 더 존재하지 않으면(S274의 아니오), 컴파일된 결과를 미리 컴파일된 기계어 코드가 포함된 클래스 파일을 저장한다(S275).
도 6은 S273에서 컴파일된 기계어 코드가 포함된 클래스 파일을 생성하면서, 상기 클래스 파일의 뒷부분에 부가되는 확장 정보(extended information; 400)를 나타낸다. 여기에는 확장된 정보의 종류(Extended Information Type; 410), 컴파일된 메소드의 개수(number of compiled methods; 420), 그리고 각 메소드 별로 컴파일 정보, 즉 'CMethodInfo'(431 내지 433)를 담고 있다. 상기 CMethodInfo 정보(각 메소드 별 컴파일 정보)의 구조는 도 7에서와 같은 세부적인 구성을 갖는다.
m번째 CMethodInfo, 즉 CMethodInfo[m](433)에는 실제로 컴파일된 메소드의 인덱스가 기록되는 Method index 필드(441)와, 컴파일된 코드의 바이너리 값이 저장되는 Compiled binary code 필드(442)와, 그리고 재배치 테이블이 기록되는 relocation table 필드(443)이 포함된다. 상기 '컴파일된 메소드의 인덱스'란 그 메소드명에 해당되는 클래스 파일 내의 상수 풀(constant pool) 상의 인덱스를 가리킨다. 클래스 파일 내의 모든 메소드 들이 컴파일되지 않을 수 있으므로, 이 인덱스를 사용하여 어떤 메소드가 컴파일 되었는지를 기록하는 것이다. 상기 재배치 테이블은 컴파일된 코드가 향후 가상 메모리에 로딩될 시에 컴파일된 코드 바이너리 내에서 사용하는 직접 주소(direct address)를 로딩된 메모리 주소에 맞도록 수 정하기 위한 테이블이다.
다시 도 5로 돌아가서, S275를 수행한 후에, 추가로 컴파일할 클래스가 있을 경우 다시 S271 단계 이하의 단계를 수행하여 필요한 모든 클래스가 컴파일될 때까지 수행한다. 가상 머신(200)은 시작 클래스를 컴파일하는 과정에서 추가로 컴파일해야 할 클래스들에 대한 정보를 얻을 수 있다. 예를 들면, 어떤 메소드에서 다른 클래스의 메소드를 호출하는 경우 다른 클래스도 컴파일되어야 함을 알 수 있다. 이러한 클래스들에 대해서도 도 5에 나타난 순서대로 처리하여 필요한 모든 클래스들을 컴파일 완료하면 미리 컴파일하는 단계가 완료된다.
한편, 본 발명에서는 이와 같이, 실시간으로 다운로드 되는 가상 머신 어플리케이션에서 미리 컴파일하는 방법을 제시하면서, 상기 미리 컴파일하는 시간을 축소하는 방법도 아울러 제안한다. 도 5의 과정에서 컴파일될 메소드들을 확인하는 과정의 경우에, 일반적으로 클래스 파일 전체를 분석하는 시간을 감소시키고자 한다. 이러한 시간을 감소시키기 위해서, 이 방법은 방송 송신자 측에서 디지털 방송 채널을 통해 어플리케이션을 전송할 때, 컴파일될 메소드들에 대한 정보가 포함된 클래스 파일을 전송하는 것이다.
도 8은 방송 송신자 측에서, 컴파일에 관련된 정보가 포함된 클래스 파일의 뒷부분에 첨가할 확장 정보(500)를 나타낸다. 이러한 정보(500)에는 확장 정보의 종류(Extended Information Type; 510)와, 분석 정보가 추가된 것으로 표시된 메소드(annotated method)의 개수(520), 그리고 각 표시된 메소드별 분석 정보, 즉 AMethodInfo[](531 내지 533)가 포함된다.
도 9에서 도시하는 바와 같이, m번째 AMethodInfo, 즉 AMethodInfo[m](533)에는 실제로 컴파일된 메소드의 인덱스가 기록되는 Method index 필드(541)와, 그 메소드를 컴파일하는 과정에서 필요한 중간 표현 형태(intermediate representation)가 기록되는 Intermediate representation 필드(542)와, 기계어 생성시에 필요한 코드 생성 규칙이 기록되는 Code generation rules 필드(543)와, 그리고 타 클래스의 메소드를 포함하여 자주 수행되는 코드에 대한 수행 경로(execution path) 정보가 기록되는 Critical execution path 필드(544)를 포함한다.
상기 중간 표현 형태의 경우 상세한 컴파일 방법에 달라질 수 있는데, 분기 명령들을 기반으로 코드 블록을 구분한 기본 블록(basic block)들의 관계를 나타내는 'call flow graph', 가상 머신 코드를 파싱한 후의 표현 형태를 나타내는 'abstract syntax tree' 등이 포함될 수 있다.
이에 따라서 본 발명에서는 도 7에서 클래스 파일을 로딩한 후에 클래스 파일의 뒷부분에 확장 정보가 포함되어 있을 경우에는 확장 정보에 포함된 정보를 이용해서 메소드를 분석하는 과정을 생략하고 메소드의 컴파일 과정 조차도 미리 생성된 중간 정보를 사용하여 기계어 생성만 하게 되므로 컴파일 시간을 대폭 축소할 수 있게 된다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
본 발명은 종래의 디지털 방송 수신기에서 DTV 미들웨어의 수행 단계와 가상 머신의 수행 단계가 순차적으로 일어나는 것과 달리 가상머신에서의 컴파일 과정을 미리 수행함으로써 다음과 같은 장점이 있다.
첫째, 컴파일 과정이 가상머신이 어플리케이션을 수행하기 전에 일어나기 때문에 컴파일 시간에 의해서 수행 시간이 영향을 받지 않게 된다. 또한, 컴파일된 어플리케이션이 직접 기계어로 수행되기 때문에 인터프리터로 수행하는 것보다 성능이 우수하다. 이에 따라서 전반적으로 응답 시간이 줄어들게 된다.
둘째, 동일한 어플리케이션이 여러 번 수행 및 종료될 경우 매번 수행시마다 컴파일을 수행하지 않고 컴파일된 결과가 클래스 파일에 저장되므로 컴파일한 결과를 재활용할 수 있다.
셋째, 자동 시작 옵션이 설정되지 않고 영구 저장장치에 저장되는 어플리케이션의 경우 사용자가 직접 아이콘을 선택하기 전에 미리 컴파일을 수행하게 되므로 DTV 미들웨어가 어플리케이션 아이콘을 출력하고 사용자 입력을 대기하는 것과 컴파일 하는 과정을 병행할 경우에 사용자가 기다리는 시간만큼 CPU 자원을 활용할 수 있으므로 CPU 자원의 낭비를 막을 수 있다.
넷째, 추가적으로 컴파일에 필요한 정보를 미리 클래스 파일에 저장한 방법을 사용할 경우, 미리 컴파일하는 시간을 더욱 단축 시킬 수 있어서 DTV 미들웨어 와 가상 머신의 성능을 전체적으로 향상시킬 수 있다.

Claims (13)

  1. (a) 가상 머신 어플리케이션 신호를 수신하는 단계;
    (b) 상기 수신된 신호가 지칭하는 가상 머신 어플리케이션을 다운로드하는 단계;
    (c) 상기 어플리케이션 신호에 저장 옵션이 설정된 경우, 상기 다운로드된 가상 머신 어플리케이션에 포함되는 가상 머신 명령 코드를 상기 어플리케이션 수행 전에 미리 컴파일하는 단계; 및
    (d) 상기 미리 컴파일된 가상 머신 명령 코드를 가상 머신을 통하여 실행하는 단계를 포함하는, 가상 머신 어플리케이션을 실행하는 방법.
  2. 제1항에 있어서, 상기 (c)단계는,
    (c-1) 상기 컴파일되는 가상 머신 명령 코드를 포함하는 클래스를 식별하는 단계;
    (c-2) 상기 식별된 클래스를 메모리에 로딩하는 단계;
    (c-3) 상기 로딩된 클래스에 포함된 메소드들 중에서 컴파일되는 메소드를 식별하는 단계;
    (c-4) 상기 식별된 메소드들에 포함된 가상 머신 명령 코드들을 컴파일하는 단계; 및
    (c-5) 상기 컴파일된 클래스를 미리 컴파일된 클래스 파일 포맷으로 저장하는 단계를 포함하는, 가상 머신 어플리케이션을 실행하는 방법.
  3. 제2항에 있어서, 상기 (c-1) 단계는,
    상기 클래스 파일에 부가적으로 첨가되는 저장된 컴파일할 메소드의 수행 경로 정보를 이용하여 식별하는, 가상 머신 어플리케이션을 실행하는 방법.
  4. 제2항에 있어서, 상기 (c-3) 단계는,
    상기 클래스 파일에 부가적으로 첨가되는 컴파일할 메소드에 대한 정보를 이용하여 식별하는, 가상 머신 어플리케이션을 실행하는 방법.
  5. 제2항에 있어서, 상기 (c-4) 단계는,
    상기 클래스 파일에 저장된 중간 구조(intermediate representation)를 이용하여 수행되는, 가상 머신 어플리케이션을 실행하는 방법.
  6. 제2항에 있어서, 상기 (c-5) 단계는,
    상기 클래스 파일의 뒷부분에, 컴파일된 메소드 인덱스와, 컴파일된 메소드의 기계어 코드와, 컴파일된 메소드를 메모리로 로딩할 때 로딩된 메모리 주소에 맞추어 기계어 코드를 변경하기 위한 재배치 테이블(relocation table)을 부가하는, 가상 머신 어플리케이션을 실행하는 방법.
  7. 제1항에 있어서,
    상기 가상 머신은 자바 가상 머신이고, 상기 가상 머신 명령 코드는 바이트 코드(byte code)인, 가상 머신 어플리케이션을 실행하는 방법.
  8. 제1항에 있어서,
    상기 어플리케이션 신호에 자동 시작 신호가 있을 경우에는 상기 (c)단계가 종료되는 즉시 상기 (d)단계를 수행하는, 가상 머신 어플리케이션을 실행하는 방법.
  9. 제1항에 있어서,
    상기 어플리케이션 신호에 자동 시작 신호가 없을 경우에는 상기 (c)단계가 종료된 후, 상기 어플리케이션의 아이콘을 화면에 표시하고 아이콘을 사용자가 선택할 때에 상기 (d) 단계를 수행하는, 가상 머신 어플리케이션을 실행하는 방법.
  10. 삭제
  11. 가상 머신과, 상기 가상 머신과 연동하는 DTV 미들웨어를 포함하는 디지털 방송 수신기로서,
    가상 머신이 디지털 방송 수신기에서 동작할 수 있도록 상기 가상 머신과 연 동하는 DTV 미들웨어;
    가상 머신 어플리케이션 신호를 수신하는 튜너;
    상기 DTV 미들웨어의 요청에 따라 상기 수신된 신호가 지칭하는 가상 머신 어플리케이션을 다운로드하는 외부기기 통신부; 및
    상기 다운로드된 가상 머신 어플리케이션에 포함되는 가상 머신 명령 코드를 상기 어플리케이션 수행 전에 미리 컴파일하고, 상기 미리 컴파일된 가상 머신 명령 코드를 실행하는 가상 머신을 포함하는, 디지털 방송 수신기.
  12. 제11항에 있어서, 상기 가상 머신은,
    상기 컴파일되는 가상 머신 명령 코드를 포함하는 클래스를 식별하여 메모리에 로딩하며, 상기 로딩된 클래스에 포함된 메소드들 중에서 컴파일되는 메소드를 식별하고 상기 식별된 메소드들에 포함된 가상 머신 명령 코드들을 컴파일하며, 상기 컴파일된 클래스를 미리 컴파일된 클래스 파일 포맷으로 저장하는, 디지털 방송 수신기.
  13. 제11항에 있어서,
    상기 가상 머신은 자바 가상 머신이고, 상기 가상 머신 명령 코드는 바이트 코드(byte code)인, 디지털 방송 수신기.
KR1020040077577A 2004-09-25 2004-09-25 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기 KR100725386B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040077577A KR100725386B1 (ko) 2004-09-25 2004-09-25 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US11/227,141 US7996826B2 (en) 2004-09-25 2005-09-16 Method of executing virtual machine application program and digital broadcast receiver using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040077577A KR100725386B1 (ko) 2004-09-25 2004-09-25 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기

Publications (2)

Publication Number Publication Date
KR20060028567A KR20060028567A (ko) 2006-03-30
KR100725386B1 true KR100725386B1 (ko) 2007-06-07

Family

ID=36207412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040077577A KR100725386B1 (ko) 2004-09-25 2004-09-25 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기

Country Status (2)

Country Link
US (1) US7996826B2 (ko)
KR (1) KR100725386B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101088515B1 (ko) 2010-01-08 2011-11-30 한국과학기술연구원 내장형 자바시스템을 위한 인스톨-타임 컴파일러 프로그램을 기록한 컴퓨터 판독가능한 기록매체
KR101088517B1 (ko) 2010-01-08 2011-11-30 한국과학기술연구원 디지털 티브이 소프트웨어 플랫폼을 위한 하이브리드 자바 컴파일 시스템

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882499B2 (en) * 2005-10-24 2011-02-01 Microsoft Corporation Caching dynamically compiled code to storage
KR101287976B1 (ko) * 2006-09-11 2013-07-18 삼성전자주식회사 데이터 어플리케이션의 자동실행 조정방법 및 이를 적용한영상재생장치
US8578325B2 (en) * 2006-10-04 2013-11-05 The Florida International University Board Of Trustees Communication virtual machine
JP4905165B2 (ja) * 2007-02-07 2012-03-28 富士通株式会社 監視支援プログラム、監視方法および監視システム
US9152442B2 (en) * 2008-08-29 2015-10-06 Red Hat, Inc. Callbacks in virtual machines
DE102009024985A1 (de) * 2009-06-16 2010-12-23 Giesecke & Devrient Gmbh Verfahren zur Ausführung eines Bytecodes in einer gesicherten Laufzeitumgebung
US8738781B2 (en) * 2009-06-22 2014-05-27 Red Hat Israel, Ltd. Launching a virtual machine associated with a client during startup
KR101064741B1 (ko) * 2010-02-12 2011-09-15 서울대학교산학협력단 핫 패스 기반의 자바스크립트 동적 컴파일을 위한 생성 코드 재활용 방법
KR101412614B1 (ko) * 2012-01-13 2014-06-27 주식회사 오비고 웹 애플리케이션에 포함되는 자바스크립트를 aot 방식으로 컴파일하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
US8959495B2 (en) * 2012-09-14 2015-02-17 Oracle International Corporation Unifying static and dynamic compiler optimizations in source-code bases
US8881123B2 (en) 2012-11-30 2014-11-04 Oracle International Corporation Enabling symbol resolution of private symbols in legacy programs and optimizing access to the private symbols
CN105359090A (zh) * 2013-04-26 2016-02-24 纽约市哥伦比亚大学理事会 用于移动应用的系统和方法
KR101715687B1 (ko) * 2014-12-26 2017-03-13 주식회사 케이티 이종 애플리케이션 실행 방법, 디바이스, 시스템 및 컴퓨터 프로그램
US20160224325A1 (en) * 2015-01-29 2016-08-04 Mentor Graphics Corporation Hiding compilation latency
CN104951335B (zh) * 2015-05-22 2019-01-04 小米科技有限责任公司 应用程序安装包的处理方法及装置
US10838750B2 (en) * 2019-01-10 2020-11-17 Red Hat, Inc. Combining ahead-of-time compilation and just-in-time compilation to improve application deployment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010080210A (ko) * 1998-10-19 2001-08-22 매클린토크 샤운 엘 구성 가능한 기능을 갖는 텔레비전 셋톱박스

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6784903B2 (en) * 1997-08-18 2004-08-31 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
EP1019794B1 (en) 1997-10-02 2008-08-20 Koninklijke Philips Electronics N.V. Data processing device for processing virtual machine instructions
US5970249A (en) * 1997-10-06 1999-10-19 Sun Microsystems, Inc. Method and apparatus for performing byte-code optimization during pauses
US6110226A (en) 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
US6295638B1 (en) * 1998-07-30 2001-09-25 International Business Machines Corporation Method and apparatus for loading native object code in data processing system
US6412108B1 (en) * 1999-05-06 2002-06-25 International Business Machines Corporation Method and apparatus for speeding up java methods prior to a first execution
JP3524024B2 (ja) 1999-08-30 2004-04-26 インターナショナル・ビジネス・マシーンズ・コーポレーション バイトコード実行装置およびその方法
US7213240B2 (en) * 2001-10-05 2007-05-01 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
GB0125176D0 (en) 2001-10-19 2001-12-12 Koninkl Philips Electronics Nv A method of compiling bytecode to native code
EP1377034A1 (en) * 2002-06-27 2004-01-02 Thomson Licensing S.A. Data processing device and method for interactive television
JP4713820B2 (ja) * 2003-05-28 2011-06-29 パナソニック株式会社 プログラム実行制御装置、プログラム実行制御方法
JP4243571B2 (ja) * 2003-08-05 2009-03-25 パナソニック株式会社 放送受信装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010080210A (ko) * 1998-10-19 2001-08-22 매클린토크 샤운 엘 구성 가능한 기능을 갖는 텔레비전 셋톱박스

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101088515B1 (ko) 2010-01-08 2011-11-30 한국과학기술연구원 내장형 자바시스템을 위한 인스톨-타임 컴파일러 프로그램을 기록한 컴퓨터 판독가능한 기록매체
KR101088517B1 (ko) 2010-01-08 2011-11-30 한국과학기술연구원 디지털 티브이 소프트웨어 플랫폼을 위한 하이브리드 자바 컴파일 시스템

Also Published As

Publication number Publication date
KR20060028567A (ko) 2006-03-30
US7996826B2 (en) 2011-08-09
US20060090157A1 (en) 2006-04-27

Similar Documents

Publication Publication Date Title
KR100725386B1 (ko) 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US6766513B2 (en) Method and system of memory management using stack walking
KR100422103B1 (ko) 네트워크를통한전송전에컴퓨터프로그램을처리하기위한장치및방법
US6571388B1 (en) Building a custom software environment including pre-loaded classes
KR101051872B1 (ko) 프로그램 실행제어장치
US7992138B2 (en) Method and apparatus for executing different java methods
US20050155028A1 (en) System and method for increasing throughput of java program
KR100772867B1 (ko) 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기
CN111078318A (zh) 配置文件的处理方法、装置、系统及存储介质
US9535672B2 (en) Selective compiling method, device, and corresponding computer program product
CN112948026A (zh) 热点代码处理方法、装置、服务器、电子设备及存储介质
KR100452343B1 (ko) 기계어 코드 실행영역을 포함하는 이동통신 단말기용 파일을 기록하는 저장매체 및 그를 이용한 파일 실행방법
CN109800030B (zh) 一种应用程序运行方法、装置及终端
CN111290740B (zh) 应用程序的开发方法、装置、计算机设备和存储介质
KR100818919B1 (ko) 메소드 호출 방법 및 이를 이용한 자바 가상 머신
US7590976B2 (en) Compiler program, a computer-readable storage medium storing a compiler program, a compiling method and a compiling unit
KR100625167B1 (ko) 임베디드 운영체계의 부팅방법
KR20200084294A (ko) 핫스팟 추출을 이용하여 코드 블록을 탐색하는 운용 서버 및 이를 포함하는 운용 플랫폼 시스템
CN112612531A (zh) 应用程序启动方法、装置、电子设备及存储介质
JPH10326192A (ja) Catv端末ソフトウェアプログラムダウンロードシステム
CN116932078A (zh) 一种插件首次冷启动优化方法及装置
KR101262668B1 (ko) 임베디드 시스템의 동적 바인딩 구조를 이용한 갱신 장치및 방법
CN114489859A (zh) 脚本代码的执行方法、装置、存储介质及设备
CN115794233A (zh) 嵌入式设备参数配置方法、电子设备和存储介质
CN115454439A (zh) 编译优化方法、装置、电子设备及计算机可读介质

Legal Events

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

Payment date: 20130429

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140429

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150429

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee