KR100678912B1 - 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 - Google Patents

메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 Download PDF

Info

Publication number
KR100678912B1
KR100678912B1 KR1020050098159A KR20050098159A KR100678912B1 KR 100678912 B1 KR100678912 B1 KR 100678912B1 KR 1020050098159 A KR1020050098159 A KR 1020050098159A KR 20050098159 A KR20050098159 A KR 20050098159A KR 100678912 B1 KR100678912 B1 KR 100678912B1
Authority
KR
South Korea
Prior art keywords
called
bytecode
interpreter
interpreter loop
loop
Prior art date
Application number
KR1020050098159A
Other languages
English (en)
Inventor
알렉세이 로마노프스키
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050098159A priority Critical patent/KR100678912B1/ko
Priority to US11/582,360 priority patent/US8214812B2/en
Application granted granted Critical
Publication of KR100678912B1 publication Critical patent/KR100678912B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

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

Abstract

본 발명은 메소드 바이트코드의 해석에 관한 것으로서, 본 발명의 실시에 따른 메소드 바이트코드 해석 방법은 호출된 메소드가 병목 메소드인지 여부를 판단하는 (a) 단계와, 상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드에 대한 인터프리터 루프를 생성하는 (b) 단계 및 상기 생성된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 (c) 단계를 포함한다.
자바 가상 머신, 인터프리터 루프, 병목 메소드

Description

메소드 바이트코드 해석 방법 및 상기 방법에 의해 동작하는 시스템{Method for interpreting method bytecode and system by the same}
도 1은 종래의 기술에 따라 인터프리터 루프를 생성하는 과정을 나타내는 플로우차트이다.
도 2는 종래의 기술에 따라 바이트코드를 실행하는 슈도 코드(pseudo-code)의 예이다.
도 3은 본 발명의 일 실시예에 따른 시스템의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 인터프리터 엔진의 구조를 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 메소드와 인터프리터 루프 사이의 연관 관계를 나타내는 예시도이다.
도 6은 본 발명의 일 실시예에 따라 메소드를 해석하는 과정을 나타내는 플로우 차트이다.
<도면의 주요 부분에 대한 설명>
310: 어플리케이션
320: 가상 머신
325: 인터프리터 엔진
330: 운영 체제
410: 제1 인터프리터 루프 생성 모듈
420: OP코드 집합 생성 모듈
430: 제2 인터프리터 루프 생성 모듈
440: 메모리 관리 모듈
본 발명은 자바 가상 머신(JAVA Virtual Machine)에 관한 것으로서, 보다 상세하게는 가상 머신의 일반적인 연산에 있어서 메소드 바이트코드를 해석하는 방법 및 상기 방법에 의해 동작하는 시스템에 관한 것이다.
자바(JAVA )는 선 마이크로시스템스(Sun Microsystems) 사에 의해 개발된 객체 지향 프로그래밍 언어(object-oriented programming language)로서, 자바 언어 규격에 의해 정의된다.
자바 가상 머신 규격은 바이트코드(bytecode)라고 불리우는 명령어 집합(instruction set)을 통하여 표현되는 자바 프로그램에 대하여 플랫폼에 독립적으로 실행될 수 있는 모델을 정의하고 있다.
바이트코드는 자바 언어로 기술된 프로그램을 변환함으로써 자바 언어 컴파일러에 의해 생성될 수 있다.
자바 가상 머신은 상기 바이트코드를 해석함으로써 소정의 동작을 실행하는데, 바이트코드의 조밀성(compactness)로 인하여 상기 실행은 메모리와 같은 작은 공간의 리소스를 소비하게 된다.
그러나, 해석된 바이트코드의 성능은 시스템이 직접 해석할 수 있는 원시 언어로 컴파일된 동일한 프로그램보다 떨어지게 된다.
따라서, 실행에 필요한 공간과 성능의 트레이드-오프(trade-off) 관계는 자바 가상 머신의 개발에 있어서 중요한 관심 분야가 되고 있으며, 특히 이는 임베디드 시스템(embedded system)과 같은 작은 하드웨어 리소스를 갖는 플랫폼을 기반으로 하는 경우에는 더욱 그러하게 된다.
자바 가상 머신의 성능을 개선시키기 위한 현재의 트랜드는 자바 바이트코드를 원시 코드(native code)로 변환하여 바이트코드 해석의 오버헤드(overhead)를 감소시키기 위한 컴파일러를 제공하는 것이다.
그러나, 최근의 하드웨어 아키텍처에 대한 원시 코드(native code)는 바이트코드보다 더 많은 메모리 공간을 필요로 하기 때문에, 메모리 공간의 제한이 있는 경우에는 인터프리터(interpreter)가 여전히 사용된다.
일반적으로 인터프리터(interpreter)는 'while' 문과 같은 루프 형태의 구조를 갖는다.
선 마이크로시스템스(Sun Microsystems) 사의 'HotSpot JavaVM' 기술은 가상 머신의 동작이 시작될 때, 즉, 'start-up' 시점에서 인터프리터 루프(interpreter loop)가 오직 한 번만 생성된다. 이러한 경우에는 캐쉬(cache)의 사용성이 저하되 어(캐쉬 플러쉬(cache flush)가 자주 일어나게 됨) 결국 인터프리터 루프의 성능이 감소하게 된다. 특히 현대의 임베디드 아키텍처에 있어서는 더 작은 프로세서 캐쉬(processor cache)가 사용되기 때문에, 이러한 인터프리터 루프의 성능 감소가 일어날 가능성은 더욱 높다.
또한 종래의 기술에 따르면 'VM-build' 이전에 하나의 인터프리터 루프가 생성되기도 하는데, 이 경우에는 사전에 이미 알고 있는 특정한 어플리케이션에 종속되므로, 다른 어플리케이션이 로딩될 경우에는 문제가 된다.
한편, 미국공개공보 제2004-0088703호에서는 계층적인 루프(hierarchical loops)를 갖는 인터프리터를 생성하는 방법을 개시하고 있는데, 도 1에서는 그 예를 나타내고 있다.
우선, 인터프리터에 의해 처리될 바이트코드 중 자주 실행되는 바이트코드를 식별하고(S110), 자주 실행되지 않는 바이트코드를 식별한다(S120).
그리고 나서, 간단하게 실행되는 바이트코드와 복잡하게 실행되는 바이트코드를 식별한다(S130).
위와 같이 바이트코드가 분류되면, 간단하게 자주 실행되는 바이트코드를 처리하기 위한 제1 인터프리터 루프(interpreter loop)를 생성하고(S140), 나머지 바이트코드를 처리하기 위한 제2 인터프리터 루프(interpreter loop)를 생성한다(S150).
즉, 상기와 같이 하나의 인터프리터 루프로만 동작하는 것이 아니라 바이트코드의 특성을 고려하여 계층적인 인터프리터 루프를 형성하는 것이다. 이러한 방 법에 따라 2개의 분리된 루프를 갖는 인터프리터의 사용에 의해 바이트코드를 실행하는 슈도 코드(pseudo-code)를 도 2에서 도시하고 있다.
그러나, 이러한 경우에도 'VM-build' 이전에 인터프리터 루프가 생성되기 때문에 동적으로 로딩되는 어플리케이션에 대해서는 여전히 문제가 된다.
본 발명은 자주 호출되는 메소드에 대해서는 별도의 인터프리터 루프를 통하여 바이트코드를 해석함으로써 바이트코드 해석의 성능을 개선시키는 것을 목적으로 한다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따라 메소드 바이트코드를 해석하는 방법은 호출된 메소드가 병목 메소드인지 여부를 판단하는 (a) 단계와, 상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드에 대한 인터프리터 루프를 생성하는 (b) 단계 및 상기 생성된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 (c) 단계를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따라 메소드 바이트코드를 해석하는 방법은 호출된 메소드가 병목 메소드인지 여부를 판단하는 (a) 단계와, 상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드에 대 한 연관된 인터프리터 루프를 제공하는 (b) 단계 및 상기 제공된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 (c) 단계를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따라 메소드 바이트코드를 해석하는 시스템은 운영 체제와, 어플리케이션 및 상기 운영 체제를 기반으로 하고, 상기 어플리케이션에 대하여 인터페이스를 제공하며, 상기 어플리케이션에서 호출된 메소드의 바이트코드를 해석하여 상기 운영 체제가 인식할 수 있는 코드로 변환하는 가상 머신을 포함하는데, 상기 가상 머신은 상기 호출된 메소드가 병목 메소드인 경우 상기 호출된 메소드와 연관된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
이하, 본 발명의 실시예들에 의하여 메소드 바이트코드를 해석하는 방법 및 상기 방법에 의해 동작하는 시스템을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면 들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
한편, 본 발명의 실시예에서 사용되는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
이하 첨부된 도면들을 참조하여 본 발명의 일 실시예에 의한 메소드 바이트코드를 해석하는 방법 및 상기 방법에 의해 동작하는 시스템에 대하여 상세히 설명하도록 한다.
도 3은 본 발명의 일 실시예에 따른 시스템의 구성을 나타내는 블록도이다.
도 3을 참조하면, 본 발명의 시스템(320)은 운영 체제(operating system)(330), 가상 머신(320) 그리고 어플리케이션(310)을 포함한다.
운영 체제(operating system)(330)는 UNIX, WINDOWS와 같이 전체적인 시스템의 동작을 관리하고 정보를 처리하는데, 본 발명에서는 특정한 운영 체제에 한정되지 않는다.
가상 머신(320)은 운영 체제를 기반으로 동작하며, 가상 머신(320)에 기반한 어플리케이션 프로그램 인터페이스(Application Porogram Interface; API)를 제공하여 개발자가 운영 체제(330)의 형태를 고려할 필요없이 상기 API 만을 이용하여 프로그램을 개발할 수 있게 된다.
또한, 가상 머신(320)은 바이트코드를 해석하여 이를 운영 체제(330)가 인식할 수 있는 원시 코드(native code)로 변환하는데 특히, 본 발명에서 가상 머신(320)은 메소드의 특성에 따라 바이트코드의 해석을 위한 인터프리터 루프를 형성하게 된다. 이를 위해 가상 머신(320)은 인터프리터 엔진(325)을 포함한다.
본 발명에서는 설명의 편의를 위하여 자바 가상 머신(JAVA Virtual Machine)을 예로 하여 설명하도록 한다.
어플리케이션(310)은 특정한 동작을 수행하는 프로그램 모듈로서, 개발자는 상기 가상 머신(320)에 의해 제공되는 API를 이용하여 어플리케이션(310)을 작성할 수 있다. 본 발명에서는 설명의 편의를 위하여 자바 어플리케이션을 예로 하여 설명하도록 한다.
도 4는 본 발명의 일 실시예에 따른 인터프리터 엔진의 구조를 나타내는 블록도이다.
도 4를 참조하면, 본 발명에 따른 인터프리터 엔진(interpreter engine)(400)은 제1 인터프리터 루프 생성 모듈(410), OP코드 집합 생성 모듈(420), 제2 인터프리터 루프 생성 모듈(430) 그리고 메모리 관리 모듈(440)을 포함한다. 여기에서 인터프리터 엔진(400)은 도 3에서 도시한 인터프리터 엔진(325)에 해당된다.
제1 인터프리터 루프 생성 모듈(410)은 원시 인터프리터 루프(primordial interpreter loop)를 생성한다. 상기 원시 인터프리터 루프는 병목 메소드(bottleneck method)인지 여부에 상관없이 어떤 메소드라도 해석할 수 있다. 이 때, 병목 메소드(bottleneck method)는 '핫 메소드(hot method)'라고도 불리우며 자주 사용되는 메소드를 의미한다.
상기 원시 인터프리터 루프는 어떤 메소드가 병목 메소드인지를 결정하고 예측하는 로직(logic)을 포함하고 있다. 즉, 제1 인터프리터 루프 생성 모듈(410)은 병목 메소드를 선택하는 기능을 제공하는 것으로서 이해될 수 있다.
이 때, 상기 로직(logic)은 메소드 호출 회수를 포함할 수 있다.
예를 들어, 자바 메소드가 호출되면, 각각의 메소드 데이터 구조에 저장된 호출 회수는 그 값이 증가되거나 감소된다. 그리고 나서, 상기 호출 횟수에 해당하는 값이 특정한 문턱값(threshold value)에 이르게 되면 해당 메소드는 병목 메소드로서 간주될 수 있다. 여기에서는 병목 메소드인지를 결정하는 방법으로서 메소드 호출 회수를 이용하고 있으나, 이에 한정되는 것은 아니다.
한편, 인터프리터 엔진(interpreter engine)(400)은 각각의 해석된 메소드 (inpterpreted method)가 자신의 해석 루프 루틴(interpretation loop routine)과 연관되도록 하는데, 이러한 연관(association)은 콜백(callback) 메커니즘에 의해 수행될 수도 있다. 초기에는 각각의 메소드는 원시 인터프리터 루프의 루틴(routine)과 연관된다.
OP코드 집합 생성 모듈(420)은 메소드 바이트코드에 대한 OP코드의 집합을 생성한다. 이 때, 상기 바이트코드는 병목 메소드에 대한 바이트코드인 것이 바람직하다.
병목 메소드에 대한 바이트코드가 주어지면, 빈 OP코드 집합(opcode set)이 생성되고, 상기 빈 OP코드 집합이 주어진 병목 메소드에 대한 바이트코드에서 발견되는 OP코드로 채워지게 된다.
이 때, OP코드 집합의 데이터 구조는 최적화될 수 있다. 상기 최적화는 OP코드 집합이 다른 OP코드 집합에 포함되는지 여부를 결정하기 위해 2진 비교 연산(binary comparision operation)을 수행하거나 2개의 OP코드 집합에 대한 차이를 발견하기 위해 2진 비교 연산을 수행함으로써 달성될 수 있다.
제2 인터프리터 루프 생성 모듈(430)은 주어진 OP코드 집합에 대하여 인터프리터 루프(interpreter loop)를 생성하는데, 이하에서는 특별한 설명이 없는 경우에는 '인터프리터 루프(interpreter loop)'는 제2 인터프리터 루프 생성 모듈(430)에 의해 생성된 인터프리터 루프를 의미하는 것으로 한다. 이 때, 인터프리터 루프(interpreter loop)는 2가지 모드(mode)로 생성될 수 있다.
여기에서, 제1 모드는 주어진 OP코드 집합의 모든 OP코드에 대하여 인터프리 터 루프(interpreter loop)를 생성하는 것이다.
그리고, 제2 모드는 OP코드 핸들러(opcode handler)를 생성하고 생성된 OP코드 핸들러를 이용하여 이미 생성된 인터프리터 루프(interpreter loop)를 갱신하는 것이다.
메모리 관리 모듈(440)은 제2 인터프리터 루프 생성 모듈(430)에 의해 생성된 인터프리터 루프에 대한 코드를 포함하는 메모리 블록(memory block)을 관리한다.
메모리 관리 모듈(440)에 의해 할당된 메모리 블록들은 프로세서 코드 캐쉬(processor code cache)에 최적화되어 맞춰질 수 있도록 동일한 크기를 갖는다.
OP코드 집합이 주어지면, 메모리 관리 모듈(440)은 생성된 OP코드가 얼마나 많은 메모리를 차지할 지 여부를 결정한다. 이 때, 메모리 관리 모듈(440)은 제2 인터프리터 루프 생성 모듈(430)과 함께 동작하게 된다.
하나의 메모리 블록을 비워줄 것을 요청받으면, 메모리 관리 모듈(440)은 이미 생성된 인터프리터 루프 코드가 기록된 메모리 블록 중 배치할 메모리 블록을 찾는다. 이 때, 그러한 메모리 블록을 찾는 기준은 제2 인터프리터 루프 생성 모듈(430)에 의해 생성된 인터프리터 루프 대신에 원시 인터프리터 루프(primordial interpreter loop)의 사용에 기인한 성능 오버헤드(performance overhead)를 최소화하는 것이다.
메모리 관리 모듈(440)은 선택된 메모리 블록에 생성된 인터프리터 루프의 코드를 배치하고, 모든 종속된 메소드들과 원시 인터프리터 루프 혹은 기생성된 인 터프리터 루프 중 하나의 인터프리터 루프를 재연관시킨다. 이 때, 기생성된 인터프리터 루프 중 하나의 인터프리터 루프를 재연관하는 경우는 생성된 인터프리터 루프들이 같은 OP코드 집합을 갖거나, 배치된 인터프리터 루프의 OP코드 집합이 다른 인터프리터 루프의 OP코드 집합에 대한 하부 집합의 관계를 갖는 경우에 발생할 수 있다.
도 5는 본 발명의 일 실시예에 따른 메소드와 인터프리터 루프 사이의 연관 관계를 나타내는 예시도로서, 비병목 메소드(non-bottleneck method)의 경우에는 원시 인터프리터 루프(primordial interpreter loop)와 연관되고, 병목 메소드(bottleneck method)의 경우에는 제2 인터프리터 루프 생성 모듈(430)에 의해 생성된 인터프리터 루프(interpreter loop)와 연관될 수 있다. 이 때, 하나의 인터프리터 루프는 다수의 병목 메소드와 연관될 수 있다.
도 6은 본 발명의 일 실시예에 따라 메소드를 해석하는 과정을 나타내는 플로우 차트이다.
우선 본 발명에 따른 인터프리터 엔진(400)은 현재 호출된 메소드가 병목 메소드인지 여부를 판단하여(S610), 만일 병목 메소드가 아닌 경우에는 원시 인터프리터 루프를 이용하여 바이트코드를 해석하게 된다(S640).
그러나, S610 단계에서 병목 메소드로 판단된 경우에는 상기 호출된 메소드에 대응하는 인터프리터 루프를 생성하고(S620), 생성된 인터프리터 루프를 상기 호출된 메소드와 연관시킨다(S630).
그리고 나서, 생성된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바 이트코드를 해석한다(S640).
도 6에는 미도시되었으나, 상기 호출된 메소드가 이미 소정의 인터프리터 루프와 연관된 경우에는 연관된 인터프리터 루프를 이용하여 바이트코드를 해석할 수도 있다.
결국, 병목 메소드에 대해서는 원시 인터프리터 루프를 이용하지 않고 별도의 인터프리터 루프를 통하여 바이트코드를 해석함으로써 바이트코드 해석의 성능을 개선시킬 수 있게 된다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
본 발명을 따르게 되면, 가상 머신 환경에서 인터프리터의 성능을 높이는 효과를 제공한다.

Claims (12)

  1. 호출된 메소드가 병목 메소드인지 여부를 판단하는 (a) 단계;
    상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드에 대한 인터프리터 루프를 생성하는 (b) 단계; 및
    상기 생성된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 (c) 단계를 포함하는 메소드 바이트코드 해석 방법.
  2. 제1항에 있어서,
    상기 (a) 단계는 상기 메소드가 호출된 회수를 기초로 판단하는 단계를 포함하는 메소드 바이트코드 해석 방법.
  3. 제1항에 있어서,
    상기 (b) 단계는 상기 생성된 인터프리터 루프를 상기 호출된 메소드와 연관시키는 단계를 포함하는 메소드 바이트코드 해석 방법.
  4. 제1항에 있어서,
    상기 (b) 단계는,
    상기 호출된 메소드에 대한 소정의 OP코드 핸들러(opcode handler)를 생성하는 단계; 및
    상기 생성된 OP코드 핸들러를 이용하여 기생성된 인터프리터 루프(interpreter loop)를 갱신함으로써 상기 호출된 메소드에 대한 인터프리터 루프를 생성하는 단계를 포함하는 메소드 바이트코드 해석 방법.
  5. 제1항에 있어서,
    상기 (b) 단계는,
    상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드의 OP코드 집합을 생성하는 단계; 및
    상기 생성된 OP코드 집합을 기초로 상기 호출된 메소드에 대한 인터프리터 루프를 생성하는 단계를 포함하는 메소드 바이트코드 해석 방법.
  6. 호출된 메소드가 병목 메소드인지 여부를 판단하는 (a) 단계;
    상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드에 대한 연관된 인터프리터 루프를 제공하는 (b) 단계; 및
    상기 제공된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 (c) 단계를 포함하는 메소드 바이트코드 해석 방법.
  7. 제6항에 있어서,
    상기 (a) 단계는 상기 메소드가 호출된 회수를 기초로 판단하는 단계를 포함하는 메소드 바이트코드 해석 방법.
  8. 운영 체제;
    어플리케이션; 및
    상기 운영 체제를 기반으로 하고, 상기 어플리케이션에 대하여 인터페이스를 제공하며, 상기 어플리케이션에서 호출된 메소드의 바이트코드를 해석하여 상기 운영 체제가 인식할 수 있는 코드로 변환하는 가상 머신을 포함하는데,
    상기 가상 머신은 상기 호출된 메소드가 병목 메소드인 경우 상기 호출된 메소드와 연관된 인터프리터 루프를 이용하여 상기 호출된 메소드의 바이트코드를 해석하는 시스템.
  9. 제8항에 있어서,
    상기 호출된 메소드가 병목 메소드인지 여부는 상기 메소드가 호출된 회수를 기초로 시스템.
  10. 제8항에 있어서,
    상기 가상 머신은 상기 호출된 메소드에 대한 인터프리터 루프를 생성하여 이용하는 시스템.
  11. 제8항에 있어서,
    상기 가상 머신은 상기 호출된 메소드에 대한 소정의 OP코드 핸들러를 생성 하고, 상기 생성된 OP코드 핸들러를 이용하여 기생성된 인터프리터 루프(interpreter loop)를 갱신함으로써 상기 호출된 메소드에 대한 인터프리터 루프를 생성하여 이용하는 시스템.
  12. 제8항에 있어서,
    상기 가상 머신은 상기 호출된 메소드가 병목 메소드인 경우, 상기 호출된 메소드의 OP코드 집합을 생성하고, 상기 생성된 OP코드 집합을 기초로 상기 호출된 메소드에 대한 인터프리터 루프를 생성하여 이용하는 시스템.
KR1020050098159A 2005-10-18 2005-10-18 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템 KR100678912B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050098159A KR100678912B1 (ko) 2005-10-18 2005-10-18 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템
US11/582,360 US8214812B2 (en) 2005-10-18 2006-10-18 Method of interpreting method bytecode and system operated by the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050098159A KR100678912B1 (ko) 2005-10-18 2005-10-18 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템

Publications (1)

Publication Number Publication Date
KR100678912B1 true KR100678912B1 (ko) 2007-02-05

Family

ID=37949560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050098159A KR100678912B1 (ko) 2005-10-18 2005-10-18 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템

Country Status (2)

Country Link
US (1) US8214812B2 (ko)
KR (1) KR100678912B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101024707B1 (ko) 2010-02-12 2011-03-25 서울대학교산학협력단 바이트코드-투-씨 어헤드-오브-타임 컴파일러를 위한 해석기 호출 방법
KR20180126852A (ko) 2017-05-18 2018-11-28 뱅크웨어글로벌 주식회사 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453130B2 (en) * 2011-02-09 2013-05-28 International Business Machines Corporation Memory management for object oriented applications during runtime
US10970055B2 (en) * 2018-08-21 2021-04-06 International Business Machines Corporation Identifying software and hardware bottlenecks
US10853109B2 (en) 2018-12-18 2020-12-01 Red Hat, Inc. Application deployment using reduced overhead bytecode
US11243803B2 (en) * 2019-04-30 2022-02-08 Automation Anywhere, Inc. Platform agnostic robotic process automation
US11113095B2 (en) 2019-04-30 2021-09-07 Automation Anywhere, Inc. Robotic process automation system with separate platform, bot and command class loaders
US11481304B1 (en) 2019-12-22 2022-10-25 Automation Anywhere, Inc. User action generated process discovery
US11182178B1 (en) 2020-02-21 2021-11-23 Automation Anywhere, Inc. Detection of user interface controls via invariance guided sub-control learning
US11968182B2 (en) 2021-07-29 2024-04-23 Automation Anywhere, Inc. Authentication of software robots with gateway proxy for access to cloud-based services

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010040742A (ko) * 1998-12-08 2001-05-15 롤페스 요하네스 게라투스 알베르투스 인터프리터 프로그램을 실행하는 방법
KR20010080525A (ko) * 1999-09-21 2001-08-22 요트.게.아. 롤페즈 가상 머신 명령들의 최적화된 바이트코드 인터프리터
US6857063B2 (en) * 2001-02-09 2005-02-15 Freescale Semiconductor, Inc. Data processor and method of operation
KR20050075647A (ko) * 2004-01-17 2005-07-21 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
KR20060028154A (ko) * 2004-09-24 2006-03-29 삼성전자주식회사 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터
KR20060110971A (ko) * 2005-04-21 2006-10-26 삼성전자주식회사 자바 가상 머신의 명령어 수행 방법 및 그 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3237693B2 (ja) * 1996-08-19 2001-12-10 日本電気株式会社 言語処理装置および言語処理方法
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6256784B1 (en) * 1998-08-14 2001-07-03 Ati International Srl Interpreter with reduced memory access and improved jump-through-register handling
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
JP2001056764A (ja) 1999-08-18 2001-02-27 Access:Kk 仮想計算機の実行方法および装置
US6988261B2 (en) * 2001-08-24 2006-01-17 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions in Java computing environments
US20040088703A1 (en) * 2002-11-05 2004-05-06 Nedim Fresko Mechanism for implementing an interpreter with hierarchical execution loops
KR100506522B1 (ko) 2003-02-24 2005-08-03 삼성전자주식회사 자바 프로그램에서 바이트 코드의 컴파일 시간 단축시스템 및 방법
US20050028132A1 (en) * 2003-07-31 2005-02-03 Srinivasamurthy Venugopal K. Application specific optimization of interpreters for embedded systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010040742A (ko) * 1998-12-08 2001-05-15 롤페스 요하네스 게라투스 알베르투스 인터프리터 프로그램을 실행하는 방법
KR20010080525A (ko) * 1999-09-21 2001-08-22 요트.게.아. 롤페즈 가상 머신 명령들의 최적화된 바이트코드 인터프리터
US6857063B2 (en) * 2001-02-09 2005-02-15 Freescale Semiconductor, Inc. Data processor and method of operation
KR20050075647A (ko) * 2004-01-17 2005-07-21 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
KR20060028154A (ko) * 2004-09-24 2006-03-29 삼성전자주식회사 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터
KR20060110971A (ko) * 2005-04-21 2006-10-26 삼성전자주식회사 자바 가상 머신의 명령어 수행 방법 및 그 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101024707B1 (ko) 2010-02-12 2011-03-25 서울대학교산학협력단 바이트코드-투-씨 어헤드-오브-타임 컴파일러를 위한 해석기 호출 방법
KR20180126852A (ko) 2017-05-18 2018-11-28 뱅크웨어글로벌 주식회사 바이트 코드 기반 자바 메서드 버전 관리 방법, 이를 이용한 자바 소프트웨어 개발 시스템 및 방법

Also Published As

Publication number Publication date
US20070089101A1 (en) 2007-04-19
US8214812B2 (en) 2012-07-03

Similar Documents

Publication Publication Date Title
KR100678912B1 (ko) 메소드 바이트코드 해석 방법 및 상기 방법에 의해동작하는 시스템
US6910205B2 (en) Interpreting functions utilizing a hybrid of virtual and native machine instructions
US8832672B2 (en) Ensuring register availability for dynamic binary optimization
US8615747B2 (en) Method and apparatus for dynamic code optimization
US8635627B2 (en) Method, medium and apparatus storing and restoring register context for fast context switching between tasks
US9417931B2 (en) Unified metadata for external components
US20020042807A1 (en) Low-contention grey object sets for concurrent, marking garbage collection
US20110307858A1 (en) Pre-compiling hosted managed code
US10216497B2 (en) Selective compiling method, device, and corresponding computer program product
CN102402427A (zh) 一种Java应用程序的更新方法及装置
EP2885708A1 (en) Processing resource allocation
WO1999061979A2 (en) Dynamically converting statically bound function calls to dynamically bound function calls without recompilation
WO2007027622A2 (en) System and method for creating and using graphical object instances in a statechart environment
US8291386B2 (en) System and process for debugging object-oriented programming code
JP2001202253A (ja) データ処理方法およびデータ処理装置
US7770169B2 (en) Thread rendezvous for read-only code in an object-oriented computing environment
US20090320007A1 (en) Local metadata for external components
KR100577366B1 (ko) 이종의 자바 메소드를 실행하는 방법 및 장치
EP1241569A2 (en) Method and apparatus to facilitate sharing optimized instruction code in a multitasking virtual machine
CN107820605B (zh) 用于动态低延迟优化的系统和方法
CN116934330A (zh) 一种调用智能合约的方法及执行方法、计算机设备及存储介质
US10430245B2 (en) Systems and methods for dynamic low latency optimization
Krylov et al. Ahead-of-time compilation in OMR: overview and first steps
US10303523B2 (en) Method and apparatus to migrate stacks for thread execution
US7080204B2 (en) Cache controller computer system and method for program recompilation

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131230

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141223

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151229

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee