KR101051872B1 - 프로그램 실행제어장치 - Google Patents

프로그램 실행제어장치 Download PDF

Info

Publication number
KR101051872B1
KR101051872B1 KR1020057021398A KR20057021398A KR101051872B1 KR 101051872 B1 KR101051872 B1 KR 101051872B1 KR 1020057021398 A KR1020057021398 A KR 1020057021398A KR 20057021398 A KR20057021398 A KR 20057021398A KR 101051872 B1 KR101051872 B1 KR 101051872B1
Authority
KR
South Korea
Prior art keywords
execution
priority
string
bytecode
native code
Prior art date
Application number
KR1020057021398A
Other languages
English (en)
Other versions
KR20060021839A (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 KR20060021839A publication Critical patent/KR20060021839A/ko
Application granted granted Critical
Publication of KR101051872B1 publication Critical patent/KR101051872B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

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

Abstract

본 발명은 종래의 JiT 컴파일러를 포함하는 JVM이 실장된, 프로세서를 구비하는 가전제품에서, 미 컴파일의 메소드 실행시에 당해 메소드를 컴파일함으로써 발생하고있던 실행속도의 저하를 해소하는 것을 목적으로 하는 것이다. 이와 같은 목적을 달성하는 프로그램 실행제어장치는 프로그램의 실행과정에서 메소드를 호출할 때에, 당해 메소드가 미 컴파일인가 여부를 판정하여, 미 컴파일이면 당해 메소드의 바이트코드를 인터프리터 처리에 의해 실행함과 동시에 당해 메소드를 컴파일하는 요구를 행하고, 컴파일 완료이면 당해 메소드의 네이티브코드를 실행한다. 그리고 컴파일 요구된 메소드의 컴파일은 바이트코드의 인터프리터 처리에 의한 실행 또는 네이티브코드의 실행이라는 명령실행을 행하는 태스크와는 별도의 태스크에서 행한다.
프로그램 실행제어, 미 컴파일, 컴파일 완료, 컴파일

Description

프로그램 실행제어장치{PROGRAM EXECUTION CONTROL DEVICE}
본 발명은 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 프로그램 실행제어장치에 관한 것으로, 특히, 프로그램 실행 초기단계에서의 프로그램의 실행속도의 저하를 억제하는 기술에 관한 것이다.
최근, 특정 플랫폼(Platform)에 의존하지 않고 프로그램의 실행을 실현하는 소프트웨어인 가상머신(Virtual Machine)이 내장형 기기 등의 프로세서를 구비한 다양한 가전제품에 실장되고 있다.
대표적인 가상머신으로 Java(등록상표) 바이트코드(Bytecode, 이하 「바이트코드」라고 한다)를 해석하여 실행하는 JVM(Java Virtual Machine)을 들 수 있다. JVM의 사양에 대해서는 Java 가상머신 사양 제 2 판(주식회사 피어슨 에듀케이션(Pearson Education) 발행, ISBN4-89471-356-X)에 상세히 설명되어 있다.
상기 바이트코드는, 일반적으로는 Java 언어로 기술된 소스프로그램을 javac 등의 Java 컴파일러로 변환함으로써 생성되며, 클래스(class) 확장자의 클래스 파일(class file)이라고 하는 파일에 저장된다.
JVM은 클래스 파일을 해석하여 당해 클래스 파일에 포함되어 있는 각종 메소드(Method)를 프로세서에 실행시키기 위한 제어를 행한다. 메소드란, 바이트코드 열로 이루어지는 특정한 처리를 행하는 절차를 말하며, 다른 프로그래밍 언어에서는 멤버 함수(Member Function)라고 불리고 있는 것이다.
기본적으로 JVM은, 바이트코드를 축차(逐次) 해석하여 프로세서에 처리를 실행시키는 인터프리터(Interpreter)로서 기능하는 것이나, 일반적으로 알려진 바와 같이, 그 실행속도는 프로세서가 직접 이해할 수 있는 네이티브코드(Native code)로 변환된 프로그램의 실행속도에 비하면 늦다. 특히, 동일한 메소드가 반복 호출되는 프로그램의 경우, 호출될 때마다 동일한 메소드를 해석하게 되므로 불필요한 처리가 많다.
그래서 프로그램의 실행과정에서 메소드를 호출한 때에, 그 메소드가 미컴파일(Uncompiled)인가 여부를 판정하여, 미컴파일인 경우에는 당해 메소드를 네이티브코드로 변환하는 JiT(Just in Time) 컴파일러를 구비하는 JVM이 고안되어 있다.
이에 의해, 동일한 메소드가 재호출되는 경우에, 앞의 메소드 호출 시에 변환한 네이티브코드를 실행시키면 되므로, 실행속도를 빠르게 할 수 있다.
또, 네이티브코드로 변환하여야 할 메소드를 특정하기 위한 JiT 컴파일러의 확장기술로 Java HotSpot(등록상표)이라고 하는 기술이 있다. 이것은, 프로그램의 실행과정에서, 호출한 메소드의 호출횟수를 집계하여, 호출횟수가 임계치를 초과한 때에 당해 메소드를 네이티브코드로 변환하는 기술이다.
JiT 컴파일러를 갖는 JVM과 같이, 인터프리터 기능과 컴파일러 기능을 함께 구비하는 프로그램 실행장치가 일본국 특개평4-178734호 공보 및 일본국 특개소64-62705호 공보에 개시되어 있다.
그러나 JiT 컴파일러를 갖는 JVM은, 호출한 메소드가 미컴파일이면 바로 컴파일을 개시하고, 그 컴파일 처리가 종료하는 것을 기다려서 생성된 네이티브코드를 프로세서에 실행시키므로, 미컴파일인 메소드를 실행할 때에는 동일한 메소드를 인터프리터로 실행하는 것보다 실행속도가 늦어진다고 하는 문제가 있었다. 특히, 프로그램의 실행 개시의 초기에는 컴파일 처리가 빈번하므로 실행속도의 저하가 현저하게 나타나고 있었다.
또, Java HotSpot 기술에서도, 미컴파일의 메소드를 호출한 때에 컴파일을 행하는 경우에는 그 컴파일 처리가 종료하는 것을 기다리므로, 역시 처리속도가 늦어진다고 하는 문제가 있다.
본 발명은 상술한 문제를 해결하기 위하여, 미컴파일인 메소드(Uncompiled Method)의 실행 시에 당해 메소드를 컴파일함으로써 발생하던 실행속도의 저하를 해소하는 프로그램 실행제어장치 및 당해 장치에 관한 제반 기술을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 프로그램 실행제어장치는, 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 프로그램 실행제어장치로, 상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정수단과, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차(逐次) 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 수단과, 호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 수단과, 상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 수단을 구비하고, 상기 프로그램 실행제어장치는 멀티태스크 오퍼레이팅 시스템(Multitask Operating System)의 제어 하에 동작하고, 상기 제 1 수단에 의해 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에 의해 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며, 상기 제 1 수단 및 상기 제 2 수단의 태스크 실행은 상기 제 3 수단의 태스크 실행보다 우선도가 높게 설정되어 있고, 상기 프로그램 실행제어장치는, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득수단과, 상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교수단과, 비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경수단을 더 구비하는 것을 특징으로 한다.
또, 본 발명의 프로그램 실행제어방법은, 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 프로그램 실행제어방법으로, 상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와, 호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와, 상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며, 상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고, 상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며, 상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고, 상기 프로그램 실행제어방법은, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와, 상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와, 비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 한다.
또, 본 발명의 제어프로그램은, 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 제어프로그램으로, 상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와, 호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와, 상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며, 상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고, 상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며, 상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고, 상기 프로그램 실행제어방법은, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와, 상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와, 비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 한다.
또, 본 발명의 기록매체는, 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 제어프로그램을 기록한 기록매체로, 상기 제어프로그램은, 상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와, 호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와, 상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며, 상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고, 상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며, 상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고, 상기 프로그램 실행제어방법은, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와, 상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와, 비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 한다.
여기서, 바이트코드 열은, 예를 들어, 메소드 또는 멤버 함수를 가리킨다.
이들 구성에 의해, 호출하는 바이트코드 열(메소드)이 컴파일되지 않았으면, 당해 바이트코드 열을 축차 해석하여 실행하므로, 종래의 JiT 컴파일러를 갖는 JVM이 컴파일되지 않은 메소드의 실행 시에 당해 메소드를 컴파일함으로써 발생하고 있던, 프로그램 실행의 초기에 현저하게 나타나는 실행속도의 저하를 해소할 수 있고, 또, 병행하여 컴파일되지 않은 메소드의 컴파일을 행하므로, 전체적인 프로그램의 실행속도가 저하하는 것도 아니다.
삭제
또, 컴파일 실행 태스크보다 명령실행 태스크가 우선적으로 실행되게 되므로, 프로그램 실행의 초기에 현저하게 나타나는 실행속도의 저하를 해소할 수 있다. 또, 명령실행 태스크의 우선도보다 높은 우선도의 바이트코드 열을 컴파일하는 경우, 일시적으로 컴파일 태스크의 우선도를 높게 하므로, 당해 바이트코드 열에 대해서는 컴파일을 신속하게 행할 수 있다.
또, 상기 프로그램 실행제어장치는, 상기 제 1 수단 또는 상기 제 2 수단의 태스크 실행에서 대기상태가 발생한 경우, 상기 제 3 수단의 태스크 실행으로 절환(Switching)하는 절환수단을 더 구비하는 것으로 해도 좋다.
이 구성에 의하면, 명령실행 태스크에 있어서 대기상태가 발생한 경우에 컴파일 태스크의 실행으로 절환하므로, 컴파일 처리를 신속하게 실행할 수 있다. 컴파일 처리가 신속하게 실행되면, 명령실행에서의 인터프리터 처리의 횟수가 감소하여, 전체적인 프로그램 실행속도를 높일 수 있다.
또, 상기 프로그램 실행제어장치는, 상기 제 1 수단에 의해 이루어지는 상기 요구에 따라서, 당해 요구에 관한 바이트코드 열을 네이티브코드로 변환하기 위한 정보인 컴파일 요구정보(Compilation Request Information)를 기억수단에 등록하여 관리하는 요구관리수단을 더 구비하며, 상기 제 3 수단은, 상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석의 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구관리수단에 의해서 상기 기억수단에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 것으로 해도 좋다.
이 구성에 의하면, 요구관리수단에 의해서 기억수단에 등록 및 관리되고 있는 컴파일 요구정보에 의하여 바이트코드 열의 컴파일을 실행할 수 있다.
또, 상기 요구관리수단은 상기 요구를 먼저 받은 것부터 순서대로 이루어지는 큐(Queue)에 의해 각 컴파일 요구정보를 등록하여 관리하고, 상기 제 3 수단은 상기 큐의 선두 위치에 있는 컴파일 요구정보부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것으로 해도 좋다.
이 구성에 의하면, 컴파일 요구를 접수한 순서대로 바이트코드 열의 컴파일을 행할 수 있다.
또, 상기 요구관리수단은, 상기 제 1 수단에 의해 이루어지는 상기 요구에 관한 바이트코드 열의 컴파일 요구정보가 상기 기억수단에 이미 등록되어 있는 경우에, 이중 등록을 행하지 않는 것으로 해도 좋다.
이 구성에 의하면, 이미 등록되어 있는 컴파일 요구정보를 이중으로 등록하지 않으므로, 중복해서 동일한 메소드를 컴파일 처리하는 것을 방지할 수 있다.
또, 상기 프로그램 실행제어장치는, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득수단을 더 구비하며, 상기 요구관리수단은, 상기 제 1 수단에 의해서 이루어지는 상기 요구에 따라서, 취득된 우선도정보를 참조하여, 당해 요구에 관한 바이트코드 열의 우선도를 특정하는 특정수단과, 상기 기억수단에 등록되어 있는 각 컴파일 요구정보에 관한 바이트코드 열의 우선도와 상기 특정수단에 의해 특정된 우선도를 비교하는 비교수단과, 비교한 결과에 의거하여, 우선도가 높은 것 순의 배열이 되도록, 상기 요구에 관한 바이트코드 열의 컴파일 요구정보의 큐 위치를 결정하는 결정수단을 구비하는 것으로 해도 좋다.
이 구성에 의하면, 우선도가 높은 바이트코드 열부터 먼저 컴파일을 할 수 있다.
또, 상기 프로그램 실행제어장치는, 어떤 바이트코드 열과 관련되는 관련 바이트코드 열을 대응시키고 있는 대응정보를 취득하는 대응정보 취득수단과, 상기 대응정보를 참조하여, 상기 요구에 관한 바이트코드 열과 대응되어 있는 관련 바이트코드 열이 있는가 여부를 검색하는 검색수단을 더 구비하며, 상기 검색수단에 의한 검색결과 관련 바이트코드 열이 검출된 경우, 상기 요구관리수단은 검출된 관련 바이트코드 열의 컴파일 요구정보를 기억수단에 등록하는 것으로 해도 좋다.
이 구성에 의하면, 컴파일 요구된 바이트코드 열과 관련하는 바이트코드 열의 컴파일 요구정보를 등록할 수 있다.
또, 상기 프로그램 실행제어장치는, 각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득수단을 더 구비하며, 상기 제 3 수단은, 상기 기억수단에 복수 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열 중, 취득된 상기 우선도정보에 의거하여 우선도가 높은 것부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것으로 해도 좋다.
이 구성에 의하면, 우선도가 높은 바이트코드 열부터 먼저 컴파일을 할 수 있다.
또, 상기 요구관리수단은, 반복하여 상기 요구가 이루어지는 바이트코드 열에 대해서는 그 요구횟수를 계수하여, 계수한 요구횟수를 당해 바이트코드 열의 컴파일 요구정보에 포함시켜서 상기 기억수단에 기록하는 횟수기록수단과, 상기 요구횟수의 임계치를 취득하는 취득수단을 구비하며, 상기 제 3 제어수단은 상기 요구횟수가 임계치를 초과한 것부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것으로 해도 좋다.
이 구성에 의하면, 임계치를 초과하는 컴파일 요구횟수가 된 바이트코드 열부터 컴파일을 할 수 있다.
또, 상기 요구관리수단은, 반복하여 상기 요구가 이루어지는 바이트코드 열에 대해서는 그 요구횟수를 계수하여, 계수한 요구횟수를 당해 바이트코드 열의 컴파일 요구정보에 포함시켜서 상기 기억수단에 기록하는 횟수기록수단과, 기록한 각 컴파일 요구정보의 요구횟수를 비교하여, 요구횟수가 많은 순이 되도록 각 컴파일 요구정보의 큐 위치를 교체하는 교체수단을 더 구비하는 것으로 해도 좋다.
이 구성에 의하면, 변환요구가 많은 바이트코드 열을 먼저 컴파일을 할 수 있으므로, 명령실행에서의 인터프리터 처리의 횟수가 감소하여, 전체적인 프로그램의 실행속도를 높일 수 있다.
또, 상기 요구관리수단은 우선도가 다른 복수의 큐를 관리하고 있고, 상기 제 3 수단은 우선도가 가장 높은 큐에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것으로 해도 좋다.
이 구성에 의하면, 컴파일 요구정보를 등록하는 큐에서, 우선적으로 컴파일하여야 할 바이트코드 열과 그렇지 않은 바이트코드 열을 구별할 수 있다.
또, 상기 프로그램 실행제어장치는, 상기 프로그램의 실행 전에, 네이티브코드로 변환해야 할 복수의 바이트코드 열을 나타내는 특별요구정보를 취득하는 특별요구정보 취득수단을 더 구비하고, 상기 요구관리수단은, 취득된 특별요구정보에 제시되는 각 바이트코드 열의 컴파일 요구정보를 우선도가 가장 높은 큐에 일괄 등록하여 관리하는 것으로 해도 좋다.
이 구성에 의하면, 우선적으로 컴파일하여야 할 바이트코드 열을 특별요구정보에 포함시켜 둠으로써, 이들 바이트코드 열을 우선적으로 컴파일할 수 있다.
또, 상기 프로그램 실행제어장치는, 상기 판정수단에 의해, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 때에, 당해 바이트코드 열이 현재 상기 변환처리의 도중인가를 판정하는 제 2 판정수단과, 상기 바이트코드 열이 현재 상기 변환처리의 도중이라고 판정된 경우에, 당해 변환처리가 종료하는 것을 기다려서, 변환된 네이티브코드를 상기 프로세서에 실행시키는 제 4 수단을 구비하는 것으로 해도 좋다.
이 구성에 의하면, 컴파일되지 않은 바이트코드 열의 실행 시에, 당해 바이트코드 열이 컴파일 중이면, 그 컴파일이 종료하는 것을 기다려서, 변환된 네이티브코드를 실행할 수 있다.
삭제
삭제
도 1은 명령실행 태스크와 컴파일 태스크의 실행상태 추이를 나타내는 도면이다.
도 2는 실시 예 1의 프로그램 실행제어장치(1)의 기능 구성도이다.
도 3은 Java언어로 기술된 소스프로그램의 일 예를 나타내는 도면이다.
도 4는 실시 예 1의 큐 기억부(16)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다.
도 5는 컴파일 완료 메소드정보 테이블의 일 예를 나타내는 도면이다.
도 6은 명령실행처리를 설명하기 위한 흐름도이다.
도 7은 실시 예 2의 프로그램 실행제어장치(1A)의 기능 구성도이다.
도 8은 실시 예 2의 큐 기억부(16A)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다.
도 9는 컴파일 요구정보의 순서 교체처리를 설명하기 위한 흐름도이다.
도 10은 실시 예 3의 프로그램 실행제어장치(1B)의 기능 구성도이다.
도 11은 클래스파일에서 취득한 우선도정보 테이블(23)의 구체적인 내용을 나타내는 도면이다.
도 12는 큐 기억부(16B)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다.
도 13은 컴파일 요구정보의 등록위치 결정처리를 설명하기 위한 흐름도이다.
도 14는 실시 예 4의 프로그램실행제어장치(1C)의 기능 구성도이다.
도 15는 일괄등록정보(24)의 구체적인 내용을 나타내는 도면이다.
도 16은 큐 기억부(16C)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다.
도 17은 실시 예 5의 프로그램 실행제어장치(1D)의 기능 구성도이다.
도 18은 관련 메소드 테이블(28)의 구체 예를 나타내는 도면이다.
도 19는 관련 메소드 검색처리를 설명하기 위한 흐름도이다.
도 20은 실시 예 6의 프로그램 실행제어장치(1E)의 기능 구성도이다.
도 21은 우선도 승계처리를 설명하기 위한 흐름도이다.
도 22는 명령실행처리의 변형 예를 설명하기 위한 흐름도이다.
<개요>
본 발명의 프로그램 실행제어장치는, 메모리 또는 하드디스크 등의 기억매체와 프로세서를 구비하는 컴퓨터장치이며, 구체적으로는 휴대전화기나 디지털방송 수신기 등이다.
프로그램 실행제어장치가 갖는 기억매체에는, 멀티태스크 OS(Operating System), JVM, 클래스파일(Class File), 그리고 자주 사용되는 범용적인 클래스 또는 메소드 등의 부품 군으로 이루어지는 클래스 라이브러리(Class Library) 등이 저장되어 있으며, 본 프로그램 실행제어장치의 각종 기능은, 기억매체에 저장되어 있는 멀티태스크 OS, 및 당해 멀티태스크 OS의 제어 하에 동작하는 JVM에 따라서 프로세서가 동작함으로써 실현된다.
프로그램 실행제어장치는, 프로그램의 실행과정에서 메소드를 호출하는 경우, 당해 메소드가 미 컴파일인가 여부를 판정하여, 미컴파일이면 당해 메소드의 바이트코드를 인터프리터 처리에 의해 실행함과 동시에 당해 메소드를 컴파일하는 요구를 등록하고, 컴파일 완료이면 당해 메소드의 네이티브코드를 실행한다. 그리고 등록된 컴파일 요구에 관한 메소드의 컴파일은 바이트코드의 인터프리터 처리에 의한 실행 또는 네이티브코드의 실행인 명령실행을 행하는 태스크와는 별도의 태스크에 의해 행한다.
즉, 바이트코드 또는 네이티브코드의 실행을 행하는 태스크를 명령실행 태스크, 컴파일 처리를 행하는 태스크를 컴파일 태스크라고 하면, 명령실행 태스크와 컴파일 태스크를 비 동기로 병행처리하고 있는 점이 본 발명의 특징이다.
도 1은 명령실행 태스크와 컴파일 태스크의 실행상태 추이를 나타내는 도면이다.
본 프로그램 실행제어장치는 프리엠티브(Preemptive)에 의한 우선도 베이스의 태스크 스케줄링에 의해 싱글 프로세서 자원의 할당을 행하고 있다.
각 태스크의 우선도는, 명령실행 태스크가 높게, 컴파일 태스크가 낮게 하고 있고, 우선도가 높은 태스크에 할당되는 프로세서의 시간배분과 우선도가 낮은 태스크에 할당되는 프로세서의 시간배분의 비율은 9 : 1로 하고 있다. 또, 명령실행 태스크의 실행에 있어서 대기상태가 발생한 경우, 즉시 컴파일 태스크의 실행으로 절환(Switching)하는 제어를 행한다.
이에 의해, 본 발명의 프로그램 실행제어장치는, 미컴파일인 메소드를 호출한 타이밍에서는 컴파일 처리를 실행하지 않고, 컴파일 태스크의 실행 시에 컴파일하므로, 프로그램의 실행 개시 초기에 빈발하는 컴파일 처리에 수반되는 활성화의 지연을 억제할 수 있어서, 실행속도의 저하를 억제할 수 있다.
이하, 본 발명의 프로그램 실행제어장치의 각 실시 예에 대하여 설명한다.
<실시 예 1>
<구성 1>
도 2는 실시 예 1의 프로그램 실행제어장치(1)의 기능 구성도이다. 프로그램 실행제어장치(1)는, 동 도면에 도시한 것과 같이, 클래스 파일/클래스 라이브러리 기억부(2), 명령실행 처리부(3), 컴파일요구 관리부(4), 네이티브코드 기억부(5), 컴파일 처리부(6), 컴파일 완료 메소드정보 테이블(7) 및 멀티태스크 제어부(19)를 구비한다. 또한, 동 도면에는 본 발명의 특징이 되는 기능부 만을 도시하고 있으며, 도시하고 있지 않은, 멀티태스크 OS 및 JVM이 실장되어 있는 컴퓨터장치가 통상 갖는 각 기능에 대해서는 설명을 생략한다.
클래스 파일/클래스 라이브러리 기억부(2)는 기억매체이며, 클래스 파일 및 클래스 라이브러리가 저장되어 있다.
클래스 파일은 안테나(21) 또는 네트워크(20)로부터 취득할 수 있다.
명령실행 처리부(3)는, 클래스 파일/클래스 라이브러리 기억부(2)에서 판독한 바이트코드를 축차 해석하여 프로세서에 실행시키고, 메소드 호출 시에 당해 메소드가 컴파일 완료이면, 당해 메소드의 네이티브코드를 프로세서에 실행시키는 처리를 행한다.
여기서, 명령실행 처리부(3)에 포함되는 각 기능에 대하여 설명한다. 명령실행 처리부(3)에는, 클래스 로드부(8), 명령인출부(9), 명령해독부(10), 명령실행부(11), 메소드종별 판정부(12) 및 네이티브코드 인출부(13)가 포함된다.
클래스 로드부(8)는 클래스 파일/클래스 라이브러리 기억부(2)에 저장되어 있는 클래스 파일 또는 클래스 라이브러리를 메모리에 로드하는 기능을 갖는다.
명령인출부(9)는 클래스 로드부(8)에 의해 메모리에 로드된 클래스 파일 또는 클래스 라이브러리를 구성하는 바이트코드를 명령 단위로 인출하는 기능을 갖는다.
명령해독부(10)는 명령인출부(9)에 의해 인출된 명령 단위의 바이트코드를 해독하여 네이티브코드를 선택하는 기능을 갖는다.
명령실행부(11)는 네이티브코드를 프로세서에 실행시키는 기능을 갖는다.
명령실행부(11)에 의해 실행되는 명령이 메소드를 호출하는 호출코드인 경우, 메소드종별 판정부(12)는, 컴파일 완료 메소드정보 테이블(7)을 참조하여, 당해 호출코드에 의해 호출되어야 할 메소드가 컴파일 완료인가 여부를 판정하는 기능을 갖는다. 호출코드는, Jasmin의 어셈블러 코드(Assembler Code) 표기에 의하 면, invokevirtual, invokespecial, invokstatic, invokeinterface와 같은 명령이다.
호출되어야 할 메소드가 컴파일 완료라고 판정된 경우, 네이티브코드 인출부(13)는 해당 메소드의 네이티브코드를 네이티브코드 기억부(5)에서 인출하여 명령실행부(11)로 보낸다. 명령실행부(11)는 인출된 네이티브코드를 프로세서에 실행시킨다.
호출되어야 할 메소드가 미컴파일이라고 판정된 경우, 메소드종별 판정부(12)는 당해 메소드를 컴파일하는 요구를 컴파일요구 관리부(4)에 통지한다. 그리고 명령인출부(9)는 당해 메소드의 바이트코드 열을 명령 단위로 축차 인출하고, 명령해독부(10)는 인출된 바이트코드 열을 명령 단위로 축차 해석하며, 명령실행부(11)는 축차 해석된 결과인 명령 단위의 네이티브코드 열을 프로세서에 실행시킨다.
컴파일요구 관리부(4)는, 메소드종별 판정부(12)로부터 컴파일 요구 통지를 접수하여, 접수한 컴파일 요구에 관한 메소드를 컴파일하는 순서에 대하여 관리하는 기능을 갖는다. 컴파일요구 관리부(4)는, 등록요구 접수부(14), 큐 제어부(15) 및 큐 기억부(16)를 갖는다.
등록요구 접수부(14)는 메소드종별 판정부(12)로부터 컴파일 요구 통지를 접수하는 기능을 갖는다. 이때, 메소드에 관한 정보, 예를 들어, 메소드를 특정하는 식별정보나, 메소드를 구성하는 바이트코드 열의 저장처 어드레스 등을 취득한다.
큐 기억부(16)는 RAM 등의 기억매체이다.
큐 제어부(15)는, 큐 기억부(16)에 복수의 컴파일 요구정보를 기억시키며, 이들 컴파일 요구정보를 큐에 의해 관리한다. 상세하게는, 등록요구 접수부(14)에서 접수한 컴파일 요구를 컴파일 요구정보로 하여 큐 기억부(16)에 등록하고, 컴파일 처리부(6)로부터 컴파일 요구정보의 취득 요구를 접수하면, 큐의 선두 위치에 있는 컴파일 요구정보가 나타내는 메소드를 컴파일 처리부(6)에 통지하며, 컴파일 처리부(6)에서 메소드의 컴파일이 종료하면 컴파일 처리부(6)로부터 통지를 접수하고, 당해 메소드의 컴파일 요구정보를 큐 기억부(16)에서 삭제한다.
큐 기억부(15)는, 컴파일 처리부(6)로부터 컴파일 요구정보의 취득 요구를 접수하여, 큐의 선두 위치에 있는 컴파일 요구정보가 나타내는 메소드를 컴파일 처리부(6)에 통지할 때, 컴파일 요구정보에 포함되는 컴파일 상태를 나타내는 비트 플래그를 세트(set)하여 컴파일 중이라는 것을 기록한다.
큐 제어부(15)는 컴파일 요구정보의 등록과 등록되어 있는 컴파일 요구정보의 삭제를 배타제어(Execlusive Control)에 의해 행한다. 즉, 동시에 컴파일 요구정보의 등록과 삭제를 행하도록 하고 있다. 또, 등록하려고 하는 컴파일 요구정보가 큐 기억부(16)에 이미 등록되어 있으면 등록을 행하지 않는다.
컴파일 처리부(6)는, 컴파일요구 취득부(17) 및 메소드 컴파일부(18)로 구성되어 있고, 컴파일요구 취득부(17)는 큐 제어부(15)에 컴파일하여야 할 메소드의 정보를 요구하여 취득하는 기능을 가지며, 메소드 컴파일부(18)는 당해 메소드의 바이트코드 열을 네이티브코드로 변환하는 기능을 갖는다.
메소드 컴파일부(18)에서 생성된 네이티브코드는 네이티브코드 기억부(5)에 저장되며, 메소드 명과 네이티브코드의 저장처 어드레스를 나타내는 컴파일 완료 메소드정보가 컴파일 완료 메소드정보 테이블(7)에 추가된다. 또, 컴파일요구 취득부(17)는 메소드의 컴파일이 종료하면 당해 메소드의 컴파일이 종료하였다는 취지를 큐 제어부(15)에 통지한다.
멀티태스크 제어부(19)는, 멀티태스크 OS의 기능이며, 우선도 베이스의 태스크 스케줄링(Priority-based Task Scheduling)에 의거하여, 명령실행 처리부(3)에 의해 실행되는 명령실행 태스크와 컴파일 처리부(6)에 의해 실행되는 컴파일 태스크 각각에 프로세서 자원의 할당을 행한다.
<데이터 1>
여기서 각종 데이터에 대하여 설명한다.
먼저, 프로그램 실행제어장치(1)에 의해 실행되는 프로그램에 대하여 설명한다.
도 3은, Java언어로 기술된 소스프로그램의 일 예를 나타내는 도면이다. 또한, 본 발명의 설명상 필요하지 않으므로, m1 메소드, m2 메소드의 내용에 대해서는 설명을 생략하고 있다. 동 도면에 도시하는 소스프로그램을 변환하여 생성된 바이트코드로 이루어지는 클래스 파일 A가 프로그램 실행제어장치(1)의 클래스 파일/클래스 라이브러리 기억부(2)에 기억된다.
클래스 파일을 프로그램 실행제어장치(1)가 실행하는 경우, 그 실행과정에서 클래스 파일 내의 호출코드에 의해서 메소드가 호출된다. 예를 들어, 도 3에 도시하는 프로그램인 경우라면, 먼저 init 메소드가 1회 호출되고, 이어서, m1 메소드 가 10회 호출되며, 그 후 m2 메소드가 5회 호출된다.
다음에, 컴파일 요구정보에 대하여 설명한다.
도 4는 큐 기억부(16)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다.
컴파일 요구정보는, 다음 컴파일 요구정보의 위치를 나타내는 포인터와, 메소드정보와, 컴파일 상태를 나타내는 비트 플래그로 이루어지며, 각 컴파일 요구정보는 포인터에 의해 연결되어 있고, 큐를 구성하고 있다.
메소드정보에는 컴파일하는 메소드를 식별하는 정보 및 메소드를 구성하는 바이트코드 열의 저장 어드레스 등이 포함된다.
컴파일 상태를 나타내는 비트 플래그는, 플래그가 세트되어 있으면 컴파일 중, 세트되어 있지 않으면 미컴파일을 나타낸다. 동 도면에는 알기 쉽게 「컴파일 중」, 「미컴파일」로 표현하고 있다.
동 도면에서는 init 메소드의 컴파일 요구정보가 큐의 선두로 되어 있고, 이어서, m1 메소드의 컴파일 요구정보, m2 메소드의 컴파일 요구정보의 순으로 배열되어 있다. 따라서 이 경우, 컴파일 처리부(6)에서 컴파일하여야 할 메소드의 정보를 요구하는 통지가 큐 제어부(15)에 대하여 이루어지면, init 메소드의 정보가 컴파일 처리부(6)에 대해서 통지된다. 컴파일 처리부(6)에 있어서, init 메소드의 컴파일이 행해져서 컴파일이 종료하면, init 메소드의 컴파일이 종료하였다는 취지의 통지를 큐 제어부(15)에 대하여 행한다.
큐 제어부(15)는, init 메소드의 컴파일이 종료하였다는 취지의 통지를 접수 하면 init 메소드의 컴파일 요구정보를 큐 기억부(15)에서 삭제하며, 큐의 선두의 컴파일 요구정보를 나타내는 포인터는 m1 메소드의 컴파일 요구정보를 나타내도록 갱신된다.
다음에 컴파일 완료 메소드에 대하여 설명한다.
도 5는 컴파일 완료 메소드정보 테이블(7)의 일 예를 나타내는 도면이다. 컴파일 완료 메소드정보는 컴파일이 완료된 메소드를 특정하는 정보(예를 들어, 메소드 명)와 네이티브코드의 저장처 어드레스로 이루어진다.
<동작 1>
여기서, 프로그램 실행제어장치(1)의 동작에 대하여 설명한다.
도 6은 명령실행 처리부(3)에 의해 실행되는 명령실행 태스크의 흐름을 나타내는 도면이다.
먼저, 명령실행부(11)는 인출된 명령(네이티브코드)을 프로세서에 실행시킨다(스텝 S1).
실행하는 명령이 프로그램 종료명령이면(스텝 S2 : YES) 동작을 종료한다. 실행하는 명령이 프로그램 종료명령이 아니면(스텝 S2 : NO) 스텝 S3으로 진행한다.
스텝 S3에서 실행하는 명령이 호출코드이면(스텝 S3 : YES) 스텝 S4로 진행한다. 스텝 S3에서 실행하는 명령이 호출코드가 아니면(스텝 S3 : NO) 스텝 S1로 복귀한다.
스텝 S4에서는, 메소드종별 판정부(12)가 컴파일 완료 메소드정보 테이블을 참조하여 호출대상인 메소드가 컴파일이 완료되었는가 여부를 판정한다. 호출대상인 메소드가 컴파일 완료이면(스텝 S4 : YES) 스텝 S5로 진행한다. 호출대상인 메소드가 컴파일 완료가 아니면(스텝 S4 : NO) 스텝 S6으로 진행한다.
스텝 S5에서는, 네이티브코드 인출부(13)가, 당해 메소드의 네이티브코드를 네이티브코드 기억부(5)에서 인출하여, 인출한 네이티브코드를 명령실행부(11)에 보낸다. 그 후 스텝 S1로 복귀한다.
스텝 S6에서는, 메소드종별 판정부(12)는 컴파일 요구를 컴파일요구 관리부(4)에 통지한다. 이어서, 스텝 S7에서는, 명령인출부(9)가 당해 메소드의 바이트코드를 인출하고, 명령해독부(10)가 인출한 바이트코드의 해독을 행한다. 그 후 스텝 S1로 복귀한다.
한편, 컴파일 처리부(6)에 의해 실행되는 컴파일 태스크는, 멀티태스크 제어부(19)에 의해 프로세서 자원이 할당되면, 큐 제어부(15)에 요구하여 취득한 메소드의 바이트코드 열의 컴파일을 행한다.
이어서, 동작의 구체적인 예를 도 2, 도 4, 도 5를 이용하여 설명한다. 도 2에 도시하는 명령실행부(11)가 메소드 m2를 호출하는 호출코드를 프로세서에 실행시키는 경우, 메소드종별 판정부(12)는 당해 메소드 m2가 컴파일 완료인가 여부를 도 5에 도시하는 컴파일 완료 메소드정보 테이블(7)을 참조하여 판정한다.
컴파일 완료 메소드정보 테이블(7)에는, 메소드 m2를 특정하는 정보가 컴파일 완료 메소드로서 네이티브코드의 저장처 어드레스와 함께 기재되어 있으므로, 메소드종별 판정부(12)는 당해 메소드 m2가 컴파일 완료라고 판정하여, 네이티브코 드 인출부(13)에 해당 네이티브코드를 인출하도록 한다. 인출된 네이티브코드는 명령실행부(11)에 보내져서 실행된다.
한편, 도시되어 있지 않은 메소드 m3을 호출하는 호출코드를 명령실행부(11)가 프로세서에 실행시키는 경우, 메소드종별 판정부(12)는, 도 5에 도시하는 컴파일 완료 메소드정보 테이블(7)에 메소드 m3이 기재되어 있지 않으므로 미 컴파일로 판정하고, 당해 메소드의 컴파일 요구를 컴파일요구 관리부(4)에 통지한다. 그리고 당해 메소드의 바이트코드를 명령 단위로 축차 인출하여 해석 실행하는, 이른바 인터프리터 처리를 행한다.
컴파일요구 관리부(4)는 도 4에 도시하는 컴파일 요구정보의 큐의 최후 열, 즉, 메소드 m2의 컴파일 요구정보 다음에 메소드 m3의 컴파일 요구정보를 등록한다.
<실시 예 2>
실시 예 2의 프로그램 실행제어장치는, 등록되어 있는 컴파일 요구정보의 메소드와 동일한 메소드에 대하여 컴파일 요구가 이루어지는 경우, 컴파일 요구를 접수한 횟수를 요구횟수로 하여 컴파일 요구정보 별로 카운트하여 기록하며, 등록된 순서로 배열되어 있는 각 컴파일 요구정보의 배열 순을 요구횟수가 많은 것 순으로 교체하는 순서 교체처리를 행한다.
이에 의해, 빈번하게 호출되는 메소드를 먼저 컴파일하도록 할 수 있으며, 프로그램의 실행속도의 향상으로 연결된다.
이하, 실시 예 2의 프로그램 실행제어장치에 대하여, 실시 예 1에서 설명한 프로그램 실행제어장치(1)와는 다른 부분만을, 구성, 데이터, 동작의 각 항으로 구분하여 설명한다.
<구성 2>
도 7은 실시 예 2의 프로그램 실행제어장치(1A)의 기능 구성도이다.
실시 예 1의 프로그램 실행제어장치(1)와 다른 점은 큐 제어부(15A) 내에 가산부(22)를 구비하는 점이다.
가산부(22)는, 이미 등록되어 있는 컴파일 요구정보의 메소드와 동일한 메소드의 컴파일 요구를 접수한 경우에, 당해 컴파일 요구정보의 메소드가 미컴파일 상태이면, 당해 컴파일 요구정보에 포함되어 기록되어 있는 요구횟수에 1을 가산한 값을 산출하는 기능을 갖는다. 큐 제어부(15A)는 산출한 값을 요구횟수로서 갱신 기록한다.
<데이터 2>
다음에, 실시 예 2의 큐 기억부(16A)에 등록되어 있는 구체적인 컴파일 요구정보에 대하여 설명한다.
도 8은 큐 기억부(16A)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다. 실시 예 1에서 설명한 컴파일 요구정보와 다른 점은, 컴파일 요구정보가 2개의 포인터를 가지며, 배열위치의 전후관계를 2개의 포인터로 나타내도록 하고 있는 점과, 요구횟수를 기록하는 영역을 설치하고 있는 점이다.
동 도면은 순서 교체처리에 의해서 요구횟수가 많은 것 순으로 교체가 행해진 후의 배열상태를 도시하고 있다.
<동작 2>
다음에, 큐의 순서 교체처리의 동작에 대하여 설명한다.
도 9는 큐 제어부(15A)가 행하는 컴파일 요구정보의 순서 교체처리의 흐름을 나타내는 도면이다.
먼저, 등록요구 접수부(14)에서 컴파일 요구정보가 접수되면, 큐 제어부(15A)는 큐의 선두의 컴파일 요구정보를 참조한다(스텝 S11).
이어서, 접수된 컴파일 요구에 관한 메소드와 참조한 컴파일 요구정보에 관한 메소드가 동일하면(스텝 S12 : YES) 스텝 S13으로 진행한다. 동일하지 않으면(스텝 S12 : NO) 스텝 S17로 진행한다.
스텝 S17에서, 모든 컴파일 요구정보의 참조가 완료되어 있으면(스텝 S17 : YES) 스텝 S19로 진행한다. 아직 모든 컴파일 요구정보를 참조하고 있지 않으면(스텝 S17 : NO) 스텝 S18로 진행한다.
스텝 S18에서, 참조한 컴파일 요구정보의 포인터가 가리키는, 하나 뒤의 배열위치의 컴파일 요구정보를 참조하고, 스텝 S12로 진행한다.
스텝 S19에서, 접수한 컴파일 요구정보에 관한 메소드의 컴파일 요구정보를 큐의 최후 열에 등록한다.
스텝 S13에서, 참조한 컴파일 요구정보의 메소드가 미컴파일인가, 컴파일 중인가를 비트 플래그에 의해 확인한다. 컴파일 중이면(스텝 S13 : NO) 교체처리를 종료하고, 아직 미컴파일이면(스텝 S13 : YES) 스텝 S14로 진행한다.
스텝 S14에서, 참조한 컴파일 요구정보의 컴파일 횟수에 1을 가산한 값을 요 구횟수로 갱신한다. 이어서, 스텝 S15에서, 하나 앞의 배열위치에 있는 컴파일 요구정보의 요구횟수와 갱신한 요구횟수의 크기를 비교한다.
그 결과, 하나 앞의 배열위치에 있는 컴파일 요구정보의 요구횟수보다 갱신한 요구횟수 쪽이 큰 값이면(스텝 S15 : YES) 스텝 S16으로 진행한다. 그렇지 않으면(스텝 S15 : NO) 순서 교체처리를 종료한다.
스텝 S16에서, 하나 앞의 배열위치에 있는 컴파일 요구정보와 요구횟수를 갱신한 컴파일 요구정보의 배열순서를 교체한다. 즉, 교체하는 2개의 컴파일 요구정보 및 그 전후에 위치하는 각 컴파일 요구정보의 포인터정보의 변경을 행한다. 그 후, 순서 교체처리를 종료한다.
<실시 예 3>
실시 예 3의 프로그램 실행제어장치는, 각 메소드의 우선도가 기재되어 있는 우선도정보 테이블을 클래스 파일에서 취득하고, 취득한 우선도정보 테이블을 참조하여 컴파일하는 메소드의 우선도를 특정하며, 우선도에 의거하여 컴파일 요구정보의 배열위치를 결정하는 처리를 행한다.
이에 의해, 우선도가 높은 메소드부터 컴파일되므로, 프로그램 실행속도의 향상으로 연결된다.
이하, 실시 예 3의 프로그램 실행제어장치에 대하여, 실시 예 1에서 설명한 프로그램 실행제어장치(1)와는 다른 부분만을, 구성, 데이터, 동작의 각 항으로 구분하여 설명한다.
<구성 3>
도 10은 실시 예 3의 프로그램 실행제어장치(1B)의 기능 구성도이다.
실시 예 1의 프로그램 실행제어장치(1)와 다른 점은, 우선도정보 테이블(23)을 취득하는 점, 큐 제어부(15B)가 메소드의 우선도에 의거하여 등록하는 컴파일 요구정보의 큐에서의 등록위치를 결정하고 있는 점이다.
<데이터 3>
다음에 각종 데이터에 대하여 설명한다.
도 11은 클래스 파일로부터 취득한 우선도정보 테이블(23)의 구체적인 내용을 나타내는 도면이다. 우선도정보 테이블(23)에서는 메소드와 우선도를 서로 대응시키고 있다. 여기서 말하는 우선도는, 컴파일 처리를 우선적으로 행하여야 하는 정도를 나타내는 지표이며, 값이 큰 쪽이 우선도가 높은 것으로 하고 있다. 따라서 우선도가 높은 것부터 배열하면, 메소드 m3, 메소드 init, 메소드 m2, 메소드 m1 순이 된다. 또한, 본 실시 예에서는 각 메소드의 우선도는 각각 다른 값으로 되어 있다.
도 12는 큐 기억부(16B)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내고 있다. 동 도면에 도시하는 바와 같이, 우선도가 높은 컴파일 요구정보가 앞에 오도록 배열되어 있다.
<동작 3>
다음에, 큐 제어부(16B)에 의한 컴파일 요구정보의 등록위치 결정처리에 대하여 설명한다.
도 13은 큐 제어부(15B)가 행하는 컴파일 요구정보의 등록위치 결정처리의 흐름을 나타내는 도면이다.
먼저, 등록요구 접수부(14B)에서 컴파일 요구가 접수되면, 큐 제어부(15B)는 큐의 선두의 컴파일 요구정보를 참조한다(스텝 S21).
이어서, 접수된 컴파일 요구에 관한 메소드와 참조한 컴파일 요구정보에 관한 메소드가 동일하면(스텝 S22 : YES) 등록위치 결정처리를 종료한다. 동일하지 않으면(스텝 S22 : NO) 스텝 S23으로 진행한다.
스텝 S23에서, 등록하는 메소드의 우선도와 참조한 컴파일 요구정보에 기재되어 있는 우선도를 비교하여, 등록하는 메소드의 우선도 쪽이 높으면(스텝 S23 : YES) 스텝 S24로 진행한다. 참조한 컴파일 요구정보에 기재되어 있는 우선도 쪽이 높으면(스텝 S23 : NO) 스텝 S25로 진행한다.
스텝 S25에서, 모든 컴파일 요구정보의 참조가 종료되면(스텝 S25 : YES) 스텝 S26으로 진행한다. 아직 모든 컴파일 요구정보를 참조하고 있지 않으면(스텝 S25 : NO) 스텝 S27로 진행한다.
스텝 S26에서, 접수한 컴파일 요구에 관한 메소드의 컴파일 요구정보를 큐의 최후 열에 등록하고, 등록위치 결정처리를 종료한다.
스텝 S24에서, 등록하는 메소드의 컴파일 요구정보를 참조한 컴파일 요구정보의 하나 앞의 배열위치에 등록하고, 등록위치 결정처리를 종료한다.
예를 들어, 도 12에 도시하는 컴파일 요구정보의 큐에 우선도 2인 메소드 m3의 컴파일 요구정보를 등록하는 경우, 등록위치 결정처리에 의해, 메소드 m2의 컴파일 요구정보와 메소드 m1의 컴파일 요구정보 사이에 메소드 m3의 컴파일 요구정 보가 등록되게 되나, 구체적으로는, 메소드 m2의 컴파일 요구정보 및 메소드 m1의 컴파일 요구정보의 포인터 각각이 메소드 m3의 컴파일 요구정보의 등록위치를 나타내도록 갱신함으로써, 메소드 m3의 컴파일 요구정보의 등록위치가 결정된다.
<실시 예 4>
실시 예 4의 프로그램 실행제어장치는 우선도가 고, 중, 저로 부여되어 있는 3개의 큐를 설치하고, 우선도가 높은 큐에 등록되어 있는 컴파일 요구정보의 메소드부터 순서대로 컴파일한다. 즉, 우선도 고의 큐의 선두 위치에 등록되어 있는 컴파일 요구정보의 메소드부터 순서대로 컴파일을 하고, 우선도 고의 큐에 등록되어 있는 컴파일 요구정보의 메소드가 모두 컴파일되면, 다음에 우선도 중의 큐의 선두에 등록되어 있는 컴파일 요구정보의 컴파일을 행하며, 우선도 중의 큐에 등록되어 있는 컴파일 요구정보의 메소드가 모두 컴파일되면, 그 다음에 우선도 저의 큐의 선두에 등록되어 있는 컴파일 요구정보의 컴파일을 행한다.
우선도 고의 큐에는 프로그램 실행제어장치의 OS의 기동과 동시에 큐 기억부에 일괄 등록되는 컴파일 요구정보가 등록되고, 우선도 중의 큐에는 우선도정보 테이블에 우선도가 제시되어 있는 메소드의 컴파일 요구정보가 등록되며, 우선도 저의 큐에는 우선도 고의 큐 및 우선도 중의 큐에 등록되는 메소드 이외의 메소드가 등록된다.
이하, 실시 예 4의 프로그램 실행제어장치에 대하여, 실시 예 1 내지 실시 예 3에서 설명한 프로그램 실행제어장치와는 다른 부분만을, 구성, 데이터의 각 항으로 구분하여 설명한다.
<구성 4>
도 14는 실시 예 4의 프로그램 실행제어장치(1C)의 기능 구성도이다.
실시 예 1의 프로그램 실행제어장치(1)와 다른 점은, 큐 제어부(15C)가 우선도가 다른 3개의 큐를 제어하고 있는 점과, 일괄등록부(25)를 새로이 구비하여, 우선적으로 컴파일하여야 할 메소드의 메소드 명 및 저장처 등을 나타내는 메소드정보의 테이블인 일괄등록정보(24)에 의거하여, OS의 기동과 함께 큐 기억부(16C)의 우선도 고의 큐에 이들 메소드의 컴파일 요구정보를 등록하는 점, 실시 예 2에서 설명한 순서 교체처리나, 실시 예 3에서 설명한 등록위치 결정처리를 행하여 컴파일 요구정보를 등록하고 있는 점이다.
<데이터 4>
다음에 각종 데이터에 대하여 설명한다.
도 15는 일괄등록정보(24)의 구체적인 내용을 나타내는 도면이다. 일괄등록정보(24)의 각 메소드는, 사용자에 의해 컴파일하여야 할 메소드로 지정된 메소드나, 프로그램 실행 시뮬레이션의 결과, 빈번하게 호출된다는 사실을 알고 있는 메소드 등을 상정하고 있다.
도 16은 큐 기억부(16C)에 등록되어 있는 컴파일 요구정보의 구체 예를 나타내는 도면이다. 동 도면에 도시하는 것과 같이, 우선도 고의 제 1 큐, 우선도 중의 제 2 큐, 우선도 저의 제 3 큐가 설치되어 있고, 제 1 큐에는 도 15에서 도시한 일괄등록정보(24)에 기재되어 있던 메소드 m4, 메소드 m5, 메소드 m6 각각의 컴파일 요구정보가 등록되어 있다.
또, 제 2 큐에는 우선도가 부여되어 있는 각종 메소드가 우선도 순으로 등록되어 있다. 그리고 제 3 큐에는 제 1 큐 및 제 2 큐에 등록되지 않는 메소드의 컴파일 요구정보가 순서 교체처리에 의해 동적으로 순서를 바꾸면서 배열되어 있다.
<실시 예 5>
실시 예 5의 프로그램 실행제어장치는, 관련메소드 테이블을 클래스파일에서 취득하고, 컴파일 처리부(6)에서 컴파일을 행하는 메소드와 관련되어 있는 메소드가 아닌가 여부를 관련메소드 테이블에서 검색하여, 관련되어 있는 메소드가 검색되면 그 검출된 메소드의 등록요구를 행한다.
이하, 실시 예 5의 프로그램 실행제어장치에 대하여, 실시 예1에서 설명한 프로그램 실행제어장치(1)와는 다른 부분만을, 구성, 데이터, 동작의 각 항으로 구분하여 설명한다.
<구성 5>
도 17은 실시 예 5의 프로그램 실행제어장치(1D)의 기능 구성도이다.
실시 예 1의 프로그램 실행제어장치(1)와 다른 점은 관련메소드 검색처리부(26)를 구비하고 있는 점이다.
관련메소드 검색처리부(26)는, 관련메소드 테이블(28)을 취득하고, 컴파일요구 취득부(17)로부터 통지된 메소드와 관련되어 있는 메소드가 없는가 여부를 취득한 관련메소드 테이블(28)에서 검색하는 검색부(27)를 갖는다. 관련하는 메소드가 검출되면 검출된 메소드를 컴파일 요구된 것으로 하여 등록요구 접수부(14D)에 통지한다.
<데이터 5>
도 18은 관련메소드 테이블(28)의 구체 예를 나타내는 도면이다.
메소드 init와 관련되어 있는 메소드는 메소드 m1, 메소드 m2이며, 메소드 m3와 관련되어 있는 메소드는 메소드 m4, 메소드 m5이다.
<동작 5>
다음에, 관련메소드의 검색에서 등록까지의 처리인 관련메소드 검색처리의 동작에 대하여 설명한다.
도 19는 관련메소드 검색처리부(26)에서 이루어지는 관련메소드 검색처리의 흐름을 나타내는 도면이다.
먼저, 컴파일요구 취득부(17)로부터 메소드가 통지되면, 검색부(27)는, 관련메소드 테이블(28)을 참조하여, 관련메소드가 있는가 여부를 검색한다(스텝 S31).
관련메소드가 검출되면(스텝 S32 : YES) 스텝 S33으로 진행한다. 검출되지 않으면(스텝 S32 : NO) 관련메소드 검색처리를 종료한다.
스텝 S33에서, 검출된 관련메소드에 대하여 컴파일 요구가 이루어진 것으로 하여, 등록요구 접수부(14D)에 통지하고, 관련메소드 검색처리를 종료한다.
여기서, 구체적인 동작을 도 18을 이용하여 설명한다. 관련메소드 검색처리부(26)는, 컴파일요구 취득부(27)로부터 메소드 init가 통지되면, 관련메소드 테이블(28)을 참조하여, 관련메소드가 있는가 여부를 검색한다. 그 결과, 도 18에 도시한 것과 같이, 메소드 init에는 메소드 m1, 메소드 m2가 관련되어 있으므로, 메소드 m1, 메소드 m2를 등록요구 접수부(14D)에 통지한다.
<실시 예 6>
실시 예 6의 프로그램 실행제어장치는, 실시 예 3에서 설명한 것과 같이, 각 메소드의 우선도에 의거하여 등록위치 결정처리를 행하나, 컴파일하는 메소드의 우선도와 명령실행 태스크의 우선도의 비교를 행하여, 그 결과, 컴파일하는 메소드의 우선도 쪽이 명령실행 태스크의 우선도보다 높으면, 당해 메소드의 우선도를 컴파일 태스크의 우선도로 하는 우선도 승계처리를 더 행한다.
이하, 실시 예 6의 프로그램 실행제어장치에 대하여, 실시 예 3에서 설명한 프로그램 실행제어장치(1B)와는 다른 부분만을, 구성, 동작의 각 항으로 구분하여 설명한다.
<구성 6>
도 20은 실시 예 6의 프로그램 실행제어장치(1E)의 기능 구성도이다.
실시 예 3의 프로그램 실행제어장치(1B)와 다른 점은 우선도 승계부(29)를 구비하고 있는 점이다.
우선도 승계부(29)는, 기능적으로는 우선도 비교부(30)와 태스크 우선도 변경부(31)를 포함한다.
우선도 비교부(30)는, 컴파일요구 취득부(17)로부터 컴파일을 개시하는 메소드의 우선도의 통지를 접수하여, 당해 메소드의 우선도와 명령실행 태스크의 우선도를 비교한다.
비교한 결과, 컴파일을 개시하는 메소드의 우선도 쪽이 높은 경우, 태스크 우선도 변경부(31)는 멀티태스크 제어부(19E)에 당해 메소드의 우선도를 컴파일 태 스크의 우선도로 하는 지시를 행한다.
멀티태스크 제어부(19E)는 태스크 우선도 변경부(31)로부터의 지시에 의거하여 컴파일 태스크의 우선도를 변경한다.
<동작 6>
다음에 우선도 승계처리에 대하여 설명한다.
도 21은 우선도 승계처리를 설명하기 위한 흐름도이다.
먼저, 우선도 승계부(29)는, 컴파일요구 취득부(17)로부터 컴파일을 개시하는 메소드의 우선도의 통지를 접수하고, 우선도 비교부(30)에서 당해 메소드의 우선도와 명령실행 태스크의 우선도를 비교한다(스텝 S41).
그 결과, 메소드의 우선도 쪽이 명령실행 태스크의 우선도보다 높으면(스텝 S42 : YES), 태스크 우선도 변경부(31)는 컴파일 태스크의 우선도를 메소드의 우선도로 변경하는 지시를 멀티태스크 제어부(19E)에 통지한다(스텝 S43). 명령실행 태스크의 우선도 쪽이 메소드의 우선도보다 높으면(스텝 S42 : NO) 스텝 S41로 복귀한다.
예를 들어, 명령실행 태스크의 우선도의 디폴트값이 6이고, 컴파일 태스크의 우선도의 디폴트값이 7인 경우, 우선도 비교부(30)에서 컴파일하는 메소드의 우선도와 명령실행 태스크의 우선도를 비교하면 7 > 6으로, 컴파일하는 메소드의 우선도 쪽이 높으므로, 태스크 우선도 변경부(31)는 컴파일 태스크의 우선도를 메소드의 우선도로 변경하는 지시를 멀티태스크 제어부(19E)에 대하여 행한다. 멀티태스크 제어부(19E)는 지시에 의거하여 컴파일 태스크의 우선도를 7로 하며, 이것은, 명령실행 태스크의 디폴트 우선도 6보다 높은 값이므로, 컴파일 태스크에 대하여 프로세서 자원을 우선적으로 할당하는 것이다.
<보충>
본 발명은 상술한 각 실시 예에 한정되는 것은 물론 아니다. 즉,
(1) 실시 예 1의 설명에서는, 메소드종별 판정부(12)에서, 호출하는 메소드가 컴파일 완료이면, 바로 당해 메소드의 인터프리터 처리를 행하고 있었으나, 호출하는 메소드가 컴파일 중이면 그 컴파일의 종료를 기다려서, 컴파일된 메소드의 네이티브코드를 실행하도록 해도 좋다. 그 경우의 동작에 대하여 도면을 이용하여 설명한다.
도 22는 호출하는 메소드가 컴파일 중이면 대기하는 경우의 실행명령 태스크의 흐름을 나타내는 도면이다.
먼저, 명령실행부(11)는 인출된 명령을 프로세서에 실행시킨다(스텝 S51). 실행하는 명령이 프로그램 종료명령이면(스텝 S52 : YES) 동작을 종료한다. 실행하는 명령이 프로그램 종료명령이 아니면(스텝 S52 : NO) 스텝 S53으로 진행한다.
스텝 S53에서, 실행하는 명령이 호출코드이면(스텝 S53 : YES) 스텝 S54로 진행한다. 스텝 S53에서, 실행하는 명령이 호출코드가 아니면(스텝 S53 : NO) 스텝 S51로 복귀한다.
스텝 S54에서는 메소드종별 판정부(12)가 컴파일 완료정보 테이블을 참조하여 호출대상인 메소드가 컴파일 완료인가 여부를 판정한다. 호출대상인 메소드가 컴파일 완료이면(스텝 S54 : YES) 스텝 S55로 진행한다. 호출대상인 메소드가 컴파 일 완료가 아니면(스텝 S54 : NO) 스텝 S56으로 진행한다.
스텝 S55에서는, 네이티브코드 인출부(13)가 당해 메소드의 네이티브코드를 네이티브코드 기억부(5)에서 인출하여, 인출한 네이티브코드를 명령실행부(11)에 보낸다. 그 후 스텝 S51로 복귀한다.
스텝 S56에서는, 메소드종별 판정부(12)는, 큐 제어부(15)가 큐를 참조하도록 하여, 호출대상인 메소드가 현재 컴파일 중인가 여부를 확인하도록 한다. 그 결과, 호출대상인 메소드가 현재 컴파일 중이면(스텝 S56 : YES) 컴파일이 종료하기까지 대기하며, 그렇지 않으면(스텝 S56 : NO) 컴파일 요구를 컴파일요구 관리부(4)에 통지한다. 이어서, 스텝 S59에서는, 명령인출부(9)가 당해 메소드의 바이트코드를 인출하고, 명령해독부(10)가 인출한 바이트코드의 해독을 행한다. 그 후 스텝 S51로 복귀한다.
(2) 도 1에서는 하나의 명령실행 태스크와 하나의 컴파일 태스크의 실행상태 추이를 도시하였으나, 명령실행 태스크 및 컴파일 태스크는 복수라도 좋으며, 이 경우, 각 태스크에 각각 다른 우선도가 부여되어 있어도 좋다.
상기 각 실시 예에서는 컴파일 태스크의 우선도보다 명령실행 태스크의 우선도를 높게 하고 있었으나, 복수의 컴파일 태스크를 설치하는 경우, 특정한 컴파일 태스크를 예외로 하여, 당해 컴파일 태스크의 우선도를 명령실행 태스크의 우선도보다 높게 설정하고 있어도 된다.
예를 들어, 실시 예 4에서는 우선도가 고, 중, 저로 부여되어 있는 3개의 큐를 설치하고 있었으나, 각각 우선도가 다른 큐로서, 우선도 고의 제 1 큐에 등록되 어 있는 컴파일 요구정보의 메소드를 컴파일하는 컴파일 태스크의 우선도를 명령실행 태스크의 우선도보다 높게 설정해 두는 것을 생각할 수 있다.
(3) 상술한 각 실시 예의 프로그램 실행제어장치는 싱글프로세서 자원의 각 태스크에 대한 할당을 스케줄링하여, 각 태스크를 의사병행처리(擬似竝行處理)하고 있는 것으로 하여 설명하였으나, 본 발명의 프로그램 실행제어장치는 멀티프로세서 혹은 복수의 독립한 프로세서를 사용하여 각 태스크를 동시에 병행하여 실행하는 것으로 해도 된다.
(4) 본 발명은 JiT 컴파일러를 갖는 JVM이 실장된 프로그램 실행제어장치의 적용에만 한정되는 것이 아니라, 컴파일러 기능을 구비한, 중간코드를 해석 실행하는 가상머신이 실장되어 있는 프로그램 실행제어장치 전반에 적용할 수 있다.
(5) 각 실시 예에서는 메소드를 컴파일하는 순서를 큐에서 관리하고 있었으나, 본 발명의 프로그램 실행제어장치는 반드시 큐에서 컴파일하는 순서를 관리할 필요는 없다. 예를 들어, 프로그램별, 혹은 클래스 파일별로 미리 설정되어 있는 임계치를 취득하여, 컴파일 요구횟수가 임계치를 넘은 것부터 컴파일하도록 해도 된다. 또, 프로그램 실행개시로부터 소정 시간마다, 그 때에 등록되어 있는 모든 컴파일 요구정보 중 가장 우선도가 높은 메소드를 컴파일하도록 해도 되며, 컴파일 태스크에 프로세서 자원이 할당될 때마다, 그때에 등록되어 있는 컴파일 요구정보 중 가장 우선도가 높은 메소드를 컴파일하도록 해도 된다.
(6) 실시 예 4에서는 3개의 우선도가 다른 큐를 이용하고 있었으나, 3개에 한정되지는 않으며, 2개라도, 4개라도 좋다.
(7) 본 발명의 프로그램 실행제어장치는 일반적인 JVM이 구비하고 있는 불필요 데이터 수집 기능(Garbage Collection Function)을 가지고 있으며, 불필요 데이터 수집은 불필요 데이터 수집 태스크로서 명령실행 태스크 및 컴파일 태스크와 병행하여 실행되는 것을 상정하고 있다. 컴파일 한 네이티브코드 중, 재인출되지 않는 것, 사용빈도가 낮은 것에 대해서는 불필요 데이터 수집에 의해 파기되도록 해도 좋다.
(8) 각 실시 예에 제시한 프로그램 실행제어장치에 의한 처리수순(도 6, 도 9, 도 13, 도 19, 도 21, 도 22에 제시한 수순 등)을 프로그램 실행기능을 구비하는 기기 등에 실행시키기 위한 제어프로그램을 기록매체에 기록하거나 또는 각종 통신로 등을 경유하여 유통시켜서 반포할 수도 있다. 이와 같은 기록매체에는 IC카드, 광디스크, 플렉시블 디스크, ROM 등이 있다. 유통, 반포된 제어프로그램은 ROM을 구비하는 기기 등에 인스톨 됨으로써 이용에 제공되고, 그 기기 등은 그 제어프로그램의 실행에 의해 각 실시 예에 제시한 것과 같은 프로그램 실행제어장치의 기능을 실현한다.
본 발명의 프로그램 실행제어장치는 프로세서를 구비한 다양한 전자기기에 실장되는 가상머신으로서 적용할 수 있다.

Claims (20)

  1. 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 프로그램 실행제어장치로,
    상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정수단과,
    호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차(逐次) 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 수단과,
    호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 수단과,
    상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 수단을 구비하고,
    상기 프로그램 실행제어장치는 멀티태스크 오퍼레이팅 시스템(Multitask Operating System)의 제어 하에 동작하고,
    상기 제 1 수단에 의해 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에 의해 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며,
    상기 제 1 수단 및 상기 제 2 수단의 태스크 실행은 상기 제 3 수단의 태스크 실행보다 우선도가 높게 설정되어 있고,
    상기 프로그램 실행제어장치는,
    각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득수단과,
    상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교수단과,
    비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경수단을 더 구비하는 것을 특징으로 하는 프로그램 실행제어장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 수단 또는 상기 제 2 수단의 태스크 실행에서 대기상태가 발생한 경우, 상기 제 3 수단의 태스크 실행으로 스위칭(Switching)하는 스위칭수단을 더 구비하는 것을 특징으로 하는 프로그램 실행제어장치.
  4. 제 3 항에 있어서,
    상기 제 1 수단에 의해 이루어지는 상기 요구에 따라서, 당해 요구에 관한 바이트코드 열을 네이티브코드로 변환하기 위한 정보인 컴파일 요구정보(Compilation Request Information)를 기억수단에 등록하여 관리하는 요구관리수단을 더 구비하며,
    상기 제 3 수단은, 상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석의 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구관리수단에 의해서 상기 기억수단에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  5. 제 4 항에 있어서,
    상기 요구관리수단은 상기 요구를 먼저 받은 것부터 순서대로 이루어지는 큐(Queue)에 의해 각 컴파일 요구정보를 등록하여 관리하고,
    상기 제 3 수단은 상기 큐의 선두 위치에 있는 컴파일 요구정보부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  6. 제 4 항에 있어서,
    상기 요구관리수단은, 상기 제 1 수단에 의해 이루어지는 상기 요구에 관한 바이트코드 열의 컴파일 요구정보가 상기 기억수단에 이미 등록되어 있는 경우에, 이중 등록을 행하지 않는 것을 특징으로 하는 프로그램 실행제어장치.
  7. 제 4 항에 있어서,
    상기 요구관리수단은,
    상기 제 1 수단에 의해서 이루어지는 상기 요구에 따라서, 취득된 우선도정보를 참조하여, 당해 요구에 관한 바이트코드 열의 우선도를 특정하는 특정수단과,
    상기 기억수단에 등록되어 있는 각 컴파일 요구정보에 관한 바이트코드 열의 우선도와 상기 특정수단에 의해 특정된 우선도를 비교하는 비교수단과,
    비교한 결과에 의거하여, 우선도가 높은 것 순의 배열이 되도록, 상기 요구에 관한 바이트코드 열의 컴파일 요구정보의 큐 위치를 결정하는 결정수단을 구비하는 것을 특징으로 하는 프로그램 실행제어장치.
  8. 제 4 항에 있어서,
    어떤 바이트코드 열과 관련되는 관련 바이트코드 열을 대응시키고 있는 대응정보를 취득하는 대응정보 취득수단과,
    상기 대응정보를 참조하여, 상기 요구에 관한 바이트코드 열과 대응되어 있는 관련 바이트코드 열이 있는가 여부를 검색하는 검색수단을 더 구비하며,
    상기 검색수단에 의한 검색결과 관련 바이트코드 열이 검출된 경우, 상기 요구관리수단은 검출된 관련 바이트코드 열의 컴파일 요구정보를 기억수단에 등록하는 것을 특징으로 하는 프로그램 실행제어장치.
  9. 제 4 항에 있어서,
    상기 제 3 수단은, 상기 기억수단에 복수 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열 중, 취득된 상기 우선도정보에 의거하여 우선도가 높은 것부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  10. 제 4 항에 있어서,
    상기 요구관리수단은,
    반복하여 상기 요구가 이루어지는 바이트코드 열에 대해서는 그 요구횟수를 계수하여, 계수한 요구횟수를 당해 바이트코드 열의 컴파일 요구정보에 포함시켜서 상기 기억수단에 기록하는 횟수기록수단과,
    상기 요구횟수의 임계치를 취득하는 취득수단을 구비하며,
    상기 제 3 제어수단은 상기 요구횟수가 임계치를 초과한 것부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  11. 제 5 항에 있어서,
    상기 요구관리수단은,
    반복하여 상기 요구가 이루어지는 바이트코드 열에 대해서는 그 요구횟수를 계수하여, 계수한 요구횟수를 당해 바이트코드 열의 컴파일 요구정보에 포함시켜서 상기 기억수단에 기록하는 횟수기록수단과,
    기록한 각 컴파일 요구정보의 요구횟수를 비교하여, 요구횟수가 많은 순이 되도록 각 컴파일 요구정보의 큐 위치를 교체하는 교체수단을 더 구비하는 것을 특 징으로 하는 프로그램 실행제어장치.
  12. 제 5 항에 있어서,
    상기 요구관리수단은 우선도가 다른 복수의 큐를 관리하고 있고,
    상기 제 3 수단은 우선도가 가장 높은 큐에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열부터 순서대로 상기 변환처리를 상기 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  13. 제 12 항에 있어서,
    상기 프로그램의 실행 전에, 네이티브코드로 변환해야 할 복수의 바이트코드 열을 나타내는 특별요구정보를 취득하는 특별요구정보 취득수단을 더 구비하고,
    상기 요구관리수단은, 취득된 특별요구정보에 제시되는 각 바이트코드 열의 컴파일 요구정보를 우선도가 가장 높은 큐에 일괄 등록하여 관리하는 것을 특징으로 하는 프로그램 실행제어장치.
  14. 제 1 항에 있어서,
    상기 판정수단에 의해, 호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 때에, 당해 바이트코드 열이 현재 상기 변환처리의 도중인가를 판정하는 제 2 판정수단과,
    상기 바이트코드 열이 현재 상기 변환처리의 도중이라고 판정된 경우에, 당 해 변환처리가 종료하는 것을 기다려서, 변환된 네이티브코드를 상기 프로세서에 실행시키는 제 4 수단을 구비하는 것을 특징으로 하는 프로그램 실행제어장치.
  15. 제 1 항에 있어서,
    상기 제 1 수단에 의해 이루어지는 상기 요구에 따라서, 당해 요구에 관한 바이트코드 열을 네이티브코드로 변환하기 위한 정보인 컴파일 요구정보를 기억수단에 등록하여 관리하는 요구관리수단을 더 구비하며,
    상기 제 3 수단은, 상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구관리수단에 의해서 상기 기억수단에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  16. 삭제
  17. 제 1 항에 있어서,
    상기 제 1 수단에 의해 이루어지는 상기 요구에 따라서, 당해 요구에 관한 바이트코드 열을 네이티브코드로 변환하기 위한 정보인 컴파일 요구정보를 기억수단에 등록하여 관리하는 요구관리수단을 더 구비하며,
    상기 제 3 수단은, 상기 제 1 수단에 의해 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 수단에 의해 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구관리수단에 의해서 상기 기억수단에 등록되어 있는 컴파일 요구정보에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 것을 특징으로 하는 프로그램 실행제어장치.
  18. 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 프로그램 실행제어방법으로,
    상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와,
    호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와,
    호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와,
    상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며,
    상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고,
    상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며,
    상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고,
    상기 프로그램 실행제어방법은,
    각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와,
    상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와,
    비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 하는 프로그램 실행제어방법.
  19. 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 제어프로그램으로,
    상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와,
    호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와,
    호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와,
    상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며,
    상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고,
    상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며,
    상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고,
    상기 프로그램 실행제어방법은,
    각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와,
    상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와,
    비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 하는 제어프로그램.
  20. 바이트코드 열을 호출하는 호출코드를 포함하는 하나 또는 복수의 바이트코드 열로 이루어지는 프로그램을 프로세서에 실행시키는 제어프로그램을 기록한 기록매체로,
    상기 제어프로그램은,
    상기 프로그램의 실행과정에서 호출 코드가 실행 대상이 될 때마다 호출되어야 할 바이트코드 열이 상기 프로세서용의 네이티브코드(Native Code)로 변환이 완료되었는가 여부를 판정하는 판정단계와,
    호출되어야 할 바이트코드 열이 네이티브코드로 미변환이라고 판정된 경우에, 당해 바이트코드 열을 축차 해석하여 상기 프로세서에 실행시키고, 또한, 당해 바이트코드 열을 네이티브코드로 변환하는 요구를 행하는 제 1 단계와,
    호출되어야 할 바이트코드 열이 네이티브 코드로 변환이 완료된 것으로 판정된 경우에, 당해 네이티브코드를 프로세서에 실행시키는 제 2 단계와,
    상기 제 1 단계에서 이루어지는 바이트코드 열의 축차 해석의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브코드의 실행과 병행하여, 상기 요구에 관한 바이트코드 열을 네이티브코드로 변환하는 변환처리를 프로세서에 실행시키는 제 3 단계를 포함하며,
    상기 프로세서는 멀티태스크 오퍼레이팅 시스템의 제어 하에 동작하고,
    상기 제 1 단계에서 이루어지는 상기 바이트코드 열의 실행 또는 상기 제 2 단계에서 이루어지는 상기 네이티브 코드의 실행과 상기 제 3 수단에서 이루어지는 상기 변환처리의 실행은 각각 다른 태스크로서 실행되며,
    상기 제 1 단계 및 상기 제 2 단계의 태스크 실행은 상기 제 3 단계의 태스크 실행보다 우선도가 높게 설정되어 있고,
    상기 프로그램 실행제어방법은,
    각 바이트코드 열의 우선도를 나타내는 우선도정보를 취득하는 우선도정보 취득단계와,
    상기 변환처리를 행하는 바이트코드 열의 우선도와 네이티브 코드의 실행 또는 축차 해석 실행을 나타내는 명령실행 태스크의 우선도를 비교하는 비교단계와,
    비교한 결과, 상기 바이트코드 열의 우선도 쪽이 명령실행 태스크의 우선도보다 높은 경우에, 상기 제 3 수단에 의한 바이트 코드 열을 네이티브 코드 열로 변환하는 변환처리의 우선도를 일시적으로 높게 하는 우선도 변경단계를 더 포함하는 것을 특징으로 하는 기록매체.
KR1020057021398A 2003-05-28 2004-05-28 프로그램 실행제어장치 KR101051872B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003151472A JP4713820B2 (ja) 2003-05-28 2003-05-28 プログラム実行制御装置、プログラム実行制御方法
JPJP-P-2003-00151472 2003-05-28
PCT/JP2004/007731 WO2004107170A1 (ja) 2003-05-28 2004-05-28 プログラム実行制御装置

Publications (2)

Publication Number Publication Date
KR20060021839A KR20060021839A (ko) 2006-03-08
KR101051872B1 true KR101051872B1 (ko) 2011-07-25

Family

ID=33487223

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057021398A KR101051872B1 (ko) 2003-05-28 2004-05-28 프로그램 실행제어장치

Country Status (6)

Country Link
US (1) US7958499B2 (ko)
EP (1) EP1635258B1 (ko)
JP (1) JP4713820B2 (ko)
KR (1) KR101051872B1 (ko)
CN (1) CN1795434B (ko)
WO (1) WO2004107170A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100725386B1 (ko) * 2004-09-25 2007-06-07 삼성전자주식회사 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US20070169012A1 (en) * 2005-11-14 2007-07-19 Microsoft Corporation Asynchronous just-in-time compilation
KR100763199B1 (ko) 2006-02-20 2007-10-04 삼성전자주식회사 가상 머신 환경에서의 메소드 호출 방법 및 상기 방법을수행하는 가상 머신이 탑재된 시스템
US7784041B2 (en) * 2006-03-30 2010-08-24 Oracle America, Inc. Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation
US8261270B2 (en) * 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8136102B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
US8024708B2 (en) 2006-06-20 2011-09-20 Google Inc. Systems and methods for debugging an application running on a parallel-processing computer system
US8136104B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US8108844B2 (en) 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8443348B2 (en) 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8146066B2 (en) 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US9176714B2 (en) * 2007-11-12 2015-11-03 International Business Machines Corporation Re-using legacy libraries in software
JP2010140233A (ja) * 2008-12-11 2010-06-24 Nec Computertechno Ltd エミュレーションシステム及びエミュレーション方法
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8359496B1 (en) * 2010-08-31 2013-01-22 Google Inc. Fault-resistant just-in-time compiler
WO2012105000A1 (ja) 2011-02-01 2012-08-09 富士通株式会社 プログラム実行方法
JP2013061810A (ja) * 2011-09-13 2013-04-04 Fujitsu Ltd 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
JP6127639B2 (ja) 2013-03-26 2017-05-17 富士通株式会社 プログラム実行制御プログラム、プログラム実行制御方法
EP2980699B1 (en) * 2013-03-29 2017-08-16 Fujitsu Limited Program, information processing system, and program migration method
CN103729235A (zh) * 2013-12-24 2014-04-16 华为技术有限公司 Java虚拟机的编译方法和Java虚拟机
US20150186168A1 (en) * 2013-12-30 2015-07-02 Unisys Corporation Dedicating processing resources to just-in-time compilers and instruction processors in a dynamic translator
CN106325964B (zh) * 2015-06-18 2019-09-27 龙芯中科技术有限公司 动态编译调度方法及装置
JP2018028777A (ja) * 2016-08-17 2018-02-22 Necプラットフォームズ株式会社 エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム
US11093715B2 (en) * 2019-03-29 2021-08-17 Samsung Electronics Co., Ltd. Method and system for learning and enabling commands via user demonstration
US11468881B2 (en) 2019-03-29 2022-10-11 Samsung Electronics Co., Ltd. Method and system for semantic intelligent task learning and adaptive execution
CN111770205B (zh) * 2020-08-31 2020-12-04 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、系统和存储介质
US11494201B1 (en) * 2021-05-20 2022-11-08 Adp, Inc. Systems and methods of migrating client information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5970249A (en) * 1997-10-06 1999-10-19 Sun Microsystems, Inc. Method and apparatus for performing byte-code optimization during pauses
JP2002163115A (ja) 2000-11-29 2002-06-07 Toshiba Corp 仮想機械用プログラムのコンパイル対象指定方法、同プログラムのコンパイル対象判定方法、仮想機械実行方法、事前コンパイル方法、コンピュータ、記録媒体、及びプログラム製品

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6462705A (en) 1987-09-02 1989-03-09 Fanuc Ltd Cnc program executing device
JPH04178734A (ja) 1990-11-13 1992-06-25 Yokogawa Electric Corp プログラム言語処理装置
JPH08328880A (ja) * 1995-05-31 1996-12-13 Mitsubishi Electric Corp 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
JPH11328138A (ja) * 1998-05-20 1999-11-30 Hitachi Ltd 分散型コンピュータシステム
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6530075B1 (en) * 1998-12-03 2003-03-04 International Business Machines Corporation JIT/compiler Java language extensions to enable field performance and serviceability
JP3605327B2 (ja) * 1999-11-18 2004-12-22 富士通株式会社 プログラム実行装置
US7725885B1 (en) * 2000-05-09 2010-05-25 Hewlett-Packard Development Company, L.P. Method and apparatus for trace based adaptive run time compiler
JP4178734B2 (ja) 2000-08-29 2008-11-12 日本ゼオン株式会社 組立コンテナおよび分割型側板の回動ストッパ機構
GB0125176D0 (en) * 2001-10-19 2001-12-12 Koninkl Philips Electronics Nv A method of compiling bytecode to native code
JP3642772B2 (ja) 2002-09-25 2005-04-27 三菱電機株式会社 コンピュータ装置及びプログラム実行方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5970249A (en) * 1997-10-06 1999-10-19 Sun Microsystems, Inc. Method and apparatus for performing byte-code optimization during pauses
JP2002163115A (ja) 2000-11-29 2002-06-07 Toshiba Corp 仮想機械用プログラムのコンパイル対象指定方法、同プログラムのコンパイル対象判定方法、仮想機械実行方法、事前コンパイル方法、コンピュータ、記録媒体、及びプログラム製品

Also Published As

Publication number Publication date
KR20060021839A (ko) 2006-03-08
US20070226714A1 (en) 2007-09-27
WO2004107170A1 (ja) 2004-12-09
US7958499B2 (en) 2011-06-07
CN1795434B (zh) 2010-05-05
EP1635258A4 (en) 2009-12-09
CN1795434A (zh) 2006-06-28
JP4713820B2 (ja) 2011-06-29
JP2004355277A (ja) 2004-12-16
EP1635258A1 (en) 2006-03-15
EP1635258B1 (en) 2018-07-04

Similar Documents

Publication Publication Date Title
KR101051872B1 (ko) 프로그램 실행제어장치
US7406684B2 (en) Compiler, dynamic compiler, and replay compiler
EP0908818A2 (en) Method and apparatus for performing byte-code optimization during pauses
US7765527B2 (en) Per thread buffering for storing profiling data
US7383417B2 (en) Prefetching apparatus, prefetching method and prefetching program product
US7039910B2 (en) Technique for associating execution characteristics with instructions or operations of program code
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
US6865734B2 (en) Method and apparatus for performing byte-code optimization during pauses
US5333304A (en) Method and apparatus for software application evaluation utilizing compiler applications
KR100725386B1 (ko) 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
KR100577366B1 (ko) 이종의 자바 메소드를 실행하는 방법 및 장치
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
JP2013257916A (ja) バーチャルマシン内でコンパイルされたメソッドを実行する頻度を決定する方法と装置
KR100654428B1 (ko) 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
US20040221281A1 (en) Compiler apparatus, compiling method, and compiler program
JP2904099B2 (ja) コンパイル装置およびコンパイル方法
JP3642772B2 (ja) コンピュータ装置及びプログラム実行方法
JP2006163596A (ja) 情報処理システム、制御方法、及びプログラム
US20050039189A1 (en) Methods and apparatus to preemptively compile an application
CN117112138A (zh) 一种指针偏移获取方法、系统、设备及存储介质
CN116860306A (zh) 业务系统的数据升级方法、装置、设备及存储介质
JP2000276356A (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体

Legal Events

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

Payment date: 20140630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150619

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160617

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170619

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180619

Year of fee payment: 8