KR20010007028A - 가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에제공하는 메모리 매체 및 시스템 - Google Patents

가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에제공하는 메모리 매체 및 시스템 Download PDF

Info

Publication number
KR20010007028A
KR20010007028A KR1020000022729A KR20000022729A KR20010007028A KR 20010007028 A KR20010007028 A KR 20010007028A KR 1020000022729 A KR1020000022729 A KR 1020000022729A KR 20000022729 A KR20000022729 A KR 20000022729A KR 20010007028 A KR20010007028 A KR 20010007028A
Authority
KR
South Korea
Prior art keywords
heap
application
dedicated
computer
virtual machine
Prior art date
Application number
KR1020000022729A
Other languages
English (en)
Other versions
KR100368347B1 (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 KR20010007028A publication Critical patent/KR20010007028A/ko
Application granted granted Critical
Publication of KR100368347B1 publication Critical patent/KR100368347B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • G06F9/44563Sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

가상 기계(virtual machine) 환경에서, 본 발명은 긴 실행 시간을 가지며, 재사용 가능한 가상 기계의 생성을 가능하게 한다. 가상 기계 환경은 가상 기계를 "대기" 모드로 가져가기 위해 필요로 하는 실행 시간 코드가 적재, 연결, 검증, 초기화, 컴파일되는 공유 힙(shared heap)을 포함하고 있다. 다음의 가상 기계들은 시작되고 공유적으로 공유 힙을 사용한다. 응용 프로그램들은 각각의 응용 프로그램들을 위해 독점 예약된 "전용 힙(private heap)들"에서 그들의 오브젝트들을 생성한다. 한 응용 프로그램의 실행 끝에서, 각각의 전용 힙은 재초기화된다. 정적 초기화는 각각의 전용 힙의 영구 영역에서 실행된다. 이러한 영구 영역은 응용 프로그램들의 실행간 그의 초기값들로 리세트된다. 이것이 가상 기계를 종료할 필요가 없게 한다.

Description

가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에 제공하는 메모리 매체 및 시스템{A LONG RUNNING, REUSABLE, EXTENDIBLE, VIRTUAL MACHINE}
본 발명은 가상 데이터 처리 기계들에 관한 것으로써, 특히 가상 데이터 처리 기계들로 하여금 그들의 상태를 실행 상태로 유지하고, 초기화 및 실행 시간 코스트를 줄이고, 가비지 수집(garbage collection) 및 프로세스 종료를 회피하며, 보다 양호한 응용 프로그램 보안, 격리, 가용도를 제공하는 방법 및 장치에 관한 것이다.
가상 기계들은 응용 프로그램을 적재하여 실행하는 프로세스내에서 생성된다. 알려진 바와 같이, "프로세스"는 실행 시간 동안에 특정 프로그램에 할당된 자원들을 격리하고 복수개의 프로그램을 각각의 다른 실행을 간섭하는 것으로부터 보호한다. 응용 프로그램 실행 종료 시, 프로세스 전체가 제거된다.
가상 기계 응용 프로그램들이 증가함에 따라 가상 기계가 다음 응용 프로그램을 실행하도록 하기 위해 가상 기계를 유지하는 것이 바람직하다. 이것은 프로세스 오프 및 시동의 비경제적인 비용을 절약할 수가 있다. 예를 들면, 종래의 검퓨터 시스템은 가상 기계 및 프로세스를 재설정하기 위해 코드의 5백만 및 4천만 회선 사이에서 실행할 필요가 있다. 긴 실행 시간과 재사용이 가능하다면, 가상 기계는 또한 계산 기능의 사용을 고려해서 비경제적인 클래스 연결(class linking), 로딩, 초기화의 비용을 절약한다. 또한 응용 프로그램 마다 가상 기계의 생성을 회피하면 시스템이 관리할 수 있는 응용 프로그램들의 처리량과 볼륨을 증대한다.
현재, 가상 기계들은 단방향 프로세스이며 응용 프로그램이 종료할 때 시작해서 끝난다. 종래 기술은 가상 기계의 상태를 현 상태로 유지시키기 위한 각종 방법들을 제안하였다. 제안된 하나의 솔루션은 가상 기계 프로세스들의 풀(pull)을 유지하는 것이다. 제안된 또 다른 솔루션은 가상 기계의 상태를 "체크 포인트"(즉 기계가 설정하는 모든 기계 값들의 복사를 다음에 사용하기 위해 유지하는 것)하는 것이다. 제안된 또 다른 솔루션은 가상 기계들의 풀을 유지하여 하나의 가상 기계에서 생성된 오브젝트들을 다른 가상 기계의 "힙"(즉, 메모리의 할당 영역)에 보내는 것이다.
가상 기계들의 풀을 유지하는 것은 가상 기계의 초기화 경로 길이를 줄이지 않는다. 이전에 생성된 가상 기계에서의 응용 프로그램의 스케쥴링은 클라이언트 요청으로부터 경로 길이를 숨기나, 클래스 연결이나, 로딩이나 초기화 요건들을 감소하거나, 각각의 응용 프로그램에 대해 프로세스를 꺼내서 제거할 필요성을 없애지도 않는다.
가상 기계의 상태를 체크 포인트하고 가상 기계를 새로운 프로세스에 인가하는 것은 경로 길이에 있어 고가인 포인터와 오프셋 재조정(pointer and offset readjustment)을 필요로 하며 프로세스가 명령하는 어드레스의 범위가 보장될 수 없는 시스템에서 가능하지가 않다.
복수개의 응용 프로그램에 대해 동일하게 가상 기계 프로세스를 재사용하면 가상 기계에서 연속해서 실행하는 각각의 응용 프로그램에 대해 메모리의 클린 힙도 기록 가능한 정적 영역(즉, 지정된 정수 값을 갖는 소정 필드들)도 보장되지 않는다.
가상 기계들의 풀을 유지하고 응용 프로그램을 정확한 가상 기계으로 "기능 이동(function shipping)"하거나 정확한 오브젝트를 가상 기계(응용 프로그램을 실행하고 있는)으로 보내는 것은 캐시 일관성 체계(cache coherency scheme)를 필요로 하며, 추가 오버헤드 및 네트워크 흐름으로 하여금 응용 프로그램 또는 오브젝트를 통과할 가능성이 있게 한다. 게다가, 이러한 절차(procedure)는 각각의 가상 기계내의 메모리 공간이 이전 응용 프로그램에 의해서 남겨진 값들을 없게 하지 못한다.
따라서, 본 발명의 목적은 응용 프로그램을 실행하기 위한 긴 실행 시간 시간을 가지며, 재사용 가능하며 연장 가능한 가상의 기계를 제공하는 것이다.
본 발명의 또 다른 목적은 이전 응용 프로그램에 의해서 설정된 동적 또는 정적 메모리 값들이 더 이상 존재하지 않도록 새로운 가상 기계를 제거 및 가져올 필요성을 배제하는 것이다.
본 발명의 또 다른 목적은 가상 기계를 한번 초기화하여 이 초기화 상태를 다음의 가상 기계 프로세스들에 걸쳐서 재사용하게 하는 것이다.
본 발명의 또 다른 목적은 클래스를 한번 적재, 연결, 검증, 컴파일링해서 이 클래스 데이터를 다음의 가상 기계 프로세스들에 걸쳐서 재사용하게 하는 것이다.
본 발명의 또 다른 목적은 클래스의 초기화 방법을 한번 가져와서 이 클래스 데이터를 다음의 가상 기계 프로세스들에 걸쳐서 재사용하게 하는 것이다.
본 발명의 또 다른 목적은 실행 시간이 긴 가상 기계에서 복수개의 응용 프로그램을 실행 가능하게 하고, 각각의 응용 프로그램을 서로 격리 시켜서 가상 기계의 가용도를 증대하게 하는 것이다.
본 발명의 또 다른 목적은 가상 기계의 상태를 상이한 힙들, 즉 전용 힙 및 공유 힙으로 분할하는 것으로써, 이러한 분할에 의해 응용 프로그램의 격리와, 보다 효율적인 가비지 수집과, 가상 기계의 실행 시간 연장이 가능하다.
본 발명의 또 다른 목적은 가상 기계의 전용 상태에서 가비지를 수집할 필요성을 없애는 것이다.
도 1은 종래의 가상 기계를 도시하는 도면.
도 2는 본 발명을 실행하기 위한 컴퓨터 시스템의 블록도.
도 3은 전용 및 공유 힙들을 갖는 도 2의 컴퓨터 시스템으로 구성된 가상 기계를 도시하는 도면.
도 4는 클래스 초기화 동안에 생성된 값들의 재사용을 설명하기 위해 전용 힙(private heap)을 보다 상세히 도시한 도면.
도 5는 변형된 로딩 시스템 또는 응용 프로그램 클래스들을 설명하기 위해 전용 힙을 보다 상세히 도시한 도면.
도 6a 및 6b는 본 발명의 동작을 설명하는 흐름도.
도면의 주요 부분에 대한 부호의 설명
10; 컴퓨터 시스템 12; CPU
14; 버스 시스템 16; 디스크 드라이브
18; 메모리 20; 운영 체제
30; 전용 힙 36; 전용 힙
42; 공유 힙
복수개의 응용 프로그램을 통해 영구적일 수 있는 가상 기계에 대한 아키텍쳐는 가상 기계를 "대기" 모드로 가져가는데 필요한 실행 시간 클래스들이 적재되고, 연결되며, 초기화되고, 컴파일링되는 공유 힙을 포함하고 있다. 다음의 가상 기계들이 시작되어 필요한 시스템 클래스들이 사전에 적재되어 초기화된 공유 힙의 내용들을 사용한다. 응용 프로그램 클래스들이 공유 힙내로 적재됨으로써 다음의 응용 프로그램은 클래스들을 재로딩, 재연결, 재검증, 재컴파일링 하지 않고 이들 클래스들을 재사용할 수 있다. 응용 프로그램들은 "전용 힙"에서 그들의 오브젝트들을 생성한다. 응용 프로그램의 실행 끝에서, 전용 힙은 재초기화된다. 전용 힙에서 가비지 수집(즉, 사용되지 않은 메모리를 찾는 방법)의 필요성이 발생하지 않는다.
정적 초기화는 전용 힙의 영구 영역에 유지된 소정 값들(이후 "정적 값들"이라 한다)을 생성하는 방법이다. 이 영구 영역은 공통 값으로 리세트되지 않으나, 응용 프로그램의 실행간 초기값으로 리세트된다. 이러한 조처는 가상 기계 프로세스를 종료할 필요성을 없앤다. 응용 프로그램이 오동작(즉 외부 프로세스 관련 자원, 예를 들어 스레드(thread), 파일 디스크립터(file descriptor) 등을 열거나 생성)하면, 가상 기계 프로세스는 이들 자원을 완전히 없애기 위해 종료된다. 그러나 공유 힙은 삭제되지 않으며 다음의 가상 기계들에 의해서 사용될 수가 있다. 이러한 다음의 가상 기계들은 이전에 사용된 응용 프로그램 클래스들 중 임의의 클래스 또는 실행 시간을 초기화 하는데 필요한 클래스들 중 임의의 클래스를 재로딩 , 재연결, 재 컴파일링, 재 검증하기 위한 오버헤드를 절약한다.
이러한 아키텍쳐는 클래스가 한번 적재되므로 긴 실행 시간을 가지며, 재사용 가능한 가상 기계의 효과를 가지며, 다시 적재되거나 초기화될 필요가 없다.
이후, 본 발명의 상기 목적 및 이점은 첨부 도면을 참조한 양호한 실시예들의 설명에 의해 보다 명백해질 것이다.
본 발명은 가상 기계를 실행하는 운영 체제 또는 하드웨어와 무관하게 일정하게 행동하는 기능들의 집합을 포함하는 가상 기계에 관한 것이다. 따라서 가상 기계에서 실행하는 응용 프로그램들은 운영 체제나, 플랫폼 불일치나, 특별한 기능들을 알 필요는 없다. 기능들(즉, 가상 기계의 실행 시간)과 응용 프로그램에 의해서 적재된 새로운 기능들을 공유하기 위해서 메모리는 공유 힙과 전용 힙으로 나누어 진다. 전용 힙은 하나의 응용 프로그램에 독단적으로 할당된 메모리 영역이다. 공유 힙은 2개 이상의 응용 프로그램에 의해서 엑세스 가능한 메모리 영역이다.
도 1은 종래 기술의 가상 기계(2)의 개략도이다. 동일 프로세스로 실행된 하나의 힙(4)과 모든 응용 프로그램(즉, 프로세스로 한번에 실행 가능한 오직 하나의 응용 프로그램)이 있다. 이러한 설계의 결함은 현재 프로세스 전체를 종료하고 새로운 프로세스를 가져오는 방법 이외에는 힙을 재초기화하기 위한 방법이 없다는 것이다. 프로세스에서 실행하는 어느 유저의 스레드(예, 절차의 현재 상태)는 다른 유저의 스레드 또는 다른 유저 스레드의 데이터를 파괴하거나 손상을 초래할 수가 있다. 가비지 수집은 실행 시간 오브젝트들의 할당에 대해 하나의 힙(4)에서 자유 공간을 복구하기 위해 필요하다. 복수개의 가상 기계 프로세스들 간의 클래스 로딩 및 연결의 공유 혹은 양도는 없다. 복수개의 가상 기계 프로세스들 간의 가상 기계 초기화의 공유나 양도는 없다.
도 2는 본 발명을 실행하기 위한 컴퓨터 시스템의 블록도이다. 중앙 처리 장치(CPU)(12)는 버스 시스템(14)을 통해 디스크 드라이브(16)상에 저장된 데이터 및 프로그램들과 메모리(18)에 저장된 데이터 및 프로그램들과 관련해서 컴퓨터 시스템(10)의 전반적인 동작을 제어한다. 운영 시스템(20)은 이후 설명될 각종 절차들의 실행과 CPU(12)의 동작을 제어한다.
한 쌍의 응용 프로그램(22,24)은 이들과 각각 관련된 프로세스(26,28)와 같이 메모리(18)내에 상주한다. 각각의 프로세스는 전용 힙으로서 사용하기 위해 메모리(18)의 영역을 할당한다. 이처럼 응용 프로그램(22)은 전용 힙(30)과 관련이 있으며, 전용 힙은 리세트 가능한 부분(32)과 영구 부분(34)으로 구성되어 있다. 리세트 가능한 부분(32)은 응용 프로그램 특정 코드를 저장하기 위해 사용되고, 영구 부분(34)은 정적 값들, 즉 응용 프로그램을 초기 상태로 가져가기 위해 사용되는 소정 값들을 저장한다. 유사하게 응용 프로그램(24)은 전용 힙(36)과 관련되어 있고, 전용 힙(36)은 리세트 가능한 부분(38)과 영구 부분(40)으로 구성되어 있다.
또한 메모리(18)에는 리드 온리 부분(44)과 판독/기록 부분(46)을 포함하는 공유 힙(42)이 상주되어 있다. 리드 온리 부분(44)은 비(非) 응용 프로그램 특정 코드(예, 실행 시간 클래스)를 저장하기 위해 사용되고, 판독/기록 부분은 충돌을 피하기 위해 적절한 잠금 보호(lock protection)를 이용하여 응용 프로그램(22 또는 24)이 판독되거나 기록되는 메모리의 영역을 제공한다. 전용 힙(30)은 응용 프로그램(22)에 의해서 만 엑세스 가능하고, 전용 힙(36)은 응용 프로그램(24)에 의해서 만 엑세스 가능하나, 공유 힙(42)은 두 응용 프로그램(22,24)에 의해서 엑세스 가능하다.
이후, 모든 필요한 프로그램들은 메모리내에 적재되어 실행을 준비하고 있다고 가정하기로 한다. 그러나 이러한 프로그램들은 필요에 따라 컴퓨터 시스템내로 선택적으로 적재 가능한 메모리 디바이스(47)로 결합 가능하다고 이해할 수 있다.
도 3은 공유 힙(42)과 전용 힙(30,36)을 가진 가상 기계(50,52)를 개략적으로 도시하고 있다. 실행 시간 클래스들은 공유된 힙(42)내로 적재되어 연결됨에 따라 가상 기계(50,52)에 의해서 사용 가능하다. 이것에 의해 다음의 가상 기계들은 초기화하는데 필요한 시스템 클래스들과 응용 프로그램들을 위해 필요한 클래스들을 재로딩하고, 재 연결하고, 재 검증하고, 재 초기화 할 필요가 없다. 각각의 힙(30,36)은 가상 기계에 의해서 실행될 응용 프로그램에 특정한 오브젝트 인스턴스(object instance)들을 저장하는데 사용된다. 전용 힙을 분할함으로써 상이한 응용 프로그램들에 의해서 사용되고 생성된 데이터간의 격리 및 가용도를 더 크게 할 수가 있다.
가비지 수집은 전용 힙에서 실시될 필요가 없다. 응용 프로그램의 실행 끝에서, 관련 전용 힙은 그의 초기 상태로 리세트된다. 가상 기계는 오동작 응용 프로그램(즉, 외부 자원과 관련된 응용 프로그램)으로 인해 종료할 수 있으나, 공유 힙(42)은 다음의 가상 기계에 이용 가능하게 남아 있다. 이것이 긴 실행 시간을 가가지며, 재사용 가능한 가상 기계의 기능을 제공한다.
응용 프로그램들은 프로세스의 경계에서 서로 추가 격리된다. 응용 프로그램들의 데이터가 분할 전용 힙들에 저장되고, 정적 값들과 어느 프로세스 관련 자원들(예, 파일 디스크립터(file descriptor), 데이터 베이스 접속들)을 보유하는 기록 가능한 영역들이 분할된다. 이러한 프로세스 격리(process isolation)는 높은 가용도 및 스케일러빌러티(scalability)를 제공한다.
도 4는 가상 기계(50)내의 전용 힙 영역(30)을 상세히 도시하고 있다. 응용 프로그램에 의해서 생성된 실행 시간 오브젝트들과, 정적 초기화 방법에 의해서 생성된 오브젝트들과 값들은 전용 힙에 저장된다. 전용 힙(30)은 2개의 영역, 즉 정적 초기화 방법에 의해서 생성된 오브젝트들과 값들을 보유하는 영구 영역(34)과, 응용 프로그램 오브젝트들(즉, 비정적 초기화 코드에 의해서 생성된 오브젝트들)이 생성되는 리세트 가능한 영역(32)으로 분할된다.
통상의 가상 기계에 있어서, 소정 클래스에 대한 정적 초기화 코드는 한번 실행한다. 정적 초기화 코드가 응용 프로그램 코드를 나타내므로, 응용 프로그램이 할 수 있는 거의 모든 것들을 할 수가 있다. 예를 들면, 다른 클래스들의 방법들을 불러와서 오브젝트들을 생성하고, 정적 변수들을 그의 클래스(혹은 적절한 엑세스 권한을 가졌다면 다른 클래스들)에서 설정할 수가 있다. 일단 작업 요청이 실행을 시작한 다음, 작업 요청은 또한 정적 변수들을 갱신하거나 정적 변수들에 의해서 참조될 수가 있다.
응용 프로그램 코드를 실행하고 있는 다른 가상 기계 인스턴스들은 인스턴스들이 그들 소유의 전용의 가상 기계에서 실행하고 있고 다른 가상 기계 인스턴스들에 의해서 영향을 받지 않아야만 한다는 것을 인식하고 있다. 이러한 착각을 인식하기 위해서는 각각의 가상 기계는 정적 변수들의 그 자체의 "복사"로 주어져야 한다. 일단 가상 기계가 정적 변수를 갱신한 다음, 그 자체로 사용하기 위해 별도의 물리적 복사를 가져야 만 한다.
따라서, 가상 기계가 초기화하거나(이미 적재된 클래스들에 대해서) 일단 적업 요청을 실행하였을 때, 그리고 새로운 클래스가 가상 기계 인스턴스에 의해서 적재되면 별도의 물리적 복사가 지정된다. 이처럼 각각의 가상 기계는 그것이 적합하다고 여겨질 때 갱신하기 위해 최종이 아닌 정적 변수 그 자체의 복사를 가진다. 그러나 각 정적 변수의 "초기" 값은 백업 어레이에서 정적 초기화 루틴으로부터 리턴 시 우선 복사됨으로써, 다음 작업 요청은 정적 변수들의 "초기" 값들로 설정된 정적 값들로 시작할 수가 있다.
이것은 정수(또는 유사한 완전 단어형)인 정적 변수들에 대해서는 간단한다. 그러나 정적 변수는 또한 오브젝트 또는 어레이 참조일 수가 있으며, 이 경우 데이터의 초기 값은 오브젝트 또는 어레이 자체에 대해서 캡쳐되어야 한다. 실행 시간 루틴이 정적 초기화 루틴에 의해서 할당된 어레이 또는 오브젝트가 사실상 정적 변수에 의해서 참조될 것인지를 모르기 때문에, 최악의 경우를 가정해서 이것이 발생할 경우를 추정해야만 한다. 이처럼 정적 초기화 루틴에 의해서 할당된 모든 오브젝트들 또는 어레이들은 전용 힙(30)내의 정적 데이터에 대한 영구 영역(34)으로부터 할당된다(공간이 허용될 때).
새로운 정적 데이터는 정적 초기화 루틴의 완료 시 백업 영역에 복사된다. 각 작업 요청을 완료하면, 이러한 백업 영역은 전용 힙의 영구 데이터 영역내에서 오브젝트들과 어레이들을 리플레쉬하기 위해 사용된다.
그러나 이것이 나타내는 요청은 응용 프로그램 클래스들과 관련된 정적 데이터가 얼마의 공간을 필요로 하는 지를 미리 알 수가 없다는 것이다. 이것은 공유 힙(42)으로 적재되는 시스템 클래스에 대해서 알 수 있음에 주목하라. 솔루션은 어느 소정 포인트에서 얼마나 많은 정적 데이터가 사용되었는지를 추적하기 위해 가상 기계 실행 시간 루틴에 대해서 영구 저장 영역(34)을 이용하는 것이다.
한 작업이 그의 전용 힙을 생성하는 바로 최초의 시간에, 전용 힙(34)에 대해서 할당된 저장 영역은 클리어되고 저장 영역의 크기는 가상 기계 생성법에 입력으로서 패스된다. 작업 요청에 의해 프로세스가 종료하게 되는 임의 시각에서 서브시스템은 가상 기계를 재생성함으로써 영구 저장 영역의 크기를 통과한다. 응용 프로그램이 자원들(예를 들어 스레드, 오픈 파일, 기억장치 등)을 잠재적으로 남겨두었다면, 가상 기계 실행 시간 프로세스는 강제적으로 프로세스를 종료한다.
전용 힙(30)에서 영구 영역(34)은 정적 초기화기를 리턴할 필요성을 배제한다. 전용 힙(30)내의 영역(32)은 비 영구 영역이다. 비영구 영역(32)은 응용 프로그램의 수명을 초과할 필요가 없는 응용 프로그램 데이터 오브젝트를 보유하고 있다. 응용 프로그램의 끝에서, 프로세스 종료가 필요하지 않다면(즉, 응용 프로그램이 잘 동작하고 있다면), 전용 힙(30) 전체는 재초기화된다. 리세트 가능한 영역(32)은 "클린" 값(예를 들어 0)으로 설정되고 영구 영역(34)은 초기의 정적 초기값으로 설정된다. 이러한 일반적인 경우에 있어서, 이것은 응용 프로그램의 전용 데이터에 대한 가비지 수집을 실행할 필요성을 배제한다. 잘 동작하는 응용 프로그램의 경우, 전용 힙(30)을 사용하면 이전 응용 프로그램으로부터 어떠한 값들이 남아 있지 않도록 하기 위해 프로세스를 종료할 필요가 없고, 각각의 응용 프로그램에 대해서 정적 초기화로 리턴할 필요가 없다.
도 5는 응용 프로그램의 가상 기계 환경을 연장하기 위해 사용될 때 전용 힙(60)의 상세도이다. 특정 응용 프로그램이나, 플랫폼이나, 기능에 맞추어지도록 수정된 시스템 또는 응용 프로그램 클래스들에 대해서, 이러한 클래스들을 전용 힙(60)으로 로딩, 연결, 검증, 컴파일링은 하나의 응용 프로그램에 대한 가상 기계 환경을 연장한다. 수정된 클래스들을 전용 힙(60)으로 삽입함으로써 맞추어진 실행시간을 가능하게 한다. 또한, 가상 기계의 실행 시간 루틴을 구성하는 클래스들의 완전한 세트(공유 힙에 저장된)를 재 구축, 재 로딩, 재 연결, 재 컴파일링할 필요성을 없앤다. 오직 하나의 클래스(혹은 클래스들)만이 수정되어 전용 힙내에 놓여질 필요가 없다.
도 6a 및 6b는 전술한 바와 같이 본 발명의 방법의 단계들을 설명하는 흐름도이다.
본 발명의 예증의 양호한 실시예들과 관련해서 도시되었지만 본 발명이 속하는 기술 분야의 숙련가라면 첨부된 청구범위에 의해서 제한되는 발명의 사상 및 범위를 일탈하지 않는 형태의 변화 및 수정이 가능함을 인지할 것이다.
따라서, 본 발명은 응용 프로그램을 실행하기 위한 긴 실행 시간 시간을 가지며, 재사용 가능하며 연장 가능한 가상의 기계를 제공하며, 이전 응용 프로그램에 의해서 설정된 동적 또는 정적 메모리 값들이 더 이상 존재하지 않도록 새로운 가상 기계를 제거 및 가져올 필요성을 배제하고, 가상 기계를 한번 초기화하여 이 초기화 상태를 다음의 가상 기계 프로세스들에 걸쳐서 재사용이 가능하며, 클래스를 한번 적재, 연결, 검증, 컴파일링해서 이 클래스 데이터를 다음의 가상 기계 프로세스들에 걸쳐서 재사용이 가능하고, 클래스의 초기화 방법을 한번 가져와서 이 클래스 데이터를 다음의 가상 기계 프로세스들에 걸쳐서 재사용이 가능하고, 실행 시간이 긴 가상 기계에서 복수개의 응용 프로그램을 실행 가능하게 하고, 각각의 응용 프로그램을 서로 격리 시켜서 가상 기계의 가용도를 증대한다.
또한 본 발명에 의하면 가상 기계의 상태를 상이한 힙들, 즉 전용 힙 및 공유 힙으로 분할하는 것으로써, 이러한 분할에 의해 응용 프로그램의 격리와, 보다 효율적인 가비지 수집과, 가상 기계의 실행 시간 연장이 가능하고, 가상 기계의 전용 상태에서 가비지를 수집할 필요성을 없다.

Claims (18)

  1. 컴퓨터에서 실행하는 복수개의 응용 프로그램들에 의해서 재사용 가능한 가상 데이터 처리 엔티티(virtual data processing entity)를 상기 컴퓨터에 제공하기 위한 방법에 있어서,
    (a) 상기 복수개의 응용 프로그램들이 사용하기 위한 공유 힙(shared heap)을 할당하는 단계-상기 공유 힙은 상기 다수의 응용 프로그램에 의해 액세스될 수 있는 메모리의 영역을 가짐-와,
    (b) 상기 컴퓨터의 실행 시간 동작을 제어하기 위해 사용되는 비(非) 응용 프로그램 특정 코드를 상기 공유 힙에 저장하는 단계와,
    (c) 상기 복수개의 응용 프로그램들중 각각의 응용 프로그램에, -상기 힙은 각각의 응용 프로그램이 배타적으로 사용하도록 위해 유보된 메모리의 영역을 가짐-전용 힙(private heap)을 할당하는 단계와,
    (d) 상기 각각의 전용 힙이 관련되는 각각의 응용 프로그램에 대한 응용 프로그램 특정 데이터를 상기 전용 힙에 저장하는 단계와,
    (e) 응용 프로그램의 실행 완료 시 관련 전용 힙에 저장된 값들을 초기 상태로 리세트하고, 다음의 사용을 위해 상기 공유 힙의 내용들(contents)을 보유함으로써, 상기 공유된 힙에 저장된 코드를 재링크시키거나, 재검증하거나, 재컴파일링이나, 재로딩할 필요없이 재사용 가능하게 하는 단계와,
    (f) 다음의 응용 프로그램이 사용하기 위해 상기 가상 기계를 정의하는 데이터를 보유하는 단계를 포함하는 가상 데이터 처리 엔티티 제공 방법.
  2. 제 1 항에 있어서,
    상기 각각의 전용 힙은 정적 초기화값들을 포함하는 영구 부분을 포함하며, 상기 리세트 단계는 정적 초기화 값들을 그안에 초기화 입력함으로써 상기 초기 상태를 재생성하는 가상 데이터 처리 엔티티 제공 방법.
  3. 제 2 항에 있어서,
    상기 각각의 전용 힙은 초기 상태가 공통 값인 리세트 가능한 부분을 포함하는 가상 데이터 처리 엔티티 제공 방법.
  4. 제 1 항에 있어서,
    응용 프로그램 데이터 사이의 격리를 위해 관련 전용 힙들에 응용 프로그램 관련 코드를 저장하도록 각각의 응용 프로그램을 제어하는 단계를 더 포함하는 가상 데이터 처리 엔티티 제공 방법.
  5. 제 1 항에 있어서,
    응용 프로그램의 성공적인 실행을 가능하게 하기 위해 상기 컴퓨터의 실행 시간 동작을 수정하는데 필요한 비 응용 프로그램 특정 코드를 상기 전용 힙에 저장하는 단계를 더 포함하는 가상 데이터 처리 엔티티 제공 방법.
  6. 제 5 항에 있어서,
    상기 각각의 전용 힙은 초기 상태가 공통 값이고, 실행 시간 동작을 수정하는데 필요한 상기 비 응용 프로그램 특정 코드가 그안에 저장되는 리세트 가능한 부분을 포함하는 가상 데이터 처리 엔티티 제공 방법.
  7. 컴퓨터에서 실행하는 복수개의 응용 프로그램들에 의해 재사용 가능한 가상 데이터 처리 엔티티를 상기 컴퓨터에 제공하는 메모리 매체에 있어서,
    (a) 상기 복수개의 응용 프로그램들이 사용하기 위한, 상기 복수개의 응용 프로그램들에 의해서 엑세스 가능한 메모리의 영역을 포함하는 공유 힙을 할당하도록 상기 컴퓨터를 제어하기 위한 수단과,
    (b) 상기 컴퓨터의 실행 시간 동작을 제어하기 위해 사용되는 비 응용 프로그램 특정 코드를 상기 공유 힙에 저장하도록 상기 컴퓨터를 제어하는 수단과,
    (c) 상기 복수개의 응용 프로그램들 중 각각의 응용 프로그램에, 각각의 응용 프로그램이 배타적으로 사용하도록 유보된 메모리의 영역을 포함하는 전용 힙을 할당하도록 상기 컴퓨터를 제어하는 수단과,
    (d) 상기 각각의 전용 힙에 상기 각각의 전용 힙이 관련되는 각각의 응용 프로그램에 대한 응용 프로그램 특정 데이터를 저장하도록 상기 컴퓨터를 제어하는 수단과,
    (e) 응용 프로그램의 실행 완료 시, 관련 전용 힙 프로그램에 저장된 값들을 초기 상태로 리세트하고, 다음의 사용을 위해 상기 공유 힙의 내용들을 보유하도록 상기 컴퓨터를 제어하는 수단과,
    (f) 다음의 응용 프로그램이 사용하기 위해 상기 가상 기계를 정의하는 데이터를 보유하도록 상기 컴퓨터를 제어하는 수단을 포함하는 메모리 매체.
  8. 제 7 항에 있어서,
    상기 각각의 전용 힙은 정적 초기화 값들을 포함하는 영구 부분을 포함하며, 상기 제어 수단 (e)는 정적 초기화 값들을 그 안에 초기화 입력함으로써 상기 초기 상태를 재생성하도록 상기 컴퓨터를 제어하는 메모리 매체.
  9. 제 8 항에 있어서,
    상기 전용 힙은 초기 상태가 공통 값인 리세트 가능한 부분을 포함하는 메모리 매체.
  10. 제 7 항에 있어서,
    (g) 응용 프로그램 데이터 사이의 격리를 위해 관련 전용 힙들에 응용 프로그램 관련 코드를 저장하도록 각각의 응용 프로그램을 제어하도록 상기 컴퓨터를 제어하는 수단을 더 포함하는 메모리 매체.
  11. 제 7 항에 있어서,
    (g) 응용 프로그램의 성공적인 실행이 가능하도록 상기 컴퓨터의 실행 시간 동작들을 수정하는데 필요한 비 응용 프로그램 특정 코드를 상기 전용 힙에 저장하도록 상기 컴퓨터를 제어하는 수단을 더 포함하는 메모리 매체.
  12. 제 11 항에 있어서,
    상기 각각의 전용 힙은 초기 상태가 공통 값이며 실행 시간 동작들을 수정하는데 필요한 비 응용 프로그램 특정 코드가 저장되는 리세트 가능한 부분을 포함하는 메모리 매체.
  13. 컴퓨터에서 실행하는 복수개의 응용 프로그램들에 의해서 재사용 가능한 가상 데이터 처리 엔티티(virtual data processing entity)를 상기 컴퓨터에 제공하기 위한 시스템에 있어서,
    상기 시스템은 중앙 처리 장치(CPU)와, 랜덤 엑세스 메모리(RAM)와, 상기 CPU의 동작을 제어하는 RAM에 저장된 코드를 포함하며,
    상기 시스템은,
    (a) 상기 복수개의 응용 프로그램들이 사용하기 위한, 상기 복수개의 응용 프로그램들에 의해 엑세스 가능한 메모리의 영역을 포함하는 공유 힙(shared heap)을 할당하는 수단과,
    (b) 상기 컴퓨터의 실행시간 동작을 제어하기 위해 사용되는 비 응용 프로그램 특정 코드를 상기 공유 힙에 저장하는 수단과,
    (c) 상기 복수개의 응용 프로그램들중 각각의 응용 프로그램에, 각각의 응용 프로그램이 배타적으로 사용하도록 유보된 메모리의 영역을 포함하는 전용 힙(private heap)을 할당하는 수단과,
    (d) 상기 각각의 전용 힙이 관련되는 각각의 응용 프로그램에 대한 응용 프로그램 특정 데이터를 상기 각각의 전용 힙에 저장하는 수단과,
    (e) 응용 프로그램의 실행 완료 시 관련 전용 힙에 저장된 값들을 초기 상태로 리세트하고, 다음 사용을 위해 상기 공유 힙의 내용들을 보유하는 수단과,
    (f) 다음 응용 프로그램이 사용하기 위해 상기 가상 기계를 정의하는 데이터를 보유하는 수단을 포함하는 시스템.
  14. 제 13 항에 있어서,
    상기 각각의 전용 힙은 정적 초기화 값들을 포함하는 영구 부분을 포함하며, 상기 리세트 수단은 정적 초기화 값들을 입력함으로써 상기 초기 상태를 재생성하는 시스템.
  15. 제 14 항에 있어서,
    상기 각각의 전용 힙은 초기 상태가 공통 값인 리세트 가능한 부분을 포함하는 시스템.
  16. 제 13 항에 있어서,
    응용 프로그램 데이터 사이의 격리를 위해 관련 전용 힙들에 응용 프로그램 관련 코드를 저장하도록 각각의 응용 프로그램을 제어하는 수단을 더 포함하는 시스템.
  17. 제 13 항에 있어서,
    응용 프로그램의 성공적인 실행이 가능하도록 상기 컴퓨터의 실행 시간 동작들을 수정하는데 필요한 비 응용 프로그램 특정 코드를 상기 전용 힙에 저장하는 수단을 더 포함하는 시스템.
  18. 제 17 항에 있어서,
    상기 각각의 전용 힙은 초기 상태가 공통 값이며 실행 시간 동작들을 수정하는데 필요한 비 응용 프로그램 특정 코드가 저장되는 리세트 가능한 부분을 포함하는 시스템.
KR10-2000-0022729A 1999-04-30 2000-04-28 가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에제공하는 메모리 매체 및 시스템 KR100368347B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/304,160 1999-04-30
US09/304,160 US6694346B1 (en) 1999-04-30 1999-04-30 Long running, reusable, extendible, virtual machine

Publications (2)

Publication Number Publication Date
KR20010007028A true KR20010007028A (ko) 2001-01-26
KR100368347B1 KR100368347B1 (ko) 2003-01-24

Family

ID=23175333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0022729A KR100368347B1 (ko) 1999-04-30 2000-04-28 가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에제공하는 메모리 매체 및 시스템

Country Status (3)

Country Link
US (1) US6694346B1 (ko)
JP (1) JP4107630B2 (ko)
KR (1) KR100368347B1 (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134123B1 (en) * 2000-05-31 2006-11-07 International Business Machines Corporation Virtual machine with reset operation
US6957237B1 (en) * 2000-06-02 2005-10-18 Sun Microsystems, Inc. Database store for a virtual heap
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
GB0027045D0 (en) * 2000-11-06 2000-12-20 Ibm Computer system with heap reset
US7246135B2 (en) * 2001-01-08 2007-07-17 Intel Corporation Sharing classes between programs
US6978447B1 (en) * 2001-02-28 2005-12-20 Cisco Technology, Inc. Method and system for efficiently interpreting a computer program
GB0115965D0 (en) * 2001-06-29 2001-08-22 Ibm Computer system for detecting object updates
US7093086B1 (en) 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US7213246B1 (en) 2002-03-28 2007-05-01 Veritas Operating Corporation Failing over a virtual machine
US7603670B1 (en) 2002-03-28 2009-10-13 Symantec Operating Corporation Virtual machine transfer between computer systems
US6757778B1 (en) 2002-05-07 2004-06-29 Veritas Operating Corporation Storage management system
JP3857259B2 (ja) * 2002-08-14 2006-12-13 日本電信電話株式会社 オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
US20040123289A1 (en) * 2002-12-20 2004-06-24 Drews Paul C Multi-processing inside a virtual machine
US7051324B2 (en) * 2003-01-16 2006-05-23 International Business Machines Corporation Externalized classloader information for application servers
US7082509B2 (en) * 2003-02-06 2006-07-25 Intel Corporation Method and system for allocating memory during system boot to reduce operating system memory resource consumption at run-time
US7203944B1 (en) 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7404067B2 (en) * 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US7246200B1 (en) 2003-11-12 2007-07-17 Veritas Operating Corporation Provisioning and snapshotting using copy on read/write and transient virtual machine technology
US7810092B1 (en) 2004-03-02 2010-10-05 Symantec Operating Corporation Central administration and maintenance of workstations using virtual machines, network filesystems, and replication
US20060179428A1 (en) * 2005-02-10 2006-08-10 Kiyokuni Kawachiya Method and system for efficiently starting a JAVA application
DE102005008796A1 (de) * 2005-02-25 2006-08-31 Siemens Ag Mobiles Endgerät für eine Mehrzahl von Applikationen, die verschiedene virtuelle Maschinen voraussetzen und Verfahren zum Aufrufen einer Mehrzahl von Applikationen
US7478278B2 (en) * 2005-04-14 2009-01-13 International Business Machines Corporation Template based parallel checkpointing in a massively parallel computer system
US7962707B2 (en) * 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
US7827373B2 (en) * 2005-10-31 2010-11-02 Honeywell International Inc. System and method for managing a short-term heap memory
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
WO2008009176A1 (en) * 2006-07-14 2008-01-24 Intel Corporation Heap organization for a multitasking virtual machine
WO2008017204A1 (en) * 2006-08-01 2008-02-14 Intel Corporation Heap manager for a multitasking virtual machine
US7984483B2 (en) * 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US8046540B2 (en) * 2007-04-26 2011-10-25 Sap Ag Shared closures on demand
US8140978B2 (en) * 2008-01-16 2012-03-20 International Business Machines Corporation System and method for providing information in a virtual world
US8577845B2 (en) * 2008-06-13 2013-11-05 Symantec Operating Corporation Remote, granular restore from full virtual machine backup
US9286080B2 (en) * 2008-07-02 2016-03-15 Hewlett-Packard Development Company, L.P. Memory management for hypervisor loading
US20100011357A1 (en) * 2008-07-13 2010-01-14 International Business Machines Corporation System and method for garbage collection in a virtual machine
US8843742B2 (en) 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
US7904914B2 (en) * 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
TW201027378A (en) * 2009-01-08 2010-07-16 Realtek Semiconductor Corp Virtual platform and related simulation method
US8527761B2 (en) * 2010-05-28 2013-09-03 Dell Products, Lp System and method for fuse enablement of a secure client hosted virtualization in an information handling system
US9075635B1 (en) * 2010-07-26 2015-07-07 Symantec Corporation Systems and methods for merging virtual layers
US9858133B2 (en) * 2010-09-20 2018-01-02 Netflix, Inc. Techniques for assessing the resiliency of a distribution computing service provided by a collection of interacting servers
US8495630B2 (en) * 2010-11-03 2013-07-23 International Business Machines Corporation Transferring objects between virtual machines
CN102541619B (zh) * 2010-12-23 2015-09-16 国际商业机器公司 虚拟机管理装置和方法
US9317324B2 (en) * 2010-12-29 2016-04-19 Apple Inc. Automatic service lifecycle management
KR101894752B1 (ko) 2011-10-27 2018-09-05 삼성전자주식회사 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
JP5646591B2 (ja) * 2012-12-28 2014-12-24 インテル コーポレイション マルチタスク仮想マシンのためのヒープ組織
US9813904B2 (en) 2013-08-30 2017-11-07 Dell Products, Lp System and method of secure logon for shared devices
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9471360B2 (en) 2014-03-14 2016-10-18 International Business Machines Corporation Returning terminated virtual machines to a pool of available virtual machines to be reused thereby optimizing cloud resource usage and workload deployment time
US10303782B1 (en) 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
DE102015015735A1 (de) * 2015-12-01 2017-06-01 Giesecke & Devrient Gmbh Teilnehmeridentitätsmodul mit mehreren Profilen und Heap-Speicher

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247681A (en) * 1990-12-18 1993-09-21 International Business Machines Corporation Dynamic link libraries system and method
US5375241A (en) * 1992-12-21 1994-12-20 Microsoft Corporation Method and system for dynamic-link library
US6363409B1 (en) * 1995-04-24 2002-03-26 Microsoft Corporation Automatic client/server translation and execution of non-native applications
US6167535A (en) * 1997-12-09 2000-12-26 Sun Microsystems, Inc. Object heap analysis techniques for discovering memory leaks and other run-time information
US5999732A (en) * 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6332218B1 (en) * 1998-06-30 2001-12-18 Sun Microsystems, Inc. System and method for automatically instantiating classes in a virtual machine

Also Published As

Publication number Publication date
JP4107630B2 (ja) 2008-06-25
JP2000330805A (ja) 2000-11-30
US6694346B1 (en) 2004-02-17
KR100368347B1 (ko) 2003-01-24

Similar Documents

Publication Publication Date Title
KR100368347B1 (ko) 가상 데이터 처리 엔티티 제공 방법, 그것을 컴퓨터에제공하는 메모리 매체 및 시스템
Wang et al. Replayable execution optimized for page sharing for a managed runtime environment
US6799173B2 (en) Method and apparatus for sharing code containing references to non-shared objects
EP0573190B1 (en) Dynamically configurable kernel
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
US9104619B2 (en) Persisting data across warm boots
US6970991B2 (en) Computer system with virtual memory and paging mechanism
US5948113A (en) System and method for centrally handling runtime errors
US5809554A (en) User control of multiple memory heaps
US7945911B1 (en) Barrier synchronization method and apparatus for work-stealing threads
US8032740B2 (en) Update in-use flash memory without external interfaces
US9009715B2 (en) Object optimal allocation device, method and program
US7263700B1 (en) Serially, reusable virtual machine
EP1626338A1 (en) System and method for providing exceptional flow control in protected code through watchpoints
JP5161696B2 (ja) 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
JPH04268927A (ja) メモリ管理方法
US7058656B2 (en) System and method of using extensions in a data structure without interfering with applications unaware of the extensions
US20120005460A1 (en) Instruction execution apparatus, instruction execution method, and instruction execution program
US20090187911A1 (en) Computer device with reserved memory for priority applications
US7840772B2 (en) Physical memory control using memory classes
KR102456017B1 (ko) 응용 프로그램간 파일 공유 장치 및 방법
US6748503B1 (en) System and method facilitating unmanaged code participation in garbage collection
US6752836B1 (en) Method and apparatus for high-concurrency client locking with java in a data processing system
Stanek et al. Online software maintenance for mission-critical systems
de Sousa Performance isolation in graalvm native image isolates

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

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20141215

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee