KR100861738B1 - 이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용방법 및 시스템 - Google Patents

이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용방법 및 시스템 Download PDF

Info

Publication number
KR100861738B1
KR100861738B1 KR1020067014500A KR20067014500A KR100861738B1 KR 100861738 B1 KR100861738 B1 KR 100861738B1 KR 1020067014500 A KR1020067014500 A KR 1020067014500A KR 20067014500 A KR20067014500 A KR 20067014500A KR 100861738 B1 KR100861738 B1 KR 100861738B1
Authority
KR
South Korea
Prior art keywords
virtual machine
gjvm
cluster
node
object group
Prior art date
Application number
KR1020067014500A
Other languages
English (en)
Other versions
KR20070006695A (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 KR20070006695A publication Critical patent/KR20070006695A/ko
Application granted granted Critical
Publication of KR100861738B1 publication Critical patent/KR100861738B1/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/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명의 방법, 장치, 컴퓨터 프로그램 제품 및 데이터 처리 시스템은 연산 그리드 내의 다른 가상 머신들과 상호동작하기 위한 임베디드 기능을 가진 가상 머신의 동작을 제공한다. 복수의 가상 머신들은 데이터 처리 시스템 내의 하나 이상의 장치들에서 동작한다. 즉, 복수의 가상 머신 내의 각 가상 머신은 그리드같은 방식으로 가상 머신 클러스터 내의 다른 가상 머신과 상호 동작 및 제휴하는 기능을 갖는다. 가상 머신 클러스터 내의 각 가상 머신은 가상 머신 클러스터 내에서 노드로서 작용한다. 가상 머신은 오브젝트 그룹과 제휴하여 그 오브젝트들을 관리하고, 각 가상 머신은 복수의 오브젝트 그룹들을 관리할 수 있다. 가상 머신들은 오브젝트 그룹들이 가상 머신 클러스터 내의 가상 머신들 사이에서 이동할 수 있도록 정보를 공유하고, 이로써 가상 머신 클러스터가 하나의 논리적 가상 머신으로서 작용할 수 있다.

Description

이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용 방법 및 시스템{METHOD AND SYSTEM FOR A GRID-ENABLED VIRTUAL MACHINE WITH MOVABLE OBJECTS}
본 발명은 개선된 데이터 처리 시스템에 관한 것이고, 특히 멀티컴퓨터 데이터 전송 및 프로그램 실행을 위한 방법 및 장치에 관한 것이다.
인터넷 관련 및 웹 관련 기술을 광범위하게 채택함으로써 수 천개의 조직 및 비즈니스와 수 백만명의 개인에 의해 물리적으로 지원되는 상호 접속 컴퓨터의 글로벌 네트워크의 성장이 가능하게 되었다. 최근 기업들은 개별 컴퓨터의 국부적인 독립 제어를 유지하면서 다수의 컴퓨터의 연산 능력을 연산 능력 및 데이터 저장 능력의 종합적 공유를 제공하기 위하여 다수의 컴퓨터로 이루어진 논리적 조직인 그리드(grid)로 구성하는 노력을 기울이고 있다.
예를 들어서, 다수의 기업들은 그리드 연산을 위한 공동체 구동 표준(community-driven standards)을 개발하기 위해 GGF, Inc.가 지원하는 글로벌 그리드 포럼(Global Grid Forum™) 내에서 협력하고 있다. 글로버스 프로젝트(Globus Project™)는 그리드 관련 기술을 개발하기 위해 정부 기관, 회사 및 대학에서 지원하고 있는 하나의 노력이고, 이것은 그리드 개념을 웹 서비스에 기반을 둔 서비스 지향 골격구조(framework)에 통합하는 창시물(initiative)인 오픈 그리드 서비 스 아키텍쳐(OGSA)를 개발하는 결과를 가져왔다. 글로버스 툴키트(Globus Toolkit®)는 그리드 인에이블(grid-enabled) 애플리케이션을 개발하기 위한 소프트웨어 프로그래밍 툴을 제공하는 오픈 그리드 서비스 아키텍쳐의 구현예이고, 자바(Java®) 코뮤니티 그리드(CoG) 키트는 자바(Java®) 골격구조를 통하여 그리드 서비스에 대한 액세스를 제공하는 글로버스 툴키트(Globus Toolkit®)의 일부이다.
비록 자바(Java®) CoG 키트가 그리드 서비스에 액세스하는 자바(Java®) 애플리케이션을 지원하지만, 자바(Java®) CoG 키트는 그리드의 연산 특성들을 자바(Java®) 가상 머신(virtual machine)(JVM)에 통합하지 못하였다. 그러므로, 그리드의 연산 특성들을 가상 머신 내에 통합하는 방법, 시스템, 장치 및/또는 컴퓨터 프로그램 제품을 갖는 것이 유리할 것이다. 특히, 동적으로 변화하는 그리드 연산 환경에서 가상 머신이 구현될 수 있도록 가상 머신 내에서 오브젝트 관리를 수행하는 것이 유리할 것이다.
본 발명의 방법, 장치, 컴퓨터 프로그램 제품 및 데이터 처리 시스템은 연산 그리드 내의 다른 가상 머신들과 상호동작하기 위한 임베디드 기능(embedded functionality)을 가진 가상 머신의 동작을 제공한다. 복수의 가상 머신들은 데이터 처리 시스템 내의 하나 이상의 장치들에서 동작한다. 즉, 복수의 가상 머신 내의 각 가상 머신은 그리드같은 방식으로 가상 머신 클러스터(cluster) 내의 다른 가상 머신과 상호 동작 및 제휴하는 기능을 갖는다. 가상 머신 클러스터 내의 각 가상 머신은 가상 머신 클러스터 내에서 노드(node)로서 작용한다. 가상 머신은 오브젝트 그룹과 제휴하여 그 오브젝트들을 관리하고, 각 가상 머신은 복수의 오브젝트 그룹들을 관리할 수 있다. 가상 머신들은 오브젝트 그룹들이 가상 머신 클러스터 내의 가상 머신들 사이에서 이동할 수 있도록 정보를 공유하고, 이로써 가상 머신 클러스터가 하나의 논리적 가상 머신으로서 작용할 수 있다. 전형적인 애플리케이션 모델에 호환하는 단일 애플리케이션 이미지는 애플리케이션의 실행이 그리드 인에이블 가상 머신의 다중 인스턴스에 미쳐서(span) 애플리케이션의 실행이 다수의 장치에 미치도록 하는 방법으로 그리드 인에이블 가상 머신 클러스터 내에서 실행될 수 있다.
본 발명의 신규 특징이라고 여겨지는 특성들은 청구범위에 나타나 있다. 본 발명 자체, 추가의 목적들 및 그 장점들은 첨부 도면과 관련한 이하의 상세한 설명을 참조함으로써 가장 잘 이해될 수 있을 것이다.
도 1a는 본 발명을 각각 구현할 수 있는 데이터 처리 시스템들의 전형적인 네트워크를 도시한 것이다.
도 1b는 본 발명이 구현될 수 있는 데이터 처리 시스템에서 사용가능한 전형적인 컴퓨터 구조를 도시한 것이다.
도 2는 본 발명의 구현에 따라 분산형 데이터 처리 시스템의 가상 머신 클러 스터를 나타내는 블록도이다.
도 3a는 본 발명의 구현에 따라 클러스터화가능(clusterable) 가상 머신으로서 가상 머신을 증강하기 위해 사용되는 성분 및/또는 정보를 나타내는 블록도이다.
도 3b-3d는 클러스터화(clustered) 가상 머신들 사이에서 오브젝트 그룹의 이동을 나타내는 한 세트의 블록도이다.
도 4는 원시(primary) cJVM 노드를 초기화하기 위한 처리를 나타내는 흐름도이다.
도 5a는 독특한(unique) cJVM 식별자를 초기화된 비원시(non-primary) cJVM에 할당하기 위한 원시 cJVM 에서의 처리를 나타내는 흐름도이다.
도 5b는 독특한 cJVM 식별자를 초기화된 비원시 cJVM에 할당하기 위한 원시 cJVM 에서의 다른 처리를 나타내는 흐름도이다.
도 6은 독특한 오브젝트 그룹 식별자를 비원시 cJVM에 할당하기 위한 원시 cJVM 에서의 처리를 나타내는 흐름도이다.
도 7은 cJVM 클러스터에 관한 정보를 비원시 cJVM에 제공하기 위한 원시 cJVM에서의 처리를 나타내는 흐름도이다.
도 8은 비원시 cJVM의 동작 상태를 변경하기 위한 원시 cJVM에서의 처리를 나타내는 흐름도이다.
도 9는 오브젝트 그룹의 이주 상태(migration state)를 변경하기 위한 원시 cJVM에서의 처리를 나타내는 흐름도이다.
도 10은 비원시 cJVM 노드를 초기화하기 위한 처리를 나타내는 흐름도이다.
도 11은 스레드를 구성하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 12는 스레드를 파괴하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 13은 오브젝트를 구성하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 14는 오브젝트에 대한 액세스를 취급하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 15는 오브젝트 그룹을 원격(remote) 클러스터화 가상 머신으로 이주시키기 위한 국소(local) 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 16은 원격 클러스터화 가상 머신으로부터 오브젝트 그룹의 이주를 승인하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 17은 스레드를 원격 클러스터화 가상 머신으로 이주시키기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 18은 원격 클러스터화 가상 머신으로부터 스레드의 이주를 승인하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 19는 클러스터화 가상 머신에서 폐쇄 동작을 수행하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 20은 원격 클러스터화 가상 머신으로부터 부하(load) 또는 성능 (performance) 정보를 수집하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 21은 국소 클러스터화 가상 머신에서 현재의 부하 또는 성능 정보에 대한 클러스터화 가상 머신으로부터의 요구에 응답하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 22는 부하 또는 성능 정보에 따라서 국소 클러스터화 가상 머신으로부터 원격 클러스터화 가상 머신으로 스레드 및/또는 오브젝트 그룹을 이주시키는 것을 결정하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도이다.
도 23은 다수의 장치에 걸쳐서 단일 논리 가상 머신 내의 다중 그리드 인에이블 가상 머신에 미치는 단일 애플리케이션 이미지의 실행을 나타내는 블록도이다.
일반적으로, 본 발명을 포함하는 또는 본 발명에 관계되는 장치들은 다양한 데이터 처리 기술을 포함한다. 그러므로, 본 발명을 상세히 설명하기 전에 분산형 데이터 처리 시스템 내의 하드웨어 및 소프트웨어 성분들의 전형적인 구성을 배경 기술로서 먼저 설명한다.
이제, 도면들을 참조하면, 도 1a는 본 발명의 일부를 각각 구현할 수 있는 데이터 처리 시스템들의 전형적인 네트워크를 도시한 것이다. 분산형 데이터 처리 시스템(100)은 분산형 데이터 처리 시스템(100) 내에서 함께 접속된 각종 장치 및 컴퓨터 사이에 통신 링크를 제공하기 위해 사용될 수 있는 매체인 네트워크(101)를 내포한다. 네트워크(101)는 와이어 또는 광섬유 케이블과 같은 영구 접속 또는 전화나 무선 통신을 통해 구성되는 임시 접속을 포함한다. 도시된 예에서, 서버(102, 103)는 기억 장치(104)와 함께 네트워크(101)에 접속되어 있다. 또한, 클라이언트(105-107)도 네트워크(101)에 접속되어 있다. 클라이언트(105-107)와 서버(102-103)는 메인프레임, 퍼스널 컴퓨터, 개인 휴대용 정보 단말기(PDA) 등과 같은 각종 연산 장치에 의해 묘사될 수 있다. 분산형 데이터 처리 시스템(100)은 도시를 생략한 추가의 서버, 클라이언트, 라우터, 기타 장치 및 피어투피어(peer-to-peer) 구조물을 포함할 수 있다.
도시된 예에서, 분산형 데이터 처리 시스템(100)은 서로 통신하기 위해 LDAP(Lightweight Directory Access Protocol), TCP/IP(Transport Control Protocol/Internet Protocol), HTTP(Hypertext Transport Protocol), WAP(Wireless Application Protocol) 등과 같은 각종 통신 규약(protocol)을 사용하는 네트워크 및 게이트웨이의 광범위한 조합(collection)을 나타내는 네트워크(101)를 가진 인터넷을 포함할 수 있다. 물론, 분산형 데이터 처리 시스템(100)은 다수의 다른 유형의 네트워크, 예를 들면 인트라넷, 근거리 통신망(LAN), 또는 광역 통신망(WAN) 등을 또한 포함할 수 있다. 예를 들면, 서버(102)는 클라이언트(109)와 네트워크(110)를 직접 지원하며, 무선 통신 링크를 내장하고 있다. 네트워크 인에이블 폰(111)은 무선 링크(112)를 통하여 네트워크(110)에 접속하고, PDA(113)는 무선 링크(114)를 통하여 네트워크(110)에 접속한다. 폰(111)과 PDA(113)는 또한 소위 개인 영역 네트워크(PAN) 또는 개인 애드호크(ad-hoc) 네트워크를 생성하기 위해 적 절한 기술, 예를 들면 블루투스(Bluetooth™) 무선 기술을 이용하여 무선 링크(115)를 통해 그들 간에 데이터를 직접 전송할 수 있다. 유사한 방법으로, PDA(113)는 무선 통신 링크(116)를 통해 PDA(107)에 데이터를 전송할 수 있다. 본 발명은 각종 하드웨어 플랫폼에서 구현될 수 있다. 즉, 도 1a는 이종(heterogeneous) 연산 환경의 일 예로서 의도되고, 본 발명의 구조를 제한하는 것으로서 의도되지 않는다.
도 1b를 참조하면, 본 발명이 구현될 수 있는, 도 1a에 도시된 것과 같은 데이터 처리 시스템의 전형적인 컴퓨터 구조가 도시되어 있다. 데이터 처리 시스템(120)은 내부 시스템 버스(123)에 접속된 하나 이상의 중앙 처리 장치(CPU)(122)를 포함하고, 상기 내부 시스템 버스(123)는 랜덤 액세스 메모리(RAM)(124), 판독 전용 메모리(ROM)(126), 및 입력/출력 어댑터(128)를 상호 접속하며, 상기 입력/출력 어댑터(128)는 프린터(130), 디스크 장치(132)와 같은 각종 I/O 장치, 또는 음향 출력 시스템 등과 같은 도시를 생략한 기타 장치들을 지원한다. 시스템 버스(123)는 통신 링크(136)에 대한 액세스를 제공하는 통신 어댑터(134)에 또한 접속한다. 유저 인터페이스 어댑터(148)는 키보드(140) 및 마우스(142)와 같은 각종 사용자 장치, 또는 터치 스크린, 스타일러스, 마이크로폰 등과 같은 도시를 생략한 기타 장치에 접속된다. 디스플레이 어댑터(144)는 시스템 버스(123)를 디스플레이 장치(146)에 접속한다.
이 기술에 통상의 지식을 가진 사람이라면 도 1b에서의 하드웨어가 시스템 구현예에 따라서 변화될 수 있다는 것을 알 것이다. 예를 들어서, 시스템은 인텔 (Intel®) 펜티엄(Pentium®) 기반 프로세서 및 디지털 신호 프로세서(DSP)와 같은 하나 이상의 프로세서, 및 한가지 유형 이상의 휘발성 및 비휘발성 메모리를 가질 수 있다. 도 1b에 도시된 하드웨어에 추가해서 또는 그 대신에 다른 주변 장치들을 사용할 수 있다. 도시된 예는 본 발명과 관련한 구조적 제한을 의미하는 것으로 해석되어서는 안된다.
본 발명은 다양한 하드웨어 플랫폼 상에서 구현될 수 있을 뿐만 아니라, 다양한 소프트웨어 환경에서도 구현될 수 있다. 전형적인 운영 체계는 각각의 데이터 처리 시스템 내에서 프로그램 실행을 제어하기 위해 사용될 수 있다. 예를 들어서, 하나의 장치는 유닉스(Unix®) 운영 체계를 동작시킬 수 있고, 다른 장치는 단순한 자바(Java®) 런타임 환경을 포함할 수 있다. 대표적인 컴퓨터 플랫폼은 그래픽 파일, 워드 프로세싱 파일, 확장성 마크업 언어(XML), 하이퍼텍스트 마크업 언어(HTML), 핸드헬드 디바이스 마크업 언어(HDML), 무선 마크업 언어(WML)와 같은 다양한 포맷 및 언어로 된 하이퍼텍스트 문서 및 기타의 각종 포맷 및 유형의 파일들을 액세스하기 위한 공지의 소프트웨어 애플리케이션인 브라우저를 포함할 수 있다.
가상 머신 클러스터/그리드
본 발명은 도 1a 및 도 1b와 관련하여 전술한 바와 같이 다양한 하드웨어 및 소프트웨어 플랫폼에서 구현될 수 있다. 그러나, 더 구체적으로 말하면, 본 발명은 나머지 도면과 관련하여 설명하는 바와 같이, 개선된 가상 머신이 그리드같은 방식 으로 유사한 개선된 가상 머신과 상호작용할 수 있도록 개선된 가상 머신 내에 그리드의 연산 특성을 포함하는 개선된 가상 머신에 관련된다. 비록 이후의 도면들은 본 발명이 개선된 자바(Java®) 가상 머신(JVM)으로서 구현될 수 있도록 통합 자바(Java®) 기술로서 설명되지만, 본 발명은 다른 유형의 가상 머신용의 기술과 함께 구현될 수 있다.
이제 도 2를 참조하면, 본 발명의 구현에 따라서 분산형 데이터 처리 시스템의 가상 머신 클러스터/그리드의 블록도가 도시되어 있다. 네트워크(200)는 한 세트의 가상 머신(201-205)들과 접속하는데 이 네트워크(200)는 도 1의 네트워크(101)와 유사하고, 가상 머신(201-205)들은 도 1에 도시된 임의의 장치들과 같은 다양한 장치에서 지원될 수 있다.
용어를 소개하면, 클러스터는 2개 이상의 상호작용하는 엔티티(entity)의 세트를 말한다. 가상 머신의 클러스터는 가상 머신 클러스터, 가상 머신 그리드 또는 논리적 가상 머신으로 지칭될 것이다. 클러스터/그리드에서 동작하는 기능을 내포한 단일 가상 머신은 클러스터화가능(clusterable) 가상 머신 또는 그리드 인에이블(grid-enabled) 가상 머신으로 지칭될 것이다. 클러스터/그리드 내에 포함된 단일 가상 머신은 클러스터화(clustered) 가상 머신 또는 그리드 임베디드(grid-embedded) 가상 머신으로 지칭될 것이다.
전술한 바와 같이, 본 발명은 본 발명의 실시예를 구현하기 위한 기능을 포함하도록 개선된 자바(Java®) 가상 머신을 이용하여 자바(Java®) 환경에서 구현될 수 있다. 대안적으로, 본 발명은 자바(Java®) 클래스 라이브러리에 대한 확장판(extensions) 내에서 구현될 수 있다. 따라서, 전술한 용어는 자바(Java®) 콘텍스트 내에서 사용될 수 있다. 이하에서, 그리드 인에이블 JVM 또는 그리드 임베디드 JVM은 gJVM이라고 부른다. 도 2는 gJVM(201-205)을 포함한 gJVM 클러스터와 접속된 네트워크(200)를 도시하고 있다.
단일 클러스터화 가상 머신 또는 단일 그리드 임베디드 가상 머신은 주어진 가상 머신 클러스터, 주어진 가상 머신 그리드 또는 주어진 논리적 가상 머신 내의 노드로서 지칭될 수 있다. 도 2에 도시된 예에서, 한 세트의 가상 머신들은 그리드같은 방식으로 단일 가상 머신 클러스터 내의 다중 노드로서 상호작용한다. 본 발명은 가상 머신 클러스터의 복수의 노드를 지원하고, 분산형 데이터 처리 시스템은 하나 이상의 가상 머신 클러스터/그리드를 지원할 수 있다. 더욱이, 주어진 장치는 하나 이상의 클러스터화가능/그리드 인에이블 가상 머신 또는 하나 이상의 클러스터화/그리드 임베디드 가상 머신을 지원할 수 있다. 다시 말해서, 주어진 장치는 제1 클러스터화/그리드 임베디드 가상 머신 및 제2 클러스터화/그리드 임베디드 가상 머신을 지원할 수 있고, 여기에서 2개의 클러스터화/그리드 임베디드 가상 머신은 2개의 구별된 독립 가상 머신 클러스터/그리드에 포함된다. 즉, 2개의 클러스터화/그리드 임베디드 가상 머신 및 2개의 가상 머신 클러스터/그리드는 독특하게 식별 및 액세스 가능하다.
주어진 가상 머신 클러스터/그리드 내에서 수행되는 처리의 유형에 따라서, 노드들 간의 구별을 위하여, 주어진 가상 머신 클러스터/그리드 내의 상호작용하는 노드들을 국소 노드(local node) 또는 원격 노드(remote node)라고 부르는 것이 편리할 것이다. 예를 들면, 주어진 gJVM의 시각에서, 주어진 gJVM은 국소 노드, 국소 gJVM 또는 국소 gJVM 노드라고 지칭될 것이다. 주어진 gJVM의 시각에서 국소 노드와 상호작용하는 다른 gJVM은, 동일한 장치에서 실행되거나 다른 장치에서 실행되거나 간에, 원격 노드, 원격 gJVM 또는 원격 gJVM 노드라고 지칭될 것이다.
본 발명은 애플리케이션이 각각 적어도 하나의 클러스터화 가상 머신 노드를 지원하는 한 세트의 머신 또는 장치에서 명백하게 동작하게 한다. 예를 들면, 다중 스레드 자바 애플리케이션(multithreaded Java® application)은 다중 gJVM에서 동작할 수 있고, 애플리케이션은 그 스레드가 어느 머신에 디스패치되었는지 알지 못하고 알 필요도 없다. 가상 머신 클러스터는 클러스터화 가상 머신의 이용가능한 세트에서 애플리케이션의 스레드를 동적으로 관리하고 분배한다.
각각의 가상 머신 클러스터는 단일 원시 노드를 가진다. 도 2에서, gJVM 노드(201)는 원시(primary) gJVM 노드이고, gJVM 노드(202-205)는 비원시 gJVM 노드이다. 원시 노드는 클러스터 내의 비원시 노드에 대해 수행되는 특정의 임무 또는 책임을 가질 수 있다. 예를 들면, 원시 노드는 애플리케이션, 예컨대 가상 머신 클러스터의 파일 액세스 및 클래스 로딩(클래스패쓰)에 대한 애플리케이션 환경 및 콘텍스트를 정의하는 한 세트의 오브젝트를 가질 수 있다.
원시 노드와 비원시 노드는 약간 다른 방식으로 시작될 수 있고, 이것에 의 해 원시 노드로서 또는 비원시 노드로서 작용해야 할 주어진 클러스터화가능 가상 머신에 대한 표시를 제공한다. 예를 들면, 자바(Java®) 환경의 클러스터화가능 가상 머신은 이하의 예시적인 인스턴스 생성 명령(instantiation command)으로 시작될 수 있다.
자바 [-메인 -클러스터명] [메인클래스]
"자바" 명령은 클러스터화가능 가상 머신을 인스턴스화(instantiate) 할 수 있다. 즉, 클러스터화가능 가상 머신의 주어진 카피의 실행을 시작할 수 있다. "-메인" 파라메터는 gJVM의 특정 인스턴스가 "-클러스터명" 파라메터에 의해 식별되는 gJVM 클러스터 내에서 원시 gJVM 노드로서 작용해야 한다는 것을 표시한다. 즉, gJVM의 특정 인스턴스가 비원시 gJVM 노드로서 작용해야 할 때, 인스턴스 생성 명령은 "-메인" 파라메터를 포함하지 않을 것이다. "메인클래스" 파라메터는 gJVM에 의해 동작할 메인 프로그램을 특정한다. 이러한 방식으로, 원시 노드 및 비원시 노드를 포함하는 소프트웨어 모듈들은 서로의 카피일 수 있고, 이것에 의해 소프트웨어를 본질적으로 유사하게 만든다. 즉 원시 노드와 비원시 노드는 소위 피어(peer) 또는 클론(clone)일 수 있다. 그러나, 원시 노드와 비원시 노드는 원시 노드가 비원시 노드에 비하여 약간 다른 인스턴스 생성 처리를 수행하기 때문에 다른 행동을 나타낼 수 있다.
원시 노드와 비원시 노드는 단순히 클러스터화가능 가상 머신의 독립 인스턴스이기 때문에, 원시 노드와 비원시 노드는 예를 들면 다른 방식으로 초기화됨으로 써 2개의 다른 동작 모드에 따라 단순하게 기능하고, 원시 노드는 시스템이 기동된 후에 유지를 위해 또는 다른 목적으로 원시 노드를 폐쇄시킬 수 있게 하기 위하여 비원시 노드에 대한 자신의 책임을 위임하거나 떠넘길 수 있다.
그리드 인에이블 가상 머신
이제 도 3a를 참조하면, 본 발명의 구현예에 따라서 가상 머신을 클러스터화가능/그리드 인에이블 가상 머신으로서 개선하기 위해 사용되는 성분 및/또는 정보에 관한 블록도가 도시되어 있다. 도 3a는 도 2의 노드(201-205) 중 임의의 노드와 같이 단일 클러스터화가능 가상 머신을 나타내는 gJVM 노드(300)를 묘사한다. 비록 도시하지는 않았지만, gJVM 노드(300)는 전형적인 JVM과 유사한 방식으로 각종 작업을 수행하기 위한 다른 성분 및 정보를 포함한다. 다시 말하면, gJVM 노드(300)는 본 발명의 기능을 포함하도록 개선된 전형적 JVM으로 생각할 수 있다. 비록 gJVM 노드(300)가 다중 유형의 테이블을 포함하는 것으로 도시되어 있지만, 이 기술에 통상의 지식을 가진 사람이라면 다른 유형의 정보 및 다른 정보 포맷이 본 발명의 기능을 실행하기 위해 주어진 클러스터화가능 가상 머신에 의해 관리될 수 있다는 것을 알 것이다.
P2P 통신 유닛(302)은 각각의 gJVM이 임의의 다른 gJVM과 피어투피어 방식으로 통신하게, 특히 다른 gJVM에 gJVM의 성능 정보를 전달하게 한다. 예를 들면, gJVM은 가상 머신 클러스터가 그 전체 부하(load)를 분산 방식으로 균형잡을 수 있도록 그 CPU 부하 인자, 그 메모리 인자, 및 그 통신 큐 부하 인자를 다른 gJVM에 전달할 수 있다. 독특한 gJVM ID(304)는 gJVM 그룹명(306)에 의해 식별되는 주어진 gJVM 클러스터 내의 특정 gJVM에 지정된 독특한 가상 머신 식별자를 나타내는 데이터 값이다. 응용 환경/콘텍스트 파라메터(308)는 그 런타임 환경으로부터 추가의 정보를 얻기 위해서 및 그 런타임 환경과 상호작용하기 위해서 gJVM(300)의 수명시간 동안에 필요로 하는 각종 값 및 정보를 정의한다. 예를 들면, 각각의 gJVM은 원시 gJVM이 원시 gJVM과 통신하도록 구성되는 원시 gJVM IP 주소 및 포트값(310)을 알 필요가 있다.
각각의 클러스터화 가상 머신은 하나의 동작 상태, 예를 들면, 정지됨(stopped), 시작중(starting), 시작됨(started) 및 정지중(stopping)의 동작 상태를 갖는다. 새로운 노드가 가상 머신 클러스터 내에서 인스턴스화할 때, 즉 가상 머신 클러스터 내에서 이미 복수의 가상 머신에 부가될 때, 그 존재에 관한 정보가 가상 머신 클러스터를 통하여 유포되고, 가상 머신 클러스터 내의 특정 노드가 정지된 때, 즉 전체 가상 머신 클러스터를 정지시키지 않고 발생할 수 있는 가상 머신 클러스터 내의 복수의 가상 머신 중의 나머지로부터 제거된 때, 특정 노드의 정지에 관한 정보가 가상 머신 클러스터를 통하여 유포된다. 도 3a에 도시된 예에서, 각각의 gJVM 노드는 gJVM 등록부(312)로서 도시된 gJVM 클러스터 내의 gJVM 노드의 리스트의 국소 카피를 유지하는 것으로 가정하고, gJVM 노드(300)는 다른 노드의 상태에 대한 갱신된 정보를 수신하며, 이 정보는 그 다음에 gJVM 등록부(312)에 반영된다. 이러한 방식으로, gJVM 등록부(312)는 gJVM 노드(300)에 공지된 gJVM의 등록부를 제공한다. gJVM 등록부(312)는 각각의 공지된 gJVM의 특성값, 예를 들면 그 독특한 gJVM ID(314), 그 IP 주소와 포트(316), 및 그 동작 상태(318)의 리스트를 포함한다. gJVM 클러스터 내의 각 gJVM은 이들이 스레드를 어디에 디스패치할 것인지 결정할 수 있도록 서로에게 각종 워크로드 또는 연산 리소스 활용 파라메터를 전달할 수 있다.
gJVM이 시작된 후 gJVM은 그 gJVM 클러스터로부터 스레드 워크를 수용할 수 있고, gJVM이 정지중일 때 gJVM은 그 스레드 및 관련 오브젝트를 다른 gJVM에 이동한다. 전형적인 가상 머신과 대조적으로, 본 발명은 오브젝트가 gJVM 노드들 사이에서 이동할 수 있는 클러스터화가능 가상 머신을 제공하고, 이것에 의해, 클러스터화가능 가상 머신의 인스턴스가 정지되었을 때 스레드 및 관련 오브젝트가 이동될 수 있다.
전형적인 종래의 시스템에서, 원격 오브젝트는 IP 주소, TCP/IP 포트 번호 및 오브젝트 식별자 레퍼런스의 조합을 통해 어드레스되고, 원격 방법 호출(remote method invocation; RMI) 레퍼런스 또는 공통 오브젝트 요구 브로커 구조(Common Object Request Broker Architecture; CORBA) 레퍼런스는 비교적 큰 사이즈의 다른 정보를 또한 포함한다. 스터브 클래스가 전형적인 RMI 또는 CORBA 구현예에서 사용되는 전형적인 가상 머신과는 대조적으로, 본 발명은 오브젝트 레퍼런스를 제공하여 오브젝트에 대한 액세스가 스터브 클래스 없이 gJVM 런타임 환경에서 투명하게 관리되게 한다. 이것에 대해서는 뒤에서 더 상세하게 설명한다.
본 발명에서 가동 오브젝트를 지원하기 위해, 오브젝트들은 오브젝트 그룹과 제휴된다. 즉 오브젝트 그룹 내에 논리적으로 포함된다. 오브젝트가 존재하는 한, 특정 오브젝트 그룹과의 제휴는 오브젝트 그룹이 계속하여 존재하는 것을 보장한 다. 다시 말해서, 오브젝트 그룹은 적어도 하나의 오브젝트라도 갖고 있는 한 계속적으로 존재할 것이다. 오브젝트 그룹 내의 모든 오브젝트가 불필요 데이터 정리(garbage collection)되었을 때, 오브젝트 그룹도 또한 불필요 데이터 정리된다.
오브젝트 그룹은 클러스터화 가상 머신 중에서 이동될 수 있다. 액세스가능 오브젝트 그룹은 단일 클러스터화 가상 머신에서 단독으로 존재하고, 오브젝트 그룹에 대한 액세스는 오브젝트 그룹이 클러스터화 가상 머신 사이에서 이주 상태로 있는 동안 제한될 것이다. 그러므로, 각각의 클러스터화 가상 머신은 가상 머신 클러스터 내에서 오브젝트 그룹의 위치에 관한 정보를 가진다.
도 3a에 도시된 예에서, 오브젝트 그룹 등록부(320)는 gJVM(300)에 공지된 오브젝트 그룹 ID 및 gJVM(300)의 gJVM 클러스터 내에 오브젝트 그룹을 위치시키기 위한 제휴 정보의 리스트를 포함하고, 이것에 의해 gJVM(300)에 공지된 gJVM과 각각의 공지된 오브젝트 그룹을 제휴시킨다. 예를 들어서, 특정 오브젝트 그룹은 오브젝트 그룹 ID(322)에 의해 표시되고, 오브젝트 그룹이 오브젝트 그룹 ID(322)에 지정되는 gJVM 노드는 gJVM ID(324)에 의해 식별되며, 오브젝트 그룹 ID(322)에 지정된 오브젝트 그룹의 이주 상태는 이주 상태값(326)에 의해 식별된다. 상기 이주 상태값은 한 세트의 상수 값들 중의 하나일 수 있고, 각각의 값은 다른 가능한 이주 상태를 나타낸다.
명료한 액세스를 제공하고 가상 머신 클러스터 내에서 오브젝트의 이동성을 제공하기 위해, 오브젝트에 대한 내부 가상 머신의 핸들, 즉 오브젝트 레퍼런스는 오브젝트를 배치하고 액세스하기 위해 제공하는 정보 아이템의 소규모 세트를 포함 하지만 오브젝트의 위치를 특정하지는 않는다. 예를 들어서, 하기의 자바(Java®) 구성은 자바(Java®) 환경에서의 오브젝트 핸들을 특정하기 위해 사용될 수 있다.
Struct ObjectHandle {
Int objectGroupID; // 독특한 오브젝트 그룹 ID
Byte[] objectID // 오브젝트의 독특한 오브젝트 ID
}
전술한 예에서 특정된 ObjectHandle은 gJVM 클러스터 내에서 실행중인 애플리케이션이 gJVM 클러스터 내의 임의 위치에 있는 대응하는 오브젝트를 액세스하게 한다. 오브젝트 그룹의 독특한 오브젝트 그룹 식별자를 앎으로써, 임의의 gJVM 노드는 식별된 오브젝트 그룹을 gJVM 클러스터 내에 배치할 수 있고, 예를 들어서 만일 오브젝트 그룹이 테이블 또는 오브젝트 그룹 식별자와 gJVM 식별자를 제휴시키는 다른 유형의 데이터 기억부에서 관리되면, 오브젝트가 존재하는 gJVM 노드를 결정할 수 있다. gJVM 노드가 어드레스되고 액세스되는 방식에 관한 다른 정보를 이용함으로써, 독특한 gJVM 식별자는 오브젝트가 존재하는 gJVM 노드와 통신하기 위해 사용될 수 있다. 예를 들어서 만일 gJVM 식별자가 예컨대 gJVM 등록부(312)에 도시된 바와 같이, 테이블 또는 gJVM 식별자를 IP 주소 및 포트 번호와 제휴시키는 다른 유형의 데이터 기억부에서 관리되면, 적당한 gJVM 노드의 적당한 오브젝트 그룹이 몇가지 방식으로 액세스될 수 있다. 비록 주어진 gJVM 노드가 IP 주소 및 포트 번호에 의해 식별될 수 있지만, 이 정보는 오브젝트 레퍼런스 내에 직접 포함되 지 않고, 이것에 의해 오브젝트가 gJVM 노드들 간에서 투명하게 이동될 수 있다. 액세스될 오브젝트의 독특한 오브젝트 식별자를 앎으로써, 적당한 gJVM 노드의 오브젝트 그룹 내의 적당한 오브젝트가 몇가지 방식으로 액세스될 수 있다.
오브젝트 그룹의 위치에 관한 정보는 오브젝트 그룹을 호스트하는 gJVM 노드와 오브젝트 그룹 식별자 간의 관계를 조사하기 위해 gJVM 클러스터 내의 모든 gJVM 노드가 액세스할 수 있는 JVM 단일 오브젝트에 의해 제공될 수 있다. 도 3a에 도시된 예에서, gJVM 노드(300)는 오브젝트 그룹 등록부(320)에 의해 제공된 국소 정보를 포함한다. 예를 들어서 gJVM 노드(300)는 오브젝트 그룹 등록부(320)에 대한 업데이트를 다른 gJVM 노드, 예컨대 원시 gJVM 노드로부터 검색 및 수신하고, 이것에 의해 gJVM 노드(300)가 신속하고 효율적인 국소 조사를 수행할 수 있게 한다.
오브젝트 및 그 오브젝트 그룹은 필요할 때 국소 gJVM 노드의 힙(heap) 내에서 생성된다. 오브젝트는 오브젝트 레퍼런스가 스레드 범위를 벗어날 때까지 국소적으로 참조되고, 그 지점에서 오브젝트는 원격 오브젝트로서 명료하게 액세스되며, 이것에 의해 다른 머신에서 잠재적으로 동작하는 다른 스레드가 그 오브젝트를 액세스하게 한다. 일 실시예에서, 오브젝트 그룹은 gJVM 노드의 스레드 국소 힙에서 생성되는 것이 바람직하고, 대안적으로 오브젝트 그룹은 클러스터화 가상 머신 내의 다른 유형의 힙에서 생성될 수 있다. 스레드가 구성되었을 때 새로운 스레드에는 각각 새로운 스레드 국소 힙이 제공되고, 스레드는 필요할 때 추가적인 스레드 국소 힙을 획득할 수 있다. 스레드 국소 힙은 대부분의 오브젝트의 대부분의 액 세스가 특정 스레드에 대해 국소적이고, 오브젝트들이 쉽게 불필요 정보 정리될 수 있으며, 힙 잠금이 오브젝트 할당을 만족시키는데 요구되지 않기 때문에 높은 성능을 제공한다. 스레드 국소 힙은 특정 스레드가 액세스되는 구성가능한 사이즈의 오브젝트로서 전형적으로 구현된다. 전형적인 작은 오브젝트 할당을 만족시키기 위해 스레드 국소 힙은 필요로 하는 공간을 완화시키기 위해 일단부에서 분할된다. 만일 스레드 국소 힙이 할당을 만족시킬 만큼 충분히 크지 않으면, 스레드 국소 힙의 나머지는 버려지고 새로운 스레드 국소 힙으로 교체된다. 큰 오브젝트 할당은 스레드 국소 힙 메카니즘을 우회하고 가상 머신 내의 더 큰 힙으로부터 직접 만족될 수 있다. 도 3a는 gJVM 노드(300) 내의 단일 스레드(328)를 도시한 것이고, 스레드(328)는 2개의 스레드 국소 힙(330, 332)과 제휴되며, 이것에 의해 스레드가 다중 스레드 국소 힙과 1 대 다수(one-to-many)의 제휴를 가짐을 나타낸다. 스레드 국소 힙(330)은 오브젝트 그룹(334)과 오브젝트 그룹(336)을 포함하는 것으로 도시되어 있고, 상기 오브젝트 그룹(334, 336)들은 도시되지 않은 오브젝트들을 포함하며, 스레드 국소 힙(332)은 오브젝트 그룹(338)을 포함하는 것으로 도시되어 있고, 오브젝트 그룹 자체는 오브젝트(340-342)를 포함한다.
스레드를 관리하기 위한 정보는 오브젝트 내에 저장되고, 이 오브젝트는 또한 오브젝트 그룹 내에 저장된다. 유사하게, 스레드의 스택 프레임은 오브젝트로서 관리된다. 도 3a는 상기 정보를 관리하기 위한 스레드 관리 오브젝트(344)와 스택 프레임 오브젝트(346)를 도시하고 있다. 이 방식으로, 스레드에 관한 인스턴스 데이터는 오브젝트 그룹 내에 저장된다. 만일 스레드가 하나의 gJVM 노드로부터 다른 gJVM 노드로 이동되면, 인스턴스 데이터는 오브젝트 그룹을 이동시키는 처리의 일부로서 이동된다. 스레드 코드 자체는 오브젝트 그룹 내에 저장될 필요가 없다. 즉 코드가 메모리에 존재하지 않으면 코드가 필요할 때 클래스 파일로부터 코드를 불러올 수 있다.
새로운 오브젝트 그룹은 새로운 스레드가 구성될 때 또한 생성된다. 즉, 오브젝트 그룹과 새로 구성된 스레드 사이에 제휴가 생성되고, 상기 새로 구성된 스레드는 독특한 스레드 식별자를 갖는다. 스레드 식별자는 클러스터 전체에 걸쳐서 유일한 것이고, 각각의 클러스터화 가상 머신은 독특한 가상 머신 식별자를 가지며, 이것에 의해 독특한 스레드 식별자가 주어진 가상 머신 내에서 독특한 스레드 식별자와 독특한 가상 머신 식별자의 조합에 바람직하게 기초할 수 있게 한다.
추가적인 오브젝트 그룹은 필요에 따라 스레드에 부가될 수 있다. 도 3a에 도시한 예에서, 국소 오브젝트 그룹 관리 테이블(350)은 gJVM 노드(300) 내에서 관리되는 오브젝트 그룹, 즉 gJVM 노드(300)에 저장된 오브젝트 그룹의 리스트가 gJVM 노드(300) 내의 오브젝트 그룹을 관리하기 위한 다른 제휴 정보와 함께 내포되어 있다. 예를 들어서, 특정 오브젝트 그룹은 테이블의 행(row)에 표시되는데, 이 오브젝트 그룹은 오브젝트 그룹 ID(352)와 특정 오브젝트 그룹을 내포하는 스레드 국소 힙에 대한 포인터(354) 및 오브젝트 그룹과 관련된 스레드 식별자(356)를 포함한다. 즉, 만일 오브젝트 그룹이 클러스터화 가상 머신 내 다른 유형의 힙에서 대신 생성되면, 다른 정보가 국소 오브젝트 그룹 관리 테이블(350)에서 관리될 것이다.
전술한 바와 같이, 오브젝트 그룹은 적어도 하나의 오브젝트라도 갖고 있는 한 계속하여 존재할 것이다. 즉, 오브젝트를 생성할 책임이 있는 스레드가 종료되는 경우에도 오브젝트는 아직 그 존재를 요구하는 다른 스레드에 의해 참조될 수 있고, 이것에 의해 오브젝트가 위치되어 있는 오브젝트 그룹이 계속하여 존재할 것을 요구한다. 대안적으로, 마스터 글로벌 오브젝트 그룹(360)은 gJVM 노드 내에서 유지될 수 있다. 스레드가 종료된 때, 다른 스레드로부터 아직 참조가능한 그 제휴된 오브젝트 그룹(또는 제휴된 오브젝트 그룹들)에 포함된 모든 나머지 오브젝트, 예를 들면 오브젝트(362-368)들은 마스터 글로벌 오브젝트 그룹으로 이동된다. 마스터 글로벌 오브젝트 그룹은 근원 스레드(originating thread)가 종료된 때에도 gJVM 클러스터 내에서 총체적으로 참조되는 모든 오브젝트들을 포함하고, 이것에 의해 더 적은 오브젝트 그룹의 관리가 가능해진다.
가상 머신 클러스터/그리드 내에서의 오브젝트 그룹 이동
이제 도 3b-3d를 참조하면, 본 발명의 실시예에 따라 클러스터화 가상 머신들 사이에서 오브젝트 그룹들의 이동을 나타내는 한 세트의 블록도가 도시되어 있다. 도 3b-3d는 일정 시간 동안의 가상 머신 클러스터 내의 한 세트의 gJVM 노드들을 묘사하는데, 도 3b는 도 3c에 묘사된 시점보다 더 이른 시점을 묘사하고, 도 3c는 도 3d에 묘사된 시점보다 더 이른 시점을 묘사한다. 도 3a에 도시된 것과 유사한 방식으로, 도 3b는 오브젝트 그룹(334, 336, 338)을 포함하는 gJVM 노드(300)를 보여주고 있다. 추가적으로, gJVM 노드(370)는 오브젝트 그룹(372)을 포함하고, gJVM 노드(380)는 오브젝트 그룹(382)을 포함한다.
전술한 바와 같이, 오브젝트 그룹은 초기에 오브젝트 그룹과 제휴된 스레드가 종료된 경우에도 오브젝트 그룹이 적어도 하나의 오브젝트를 갖고 있는 한 계속하여 존재할 것이다. 도 3c는 도 3b와 동일한 gJVM 노드 및 동일한 오브젝트 그룹을 묘사한다. 그러나, 도 3c는 오브젝트 그룹(338)이 gJVM 노드(300)로부터 gJVM 노드(380)로 이동한다는 점에서 도 3b와 상이하다. 즉, 예를 들면, 이동은 도 3a에 도시한 스레드(328)와 같은 오브젝트 그룹(338)과 제휴된 스레드의 종료에 응답하여 발생될 수 있다.
역시 전술한 바와 같이, 오브젝트 그룹은 오브젝트 그룹을 구성한 클러스터화 가상 머신이 정지되거나 종료된 경우에도 오브젝트 그룹이 적어도 하나의 오브젝트를 갖고 있는 한 계속하여 존재할 것이다. 도 3d는 도 3c와 동일한 gJVM 노드 및 오브젝트 그룹의 일부를 가진 더 늦은 시점을 묘사한다. 그러나, 도 3d는 오브젝트 그룹(334, 336)이 gJVM 노드(300)로부터 gJVM 노드(370)로 이동한다는 점에서 도 3c와 상이하다. 예를 들면, 이동은 오브젝트 그룹(334, 336)을 지원한 gJVM 노드(300)의 종료에 응답하여 발생될 수 있다. 즉, 주어진 gJVM이 폐쇄될 때, 주어진 gJVM의 힙 및/또는 오브젝트 그룹은 다른 머신으로 이동될 수 있고, 전체 가상 머신 클러스터를 통한 gJVM 노드에서의 정보는 오브젝트 그룹의 위치에 의해 갱신될 것이다.
불필요 정보 정리는 가상 머신 클러스터 내에서 또한 수행될 수 있다. 전형적인 자바(Java®) 가상 머신에서, 불필요 정보 정리는 표시 및 청소(mark-and- sweep) 방법으로 수행된다. 표시 및 청소 방법에서, 불필요 정보 정리는 애플리케이션에 의해 명백하게 또는 애플리케이션이 오브젝트를 할당하려고 시도할 때에 자동으로 호출되지만, 메모리 활용은 오브젝트 할당 동작이 곤란하거나 불가능하게 만든다. 가상 머신은 모든 오브젝트를 통하여 지나가고, 모든 오브젝트를 표시하며, 횡단 가능한 모든 오브젝트를 다시 표시하기 위해 모든 스레드 및 스태틱(static)(글로벌 데이터)을 청소한다. 가상 머신은 모든 스레드를 일시 중단하고 각 스레드의 스택 프레임의 데이터 구조를 조사하며, 이것에 의해 가능하다면 애플리케이션 단위로 애플리케이션상의 모든 스레드에 의해 참조가능한 모든 오브젝트를 표시한다. 참조가능한 것으로 표시되지 않은 모든 오브젝트들은 그 다음에 파괴되거나 제거되며, 이로써 오브젝트를 할당하기 위해 가상 머신의 메모리를 자유롭게 만든다.
대다수의 오브젝트들은 단지 하나의 스레드에 의해 액세스되는 전형적인 오브젝트이다. 본 발명의 가상 머신 클러스터에 의하면 오브젝트는 원격으로 참조될 수 있다. 즉, 오브젝트가 원격으로 참조될 때, 오브젝트는 그렇게 표시된다. 일 실시예에서, gJVM 노드는 낮은 우선순위로 동작하며 원격 불필요 정보 정리 처리를 수행하기 위해 시스템을 주기적으로 횡단하는 별도의 데먼(daemon) 스레드를 가질 수 있다. 각각의 오브젝트는 원격 불필요 정보 정리 데먼에 의한 표시 및 청소 방법에서 사용되는 원격 불필요 정보 정리 비트를 가질 수 있다. 만일 원격으로 참조되는 오브젝트가 그 오브젝트가 구성된 gJVM 노드 내에서 더 이상 참조되지 않으면, 원격 불필요 정보 정리 데먼 스레드는 원격 오브젝트 레퍼런스가 아직 오브젝 트의 존재를 요구하는지를 결정한다. 데먼 스레드는 국소 gJVM 내에서 자유롭게 될 준비가 된 특정 오브젝트가 아직 원격 gJVM에 의해 참조되는지를 문의하기 위해 요구 메시지를 다른 gJVM 노드에 보낸다. 이 요구들은 레퍼런스의 그룹들이 효과적으로 체크될 수 있도록 다중 오브젝트용으로 배치(batch)될 수 있다. 특정 오브젝트가 아직 원격으로 참조되고 있다고 원격 gJVM 노드가 보고하지 않으면, 국소 gJVM 노드에서의 원격 불필요 정보 정리 데먼은 오브젝트 제거를 시작할 수 있다. 예를 들어서, 오브젝트가 원격으로 참조되는/참조되었던 임의의 표시를 원격 불필요 정보 정리 데먼이 제거할 것이고, 이로써 오브젝트가 통상의/국소 불필요 정보 정리 처리 중에 순차적으로 제거될 수 있다.
원시 그리드 인에이블 가상 머신의 초기화
이제 도 4를 참조하면, 본 발명의 일 실시예에 따라 원시 gJVM을 초기화하는 처리의 흐름도가 도시되어 있다. 이 처리는 원시 클러스터화 가상 머신 노드가 초기화될 때(단계 402) 예를 들면 전술한 인스턴스 생성 명령을 이용해서 시작한다. gJVM 클러스터명은 애플리케이션이 이용가능 gJVM 클러스터를 조사하고 다른 gJVM 클러스터와의 명칭 충돌을 방지하는 방식으로 등록된다(단계 404). 원시 gJVM 노드는 새로 시작된 gJVM 클러스터에서 사용될 임의의 환경 파라메터 또는 콘텍스트 파라메터를 획득하고(단계 406), gJVM 클러스터 내의 모든 노드들이 이용할 수 있는 방식으로 상기 정보를 저장한다. 원시 gJVM 노드 내 오브젝트 그룹 등록부의 원시 카피가 초기화되고(단계 408), 이것은 그 다음에 도 3a에 도시한 오브젝트 그룹 등록부(320)와 같은 비원시 gJVM 노드에 대한 카피로서 유포될 수 있다. 원시 gJVM 노드 내 gJVM 등록부의 원시 카피가 또한 초기화되고(단계 410), 이것은 그 다음에 도 3a에 도시한 gJVM 등록부(320)와 같은 비원시 gJVM 노드에 대한 카피로서 또한 유포될 수 있으며, 이로써 처리가 종료된다.
그리드 인에이블 가상 머신 노드의 독특한 ID 할당 또는 등록
이제 도 5a를 참조하면, 초기화된 비원시 gJVM에 독특한 gJVM 식별자를 할당하기 위한 원시 gJVM에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 독특한 gJVM 식별자에 대한 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 502). 원시 gJVM은 독특한 gJVM 식별자를 발생하고(단계 504), 새로 발생된 gJVM 식별자를 gJVM 등록부에 추가한다(단계 506). 원시 gJVM은 gJVM 등록부의 비원시 gJVM의 동작 상태를 개시 상태값으로 설정하고(단계 508), 그 다음에 원시 gJVM은 새로 발생된 독특한 gJVM 식별자를 포함한 메시지를 송신함으로써 요구 비원시 gJVM에 응답한다(단계 510). 원시 gJVM은 그 다음에 갱신된 gJVM 등록부를 포함한 메시지를 모든 비원시 gJVM 노드에 방송하고(단계 512), 이로써 처리를 종료한다.
이제 도 5b를 참조하면, 초기화된 비원시 gJVM에 독특한 gJVM 식별자를 할당하기 위한 원시 gJVM에서의 다른 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 독특한 gJVM 식별자를 등록하게 하는 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 522). 비원시 gJVM 노드가 독특한 gJVM 식별자를 할당하기 위해 원시 gJVM 노드에 의존하는 도 5a와 대조적으로, 도 5b는 비원시 gJVM 노드가 그 자신의 독특한 gJVM 식별자를 할당하고 그 다음에 그 식별자를 원시 gJVM 노드 로 등록하는 예시적인 시스템을 도시하고 있다. 비원시 gJVM 노드는 그러한 목적의 알고리즘의 실행을 통하여 독특성을 보장하는 그 자신의 식별자를 발생할 수 있다. 예를 들면, 많은 장치들은 가끔 총체적인 독특한 식별자라고 부르는 판독가능하고 불변인 일련 번호를 포함하도록 제조된다. 즉, 분산형 gJVM 클러스터 내의 각 노드가 장치에서 동작하기 때문에, gJVM 노드는 독특한 gJVM 식별자를 생성하는 알고리즘을 사용할 수 있고, 상기 알고리즘은 장치의 총체적인 독특한 식별자를 입력으로서 수용한다.
원시 gJVM은 그 다음에 새로운 gJVM 식별자를 gJVM 등록부에 추가하거나 등록한다(단계 524). 원시 gJVM은 gJVM 등록부의 비원시 gJVM의 동작 상태를 개시 상태값으로 설정하고(단계 526), 그 다음에 원시 gJVM은 등록이 성공적인지 여부를 나타내는 상태값을 가진 응답 메시지를 송신함으로써 요구 비원시 gJVM에 응답한다(단계 528). 원시 gJVM은 그 다음에 갱신된 gJVM 등록부를 포함한 메시지를 모든 비원시 gJVM 노드에 방송하고(단계 530), 이로써 처리를 종료한다.
비원시 그리드 인에이블 가상 머신 노드에 대한 오브젝트 그룹 ID 할당
이제 도 6을 참조하면, 비원시 gJVM에 독특한 오브젝트 그룹 식별자를 할당하기 위한 원시 gJVM에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 독특한 오브젝트 그룹 식별자에 대한 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 602). 원시 gJVM은 독특한 오브젝트 그룹 식별자를 발생하고(단계 604), 새로 발생된 오브젝트 그룹 식별자를 오브젝트 그룹 등록부에 추가한다(단계 606). 원시 gJVM은 오브젝트 그룹 등록부의 오브젝트 그룹의 이주 상태를 개 시 상태값으로 설정하고(단계 608), 그 다음에 원시 gJVM은 새로 발생된 독특한 오브젝트 그룹 식별자를 포함한 메시지를 송신함으로써 요구 비원시 gJVM에 응답한다(단계 610). 원시 gJVM은 그 다음에 갱신된 오브젝트 그룹 등록부를 포함한 메시지를 모든 비원시 gJVM 노드에 방송하고(단계 612), 이로써 처리를 종료한다.
대안적으로, 비원시 gJVM 노드가 독특한 오브젝트 그룹 식별자를 할당하기 위해 원시 gJVM 노드에 의존하는 도 6과 대조적으로, 비원시 gJVM 노드가 그 자신의 독특한 오브젝트 그룹 식별자를 할당하고 그 다음에 상기 새로 발생된 오브젝트 그룹 식별자를 원시 gJVM 노드로 등록하는 다른 처리를 사용할 수 있다. 비원시 gJVM 노드는 그러한 목적의 알고리즘의 실행을 통하여, 예를 들면 도 5b와 관련하여 위에서 설명한 것과 유사한 방식으로 독특성을 보장하는 그 자신의 오브젝트 그룹 식별자를 발생할 수 있다.
클러스터 특정 정보를 비원시 그리드 인에이블 가상 머신 노드에 제공함
이제 도 7을 참조하면, 비원시 gJVM에 gJVM 클러스터에 관한 정보를 제공하기 위한 원시 gJVM에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 현재 gJVM 등록부, 현재 오브젝트 그룹 등록부, 또는 클러스터의 환경/콘텍스트 파라메터 등의 클러스터 특정 정보에 대한 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 702). 원시 gJVM은 요구된 정보를 포함하는 메시지를 송신함으로써 요구 비원시 gJVM에 응답하고(단계 704), 이로써 처리를 종료한다. 이러한 방식으로, 비원시 gJVM은 원시 gJVM 노드로부터 정보를 획득할 수 있고, 본 발명의 구현은 원시 gJVM 노드가 비원시 gJVM 노드 대신에 클러스터 특정 정보를 관리하는 gJVM 클러스터를 갖는 것으로 가정한다.
비원시 그리드 인에이블 가상 머신 노드의 동작 상태 변경
이제 도 8을 참조하면, 비원시 gJVM의 동작 상태를 변경하기 위한 원시 gJVM에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 그 동작 상태를 변경하기 위한 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 802). 원시 gJVM은 gJVM 등록부를 요구된 동작 상태로 갱신하고(단계 804), 승인 메시지로 요구 비원시 gJVM에 응답한다(단계 806). 원시 gJVM은 그 다음에 갱신된 gJVM 등록부를 포함한 메시지를 모든 비원시 gJVM 노드에 방송하고(단계 808), 이로써 처리를 종료한다.
비원시 그리드 인에이블 가상 머신 노드에 의한 오브젝트 그룹 이주 상태 변경
이제 도 9를 참조하면, 오브젝트 그룹의 이주 상태를 변경하기 위한 원시 gJVM에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 원시 gJVM이 오브젝트 그룹의 이주 상태를 변경하기 위한 요구를 비원시 gJVM으로부터 수신한 때 시작된다(단계 902). 원시 gJVM은 오브젝트 그룹 등록부를 요구된 이주 상태로 갱신하고(단계 904), 승인 메시지로 요구 비원시 gJVM에 응답한다(단계 906). 원시 gJVM은 그 다음에 갱신된 오브젝트 그룹 등록부를 포함한 메시지를 모든 비원시 gJVM 노드에 방송하고(단계 908), 이로써 처리를 종료한다.
비원시 그리드 인에이블 가상 머신 노드의 초기화
이제 도 10을 참조하면, 본 발명의 실시예에 따라서 비원시 gJVM 노드를 초 기화하는 처리를 나타내는 흐름도가 도시되어 있다. 처리는 비원시 클러스터화 가상 머신 노드가 예를 들면 전술한 인스턴스 생성 명령을 사용함으로써 초기화될 때 시작된다(단계 1002). gJVM 클러스터명은 예를 들면 인스턴스 생성 명령으로부터 획득되고(단계 1004), 조사 동작은 예컨대 식별된 gJVM 클러스터의 원시 gJVM 노드와의 통신을 개시하기 위한 네트워크 파라메터를 총체적으로 이용가능한 데이터베이스로부터 획득하기 위하여(단계 1008) gJVM 클러스터명을 이용하여 수행된다(단계 1006).
비원시 gJVM 노드는 예를 들면 도 5a 또는 도 5b에 도시된 것처럼 원시 gJVM 노드로부터 독특한 gJVM 식별자를 요구 및 수신한다(단계 1010). 비원시 gJVM 노드는 예를 들면 도 7에 도시된 바와 같이 gJVM 클러스터가 사용하는 환경 파라메터 또는 콘텍스트 파라메터 등의 임의의 클러스터 와이드 정보를 획득한다(단계 1012). 비원시 gJVM 노드는 예를 들면 도 7에 도시된 것처럼 원시 gJVM 노드로부터 gJVM 등록부(단계 1014) 및 오브젝트 그룹 등록부(단계 1016)를 또한 요구 및 수신한다. 비록 단계 1010-1016이 동기 방식으로 구현되는 것처럼 도시되어 있지만, 이 단계들은 비동기적으로 다양한 방식으로 수행될 수 있다. 비원시 gJVM 노드가 그 초기화를 완료한 후, 비원시 gJVM 노드는 이 노드가 개시 상태에 있음을 표시하는 값으로부터 상기 노드가 동작 상태에 있음을 표시하는 값으로 그 동작 상태를 변경하도록 하는 요구를 원시 gJVM 노드에 보낸다(단계 1018). 요구가 성공적으로 실행되었다고 가정하면, 비원시 gJVM 노드는 원시 gJVM 노드로부터 승인을 수신하고(단계 1020), 이로써 처리가 종료한다.
도 10이 비원시 gJVM 노드에서의 초기화 처리를 나타내고 있지만, 도 5a 내지 도 9는 전체적으로 gJVM 클러스터 대신에 정보를 중앙에서 관리하도록 비원시 gJVM 노드가 요청하는 대로 원시 gJVM 노드가 작업을 수행하는 처리를 나타낸다. 나머지 도면들은 비원시 gJVM 노드가 gJVM 클러스터 내에서 오브젝트 그룹 및 스레드를 관리하는 처리를 묘사한다. 다시 말해서, 나머지 도면들은 비원시 gJVM 노드의 시각에서의 처리를 나타내고 있다. 그러나, 원시 gJVM 노드는 그 오브젝트 그룹 및 스레드의 관리면에서 유사한 처리를 실행한다는 것을 알아야 한다. 정보가 원시 gJVM 노드에 전송되거나 gJVM 노드로부터 수신되는 처리 중의 한 단계를 도면들이 나타내는 순간에, 원시 gJVM 노드는 원시 gJVM 노드가 그 단계를 그 자신, 즉 원시 gJVM 노드와 통합할 필요없이, 정보를 gJVM 등록부 또는 오브젝트 그룹 등록부와 같은 클러스터 지정 테이블 또는 데이터베이스에 직접 위치시키는 것을 제외하고 유사한 단계를 실행한다는 것을 이해하여야 한다.
그리드 인에이블 가상 머신 노드에서의 스레드 구성
이제 도 11을 참조하면, 스레드를 구성하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 비록 국소 gJVM이 가상 머신에서 애플리케이션의 실행을 제어하는 동안 그 자신의 창시물에서 유사한 처리를 수행할 수 있지만, 클러스터화 가상 머신의 제어하에 실행 중인 애플리케이션에 의한 적당한 API 호출을 통하여 국소 gJVM이 스레드를 구성하게 하는 요구를 수신한 때 시작된다(단계 1102). 일부 경우에 비원시 gJVM으로 가정될 수 있는 국소 gJVM 노드는 독특한 오브젝트 그룹 식별자에 대한 요구를 원시 gJVM에 보내고, 그 다음에 그 요 구를 수신한다(단계 1104). 국소 gJVM은 스레드를 구성하는데(단계 1106), 이것은 각종 스레드 관리 오브젝트의 생성 및 각종 스레드 관리 테이블의 갱신을 수반할 수 있다. 독특한 스레드 식별자가 발생되어 새로 구성된 스레드에 지정된다(단계 1108). 그 다음에, 국소 gJVM은 스레드 국소 힙을 할당하고(단계 1110), 구현예에 따라서 스레드 관련 오브젝트를 저장하는 것이 바람직한 스레드 국소 힙 내의 오브젝트 그룹을 생성 또는 구분한다(단계 1112). 새로 생성된 오브젝트 그룹 식별자는 예컨대 적당한 관리 테이블을 갱신함으로써 새로 구성된 스레드와 제휴된다(단계 1114).
그 다음에, 국소 gJVM은 새로운 오브젝트 그룹 식별자가 요구된 때 원시 gJVM에 의해 설정된 개시 상태를 표시하는 값으로부터 안정 상태를 표시하는 값으로 오브젝트 그룹의 이주 상태를 변경하게 하는 요구를 원시 gJVM 노드에 보낸다(단계 1116). 그 다음에, 국소 gJVM은 이주 상태 변경 승인을 원시 gJVM으로부터 수신한다(단계 1118). 그 다음에, 국소 gJVM은 스레드 식별자 및 기타 스레드 관련 정보를 포함할 수 있는 스레드 구성을 위한 응답을 요구 애플리케이션에 되돌려 보내고(단계 1120), 이로써 처리를 종료한다.
그리드 인에이블 가상 머신 노드에서의 스레드 파괴
이제 도 12를 참조하면, 스레드를 파괴하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는, 비록 국소 gJVM이 예컨대 각종 종료 조건에 기인하여 그 자신의 창시물에서 스레드를 파괴하도록 결정할 때 유사한 처리가 발생할 수 있기는 하지만, 예를 들면, 클러스터화 가상 머신의 제어하에 실 행중인 애플리케이션에 의한 적당한 API 호출을 통하여 국소 gJVM이 스레드를 파괴하게 하는 요구를 수신한 때 시작한다(단계 1202).
종료 스레드와 제휴된 오브젝트 그룹이 그 자신 내의 오브젝트에 대한 외부/원격/대외(foreign) 참조를 갖는다고 가정하면, 오브젝트 그룹은 최초에 오브젝트 그룹을 생성하는 원인이 되었던 스레드가 이제 종료되거나 파괴된다 하더라도 보존될 필요가 있다. 그러므로, 국소 gJVM은 종료 스레드의 스레드 식별자를 각각의 제휴된 오브젝트 그룹으로부터 적당한 방법으로 분리한다(단계 1204). 이 처리는 각종 스레드 관리 테이블 및 오브젝트 그룹 관리 테이블의 갱신을 포함할 수 있다(단계 1206). 만일 필요하다면, 국소 gJVM에서의 메모리 할당 방법에 따라서, 오브젝트 그룹이 스레드 국소 힙으로부터 국소 gJVM의 일반 힙으로 이동할 수 있다(단계 1208). 이 경우는 가끔 스레드의 종료가 그 자신의 거의 모든 오브젝트를 불필요 정보 정리되게 하는 경우이다. 즉, 다른 실시예에서, 원격으로 참조가능하기 때문에 잔류하는 오브젝트들은 마스터 글로벌 오브젝트 그룹으로 이동될 수 있다.
그 다음에, 스레드는 예를 들면 스레드를 제어하기 위해 사용된 스레드 관련 관리 오브젝트를 파괴함으로써 파괴된다(단계 1210). 그 다음에, 스레드 파괴 동작의 응답이 요구 애플리케이션에 되돌려 보내지고(단계 1212), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신 노드에서의 오브젝트 할당
이제 도 13을 참조하면, 오브젝트를 구성하는 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는, 비록 국소 gJVM이 그 자신의 창 시물에서 오브젝트를 생성하기로 결정한 때 유사한 처리가 발생할 수 있기는 하지만, 예를 들면 클러스터화 가상 머신의 제어하에 실행중인 애플리케이션에 의한 적당한 API 호출을 통해 국소 gJVM 노드가 오브젝트 구성 요구를 수신한 때 시작한다(단계 1302). 요구 스레드의 스레드 식별자가 결정되고(단계 1304), 요구 스레드와 제휴된 오브젝트 그룹의 오브젝트 그룹 정보가 검색된다(단계 1306). 그 다음에, 국소 gJVM은 오브젝트를 요구 스레드의 오브젝트 그룹 중 하나에 할당하고(단계 1308), 새로 할당된 오브젝트의 오브젝트 식별자가 발생되어 그 오브젝트에 지정된다(단계 1310). 새로 생성된 오브젝트의 오브젝트 레퍼런스/핸들이 생성되는데(단계 1312), 이것은, 오브젝트 레퍼런스가 구현되는 방식에 따라서, 오브젝트 그룹 식별자 및 오브젝트 식별자를 포함할 수 있다. 오브젝트 레퍼런스/핸들은 그 다음에 요구 스레드에 되돌려 보내지고(단계 1314), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신 노드에서의 오브젝트 참조
이제 도 14를 참조하면, 오브젝트에 대한 액세스를 취급하기 위한 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 국소 gJVM이 오브젝트 핸들을 통한 오브젝트의 액세스 또는 참조의 시도를 차단하면서 시작된다(단계 1402). 국소 gJVM은 오브젝트 핸들로부터 오브젝트 그룹 식별자를 검색하고(단계 1404), 식별된 오브젝트 그룹이 예를 들면 오브젝트 그룹 관리 테이블을 참조함으로써 국소적으로 관리되는지 또는 원격으로 관리되는지에 대하여 결정한다(단계 1406). 만일 오브젝트가 국소적으로 저장되면, 국소 gJVM은 적당한 스레드 국소 힙에 대한 포인터를 획득하고(단계 1408), 오브젝트 식별자를 이용하여 스레드 국 소 힙 내의 오브젝트에 액세스한다(단계 1410).
만일 오브젝트가 원격으로 저장되면, 국소 gJVM은 오브젝트가 위치된 오브젝트 그룹의 원격 gJVM 노드의 식별자를 획득한다(단계 1412). 원격 gJVM의 IP 주소 및 포트 ID는 예를 들면 gJVM 등록부의 국소 카피로부터 검색된다(단계 1414). 그 다음에, 국소 gJVM은 오브젝트 액세스 요구를 원격 gJVM에 보내고(단계 1416), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신 노드로부터 오브젝트 그룹의 이주
이제 도 15를 참조하면, 오브젝트 그룹을 원격 클러스터화 가상 머신에 이주시키기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 국소 gJVM 노드가 오브젝트 그룹을 국소 gJVM 노드로부터 원격 gJVM 노드로 이주시킬 준비가 되었을 때 시작하고(단계 1502), 이 처리는 오브젝트 그룹을 이주시키기 위한 요구 메시지를 원격 gJVM에 전송하는 것을 수반한다. 이러한 오브젝트 그룹을 이주시키기 위한 준비는 각종 조건의 결과로서 발생할 수 있고, 이것에 대해서는 뒤에서 더 자세하게 설명하겠다. 예를 들어서, 도 19와 관련하여 설명하는 바와 같이, gJVM 노드를 정지하기 전에, gJVM 노드 내의 임의의 오브젝트 그룹은 gJVM 클러스터와 함께 다른 gJVM 노드로 이주될 것이다.
국소 gJVM은 이주 오브젝트 그룹의 이주 상태를 안정 상태에서 이주 상태로 변경하기 위한 요구를 원시 gJVM에 보내고(단계 1504), 그 후, 국소 gJVM은 원시 gJVM으로부터 이주 상태 변경 승인을 수신한다(단계 1506). 그 다음에, 국소 gJVM은 이주하는 오브젝트 그룹 내의 각 오브젝트를 평탄화 또는 직렬화하고(단계 1508), 평탄화 또는 직렬화 오브젝트를 오브젝트가 오브젝트 그룹과 제휴된 채 잔류하도록 몇가지 방법으로 국소 gJVM으로부터 원격 gJVM으로 밀어내며(단계 1510), 그 후, 국소 gJVM은 원격 gJVM으로부터 승인을 수신한다(단계 1512). 그 다음에, 국소 gJVM은 지금 막 이동한 오브젝트 그룹의 국소 gJVM 내의 오브젝트 그룹 및/또는 힙을 파괴하고(단계 1514), 오브젝트 그룹이 이제 다른 gJVM 노드 내에 위치되어 있기 때문에 국소 오브젝트 그룹 테이블내의 오브젝트 그룹 엔트리를 국소 gJVM 노드 내에서 소거 또는 갱신될 필요가 있는 임의의 다른 테이블 또는 데이터베이스 엔트리와 함께 소거 또는 갱신하며(단계 1516), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신으로 오브젝트 그룹의 이주
이제 도 16을 참조하면, 원격 클러스터화 가상 머신으로부터 오브젝트 그룹의 이주를 승인하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 도 16에 도시한 처리는 도 15에 도시한 처리의 상보적인 것으로 보아야 한다. 즉 도 15의 국소 gJVM과 원격 gJVM은 각각 도 16에서 그 임무를 반대로 하는 원격 gJVM 및 국소 gJVM이다.
처리는 국소 gJVM이 원격 gJVM으로부터 국소 gJVM으로 오브젝트 그룹을 이주시키는 요구를 수신한 때 시작하고(단계 1602), 그 후, 국소 gJVM은 스레드 국소 힙 또는 다른 적당한 유형의 힙을 할당하며(단계 1604), 오브젝트 그룹의 평탄화 또는 직렬화 오브젝트를 원격 gJVM으로부터 수신한다(단계 1606). 국소 gJVM은 오브젝트를 국소 gJVM의 선택된 위치로 읽어넣거나(read) 또는 팽창(inflate)시키고(단계 1608), 만일 필요하다면, 예컨대 스레드가 오브젝트 그룹과 함께 이주했다면, 수신된 오브젝트 그룹을 스레드와 제휴시킨다(단계 1610). 그 다음에, 국소 gJVM은 국소 오브젝트 그룹 테이블에서 오브젝트 그룹 엔트리를 생성(단계 1612)하는 것과 같은 새로 수신된 오브젝트 그룹을 관리하기 위한 적당한 관리 작업을 수행한다. 그 다음에, 국소 gJVM은 이주 오브젝트 그룹의 이주 상태를 이주 상태로부터 안정 상태로 변경하기 위한 요구를 원시 gJVM에 보내고(단계 1614), 그 후 국소 gJVM은 원시 gJVM으로부터 이주 상태 변경 승인을 수신한다(단계 1616). 그 다음에, 국소 gJVM은 오브젝트 그룹의 이주 완료를 표시하는 승인 메시지를 원격 gJVM에 보내고(단계 1618), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신으로부터 스레드 이주
이제 도 17을 참조하면, 스레드를 원격 클러스터화 가상 머신에 이주시키기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 국소 gJVM 노드가 스레드를 국소 gJVM 노드로부터 원격 gJVM 노드로 이주시킬 준비가 되었을 때 시작하고(단계 1702), 이 처리는 스레드를 이주시키기 위한 요구 메시지를 원격 gJVM에 전송하는 것을 수반한다. 이러한 스레드를 이주시키기 위한 준비는 각종 조건의 결과로서 발생할 수 있고, 이것에 대해서는 뒤에서 더 자세하게 설명하겠다. 국소 gJVM은 스레드 관리 정보를 국소 gJVM으로부터 원격 gJVM으로 밀어낸다(단계 1704). 스레드 관리 정보는 국소 gJVM 노드 내의 국소 스레드 관리 테이블의 정보를 포함할 수 있다. 그 후, 국소 gJVM은 원격 gJVM으로부터 승인을 수신한다(단계 1706). 그 다음에, 국소 gJVM은 스레드가 다른 gJVM 노드로 이동하였다는 사실을 반영하기 위해 필요할 때 국소 스레드 관리 테이블을 갱신하며( 단계 1708), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신으로 스레드의 이주
이제 도 18을 참조하면, 원격 클러스터화 가상 머신으로부터 스레드의 이주를 승인하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 도 18에 도시한 처리는 도 17에 도시한 처리의 상보적인 것으로 보아야 한다. 즉, 도 17의 국소 gJVM과 원격 gJVM은 각각 도 18에서 그 임무를 반대로 하는 원격 gJVM 및 국소 gJVM이다.
처리는 국소 gJVM이 원격 gJVM으로부터 국소 gJVM으로 스레드를 이주시키는 요구를 수신한 때 시작하고(단계 1802), 그 후, 국소 gJVM은 스레드용의 스레드 관리 정보를 원격 gJVM으로부터 수신한다(단계 1804). 그 다음에, 국소 gJVM은 국소 스레드 관리 테이블을 갱신(단계 1806)하는 것과 같은 새로 수신된 스레드를 관리하기 위한 적당한 관리 작업을 수행한다. 그 다음에, 국소 gJVM은 스레드의 이주 완료를 표시하는 승인 메시지를 원격 gJVM에 보내고(단계 1808), 이로써 처리가 종료된다.
그리드 인에이블 가상 머신의 폐쇄
이제 도 19를 참조하면, 클러스터화 가상 머신에서 폐쇄 동작을 수행하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 국소 gJVM이 폐쇄 동작을 수행할 필요가 있음을 결정(단계 1902)하는 것으로부터 시작한다. 폐쇄 동작은 각종 이유 때문에 자체 종료하기로 국소 gJVM 노드에서 행한 결정의 결과일 수 있다. 대안적으로 gJVM 노드를 폐쇄하는 결정은 원시 gJVM 노드에 의해, 관리 유틸리티에 의해, 관리 명령에 의해, 또는 몇가지 다른 메카니즘에 의해 제어될 수 있다. 국소 gJVM 노드는 국소 gJVM 노드의 동작 상태를 동작중 상태를 표시하는 값으로부터 정지중 상태를 표시하는 값으로 변경하기 위한 요구를 원시 gJVM 노드에 보내고(단계 1904), 그 후, 국소 gJVM 노드는 원시 gJVM으로부터 승인 메시지를 수신한다(단계 1906). 그 다음에, 국소 gJVM은 자신의 모든 스레드를 다른 gJVM 노드로 이주시키기 시작하고(단계 1908), 또한 자신의 모든 오브젝트 그룹을 다른 gJVM 노드로 이주시킨다(단계 1910). 뒤에서 더 자세히 설명하는 바와 같이, gJVM 노드는 gJVM 클러스터 내의 다른 gJVM 노드의 성능 특성에 관한 정보에 따라 이주 동작을 수행할 수 있다. 그 다음에, 국소 gJVM 노드는 국소 gJVM 노드의 동작 상태를 정지중 상태를 표시하는 값으로부터 정지된 상태를 표시하는 값으로 변경하기 위한 요구를 원시 gJVM 노드로 보내고(단계 1912), 그 후, 국소 gJVM 노드는 원시 gJVM으로부터 승인 메시지를 수신하며(단계 1914), 이로써 처리가 종료한다.
전술한 바와 같이, 원시 노드는 시스템이 기동된 후에 원시 노드를 유지 목적으로 또는 다른 목적으로 폐쇄할 수 있게 하기 위해 비원시 노드에 그 책임을 위임 또는 이관할 수 있다. 만일 원시 노드가 폐쇄 처리를 시작하면, 원시 노드는 가능하다면 요구/응답 메카니즘을 통하여 새롭게 위임된 원시 노드로서 작용하도록 비원시 노드를 선택한다. 이러한 방식으로, 원시 노드는 원시 노드가 정지중 상태에 있는 시간 동안 비원시 노드에 의해 수행되지 않은 추가적인 동작을 수행한다. 위임 동작에 이어서, 새롭게 위임된 원시 노드는 가상 머신 클러스터용의 원시 노 드로서 그 새로운 아이덴티티를 가상 머신 클러스터 내의 다른 비원시 노드에 방송할 수 있고, 이것은 그에 따라서 자신의 정보 데이터 구조를 갱신할 것이다.
그리드 인에이블 가상 머신에 의한 성능 정보 수집
이제 도 20을 참조하면, 원격 클러스터화 가상 머신으로부터 부하 또는 성능 정보를 수집하기 위한 국소 클러스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 도 20에 도시한 처리는 모든 공지의 원격 gJVM 노드에 대하여 반복적 방식으로 동작을 수행한다. 그러므로, 처리는 반복 루프 내에서 아직 처리되지 않은 다음 원격 gJVM 노드에 대한 gJVM 등록부의 국소 카피로부터 국소 gJVM 노드가 정보를 획득하는 것으로부터 시작된다(단계 2002). 그 다음에, 국소 gJVM은 그 부하 정보에 관한 요구 메시지를 식별된 원격 gJVM 노드에 보내고(단계 2004), 그 후, 국소 gJVM은 원격 gJVM 노드에 대한 부하 정보를 포함하는 응답 메시지를 수신한다(단계 2006). 즉, 정보는 예를 들면 도 22와 관련하여 뒤에서 설명하는 처리를 이용하여 후속 분석을 위해 국소 테이블 또는 데이터베이스에 저장될 수 있다. 그 다음에, 국소 gJVM 노드는 국소 gJVM 등록부에 어떤 처리되지 않은 gJVM 노드가 있는지를 체크한다(단계 2008). 만일 있으면, 처리는 다른 원격 gJVM 노드를 처리하기 위해 단계 2002로 복귀하고, 만일 처리되지 않은 원격 gJVM 노드가 없으면 처리가 종료된다.
그리드 인에이블 가상 머신에 의한 성능 정보 수집
이제 도 21을 참조하면, 국소 클러스터화 가상 머신에서 현재 부하 또는 성능 정보에 대한 클러스터화 가상 머신으로부터의 요구에 응답하기 위한 국소 클러 스터화 가상 머신에서의 처리를 나타내는 흐름도가 도시되어 있다. 도 21에 도시한 처리는 도 20에 도시한 처리의 상보적인 것으로 보아야 한다. 즉, 도 20의 국소 gJVM 및 원격 gJVM은 각각 도 21에서 그 임무를 반대로 하는 원격 gJVM 및 국소 gJVM이다. 처리는 국소 gJVM이 국소 gJVM 및/또는 국소 장치에서 부하 정보에 대한 요구 메시지를 수신한 때 시작된다(단계 2102). 예를 들면, 부하 정보는 CPU 활용, 메모리 활용, 기타 하드웨어, 소프트웨어, 또는 국소 gJVM 노드가 동작하는 데이터 처리 장치의 연산 리소스 활용 정보, gJVM 내 또는 gJVM에 의해 제어되는 리소스에 대한 연산 리소스 활용 정보, 및 기타 정보를 포함할 수 있다. 그 다음에, 국소 gJVM은 요구된 부하 정보를 포함한 응답 메시지를 보내고(단계 2104), 이로써 처리를 종료한다.
그리드 인에이블 가상 머신 노드 간의 부하 균형잡기 동작
도 22를 참조하면, 부하 또는 성능 정보에 따라서 국소 클러스터화 가상 머신으로부터 원격 클러스터화 가상 머신으로 스레드 및/또는 오브젝트 그룹을 이주시키도록 결정하기 위한 국소 클러스터화 가상 메신에서의 처리를 나타내는 흐름도가 도시되어 있다. 처리는 국소 gJVM 노드가 부하 균형잡기(load balancing) 동작을 시작하도록 결정한 때 시작된다(단계 2202). 국소 gJVM 노드는, 만일 적당하다면, 그 자신의 부하 정보를 획득하거나 체크한다(단계 2204). 국소 gJVM은, 비록 다른 gJVM 노드로부터의 부하 정보가 부하 균형잡기 동작을 개시하는 결정이 이루어진 후에만 수집되겠지만, 예를 들면 도 20과 도 21을 참조하여 위에서 설명한 처리를 이용하여, gJVM 클러스터 내의 다른 gJVM 노드로부터 부하 정보를 또한 획득 한다(단계 2206).
부하 균형잡기 동작은 클러스터 내에서 각종 애플리케이션을 실행함으로써 야기된 워크로드가 gJVM 클러스터 전체에 걸쳐 분산되는 것을 확실히 하기 위해 수행될 수 있다. 부하 균형잡기 동작은 gJVM 클러스터 내의 모든 gJVM 노드에 의해 사용되는 알고리즘에 따라 부하 균형잡기 동작을 개시하게 하는 국소 gJVM 노드 내에서의 결정의 결과일 수 있다. 대안적으로, 부하 균형잡기 동작을 수행하는 결정은 원시 gJVM 노드에 의해, 관리 유틸리티에 의해, 관리 명령에 의해, 또는 어떤 다른 메카니즘에 의해 제어될 수 있다. 예를 들면, 국소 gJVM 노드는 스레드를 구성하고 스레드를 디스패치할 준비가 된 후에 부하 균형잡기 동작을 수행할 수 있다. 대안적으로 연산 리소스를 절약하기 위해, 부하 균형잡기 동작은 예를 들면 매 10번째의 새로 구성된 스레드 후에 주기적으로 수행될 수 있다.
그 다음에, 국소 gJVM 노드는 국소 gJVM 노드의 어떤 리소스가 예를 들면 클러스터 특정 콘텍스트 파라메터 내에서 표시된 구성가능한 임계값을 초과하였는지 여부를 체크하기 위해 그 부하 정보를 평가하기 시작한다. 도 22에 도시한 예에서는 2회의 평가가 수행되는데, 수행되는 평가의 수는 부하 균형잡기 알고리즘, 이용가능한 부하 정보, 또는 어떤 다른 인자에 따라 달라질 수 있다.
국소 gJVM 노드의 CPU 부하값이 CPU 부하 임계값을 초과하는지 여부에 대한 결정이 행하여진다(단계 2208). 만일 초과하지 않으면, 처리는 단계 2214로 분기한다. 만일 국소 gJVM 노드의 CPU 부하값이 구성가능한 CPU 부하 임계값을 초과하면, 국소 gJVM 노드는 예컨대 구성가능한 부하 임계값에 대하여 원격 gJVM 노드로부터 미리 수집한 부하 정보를 분석함으로써, 이용가능한 CPU 리소스를 가진 원격 gJVM 노드를 선택한다(단계 2210). 그 다음에 국소 gJVM 노드는 예를 들면 도 17 및 도 18과 관련하여 위에서 설명한 처리를 이용하여, 스레드를 국소 gJVM 노드로부터 하나 이상의 선택된 원격 gJVM 노드로 이동하기 위한 이주 동작을 시작한다(단계 2212).
그 다음에, 국소 gJVM 노드의 메모리 부하값이 메모리 부하 임계값을 초과하는지 여부에 대한 결정이 행하여진다(단계 2214). 만일 초과하지 않으면, 처리는 종료된다. 만일 국소 gJVM 노드의 메모리 부하값이 구성가능한 메모리 부하 임계값을 초과하면, 국소 gJVM 노드는 예컨대 구성가능한 부하 임계값에 대하여 원격 gJVM 노드로부터 미리 수집한 부하 정보를 분석함으로써, 이용가능한 메모리 리소스를 가진 원격 gJVM 노드를 선택한다(단계 2216). 그 다음에 국소 gJVM 노드는 예를 들면 도 16 및 도 16과 관련하여 위에서 설명한 처리를 이용하여, 오브젝트 그룹을 국소 gJVM 노드로부터 하나 이상의 선택된 원격 gJVM 노드로 이동하기 위한 이주 동작을 시작하고(단계 2218), 이로써 처리가 종료된다.
논리적 가상 머신의 다중 스레드 애플리케이션
이제 도 23을 참조하면, 다수의 장치에 대해 단일 논리 가상 머신의 다중 그리드 인에이블 가상 머신을 펼치는 단일 애플리케이션 이미지의 실행을 보이는 블록도가 도시되어 있다. 머신(2302-2306)들은 논리 가상 머신(2308) 및 논리 가상 머신(2310)을 지원한다.
논리 가상 머신(2308)은 원시 gJVM 노드(2312)에 의해 표시된 단일 노드만을 포함하는데, 이 노드는 논리 가상 머신(2308)의 클러스터명이 "GRID_B"라고 특정된 명령 라인 인터페이스를 통하여 호출될 수 있다. 논리 가상 머신(2308)은 단일 장치, 즉 머신(2306)에서 지원된다.
대조적으로, 논리 가상 머신(2310)은 다수의 장치, 즉 머신(2302-2306)에 의해 지원되는 다중 gJVM 노드(2314-2320)를 포함한다. 머신(2302)은 2개의 gJVM 노드(2314, 2320)를 동시에 지원하도록 되어 있다. 가상 머신(2314-2320)은 단일 논리 가상 머신으로서 상호동작한다. 이 예에서, 가상 머신(2314-2320)은 자바(Java®) 기술을 이용하여 구현되고, 따라서 가상 머신(2314-2320)은 자바(Java®) 가상 머신으로서 설명될 수 있다. 가상 머신(2314-2320)은 논리 가상 머신으로서 그리드 같은 방식으로 상호동작하기 위한 임베디드 기능이 있기 때문에, 가상 머신(2314-2320)은 그리드 인에이블 자바(Java®) 가상 머신(gJVM)으로서 설명될 수 있고, 그 각각은 논리 gJVM(2310) 내의 노드이다.
각각의 gJVM 노드(2314-2320)는 논리 gJVM(2310)의 클러스터명이 "GRID_A"라고 특정된 명령 라인 인터페이스를 통하여 호출될 수 있다. 노드(2316-2320)는 비원시 노드이고, gJVM(2314)은 비록 원시 노드로서의 그 상태가 나중 시점에서 논리 gJVM(2310) 내의 다른 노드로 위임될 수 있다 하더라도, 시동(startup)시에 원시 노드로서 지정되었다. 이 예에서, 노드(2314-2320)는 동일 gJVM 애플리케이션 프로그램의 독특한 인스턴스이다. 전술한 방법을 이용하여, gJVM 노드(2316-2320)는 원시 gJVM 노드(2314)에 의해 관리되는 노드의 클러스터/그리드에 등록된다. 즉, 오 브젝트에 대한 원격 참조 및 gJVM 노드들 간의 협력은 gJVM 노드가 확립할 수 있는 gJVM-gJVM (피어투피어) 통신 링크를 통하여 제공된다.
본 발명에서 다중 gJVM 노드는 하나의 gJVM 노드에서 시작하는 응용 프로그램이 다중 gJVM 노드들에 미치는 방식으로 후속하여 실행할 수 있도록 논리 gJVM으로서 상호동작한다. 도 23의 예에서, 메인 스레드(2322)를 포함하는 애플리케이션은 gJVM 노드(2318)에서 시작하였고, 그 이차 스레드 중의 하나(2324)도 또한 gJVM 노드(2318)에서 실행한다. 또한, 동일 애플리케이션의 이차 스레드(2326-2332)는 논리 gJVM(2310) 내의 gJVM 노드(2314, 2316)에서 실행한다.
본 발명은 자바(Java®) 애플리케이션(2334)이 표준 자바(Java®) 애플리케이션 모델로부터 벗어날 필요없이 논리 gJVM(2310)에서 실행하는 자바(Java®) 애플리케이션(2334)의 워크로드를 노드(2314-2320)들이 공유하게 한다. 다시 말해서, 자바(Java®) 애플리케이션(2334)은 임의의 사유 기능(proprietary functionality)을 요구하지 않고, gJVM 노드(2314-2320)는 사유 애플리케이션 에이전트가 다수의 JVM에 걸친 자바(Java®) 애플리케이션(2334) 대신에 작용할 것을 요구하지 않는다. 본 발명에서 gJVM 노드(2314-2320)는 자바(Java®) 애플리케이션을 실행하도록 그리드같은 방식으로 상호동작하기 위한 임베디드 기능이 있다.
오브젝트 그룹(2336-2346)은 논리 gJVM(2310) 전체에 걸쳐 분산된다. 임의의 주어진 애플리케이션 스레드는 애플리케이션 스레드 또는 동일 애플리케이션 내의 다른 스레드가 오브젝트 그룹을 구성하거나 할당하였는지 여부에 대하여 수 개의 오브젝트 그룹에 존재하는 오브젝트들을 참조할 수 있다. 그러므로, 주어진 스레드는 오브젝트 그룹이 주어진 스레드 또는 국소 gJVM 노드나 원격 gJVM 노드의 다른 스레드와 제휴되는지의 여부에 대하여 국소 오브젝트 그룹 내의 오브젝트 또는 원격 오브젝트 그룹 내의 오브젝트를 참조할 수 있다. 만일 제휴되면, 오브젝트 그룹은 현존하는 임의의 스레드와 제휴되지 않거나, 또는 오브젝트가 국소 gJVM 노드 또는 원격 gJVM 노드의 소위 글로벌 오브젝트 그룹에 포함될 수 있다. 도 23에 도시한 예에서, 스레드(2330)는 국소 gJVM 노드(2314) 내에서 오브젝트 그룹(2336, 2346)의 오브젝트 또는 오브젝트들을 참조하는 것으로 도시하였지만, 원격 gJVM 노드(2316) 내에서 오브젝트 그룹(2338)의 오브젝트 또는 오브젝트들을 또한 참조할 수 있다.
본 발명의 장점들은 위에서의 상세한 설명에 비추어 명백하다. 가상 머신에서 실행하는 애플리케이션은 복수의 가상 머신에서 그리드같은 방식으로 동작할 수 있고, 이로써 연산 리소스가 보상을 위한 유틸리티형 서비스로서 제공되게 한다. 데이터 처리 시스템 및 장치가 폐쇄될 때, 그 시스템 및 장치에서의 클러스터화가능 가상 머신은 정지되고, 그 시스템 및 장치에서의 스레드 및 오브젝트는 다른 시스템 및 장치로 이주할 수 있으며, 한편 가상 머신 클러스터는 임의의 애플리케이션이 한 세트의 다른 시스템 및 장치에서 계속하여 동작하게 한다.
비록 본 발명이 완전하게 동작하는 데이터 처리 시스템의 관점에서 설명하였지만, 이 기술에 통상의 지식을 가진 자라면 본 발명의 처리들이 분배를 행하기 위 해 실제로 사용되는 특수 유형의 신호 운반 매체에 관계없이 컴퓨터 판독가능 매체에서 명령어 형태로 및 다양한 다른 형태로 분배될 수 있음을 알 것이다. 컴퓨터 판독가능 매체의 예로는 EPROM, ROM, 테이프, 종이, 플로피 디스크, 하드 디스크 드라이브, RAM 및 CD-ROM과 같은 매체, 및 디지털 및 아날로그 통신 링크와 같은 전송형 매체가 있다.
본 발명의 방법은 일반적으로 소망하는 결과를 유도하는 일관성 있는 단계들의 순서로 인식된다. 이 단계들은 물리적 수량(quantity)의 물리적 조작을 필요로 한다. 일반적으로, 반드시 필요한 것은 아니지만, 이 수량들은 저장, 전송, 조합, 비교 및 다른 방식의 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 때때로, 원리적으로 공동 사용의 이유 때문에, 상기 신호들은 비트, 값, 파라메터, 항목, 요소, 오브젝트, 기호, 문자, 기간, 번호 등으로 인용하는 것이 편리하다. 그러나, 모든 상기 용어들 및 유사한 용어들은 적당한 물리적 수량과 제휴되고, 이들 수량에 적용된 단순히 편리한 라벨이다.
전술한 본 발명의 설명은 단지 설명의 목적으로 제시된 것이고, 본 발명을 개시된 실시예로 한정하려는 의도는 없다. 이 기술에 통상의 지식을 가진 자라면 많은 수정예 및 변형예가 가능할 것이다. 실시예들은 본 발명의 원리 및 그 실제적 응용을 설명하고, 이 기술에 통상의 지식을 가진 사람들이 다른 예상되는 사용에 적합하게 여러 가지로 수정한 각종 실시예를 구현할 수 있도록 본 발명을 이해시키기 위해 선택된 것이다.

Claims (33)

  1. 삭제
  2. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴(associating)시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신으로부터 분리(disassociating)시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신 클러스터의 다른 가상 머신으로 이동시키는 단계와;
    상기 오브젝트 그룹의 상기 다른 가상 머신으로의 이동에 응답하여, 상기 오브젝트 그룹을 상기 다른 가상 머신과 제휴시키는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  3. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    복수의 오브젝트 그룹의 위치에 관한 정보를 상기 가상 머신 클러스터의 각 가상 머신과 공유하는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  4. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    상기 오브젝트 그룹 및 다른 오브젝트 그룹을 상기 가상 머신에 의해 관리되는 스레드(thread)와 제휴시키는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  5. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.
    제4항에 있어서, 상기 오브젝트 그룹 및 상기 다른 오브젝트 그룹을 상기 스레드와 제휴된 스레드 국소 힙(thread local heap)에 저장하는 단계를 더 포함하는 가상 머신 동작 방법.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제4항에 있어서, 상기 오브젝트 그룹을 상기스레드와 제휴된 제1 스레드 국소 힙에 저장하는 단계와;
    상기 다른 오브젝트 그룹을 상기 스레드와 제휴된 제2 스레드 국소 힙에 저장하는 단계를 더 포함하는 가상 머신 동작 방법.
  7. 제4항에 있어서,
    상기 오브젝트 그룹을 상기 스레드로부터 분리하는 단계와;
    상기 스레드를 종료하는 단계와;
    상기 스레드의 종료에 응답하여, 상기 가상 머신에 의해 관리되는 상기 스레드와 상기 오브젝트 그룹 간의 제휴없이 상기 오브젝트 그룹을 관리하는 단계를 더 포함하는 가상 머신 동작 방법.
  8. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    상기 오브젝트의 위치와 독립적인 오브젝트용의 오브젝트 핸들을 생성하는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  9. 제8항에 있어서,
    상기 오브젝트용의 오브젝트 핸들을 발생하는 단계와;
    상기 오브젝트와 제휴되는 상기 오브젝트 그룹의 그룹 식별자-이 그룹 식별자는 가상 머신 클러스터 내에서 고유한 것임-를 상기 오브젝트 핸들에 저장하는 단계와;
    상기 오브젝트에 대한 오브젝트 식별자-이 오브젝트 식별자는 상기 오브젝트와 제휴되는 상기 오브젝트 그룹 내에서 고유한 것임-를 상기 오브젝트 핸들에 저장하는 단계를 더 포함하는 가상 머신 동작 방법.
  10. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    상기 오브젝트의 위치와 독립적이고 상기 오브젝트와 제휴되는 상기 오브젝트 그룹의 위치와 독립적인, 상기 오브젝트를 위한 오브젝트 레퍼런스를 생성하는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  11. 데이터 처리 시스템 내의 가상 머신을 동작시키는 방법에 있어서,
    상기 데이터 처리 시스템 내의 장치에서 동작하는 가상 머신에 의해 관리되는 메모리에 오브젝트를 저장하는 단계와;
    상기 오브젝트를 오브젝트 그룹 내의 복수의 오브젝트와 제휴시키는 단계와;
    상기 오브젝트 그룹을 상기 가상 머신과 제휴시키는 단계-여기에서, 가상 머신은 가상 머신 클러스터의 다른 가상 머신들과 상호동작하는 기능을 포함하고, 상기 가상 머신 클러스터의 각 가상 머신은 상기 가상 머신 클러스터 내에서 노드로서 작용하는 것임-와;
    상기 가상 머신 클러스터의 각 가상 머신 내의 복수의 오브젝트 그룹을 관리하는 단계와;
    상기 오브젝트 그룹이 상기 가상 머신으로부터 상기 가상 머신 클러스터의 다른 가상 머신으로 이동하게 하는 단계와;
    상기 오브젝트가 상기 가상 머신에 위치되어 있는 동안 상기 오브젝트에 대한 제1 오브젝트 레퍼런스를 생성하는 단계와;
    상기 오브젝트와 제휴되는 상기 오브젝트 그룹을 상기 다른 가상 머신에 이동시키는 단계와;
    상기 오브젝트가 상기 다른 가상 머신에 위치되어 있는 동안 상기 오브젝트에 대한 제2 오브젝트 레퍼런스를 생성-여기에서, 상기 제1 오브젝트 레퍼런스와 상기 제2 오브젝트 레퍼런스는 동일한 것임-하는 단계인,
    컴퓨터로 구현되는 단계들을 포함하는 가상 머신 동작 방법.
  12. 가상 머신을 동작시키기 위하여 데이터 처리 시스템에서 사용하기 위한 컴퓨터 프로그램을 수록한 컴퓨터로 판독 가능한 기록 매체로서, 상기 컴퓨터 프로그램은 상기 데이터 처리 시스템으로 하여금 제2항 내지 제11항 중 어느 한 항에 기재된 방법의 각각의 단계를 실행시키기 위한 각각의 수단을 기능시키기 위한 것인 컴퓨터로 판독 가능한 기록 매체.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 제2항 내지 제11항 중 어느 한 항에 기재된 방법의 각각의 단계를 실행시키기 위한 각각의 수단을 포함하는 가상 머신 동작 장치.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
KR1020067014500A 2004-01-21 2004-10-26 이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용방법 및 시스템 KR100861738B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/761,998 US7526515B2 (en) 2004-01-21 2004-01-21 Method and system for a grid-enabled virtual machine with movable objects
US10/761,998 2004-01-21

Publications (2)

Publication Number Publication Date
KR20070006695A KR20070006695A (ko) 2007-01-11
KR100861738B1 true KR100861738B1 (ko) 2008-10-06

Family

ID=34750299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067014500A KR100861738B1 (ko) 2004-01-21 2004-10-26 이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용방법 및 시스템

Country Status (9)

Country Link
US (2) US7526515B2 (ko)
EP (2) EP1706819A1 (ko)
JP (1) JP5089990B2 (ko)
KR (1) KR100861738B1 (ko)
CN (1) CN1906580B (ko)
BR (1) BRPI0418438A (ko)
CA (2) CA2548594A1 (ko)
IL (2) IL176760A0 (ko)
WO (1) WO2005071539A1 (ko)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1738258A4 (en) 2004-03-13 2009-10-28 Cluster Resources Inc SYSTEM AND METHOD IMPLEMENTING OBJECT TRIGGERS
US8458691B2 (en) 2004-04-15 2013-06-04 International Business Machines Corporation System and method for dynamically building application environments in a computational grid
US20050234937A1 (en) * 2004-04-15 2005-10-20 International Business Machines Corporation System and method for rating performance of computing grid service providers
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US8069443B2 (en) * 2004-06-29 2011-11-29 Novell, Inc. Techniques for providing services and establishing processing environments
US7765552B2 (en) * 2004-09-17 2010-07-27 Hewlett-Packard Development Company, L.P. System and method for allocating computing resources for a grid virtual system
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US7930338B2 (en) * 2004-12-20 2011-04-19 Sap Ag Observer for grid-enabled software applications
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP3203374B1 (en) 2005-04-07 2021-11-24 III Holdings 12, LLC On-demand access to compute resources
US7607129B2 (en) * 2005-04-07 2009-10-20 International Business Machines Corporation Method and apparatus for using virtual machine technology for managing parallel communicating applications
US7698706B2 (en) * 2005-05-20 2010-04-13 International Business Machines Corporation Methods and apparatus for implementing an integrated user interface for managing multiple virtual machines operative in a computing system
US7802257B1 (en) * 2005-06-20 2010-09-21 Oracle America, Inc. Mechanism for bridging a thread-oriented computing paradigm and a job-oriented computing paradigm
US8504521B2 (en) * 2005-07-28 2013-08-06 Gopivotal, Inc. Distributed data management system
FI20055429L (fi) * 2005-08-08 2007-02-09 Rainer Wehkamp Hilalaskentaverkon hallinta
WO2007037709A1 (en) * 2005-09-30 2007-04-05 Manabars Ip Limited An abstract platform to facilitate the interoperability of information
JP2007265193A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ジョブ割当プログラム、ジョブ割当装置およびジョブ割当方法
US8286174B1 (en) * 2006-04-17 2012-10-09 Vmware, Inc. Executing a multicomponent software application on a virtualized computer platform
US8627402B2 (en) 2006-09-19 2014-01-07 The Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US20080071793A1 (en) * 2006-09-19 2008-03-20 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Using network access port linkages for data structure update decisions
US20080098309A1 (en) * 2006-10-24 2008-04-24 Microsoft Corporation Managing virtual machines and hosts by property
US8694972B2 (en) * 2006-11-10 2014-04-08 The Mathworks, Inc. System and method for interoperating with foreign objects from a single language computing environment
US8001336B2 (en) * 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
US8205207B2 (en) * 2007-03-15 2012-06-19 International Business Machines Corporation Method of automated resource management in a partition migration capable environment
JP5088366B2 (ja) * 2007-03-27 2012-12-05 富士通株式会社 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
US20080250407A1 (en) * 2007-04-05 2008-10-09 Microsoft Corporation Network group name for virtual machines
JP2009003625A (ja) * 2007-06-20 2009-01-08 Yokogawa Electric Corp フィールド機器
US8045828B2 (en) * 2007-07-09 2011-10-25 Kabushiki Kaisha Toshiba Apparatus for processing images, and method and computer program product for detecting image updates
WO2009015432A1 (en) * 2007-07-30 2009-02-05 Clear Falls Pty Ltd A method and system for reactively assigning computational threads of control between processors
JP4982347B2 (ja) * 2007-12-11 2012-07-25 株式会社東芝 画像情報の更新を検出するプログラム、方法および画像処理装置
KR101007279B1 (ko) * 2007-12-17 2011-01-13 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템
JP5010492B2 (ja) * 2008-01-31 2012-08-29 株式会社東芝 通信装置、方法及びプログラム
US8069362B2 (en) * 2008-02-26 2011-11-29 Sap Ag Automated electrical power savings in virtualization environments
US20100042723A1 (en) * 2008-08-12 2010-02-18 Srikanth Sundarrajan Method and system for managing load in a network
US9842004B2 (en) * 2008-08-22 2017-12-12 Red Hat, Inc. Adjusting resource usage for cloud-based networks
JP5352367B2 (ja) * 2009-07-27 2013-11-27 株式会社エヌ・ティ・ティ・データ 仮想マシン起動端末および仮想マシン起動プログラム
JP5511262B2 (ja) * 2009-08-20 2014-06-04 三菱電機株式会社 情報処理システム及びプログラム
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
CN101650666B (zh) * 2009-08-31 2016-01-13 曙光信息产业(北京)有限公司 一种计算机管理系统及方法
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20110214115A1 (en) * 2010-02-26 2011-09-01 Nokia Corporation Method and appartus for providing a high level mobile virtual machine
JP5448083B2 (ja) * 2010-03-11 2014-03-19 株式会社日立製作所 計算機モニタリングシステム及びプログラム
US8412810B1 (en) * 2010-07-02 2013-04-02 Adobe Systems Incorporated Provisioning and managing a cluster deployed on a cloud
US8726274B2 (en) * 2010-09-10 2014-05-13 International Business Machines Corporation Registration and initialization of cluster-aware virtual input/output server nodes
US8495630B2 (en) 2010-11-03 2013-07-23 International Business Machines Corporation Transferring objects between virtual machines
US9336146B2 (en) * 2010-12-29 2016-05-10 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
CN102103518B (zh) 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的系统及其实现方法
US8442955B2 (en) 2011-03-30 2013-05-14 International Business Machines Corporation Virtual machine image co-migration
US10108630B2 (en) * 2011-04-07 2018-10-23 Microsoft Technology Licensing, Llc Cluster unique identifier
US8832690B1 (en) * 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US8756601B2 (en) * 2011-09-23 2014-06-17 Qualcomm Incorporated Memory coherency acceleration via virtual machine migration
CN102768629B (zh) * 2012-04-16 2017-02-08 中兴通讯股份有限公司 基于调度层实现虚拟机间通讯的方法和装置
US9052963B2 (en) * 2012-05-21 2015-06-09 International Business Machines Corporation Cloud computing data center machine monitor and control
WO2014000274A1 (en) 2012-06-29 2014-01-03 Intel Corporation Methods and systems to identify and migrate threads among system nodes based on system performance metrics
WO2014036715A1 (zh) * 2012-09-07 2014-03-13 运软网络科技(上海)有限公司 基于交付点的实时资源供应流程控制系统和方法
US11132277B2 (en) * 2012-12-28 2021-09-28 Iii Holdings 2, Llc System and method for continuous low-overhead monitoring of distributed applications running on a cluster of data processing nodes
US8904389B2 (en) * 2013-04-30 2014-12-02 Splunk Inc. Determining performance states of components in a virtual machine environment based on performance states of related subcomponents
US9716666B2 (en) 2013-11-27 2017-07-25 International Business Machines Corporation Process cage providing attraction to distributed storage
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9658897B2 (en) 2014-06-23 2017-05-23 International Business Machines Corporation Flexible deployment and migration of virtual machines
US9473353B2 (en) * 2014-06-23 2016-10-18 International Business Machines Corporation Cluster reconfiguration management
US10623481B2 (en) 2015-04-27 2020-04-14 Microsoft Technology Licensing, Llc Balancing resources in distributed computing environments
WO2017011223A1 (en) 2015-07-10 2017-01-19 Rambus, Inc. Thread associated memory allocation and memory architecture aware allocation
US10789223B2 (en) * 2016-03-24 2020-09-29 Microsoft Technology Licensing, Llc Hybrid garbage collection in a distributed storage system
US10969929B2 (en) 2018-10-19 2021-04-06 Oracle Financial Services Software Limited Dependency graph-controlled object and compute pipeline migration
WO2021014419A1 (en) * 2019-07-25 2021-01-28 Snapt, Inc Controlling a destination of network traffic

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694702B2 (en) * 1999-09-10 2004-02-24 Amweld Building Products, Llc Door construction and method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11238011A (ja) * 1998-02-23 1999-08-31 Nippon Telegr & Teleph Corp <Ntt> オブジェクト移動方法及びシステム及び分散オブジェクト管理装置及び分散オブジェクト管理プログラムを格納した記憶媒体
WO1999044129A1 (en) * 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
JP2001067325A (ja) * 1998-09-30 2001-03-16 Hitachi Software Eng Co Ltd 分散オブジェクト管理方法およびシステム
US6430570B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java application manager for embedded device
JP2000259581A (ja) * 1999-03-09 2000-09-22 Toshiba Corp 計算機システムの制御プログラム及びオブジェクト生成プログラムを記憶したコンピュータ読み取り可能な記憶媒体並びに計算機システム
US6842175B1 (en) * 1999-04-22 2005-01-11 Fraunhofer Usa, Inc. Tools for interacting with virtual environments
GB2365463B (en) * 2000-08-01 2005-02-16 Renovus Ltd Drilling method
JP2002163119A (ja) * 2000-11-29 2002-06-07 Elmic Systems Inc 情報処理システム、オブジェクトの管理方法、オペレーティングシステム、記録媒体
DE60114667T2 (de) * 2000-12-11 2006-07-06 Matsushita Electric Industrial Co., Ltd., Kadoma Speicherverwaltungsvorrichtung und verfahren
US6959430B2 (en) * 2001-05-09 2005-10-25 Sun Microsystems, Inc. Specialized heaps for creation of objects in object-oriented environments
US7036120B2 (en) * 2001-07-31 2006-04-25 Sun Microsystems, Inc. Two tier clusters for representation of objects in Java programming environments
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694702B2 (en) * 1999-09-10 2004-02-24 Amweld Building Products, Llc Door construction and method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Acharya, A. et al. "Sumatra: a language for resource-aware mobile programs", 2nd International workshop MOS '96*
Ranganathan, M. et al. "Network-aware mobile programs", Proceedings of the USENIX 1997 Annual Technical Conference

Also Published As

Publication number Publication date
IL176981A0 (en) 2006-12-10
JP5089990B2 (ja) 2012-12-05
IL176760A0 (en) 2006-10-31
US7827217B2 (en) 2010-11-02
US20090193414A1 (en) 2009-07-30
EP1706819A1 (en) 2006-10-04
WO2005071539A1 (en) 2005-08-04
CN1906580B (zh) 2010-08-25
BRPI0418438A (pt) 2007-06-19
CN1906580A (zh) 2007-01-31
US20050160413A1 (en) 2005-07-21
EP2177989A2 (en) 2010-04-21
KR20070006695A (ko) 2007-01-11
CA2548594A1 (en) 2005-08-04
CA2735349A1 (en) 2005-08-04
US7526515B2 (en) 2009-04-28
JP2007519110A (ja) 2007-07-12

Similar Documents

Publication Publication Date Title
KR100861738B1 (ko) 이동가능한 오브젝트를 가진 그리드 인에이블 가상 머신용방법 및 시스템
EP1577770A2 (en) Method and system for grid-enabled virtual machines with distributed management of applications
US7568199B2 (en) System for matching resource request that freeing the reserved first resource and forwarding the request to second resource if predetermined time period expired
Caron et al. Diet: A scalable toolbox to build network enabled servers on the grid
EP1649366B1 (en) Maintainable grid managers
US20020178262A1 (en) System and method for dynamic load balancing
US7703029B2 (en) Grid browser component
De Benedetti et al. JarvSis: a distributed scheduler for IoT applications
US20040068729A1 (en) Non-hierarchical collaborative computing platform
US7953776B2 (en) Discovery directives
Neuman et al. Resource management for distributed parallel systems
Yang et al. Design and Implementation of an Administration System for Distributed Web Server.
Schrimpf Migration of processes, files, and virtual devices in the MDX operating system
Byun et al. DynaGrid: A dynamic service deployment and resource migration framework for WSRF-compliant applications
Diaconescu A framework for using component redundancy for self-adapting and self-optimising component-based enterprise systems
Corradi et al. Dynamic load distribution in massively parallel architectures: the parallel objects example
Mannava et al. A service administration design pattern for dynamically configuring communication services in autonomic computing systems
Du et al. Runtime system for autonomic rescheduling of MPI programs
MXPA06007915A (en) Method and system for a grid-enabled virtual machine with movableobjects
Hawick et al. Java Tools and Technologies for Cluster Computing
Mahéo et al. Towards resource-aware parallel components
Alfawair et al. Grid evolution
Juhász et al. JGrid design document
Lindegren Preparing the Apache HTTP Server for Feedback Control Application
Hamid et al. Process Migration for Load Balancing and Fault Tolerance

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
LAPS Lapse due to unpaid annual fee