KR100322213B1 - 병렬분산처리시스템및그방법 - Google Patents

병렬분산처리시스템및그방법 Download PDF

Info

Publication number
KR100322213B1
KR100322213B1 KR1019970007241A KR19970007241A KR100322213B1 KR 100322213 B1 KR100322213 B1 KR 100322213B1 KR 1019970007241 A KR1019970007241 A KR 1019970007241A KR 19970007241 A KR19970007241 A KR 19970007241A KR 100322213 B1 KR100322213 B1 KR 100322213B1
Authority
KR
South Korea
Prior art keywords
function
reference information
information
calculation
calculation object
Prior art date
Application number
KR1019970007241A
Other languages
English (en)
Other versions
KR970066862A (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
Priority claimed from JP4783396A external-priority patent/JPH09245003A/ja
Priority claimed from JP27836496A external-priority patent/JPH10124319A/ja
Priority claimed from JP8279732A external-priority patent/JPH10124423A/ja
Priority claimed from JP35161096A external-priority patent/JPH10187468A/ja
Application filed by 히또시 아오이께, 가부시끼가이샤 디지탈 비젼 라보러토리즈 filed Critical 히또시 아오이께
Publication of KR970066862A publication Critical patent/KR970066862A/ko
Application granted granted Critical
Publication of KR100322213B1 publication Critical patent/KR100322213B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/46Indexing scheme relating to G06F9/46
    • G06F2209/462Lookup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/46Indexing scheme relating to G06F9/46
    • G06F2209/463Naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

네트워크를 통해 복수의 네트워크 노드가 접속된 시스템에 있어서, 제1 네트워크 노드(network node)의 클래스(class)(모듈(module))에 관하여 제2 네트워크 노드의 클래스의 함수(function)(기능(facility))를 호출할 때, 제1 네트워크 노드는 외부 참조 테이블(reference table)로부터 해당 함수의 기능 식별 코드(수치)를 얻고, 네트워크를 통해 이 기능 식별 코드를 인수(arguments)와 함께 메시지로서 제2 네트워크 노드로 출력한다. 제2 네트워크 노드에서는 입력한 기능 식별 코드를 키(key)로 하고 내부 참조 테이블로부터 해당 기능의 실행 어드레스를 얻고, 해당 기능을 실행한다.

Description

병렬 분산처리 시스템 및 그 방법{PARALLEL DISTRIBUTED PROCESSING SYSTEM AND METHOD OF SAME}
본 발명은 광범위한 네트워크에 대해 멀티미디어를 병행 처리하는 병렬 분산처리 시스템 및 그 방법에 관한 것이다.
근년, 멀티미디어 정보를 이용 및 유통시키는 정보 제공 이용 서비스 애플리케이션인 정보 슈퍼마켓(ISM. Information Super-Market)의 개발이 활발히 수행되고 있다. 정보 슈퍼마켓(ISM)에서는 기능 모듈(클래스) 간의 대화성(dialog) 및 모듈간 구성의 유연성을 높이기 위해 광범위한 네트워크에 대해 멀티미디어의 병행처리를 효과적으로 수행하는 애플리케이션 실행 환경이 요구된다. 이에 대응하도록 하는 것이 병렬 분산처리 시스템이다.
종래의 병렬 분산처리 시스템에서는 모듈간의 기능 호출은 문자열로 표시되는 모듈명과 기능명을 이용하여 수행한다. 여기서 기능 호출이라 함은 어느 모듈에서 수행되는 처리에서 다른 모듈에 귀속되어 있는 기능을 호출하여 이용하는 것을 말한다.
병렬 분산처리 시스템의 대표적인 것으로 CORBA(Common Object Request Broker Architecture)-ORB(Object Request Broker)가 있다. 여기서 CORBA는 네트워크에 접속한 복수의 컴퓨터로 작동하는 소프트웨어가 서로 통신하기 위한 기구이며, 분산 시스템을 유연하면서도 양호하게 구축하기 위한 기반이 된다. 또한 ORB 는 객체(object)간의 통신을 담당하는 소프트웨어이며, 클라이언트(client) ·객체로부터 받은 메시지를 네트워크를 통해 적절한 서버(server) ·객체로 넘겨주는 작용을 한다.
상기 CORBA-ORB에서는 객체의 관리 공간은 해당 시스템이 지원하는 환경 전역으로 규정되어 있다.
또한 CORBA-ORB에서는 어느 모듈이 다른 모듈의 기능을 호출함에 있어서 심볼고 정의된 기능명 및 인수가 송신측 모듈(module originating the call)로부터 수신측 모듈(module receiving the call)로 전송된다. 수신측 모듈에서는 기능명과 해당 기능을 실행하는 프로그램의 실행 어드레스의 대응 테이블이 마련되어 있고, 수신측 모듈은 그 대응 테이블을 검색함으로써 실행 어드레스를 취득하고 호출된 기능을 실행한다.
또한 병렬 분산처리 시스템에서 어느 네트워크 노드에 모듈이 배치되어 있는가를 사용자가 의식하지 않고 프로그램을 기술할 수 있는 프로그램 분산 배치 실행방법이 일본국 특개평 제3-226856호에 기재되어 있다.
이 프로그램 분산 배치 실행 방법에서는 각 모듈이 배치되는 네트워크 노드명을 지정하는 전용 디렉토리를 설치하고 이 디렉토리를 참조하면서 소스 프로그램에 존재하는 외부 호출 기술을 시스템이 자동적으로 바꾸어 쓴다(수정한다).
또한, 전술한 바와 같은 병렬 분산처리 시스템은 인터넷을 이용하여 구축되는 것이 많고, 이러한 인터넷에서는 네트워크 상의 노드에 대하여 IP 어드레스와DNS(Domain Name System) 명칭이 부여된다. IP 어드레스는 네트워크에 접속되어 있는 각 데이터 처리장치의 식별번호이고, 32비트 정수로 표기된다. 또한 DNS 명칭은 의미가 있는 상징적인 이름으로 사용자가 네트워크 상의 노드를 구별할 수 있도록 한 것으로서, 네트워크를 관리 범위에서 구별하여 나누고, 각 범위에 부여한 명칭이다. 이 구역에서 나뉘어진 부분의 일련의 명칭으로 구성된 DNS 명칭에 의한 계층적인 명명 기구인 DNS (도메인명 시스템)이 TCP/IP에 기초하여 인터넷에서는 머신명의 계층화를 실현하고 있다.
또한, 이러한 IP 어드레스 및 DNS 명칭은 네트워크 상에서, 즉 전 세계에서 중복됨이 없이 네트워크 정보센터(NIC)에 의해 일괄적으로 관리되고 있다.
그러나, 앞에서 설명한 종래의 CORBA-ORB에서는 기능 수신측에서 문자열로 표시되는 기능명을 키로 하고 테이블을 참조하여 실행 어드레스를 특정하기 때문에 그 실행부를 특정하는 비용이 비싸고 기능 호출에 수반하는 처리 효율이 나쁘다는 문제가 있다.
또한 CORBA-ORB에서는 기능 호출에 수반하는 인수의 형식(Format)은 컴파일(compile)시 별도로 정의해 놓을 필요가 있다. 이 때, 정의할 수 있는 인수에 데이터 구조는 구조체 및 배열 등의 단순한 것에 한정되고 목록 구조 등의 복잡한 데이터 구조는 이용할 수 없다는 문제가 있다.
또한 CORBA-ORB에서는 수신측 모듈은 미리 존재(등록)할 필요가 있다. 또한 기본적으로 호출 기능 및 인수의 형식을 컴파일시 정의해 놓을 필요가 있고, 임의의 수신측의 모듈을 동적으로 다운로드(추가 등록)하여 사용하려면 작업이 복잡해지는 문제가 있다.
또한 CORBA-ORB에서 기능 호출을 수행할 때 동기 방식이 다르면 다른 프로그래밍 인터페이스(API)를 이용할 필요가 있고, 프로그램 기술이 복잡하게 된다는 문제가 있다.
또한 CORBA-ORB에서 객체의 관리 공간이 해당 시스템이 지원하는 환경 전역으로 규정되어 있으므로, 사용자는 용도에 따라 필요한 객체만을 관리 범위로 하는 관리 공간을 마음대로 규정할 수가 없다.
따라서, 사용자는 용도에 대응한 일부의 객체만을 사용하는 경우에도 시스템의 광역(廣域)에서 불필요한 객체를 포함하여 명칭의 일의성(uniqueness)을 유지하는 등의 관리를 수행할 필요가 있고 이 관리에 수반하는 부담이 크다고 하는 문제가 있다.
또한 CORBA-ORB는 시스템 광역에서 명칭의 일의성을 유지할 필요가 있기 때문에 시스템이 지원하는 복수의 애플리케이션(application) 상호간에 동일한 명칭을 사용할 수 없고, 각 애플리케이션에서 사용 가능한 명칭의 자유도가 낮다고 하는 문제가 있다.
또한 이와 같은 시스템의 광역에서 객체를 관리하기 위해 관리 대상이 되는 객체의 수가 방대하고, 객체에 액세스할 때 검색 시간이 길어지는 문제가 있다.
또한, CORBA-ORB에서는 계산 모듈 등의 추가라든가 삭제 등에 수반하는 동적(점진적)인 공간 관리가 곤란하다는 문제도 있다.
또한 전술한 일본국 특개평 제3-226856호에 기재된 프로그램 분산 배치 실행방법에서는 디렉토리를 참조하면서 소스 프로그램에 존재하는 외부 호출 기술을 수정함으로써, 모듈 배치가 변경됨에 따라 디렉토리의 내용이 변하면 소스 프로그램을 새로 컴파일(compile)할 필요가 생기고, 변경에 따른 처리가 복잡하므로 신속하게 대응할 수 없다는 문제가 있다.
또한, 종래의 객체에 대한 명칭 해결 기구로서 널리 보급되고 있는 DNS는 그참조 정보의 변환이 DNS 명칭에서 IP 어드레스로의 변환이라는 것과 같은 단순한 것이다. 즉, 한 단계의 변환 외에는 대응할 수 없고, 다단계 변환을 필요로 하는 복잡한 명칭 해결에 이용할 수는 없다. 또한 복수의 정보에 기초하는 것과 같은 복잡한 참조 정보에 대해서도 적절히 대응할 수 없다.
이것은 전술한 바와 같이 보다 고도한 병렬 분산처리 환경에서 이용되는 참조 기구로서, DNS는 적절하지 않은 것이 된다. 즉 그러한 병렬 분산처리 환경에서는 네트워크 상의 여러 가지 계산 자원, 여러 가지 객체를 여러 가지 명칭과 ID 등을 이용하여 양호하게 참조할 필요가 있으나, DNS는 그와 같은 참조 해결에 대응할수 없기 때문이다.
본 발명은 앞에서 설명한 종래 기술과 비교하여 기능의 호출을 고속이면서도 효율적으로 수행하는 병렬 분산처리 시스템 및 그 방법을 제공하는 것을 목적으로 한다. 또한 본 발명은 사용자에 의한 모듈의 식별명의 관리 부담을 경감할 수 있는 병렬 분산처리 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 기능 호출에서 다양한 형식의 인수를 이용할 수 있는 병렬분산처리 시스템 및 그 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 복잡한 작업을 거치지 않고, 임의의 수신측 모듈을 동적으로 다운로드(추가 등록)하여 사용할 수 있는 병렬 분산처리 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 계산 모듈 배치의 동적인 변경(dynamic change)에 대하여 효율적으로 대처할 수 있는 병렬 분산처리 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 애플리케이션 프로그램이 계산 모듈 등의 참조 관계를 실행하는 경우 네트워크 배치에 의존하지 않도록 기술할 수 있는 병렬 분산처리 시스템및 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 광범위한 네트워크에서 계산 객체를 관리하는 경우에 계산 객체의 관리 공간을 자유롭게 규정할 수 있는 병렬 분산처리 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한 본 발명은 다단계 명칭 ·참조 해결과, 다수의 요소에 의한 참조 등에 대응할 수가 있고, 객제 사이의 통신이 보다 좋은 효율로 수행되고 그에 따라 보다 고도한 병렬 분산처리 환경을 제공할 수 있는 병렬 분산처리 시스템 및 방법을 제공하는 것을 목적으로 한다.
도 1은 본 발명의 제1 실시예에 관한 병렬 분산처리 시스템의 개념도.
도 2는 도 1에 표시된 병렬 분산처리 시스템에서, 내부 참조 테이블을 작성하는 순서에 관하여 설명하기 위한 도면.
도 3은 도 1에 표시된 병렬 분산처리 시스템에서, 외부 참조 테이블을 작성하는 순서에 관하여 설명하기 위한 도면.
도 4는 도 1에 표시된 병렬 분산처리 시스템에서, 기능 호출시 송신측의 네트워크 노드에 관한 처리를 설명하기 위한 도면.
도 5는 도 1에 표시된 병렬 분산처리 시스템에서, 기능 호출시 수신측의 네트워크 노드에 관한 처리를 설명하기 위한 도면.
도 6a는 완전 동기 메시지 송신을 수행하는 경우 도 1에 표시된 병렬 분산처리 시스템의 순서도.
도 6b는 완전 동기 메시지 송신을 수행하는 경우 도 1에 표시된 병렬 분산처리 시스템의 순서도.
도 7a는 비동기 메시지 송신을 수행하는 경우 도 1에 표시된 병렬 분산처리 시스템의 순서도.
도 7b는 비동기 메시지 송신을 수행하는 경우 도 1에 표시된 병렬 분산처리 시스템의 순서도.
도 8은 본 발명의 병렬 분산처리 시스템의 개념도.
도 9는 본 발명의 제2 실시예에 관한 병렬 분산처리 시스템의 개념도.
도 10은 본 발명의 제2 실시예에 관한 병렬 분산처리 시스템의 구성도.
도 11은 본 발명의 병렬 분산처리 시스템의 참조 정보를 설명하기 위한 도면.
도 12는 로컬 함수 참조 테이블을 설명하기 위한 도면.
도 13은 원격 함수 참조 테이블을 설명하기 위한 도면.
도 14는 프로세스 참조 테이블을 설명하기 위한 도면.
도 15는 도메인 참조 테이블을 설명하기 위한 도면.
도 16은 도메인 명칭 해시 테이블을 설명하기 위한 도면.
도 17은 함수/프로세스 명칭 해시 테이블을 설명하기 위한 도면.
도 18은 원격 함수 ID 해시 테이블을 설명하기 위한 도면.
도 19는 참조 정보를 생성하는 대상으로 되는 공간 구성을 설명하기 위한 도면.
도 20은 데몬의 참조 생성부에서의 처리를 설명하기 위한 도면.
도 21은 프로세스 Pl 상에서의 도메인 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 22는 프로세스 P1 상에서의 도메인 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 23은 프로세스 P1 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 24a는 프로세스 Pl 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 24b는 프로세스 Pl 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 25는 프로세스 P2 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 26a는 프로세스 P2 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 26b는 프로세스 P2 상에서의 로컬 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 27은 프로세스 Pl 상에서의 프로세스 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 28은 프로세스 Pl 상에서의 프로세스 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 29는 프로세스 Pl 상에서의 원격 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 30은 프로세스 Pl 상에서의 원격 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 31은 프로세스 P2 상에서의 원격 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 32는 프로세스 P2 상에서의 원격 함수 참조 테이블의 초기화 처리를 설명하기 위한 도면.
도 33은 본 발명의 제3 실시예에 관한 병렬 분산처리 시스템의 구성도.
도 34는 도 33에 나타낸 병렬 분산처리 시스템에서 처리되는 프로그램 모듈의 기술 내용을 나타내는 도면.
도 35는 도 33에 나타낸 프로세스 배치부를 설명하기 위한 도면.
도 36은 도 33에 나타낸 병렬 분산처리 시스템에 형성된 계산 공간 및 도메인을 설명하기 위한 도면.
도 37은 도 33에 나타낸 병렬 분산처리 시스템의 각 네트워크 노드에 배치된 프로세스를 설명하기 위한 도면.
도 38은 마스터 관리 프로세스 C 및 슬레이브 관리 프로세스 A, B에 관한 처리의 흐름도.
도 39는 프로세스 배치 테이블의 구성도.
도 40은 네트워크 노드 C의 프로세스 배치 테이블의 구체예.
도 41은 네트워크 노드 A의 프로세스 배치 테이블의 구체예.
도 42는 네트워크 노드 B의 프로세스 배치 테이블의 구체예.
도 43은 포트번호 할당 테이블의 구성도.
도 44는 포트번호 할당 테이블의 구체예.
도 45는 일반 프로세스의 처리 흐름도.
도 46은 반입 처리(import process)를 설명하기 위한 흐름도.
도 47은 반입 처리를 설명하기 위한 도면.
도 48은 반입 처리를 설명하기 위한 도면.
도 49a는 반입 처리를 설명하기 위한 도면.
도 49b는 반입 처리를 설명하기 위한 도면.
도 50은 반출 처리(export process)를 설명하기 위한 도면.
도 51은 반출 처리를 설명하기 위한 도면.
도 52a는 반출 처리를 설명하기 위한 도면.
도 52b는 반출 처리를 설명하기 위한 도면.
도 53은 반출 처리를 설명하기 위한 도면.
도 54는 반출 처리를 설명하기 위한 도면.
도 55는 본 발명의 제4 실시예의 참조 변환 장치의 구성을 나타내는 블록도.
도 56은 도 55에 나타낸 제어부의 처리의 흐름을 보여주는 흐름도.
도 57a는 도 55에 나타낸 참조 변환 장치의 동작 예를 보여주는 도면.
도 57b는 도 55에 나타낸 참조 변환 장치의 동작 예를 보여주는 도면.
도 57c는 도 55에 나타낸 참조 변환 장치의 동작 예를 보여주는 도면.
도 58은 본 발명의 제5 실시예의 분산처리 시스템에 관한 참조 해결기의 구성을 보여주는 블록도.
도 59는 도 58에 나타낸 참조 해결기의 동작 예를 보여주는 도면.
도 60은 도 58에 나타낸 참조 해결기의 구체적인 실시예를 보여주는 도면.
본 발명의 병렬 분산처리 시스템은 단수 또는 복수의 계산 객체를 구비한 프로세스를 실행하는 복수의 연산 처리 노드가 네트워크를 통해 서로 접속된 병렬 분산처리 시스템으로서, 제1 프로세스가 구비한 계산 객체 또는 그 기능을 제2 프로세스가 호출하여 실행할 때, 상기 제 2프로세스는 해당 계산 객체 또는 그 기능의 명칭 혹은 식별자를 키(key)로 하여 참조 정보로부터 해당 계산 객체 또는 그 기능을 상기 네트워크 상에서 직접적으로 특정하는 소재 정보를 얻고, 해당 소재 정보를 상기 제1 프로세스에 송신하고, 상기 제1 프로세스가 구비하는 계산 객체 또는 그 기능을 호출하여 처리를 수행한다.
또한, 본 발명의 병렬 분산처리 시스템은 바람직하게는, 상기 참조 정보는 계산 객체 또는 그 기능의 수신측의 프로세스에 설치되고, 호출되는 계산 객체 또는 그 기능에 있어서 해당 계산 객체 또는 그 기능의 식별번호와 해당 계산 객체 또는 그 기능의 실행 어드레스와의 대응을 나타내는 내부 참조 수단과, 계산 객체 또는 그 기능의 송신측의 프로세스에 설치되고, 호출을 수행하는 계산 객체 또는 그 기능에 있어서 해당 계산 객체 또는 그 기능의 명칭 또는 식별자와 해당 계산 객체 또는 그 기능의 식별번호와의 대응을 나타내는 외부 참조 수단으로 구성되고, 송신측의 프로세스는 호출을 수행하는 계산 객체 또는 그 기능의 명칭 또는 식별자를 키로 하고, 상기 외부 참조 수단으로부터 대응하는 식별번호를 얻고, 해당 식별번호를 포함하는 메시지를 계산 객체 또는 그 기능의 수신측의 프로세스로 보내며, 상기 수신측의 프로세스는 상기 송신측의 프로세스에서 보낸 메시지에 포함되는 상기 식별번호를 키로 하고, 상기 내부 참조 수단으로부터 해당 호출된 계산 객체 또는 그 기능의 실행 어드레스를 얻고, 해당 실행 어드레스에 기초하여 해당 호출된 계산 객체 또는 그 기능을 실행한다.
또한, 본 발명의 병렬 분산처리 시스템은 바람직하게는, 단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합으로 구성되고, 해당 집합 내에서만 상기 계산 객체 또는 그 기능의 명칭 또는 식별자의 일의성이 요구되는 계산 공간을 규정하고, 상기 참조 정보는 상기 계산 공간 내에서 상기 계산 객체 또는 그 기능의 명칭 또는 식별자를 키로 하여 상기 계산 객체 또는 그 기능의 소재 정보를 부여 한다.
또한 본 발명의 병렬 분산처리 시스템은 바람직하게는, 상기 연산 처리 노드는 상기 프로세스를 실현하는 프로그램 모듈의 소재 정보와 해당 프로그램 모듈의 배치 수신측(allocation destination)의 연산 처리 노드 정보와의 대응을 나타내는 배치 정보에 기초하여 소정의 연산 처리 노드에 상기 프로그램 모듈을 매치하고, 그 배치 수신측의 연산 처리 노드에서 프로세스를 생성하는 프로세스 배치 수단과, 각각의 프로세스에서 상기 배치 정보와 상기 프로그램 모듈에 기술된 계산 객체 또는 그 기능 상호간의 참조 관계에 기초하여 해당 프로세스를 실현하는 프로그램 모듈이 상호 참조하고 있는 계산 객체 또는 그 기능의 상기 참조 정보를 생성하는 참조 정보 생성 수단을 가진다.
또한 본 발명의 병렬 분산처리 시스템은 바람직하게는, 단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합으로 구성되고, 해당 집합 내에서만 상기계산 객체 또는 그 기능의 명칭 또는 식별자의 일의성이 요구되는 계산 공간을 규정하고, 상기 계산 공간에서 계산 객체 또는 그 기능을 특정하는 논리적 참조 정보를 동일한 논리적 참조 정보, 및 상기 소재 정보로서의 시스템 참조 정보 중의 어느 하나, 또는 그것들의 조합의 참조 정보로 변환하는 복수의 참조 변환 수단과, 입력된 논리적 참조 정보 및 상기 참조 변환 수단에서 변환되고 생성된 논리적 참조 정보를 해당 논리적 참조 정보에 기초하여 상기 복수의 참조 변환 수단 중의 어느 하나에 재귀적으로(reflectively) 입력하고, 상기 입력된 논리적 참조 정보를 상기 시스템 참조 정보로 변환하는 변환 제어 수단을 가지며, 통신 수신측 프로세스의 논리적 참조 정보를 상기 변환 제어 수단을 통해 상기 참조 변환 수단에 의해 시스뎀 참조 정도로 변환하고, 프로세스 상호간의 통신을 수행한다.
본 발명의 병렬 분산처리 시스템에서는 시스템의 셋업 할 때 모듈 상호간의 기능 호출의 관계가 해석된다. 그 해석 결과에 의해 다른 모듈로부터 호출되는 기능에서, 예를 들면 수지 형식의 기능 식별번호가 할당되고, 내부 참조 수단 및 외부 참조 수단이 작성된다. 모듈 상호간의 기능 호출은 상기 내부 참조 수단 및 상기 외부 참조 수단을 이용하여 수행된다. 또한 수신측의 모듈에서는 수치 형식으로 표시된 기능 식별번호를 키로 하여 내부 참조 수단을 이용하고 실행 어드레스의 검색이 수행된다.
위에서 설명한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 기능호출을 고속이고 동시에 효과적으로 수행할 수가 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 사용자에 의한 모듈의 식별명의 관리 부담을 경감할 수 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 기능 호출에서, 다양한 형식(데이터 구조)의 인수를 이용할 수가 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 복잡한 작업을 거치지 않고, 임의의 수신측의 모듈을 동적으로 다운로드(추가 등록)하여 사용할 수 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 계산 공간의 개념을 도입힌 것으로 사용자는 용도에 대응한 필요한 계산 객체만을 관리하는 관리공간을 자유롭게 형성할 수가 있다. 그 결과 계산 객체의 명칭과 식별자 등의 사용자의 관리 부담이 경감된다. 또한 관리되는 계산 객체의 수가 감소하기 때문에 계산 객체의 특성 시간을 단축할 수 있다. 또한 참조 공간 외의 계산 객체에 오류로 액세스하는 것을 효과적으로 방지할 수 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 계산 객체의 동적인 공간 관리를 용이하게 수행할 수가 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 프로그램 모듈이 실행되는 네트워크 노드에 관한 배치 정보를 해당 프로그램 모듈의 밖에서 기술하기 때문에 프로그램 모듈의 기술을 수정함이 없이 배치 정보를 변경하는 것만으로 프로그램 모듈이 실행되는 네트워크 노드를 동적으로 변경할 수 있다. 즉, 계산 객체 공간을 형성한 후에 그 공간구성을 동적으로 변경할 수 있다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 애플리케이션 프로그램은 프로그램 모듈의 실행시의 참조 관계를 실행시의 네트워크 배치에 의존하지 않고 기술할 수 있다.
즉, 프로그램 모듈의 실행시의 배치 정보를 프로그램 모듈의 밖에서 기술하기 때문에 사용자는 프로그램 모듈 상의 계산 객체의 참조 관계만을 의식하고 프로그램 모듈을 기술하면 된다.
또한 본 발명의 병렬 분산처리 시스템 및 그 방법에 의하면, 복수의 계산기장지 등으로 구성된 계산기 네트워크상 등에서 재귀적(reflective)이고 또한 다단계의 처리에 의해 애플리케이션 레벨의 참조 정보를 전개하고 시스템 참조 정보를 얻고 있으므로, 복잡한 참조 정보에 대해서도 적절해 대응할 수가 있다. 또한 참조 정보를 그룹화한 상태로 변환하거나 그 밖의 참조 해결기로 해결을 의뢰하거나, 혹은 해결에 관한 부가 정보를 부여함으로써 해결 동작을 제어하거나 할 수가 있으므로 어떠한 형태의 참조 정보에 대하여도 적절히 시스템 참조 정보를 얻을 수가 있다. 그 결과 계산기 네트워크의 영역이 어떠한 형태라 해도 본 발명은 그 참조정보의 해결을 이룰 수가 있고, 보다 고도의 분산처리 시스템, 분산처리 환경의 제공에 기여할 수가 있다.
이하에서 본 발명의 실시예에 관한 병렬 분산처리 시스템에 관하여 설명한다.
본 실시예에 관한 병렬 분산처리 시스템은, 예를 들면 ISM 등의 실행 환경을 지원하고 기능 모듈 상의 대화성 및 모듈 상의 구성의 유연성을 높이고 광범위한 네트워크에서 멀티미디어 병행 처리를 가능하게 하는 것이다.
제1 실시예
도 1은 본 실시예에 관한 병렬 분산처리 시스템(1)의 개념도이다.
도 1에 의하면 병렬 분산처리 시스템(1)은 네트워크 노드(3, 4)가네트워크(2)를 통해 통신을 수행하고 일정한 처리를 수행한다. 네트워크 노드(3, 4)로서 예를 들면, 호스트 컴퓨터 등이 이용된다. 네트워크 노드(3)에서는 관리 프로세스(30) 및 계산 객체(300, 301, 302) 등의 프로그램이 동작한다. 여기서 애플리케이션 프로그램을 실행하는 계산 객체는 그 계산 객체의 동작을 규정하는 함수(function), 변수, 클래스(class), 방식(method) 등의 정의로 이루어지고, 클래스를 기본으로 생성되는 인스턴스(instance)의 동작은 함수와 방식의 정의 중에 기술된다.
관리 프로세스(30)는 후술하는 바와 같이 로컬 참조 테이블(local reference table, 306) 및 원격 참조 테이블(remote reference table, 310)을 가진다.
로컬 참조 테이블(306)은 기능 식별코드와 그 기능이 기억된 어드레스와의 대응을 나타내는 테이블이다. 로컬 참조 테이블(306)은 네트워크 노드(4)로부터 네트워크 노드(3)로의 기능 호출을 수행할 때 네트워크 노드(4)에서 입력한 메시지에 포함되는 기능 식별코드이므로, 호출된 기능의 계산 객체(300∼302)에서의 어드레스를 얻기 위해 이용된다.
원격 참조 테이블(310)은 기능 식별자로서의 기능 식별코드가 기억된 어드레스와 기능 식별코드와의 대응을 나타내는 테이블이다. 원격 참조 테이블(310)은 네트워크 노드(3)로부터 네트워크 노드(4)로의 기능 호출을 수행할 때, 계산 객체(300∼302)에서 호출된 어드레스이므로 그 기능의 기능 식별코드를 얻기 위해 이용된다.
또한, 네트워크 노드(4)에서는 관리 프로세스(40) 및 계산 객체(400, 401,402) 등의 프로그램이 동작한다.
네트워크 노드(4)의 계산 객체(400∼402), 로컬 참조 테이블(406) 및 원격 참조 테이블(410)은 그 의미와 기능이 네트워크 노도(3)의 계산 객체(300∼302), 로컬 참조 테이블(306) 및 원격 참조 테이블(310)과 동일하다.
도 1에 표시된 병렬 분산처리 시스템(1)에서는 계산 객체의 배치, 즉 어떤 계산 객체를 어떤 네트워크 노드 혹은 프로세서에 배치하였는가는 기본적으로 시스템의 셋업 시에 한 번만 해석(지정)된다. 따라서, 시스템 실행시 각 계산 객체는 다른 계산 객체의 기능을 호출할 때 수신측의 계산 객체의 소재는 이미 알고 있다. 또한 계산 객체의 배치는 시스템의 실행시 지정되는 것도 있다.
그리고, 네트워크(2)에는 네트워크 노드(3, 4)에 추가로 다른 네트워크 노드가 접속되어도 좋다.
이하, 객체 지향의 계산에 관한 방식 호출의 처리, 즉 네트워크 노드(3)에서 계산 객체(302)의 처리를 수행하고 있을 때, 네트워크 노드(4)의 계산 객체(402)에 구비된 기능, 구체적으로, 방식을 호출하는 경우를 예시하고 병렬 분산처리 시스템(1)의 처리에 관하여 설명한다.
객체 지향의 계산에 관한 방식 호출 저리에서는 계산 객체 내의 방식이 예를들어, 함수 등의 기능이다.
[로컬 참조 테이블 및 원격 참조 테이블의 작성]
병렬 분산처리 시스템(1)에서는, 예를 들면 도 3에 표시된 네트워크 노드(3)에 관하여 계산 객체(302)가 새로 추가(등록)되고, 계산 객체(302)가 도 2에 표시된 네트워크 노드(4)의 계산 객체(402)의 기능을 호출하고 있는 경우에는 이하에 나타내는 바와 같이 도 3에 표시된 관리 프로세스(30)의 원격 참조 테이블(310) 및 도 2에 표시된 관리 프로세스(40)의 로컬 참조 테이블(400)을 작성 또는 갱신한다.
먼저, 로컬 참조 테이블의 작성에 관하여 설명한다.
네트워크 노드(3, 4)는 예를 들면, 시스템의 셋업 시에 그것들의 계산 객체로 규정된 클래스(class), 방식, 인스턴스 및 함수에 관하여 도 2, 도 3에 표시된 로컬 참조 테이블(406, 306)을 작성한다.
여기에서 로컬 참조 테이블(306)은 로컬 클래스 테이블(303), 로컬 함수 테이블(304), 로컬 인스턴스 테이블(305) 및 로컬 방식 테이블(330)로 구성된다.
또한 로컬 참조 테이블(406)은 로컬 클래스 테이블(403), 로컬 함수 테이블(404), 로컬 인스턴스 테이블(405) 및 로컬 방식 테이블(430)로 구성된다.
여기에서 로컬 방식 테이블(334, 434)은 방식의 「방식 ID」와 방식의 실행어드레스인 「방식 어드레스」와의 대응을 나타낸다.
또한 네트워크 노드(3, 4)를 포함하는 네트워크 노드 상호간의 방식 호출 관계는 시스템의 셋업 시 및 계산 객체(302)가 새로 추가될 때 미리 해석되고, 원격 참조 테이블(310) 및 로컬 참조 테이블(406)을 작성하는 단계에서 방식 및 계산 객체(402)의 클래스에는 각각 「방식 ID(기능 식별코드)」 및 「클래스 ID」가 자동적으로 할당된다.
다음으로, 도 1에 나타낸 계산 객체(302)가 계산 객체(402)에 구비되어 있는 방식을 호출하는 경우에 도 3에 표시된 바와 같이 네트워크 노드(3)는 계산객체(302)의 디스페쳐(dispatcher; 311)이므로 계산 객체(402)의 클래스명 및 방식명을 이용하여 네트워크 노드(4)에 질의(312)를 출력한다.
네트워크 노드(4)는 이 질의(312)를 접수하면 로컬 참조 테이블(406)을 참조하고 계산 객체(402)의 클래스 및 해당하는 방식에 할당된 「클래스ID」 및 「방식ID」를 도 3에 표시된 응답 메시지(315)에 포함시키고, 도 1에 표시된 네트위크(2)를 통해 네트워크 노드(3)로 출력한다. 응답 메시지(315)는 네트워크 노드(3)에서 메시지 큐(queue; 대기 행렬)(314, 313)를 통해서 디스페쳐(311)로 출력된다.
다음으로, 디스페쳐(311)는 등록 처리를 수행하고, 응답 메시지(314)에 포함된 「클래스 ID」 및 「방식 ID」를 이용하여 원격 클래스 테이블(307) 및 원격 방식 테이블(331)을 작성한다.
여기에서, 원격 클래스 테이블(307), 원격 함수 테이블(308), 원격 인스턴스테이블(309) 및 원격 방식 테이블(131)에 의해 원격 참조 테이블(310)이 구성된다.
로컬 참조 테이블(306) 및 원격 참조 테이블(310)의 작성은 네트워크 노드(3)와 네트워크 노드(4)가 네트워크(2)를 통해 접속된 때 초기화 과정으로서 수행되거나 처리 실행시 네트워크 노드(3, 4)에 새로운 계산 객체가 동적으로 다운로드(추가 등록)된 때 오직 한 번 자동적으로 수행된다.
[기능 호출 처리]
이하에서, 전술한 바와 같이 작성된 원격 참조 테이블(310) 및 로컬 참조 테이블(406)을 이용하여 네트워크 노드(3)로부터 네트워크 노드(4)로의 기능 호출을수행하는 경우에 대하여 도 2∼도 6을 참조하면서 설명한다. 여기에서는 송신측의 계산 객체가 기능 호출을 실행한 후에 수신측의 계산 객체로부터 해당 기능의 실행결과를 입력할 때까지 그 처리를 정지하는, 소위 완전 동기 메시지 송신의 경우에 관하여 설명한다.
예를 들면, 도 4에 표시된 네트워크 노드(3)의 계산 객체(302)에서 처리가 이루어지고 있을 때, 네트워크 노드(4)에 구비되어 있는 계산 객체(402)의 방식을 호출하면(도 6a에 표시된 「Al」), 계산 객체(302)의 디스페쳐(311)에서 메시지에 포함된 인수의 데이터 구조가 논리 형식의 데이터 표현으로 변환된다(도 6a에 표시된 「Bl」). 해방 변환은 변환 프로램을 이용하여, 계산 객체(302)에 있는 로컬 표현 데이터에 따른 데이터 구조를 해석하고, 논리 형식의 데이터 표현으로 변환하여 이루어진다. 이 때, 논리 형식의 데이터 표현은 단순한 데이터를 조합하는 것으로서, 목록 구조 등의 복잡한 데이터 구조를 표현할 수 있는 기술 구문을 채용하고 있다. 따라서 인수로서 다양한 데이터 구조를 이용할 수가 있다. 따라서 기능 호출의 대상이 될 수 있는 방식이 함수 종류의 범위를 확대할 수 있다.
다음으로, 디스페쳐(311)에서 방식 및 계산 객체(402)의 클래스 어드레스가 각각 원격 방식 테이블(331) 및 원격 인스턴스 테이블(309)로 출력된다. 이에 따라 기능 식별코드의 참조가 이루어지고 이것들의 어드레스에 대응한 「클래스 ID」및 「방식 ID」가 검색된다(도 6a에 표시된 「B2」). 이렇게 검색된 「클래스 ID」 및 「방식 ID」 는 디스페쳐(311)에서 송신 큐(313)에 등록된다(도 6a에 표시된 「B3」).
다음으로, 송신 큐(313)에 등록된 「클래스 ID」 및 「방식 ID」가 관리 프로세스(30)의 송신 큐(314)에 등록된다(도 6a에 표시된 「Cl」). 관리 프로세스(30)에서 메시지(320)의 메시지 헤더가 「방식 ID」 및 「클래스 ID」를 이용하여 작성되고 이 메시지 헤더를 포함하는 메시지가 도 5에 표시된 네트워크 노드(4)의 관리 프로세스(40)의 수신 큐(414)로 네트워크를 통해 송신된다(도 6a에 표시된 「C2」). 네트워크 노드(3)는 네트워크 노드(4)로부터 방식의 처리 결과를 입력하기까지 실행 중인 프로그램 처리를 정지한다.
이와 같이, 메시지 큐(314, 414)를 이용함으로써, 메시지는 큐에 축적된 후 해당 방식(기능)에 의해 처리된다. 그러므로 이러한 큐에 의해 어떤 특정의 계산 객체에 대한 기능 호출 요구가 경합하여도 호출 요구가 손상되지 않고 이 순번대로 또는 우선 순위에 따라 처리된다.
네트워크 노드(4)의 관리 프로세스(40)는 네트워크 노드(3)로부터 메세지를 수신하면 (도 6b에 표시된 「Dl」) 그 메시지를 도 5에 표시된 수신 큐(414)에 등록한다 (도 6b에 표시된 「D2」). 다음으로 관리 프로세스(40)로부터 디스페쳐(411)에 신호가 출력된다(도 6b에 표시된 「D3」, 「E1」).
다음으로, 디스페쳐(411)는 「클래스 ID」를 키로 하고, 도 5에 표시된 로컬인스턴스 테이블(405)을 참조하고 소정의 인스턴스를 호출한다 (도 6b에 표시된 「E2」). 디스페쳐(411)는 소정의 인스턴스가 호출 가능한 상태로 될 때까지 다음의 처리를 실행한다 (도 6b에 표시된 「E3」).
이 때 메시지 큐(414)에 설치된 통신 관리자는 메시지(320)에 포함되는 「클래스 ID」를 키로 하고 로컬 인스턴스 테이블(405)을 참조하여, 계산 객체(402)의 인스틴스 어드레스를 얻는다. 이렇게 해서 계산 객체(402)의 인스턴스가 결정된 다. 여기에서 인스턴스라 함은 클래스의 처리를 실제로 수행할 때의 상태를 나타내는 것을 말한다.
계산 객제(402)에서의 인스턴스의 생성은 도 5에 표시된 바와 같이 로컬 클래스 테이블(403)에서 계산 객체(402)와 대응하여 기억된 「인스턴스 생성 함수의 어드레스」 를 참조하고 이 「인스턴스 생성 함수의 어드레스」 에 있는 인스턴스 생성 함수(421)를 실행하여, 이것에 의해 생성한 인스턴스를 로컬 인스턴스 테이블(405)에 등록하여 수행된다.
다음으로, 디스페쳐(411)는 메시지의 데이터 구조를 원래의 계산 객체(302)에서 이용되고 있는 데이터 구조와 동일한 것으로 변환한다 (도 6b에 표시된 「E4」).
다음으로, 수신한 메시지(320)에 포함된 「방식 ID」 및 「클래스 ID」에 기초하여 로컬 방식 테이블(430)을 이용하여 호출된 기능에 관한 방식의 「방식 어드레스」를 얻는다. 이 때 「방식 ID」 및 「클래스 ID」는 수치로 표시되므로 그 조합은 고속으로 수행된다.
네트워크 노드(4)에서는 디스페쳐(411)에서 얻어진 방식의 「방식 어드레스」, 통신 관리자에 의해 결정된 인스턴스 및 디스페쳐(411)의 변환에 의해 얻어진 로컬 표현 데이터(420)를 이용하여 계산 객체(402)에 관한 처리가 수행된다 (도 6b에 표시된 「F」).
이 처리 결과는 반환값으로서, 도 5b에 표시된 「E5」, 「D4」, 「D5」및 도 6a에 표시된 「C3」, 「C4」, 「C5」, 「B4」, 「B5」및 「A2」의 처리를 수행하는 것으로, 도 3에 표시된 송신측의 네트워크 노드(3)의 계산 객체(302)에 대한 처리를 위해 전송된다. 이것에 의해 기능 호출 처리가 완료한다.
여기에서 「E5」는 반환값(return value)의 데이터 표현의 변환, 「D4」는 송신 큐로의 반환값의 등록, 「D5」 는 메시지의 송신, 「C3」은 메시지의 수신, 「C4」는 수신 큐로의 등록, 「C5」는 계산 객체(302)로의 신호 송신, 「B4」는 신호수신, 「B5」는 반환값의 데이터 표현의 변환 및 「A2」는 다음 처리에 대한 계속 실행을 의미한다.
네트워크 노드(3)는 네트워크 노드(4)로부터 방식의 처리 결과를 입력하면 정지하고 있던 프로그램의 처리를 재개한다.
이상 설명한 바와 같이 병렬 분산처리 시스템(1)에 의하면, 방식 등의 기능 호출은 계산 객체 상호간의 기능 호출 관계 및 호출되는 기능에 관한 수치로 표시되는 기능 식별코드 등의 관계를 표시한 로컬 참조 테이블 및 원격 참조 테이블을 이용하여 수행되기 때문에 호출된 기능의 실행부 어드레스를 고속으로 특정할 수가있다.
또한 병렬 분산처리 시스템(1)에 의하면 기능 호출이 수행되는 계산 객체 및 방식의 어드레스에서 시스템이 자동적으로 고유의 기능 식별코드를 보여한다. 따라서 사용자(프로그레머)는 계산 객체 및 방식의 어드레스가 경합하는 것을 피하기 위하여 많은 노력을 기울일 필요가 없고 사용자의 부담이 줄어는다.
또한 병렬 분산처리 시스템(1)에 의하면 기능 호출의 인수와 처리 결과(반송치)의 형식(Format)을 컴파일시 정의해 놓을 필요가 없으므로 기능 호출의 유연성을 높일 수가 있다.
그런데 프로세서 등의 시스템 자원을 매우 효율적으로 사용하기 위하여 사용자(프로그래머)가 의식하지 않는 수준에서 프로그램을 병행 분산 실행 단위로 상세하게 자동으로 분할하는 프로그래밍 시스템이 존재한다. 이것에 대하여 병렬 분산처리 시스템(1)은 사용자가 계산 객체를 커다란 기능 단위로 병행 분산 모듈로 분할하고, 그 병행 분산 모듈의 배치를 명시적으로 지정할 수 있고, 대형 애플리케이션 시스템의 구축을 가능하게 한다.
다음으로, 네트워크 노드(3)로부터 네트워크 노드(4)로의 기능 호출을 수행하는 경우에 관한 다른 예를 설명한다. 여기서는 송신측의 계산 객체가 기능 호출을 수행한 후 수신측의 계산 객체로부터 해당 기능의 실행 결과를 입력하지 않고, 소위 비동기 메시지 송신하는 경우에 관하여 설명한다.
도 7a 및 도 7b는 비동기 메시지 송신하는 경우의 순서도이다.
즉, 도 4에 표시된 네트워크 노드(3)의 계산 객체(302)에서 처리가 이루어지고 있을 때 네트워크 노드(4)에 구비되어 있는 계산 객체(402)의 방식을 비동기 메시지 송신으로 호출하면 (도 7a에 표시된 「G1」), 네트워크 노드(3)의 계산 객체(302), 디스페쳐(311) 및 관리 프로세스(30)에서 도 7a에 표시된 「H1」, 「H2」, 「H3」, 「I1」, 「I2」 및 「G2」의 처리가 실행된다.
도 7a에 표시된 「H1」, 「H2」, 「H3」, 「I1」 및 「I2」의 처리는 앞에서설명한 도 6a에 표시된 「B1」, 「B2」, 「B3」, 「C1」 및 「C2」의 처리에 대응한다.
단, 도 7a 및 도 7b에 표시된 예에서 계산 객체(302)는 호출을 수행한 네트워크 노드(4)의 계산 객체(402)에 대한 기능의 처리 결과를 기다리지 않고 처리 「I2」의 후에 다음 처리 「G2」를 실행한다.
한편, 네트워크 노드(4)에서는 관리 프로세스(40), 디스페쳐(411) 및 계산 객체(402)에서 도 7b에 표시된 「J1」, 「J2」, 「J3」, 「K1」, 「K2」, 「K3」, 「K4」및 「L」의 처리를 실행한다. 여기에서, 도 7b에 표시된 「J1」, 「J2」, 「J3」, 「K1」, 「K2」, 「K3」, 「K4」 및 「L」의 처리는 도 6b에 표시된 「D1」, 「D2」, 「D3」, 「E1」, 「E2」, 「E3」, 「E4」및 「F」의 처리와 기본적으로는 동일하나, 「F」 의 처리 결과는 네트워크 노드(3)로는 송신되지 않는다.
다음으로, 위에서 설명한 본 실시예에 관한 병렬 분산처리 시스템의 개념에 관하여 정리한다.
도 8에 나타낸 바와 같이, 네트워크 노드(98)는 송신측 객체(101a)의 방식(101c)에서 네트워크 노드(99)의 수신측 객체(108)의 방식(105a)의 원격 호출(참조)을 수행하고 있다. 이 때 원격 인스턴스 참조와 원격 방식 참조가 수행된다. 즉, 인스턴스와 방식 쌍방을 특정(特定)함으로써 호출 대상의 실체가 특정된다.
또한 도 8에서는 인스턴스의 특정에 관하여 나타내고 있다.
즉, 수신측의 객체(101a)의 인스턴스(101b)를 키(식별자)로 하고 원격 인스턴스 참조 테이블(102)이 참조되고 원격 인스턴스 ID 「#0l23」 이 얻어진다. 또한원격 인스턴스 참조 테이블(102)의 프로세스 참조에 기술된 포인터에 의해 프로세스 참조 테이블(107)을 참조하여, 수신측의 방식이 속하는 프로세스ID 「#0055」 및 해당 프로세스가 동작하는 네트워크 노드(99)의 네트워크 어드레스 「192. 168. 1. 1」이 얻어진다. 또한 인수(101d)에 기술된 포인터에 의해 인수(101c1)가 지시되고, 이 인수(101cl)의 데이터 구조를 논리 형식으로 변환한 인수(101c2)가 얻어진다.
그리고, 원격 인스턴스 ID 「#0123」, 프로세스ID 「#0055」 및 인수(101c2)를 포함하는 메시지가 네트워크 어드레스 「192. 168. 1.1」 을 기초로 하여 네트워크를 통해 네트워크 노드(99)로 전송된다.
네트워크 노드(99)는 이 메시지를 수신하면 프로세스ID 「#0055」 에 의해 로컬 인스턴스 참조 테이블(103)을 특정화하고, 원격 인스턴스 ID 「#0l23」 을 키로하여 수신측 개체(108)의 로컬 인스턴스 ID를 얻는다. 이 로컬 인스턴스 ID에 의해 수신측 객체(108)가 특정된다.
위에서 설명한 바와 같은 방법으로 수신측 객체(101a)의 방식(101c)을 키로하고 원격 방식 참조 테이블 및 로컬 방식 참조 테이블이 참조되고, 로컬 방식 ID가 얻어진다. 이 로컬 방식 ID에 의해 수신측 객체(108)의 방식(105a)이 특정된다. 이 방식(105a)에 기술된 포인터에 의해 방식 본체(106)가 지시된다.
한편, 네트워크를 통해 네트워크 노드(99)가 입력한 인수(101c2)는 그 데이터 구조가 논리 형식으로부터 역변환되고, 인수(101c1)로 된다. 이 인수(101c1)는 방식(105a)에 대응한 인수(105b)에 의해 포인터로 지시된다.
그리고 방식(105a)이 방식 본체(106)로 주어지고, 방식 본체(106)가 동작한다.
본 발명은 상술한 실시예에 한정되지 않는다. 예를 들면, 상술한 실시예에서는 본 발명을 객체 지향 프로그래밍에 관한 방식의 호출에 적용한 경우에 관하여 예시하였으나, 본 발명은 예를 들면 원격 함수 호출에도 적용될 수 있다. 원격 함수 호출은 원격의 애플리케이션 등의 모듈에 존재하는 함수(기능)를 호출하는 것이다.
또한 본 발명은 어떤 계산 객체의 내부 변수를 분산 모듈(계산 객체)그룹 간의 공유 변수(대역 변수)로 사용하는 경우에도 적용될 수 있다. 이 경우에는 공유변수로 되는 변수를 내포하는 계산 객체의 기능으로서 공유 변수 값의 판독, 변경등의 기능을 프로그램한다. 이 때 공유 변수로의 액세스는 모두 그 변수를 내포하는 계산 객체로의 기능 호출에 의해 수행되므로 자연히 공유 변수로의 액세스에 대한 배타적인 제어가 실현된다. 즉, 공유 변수는 인스턴스 중에 포함되고, 해당 공유 변수의 판독 및 갱신 조작을 하는 경유 해당 인스턴스의 기능을 호출할 필요가 있다. 이에 따라 인스턴스는 공유 변수 그 자체로서 동작한다.
이 때 공유 변수를 계산 객체로 하고 그 공유 변수에서의 처리를 방식(함수)으로 한다.
또한 상술한 실시예에서는 송신측의 모듈로서의 네트워크 노드(3)에서 기능식별자로서 기능 식별코드가 기억된 어드레스를 예시하였으나, 기능 식별자로서는 문자 등으로 나타낸 기능명 혹은 송신측 모듈에서만 유효한 번호를 이용하면 다시고속의 기능 호출 처리를 수행할 수가 있다.
또한, 네트워크 노드(3, 4) 상호간에 입력되는 메시지를 축적하는 큐는 입력순으로 출력하는 것 이외에 소정의 우선 순위에 기초하여 메시지의 출력 순서를 결정하도록 해도 좋다. 즉, 기능 호출의 우선 순위를 부여해도 좋다. 이 우선 순위는 미리 시스템으로 설정되어 있어도 좋고, 메시지에 속성 정보로 포함되어 있어도 좋다.
또한 메시지 송신측에서, 송출 시각을 메시지에 포함하고, 수신측에서 그 시각에 기초하여 메시지로부터 특정 기능의 실행 시각을 결정하도록 해도 좋다. 또한 메시지를 수신하는 큐는 각 인스턴스마다 존재해도 좋고, 복수의 인스턴스에서 공유하도록 해도 좋다.
또한 본 발명은 네트워크 노드(3)가 메시지를 네트워크 노트(4)로 출력한 후에 네트워크 노드(4)로부터의 처리 결과를 필요로 할 때까지 처리를 계속 수행하고, 필요로 한 시점에서 처리 결과를 아직 받지 못한 경우에만 실행 중인 프로그램 처리를 정지하도록 해도 좋다.
네트워크 노드(4)로부터 이미 전송된 메시지에 대한 처리 결과가 설정 시간을 경과하여도 얻지 못하는 경우에 네트워크 노드(3)는 자동으로 에러 처리 프로그램을 기동하도록 해도 좋다.
또한 본 발명은 네트워크 노드(3)가 메시지를 네트워의 노드(4)로 출력한 후 네트워크 노드(4)로부터의 처리 결과를 요구하지 않도록 해도 좋다.
제2 실시예
도 9는 본 실시예에 관한 병렬 분산처리 시스템(1)의 개념도이다.
도 9에 나타낸 바와 같이 병렬 분산처리 시스템(1)은 네트워크 노드(3, 4, 5)가 네트워크(2)를 통해 상호 통신을 수행하고, 일정한 처리를 수행한다. 네트워크 노드(3, 4, 5)로서 예를 들면, 개인용 컴퓨터나 워크스테이션 등이 이용된다. 또한 네트워크(2)로서 예를 들면, 이서네트(Ethernet)와 CATV 등이 이용된다.
네트워크 노드(3, 4, 5)에는 예를 들면, 프로그램을 실행하는 함수, 인스턴스, 클레스, 방식 및 전역(global) 공유 변수 등의 계산 객체가 존재한다. 여기에서 전역 공유 변수는 전역 공유 변수 클래스의 인스턴스로서 실현된다.
예를 들면, 네트워크 노드(3)에는 계산 객체(6∼9)가 존재한다.
[공간 관리 방식]
네트워크 노드(3, 4, 5)에는 동일 네트워크 노드 내의 복수의 계산 객체로 구성되는 부분 공간이 존재한다. 예를 들면 네트워크 노드(3) 내에서는 계산 객체(6, 7)에 의해 부분 공간(10)이 구성되고 계산 객체(8, 9)에 의해 부분 공간(11)이 구성된다. 또한 네트워크 노드(3) 내에는 부분 공간(11)도 존재한다. 여기에서 부분 공간은 네트워크 노드에 마련된 계산 모듈인 관리 프로세스에 의해 실행되는 프로세스이다.
또한, 다른 네트워크 노드에 존재하는 부분 공간 및/또는 계산 객체에 의해 계산 공간이 구성된다. 본 실시예에서는 부분 공간(10, 12, 14)에 의해 계산 공간(15)이 구성되고 부분 공간(11, 13)에 의해 계산 공간(16)이 구성된다. 또한, 계산 공간은 동일한 네트워크 노드에 존재하는 부분 공간 및/또는 계산 객체를 포함하도록 구성해도 좋다. 여기에서 계산 공간이라 함은 해당 공간 내에 존재하는 계산 객체 및 부분 공간의 배치에 관한 정보가 명기되어 있는 영역이다.
또한 병렬 분산처리 시스템(1)에서 계산 객체 및 부분 공간의 배치는 미리 주어진 정보와 부분 공간상호간의 질의 등에 의해 결정된다. 이 계산 객체 및 부분 공간의 배치는 공간 관리부(17, 18)에 의해 관리된다.
병렬 분산처리 시스템(1)에서 도 9에 나타낸 바와 같이 계산 공간(15)에 대응하여 네트워크 노드(4)에 공간 관리부(17)가 구비되어 있고, 계산 공간(16)에 대응하여 네트워크 노드(4)에 공간 관리부(18)가 구비되어 있다.
또한 공간 관리부는 각 부분 공간마다 설치되어도 좋고, 각 계산 객체마다 설치되어도 좋다.
또한 병렬 분산처리 시스템(1)에서 각 부분 공간마다에 관리 프로세스가 있고, 이 관리 프로세스에 의해 참조 정보가 관리되고 있다. 여기에서 참조 정보에 의해 표현되는 공간을 「참조 공간」이라고 부른다. API(애플리케이션 프로그램 인터페이스)는 이 참조 공간상에서 프로세스 및 계산 객체를 식별·관리한다. 이 참조 공간에 대하여 참조되는 실제의 존재 공간을 「실공간」이라고 부른다.
여기에서, 「참조」라 함은 이러한 프로세스 및 계산 객체를 논리적으로 지시하는 것을 의미한다.
본 실시예에서는 참조 공간에 다시 임의의 참조 집합을 형성하는 도메인의 개념을 도입한다. 이 도메인은 계산 공간을 복수로 분할하고 관리하는 경우에 이용된다. 도메인은 도 9에 도시되지 않았고, 도 19를 참조하여 뒤에 상세히 설명한다.
각 프로세스(부분 공간) 및 계산 객체는 복수의 도메인에 속하는 것이 용납된다. 도메인은 계층적인 구조를 가질 수 있다. 이 경우 포함되는 도메인을 서브도메인, 포함하는 도메인을 슈퍼도메인이라고 부른다. 도메인의 도입에 의해 광범위한 네트워크에서 자유로운 공간(서비스 공간, 애플리케이션 공간, 개인 공간, 통신 등)을 형성할 수가 있다.
본 실시예에서는 다시 각 참조에 명칭을 부여하고 명칭에 의한 프로세스, 계산 객체 및 도메인의 식별 공간을 제공한다. 이 식별 공간을 「명칭 공간」이라고부른다. API 상에서는 이 명칭 공간상에서도 프로세스, 계산 객체 및 도메인을 식별·관리할 수 있다. 또한 명칭의 일의성은 각 명칭 공간 중에서만 보증된다.
따라서, 다른 도메인에 속하는 계산 객체 상호간에 명칭의 충돌이 허용되고, 각 도메인에서 사용 가능한 명칭의 자유도가 높아진다.
이하, 본 실시예에 관한 병렬 분산처리 시스템에서 사용되는 참조 정의에 관하여 설명한다.
도 10은 본 실시예에 관한 병렬 분산처리 시스템(31)의 구성도이다.
도 10에 의하면 병렬 분산처리 시스템(31)은 네트워크(32)를 통해 네트워크 노드(33∼35)에 접속하고 있다.
네트워크 노드(33)에는 관리 프로세스(38)에 의해 실행되는 프로세스(부분공간)(36)가 있다.
관리 프로세스(38)는 참조 유지부(39) 및 참조 생성부(40)를 가진다. 여기에서 참조 유지부(39)는 프로세스, 계산 객체 및 도메인을 식별하고 소재를 특정하여제어·관리하기 위한 참조 정보를 기억한다.
이하에 개시되는 예는 네트워크 상에 분산하여 배치한 함수를 참조하는 경우에 대하여 도시하고, 참조 정보는 도 11에 나타낸 바와 같이 4개의 참조 테이블과 3개의 검색용 해시 테이블(hash table)로 구성된다. 참조 테이블에는 도 12에 표시된 로컬 함수 참조 테이블(50), 도 13에 표시된 원격 함수 참조 테이블(51), 도 14에 표시된 프로세스 참조 테이블(52) 및 도 15에 표시된 도메인 참조 테이블(53)이 있다. 또한 도 12, 도 13에는 함수 이외에 클래스, 인스턴스, 방식에 관한 참조 테이블도 기술되어 있다.
또한 검색용 해시 테이블은 성별과 식별자 사이의 해시 테이블이고, 도 16에 표시된 도메인 명칭 해시 테이블(54), 도 17에 표시된 함수/프로세스 명칭 해시 테이블(55) 및 도 18에 표시된 원격 함수 ID 해시 테이블(remote function ID hash table, 56)이 있다.
또한 네트워크 노드(34)는 관리 프로세스(41)에 의해 실행되는 프로세스(부분 공간)(37)가 있고, 개념적으로 네트워크 노드(33)와 동일하다.
[로컬 함수 참조 테이블]
도 12는 로컬 함수 참조 테이블(50)을 설명하기 위한 도면이다.
로컬 함수 참조 테이블(50)은 부분 공간(프로세스) 내에 존재하는 함수의 로컬 참조용 테이블이다.
도 12에 표시된 바와 같이 로컬 함수 참조 테이블(50)은 프린트 명칭(61), 로컬 함수 ID(62), 도메인 참조 목록(domain reference list, 63), 원격 함수ID(64) 및 도메인 내 명칭(65)인 다섯 개의 필드를 가진다.
프린트 명칭(61)은 프로그램 소스 코드 상에서의 함수명이고, 예를 들면 C++로 실장된 클래스이면 그 클래스명이 입력된다.
로컬 함수 ID(62)는 시스템 상에서 사용되는 네트워크 노드 내에서의 함수 식별자이고, 이 함수 식별자를 이용하여 실질적으로 액세스가 이루어진다.
도메인 참조 목록(63)은 그 함수가 소속 도메인 참조 테이블로의 포인터 목록이다. 도매인 참조 목록(63)은 도 12에서와 같이 목록 구조의 데이터로 표시된다. 이것은 해당 함수가 복수의 도메인에 속하는 경우를 표현하기 위해서이다.
원격 함수 ID(64)은 그 함수의 외부 식별자이고, 그 외부 식별자를 이용하여 네트워크 노드의 외부로부터 함수를 지정하여 호출을 수행한다.
도메인 내 명칭(65)은 명칭 공간상의 도메인 내에서의 명칭이고 이 명칭을 이용하여 함수의 지정 호출이 수행된다.
[원격 함수 참조 테이블]
도 13은 원격 함수 참조 테이블(51)을 설명하기 위한 도면이다.
원격 함수 참조 테이블(51)은 부분 공간(프로세스) 내에 존재하는 함수의 원격 참조용 테이블이다.
도 13에서와 같이 원격 함수 참조 테이블(51)은 프린트 명칭(71), 프로세스 참조(72), 원격 함수 ID(73), 도메인 참조 목록(74) 및 도메인 내 명칭(75)인 다섯개의 필드를 가진다.
프린트 명칭(71), 원격 함수 ID(73), 도메인 참조 목록(74) 및 도메인 내 명칭(75)의 의미는 앞에서 설명한 로컬 함수 참조 테이블(50)의 경우와 같다.
프로세스 참조(72)는 그 원격 함수가 존재하는 프로세스의 소재에 관한 정보이고, 예를 들면 프로세스 참조 테이블(52)로의 포인터를 나타낸다.
[프로세스 참조 테이블]
도 14는 프로세스 참조 테이블(52)을 설명하기 위한 도면이다.
프로세스 참조 테이블(52)은 부분 공간(프로세스)의 소재를 나타내는 정보를 저장하는 테이블이다.
도 14에서와 같이 프로세스 참조 테이블(52)은 네트워크 노드 참조(81), 네트워크 포트 ID(82), 도메인 참조 목록(83) 및 도메인 내 명칭(84)인 네 개의 필드를 가진다.
여기에서 도메인 참조 목록(83) 및 도메인 내 명칭(84)의 의미는 전술한 바와 같다.
네트워크 노드 참조(81)는 그 프로세스가 존재하는 네트워크 노드에 관한 참조 정보를 나타내고, 네트워크 노드 명칭(85), 참조 목록(88), 통신 매체(86) 및 네트워크 어드레스(87)인 세 개의 필드를 가진다.
네트워크 노드 명칭(85)은 명칭 공간상에서의 네트워크 노드의 명칭을 나타내고 있다.
통신 매체(86)는 통신 수단을 나타내며 예를 들면 이서네트와 ATM등을 나타낸다.
네트워크 어드레스(87)는 통신 수단에 대응한 노드의 네트워크 어드레스를나타내며 예를 들면, IP 어드레스와 DNS(Domain Name System) 명칭 등을 나타낸다.
네트워크 포트 ID(82)는 병렬 분산처리 시스템(31) 상에서 사용되는 각 네트워크 노드 내에서의 관리 프로세스 포트번호를 표시하고, 액세스는 네트워크 어드레스와 이 관리 프로세스 포트번호로 프로세스를 특정하여 수행한다.
이것은 네트워크 노드에 복수의 통신 매체(액세스 기능)를 구비하는 것이 있기 때문이다. 예를 들면, 네트워크 노드 가운데에는 이서네트와 ATM 쌍방에 의한 액세스가 가능한 것이 있다. 통상 이와 같은 경우에 각 액세스 기능의 각자에 네트워크 어드레스가 할당되어 있다.
따라서 프로세스 참조 테이블(52)에 네트워크 명칭과 네트워크 어드레스의 대응 관계를 도 14에 표시한 바와 같이 목록 구조의 참조 목록(88)을 이용하여 표현하는 것으로, 하나의 네트워크 노드 명칭(85)과 통신 매체(86)의 종류에 상응한복수의 네트워크 어드레스(87)와의 대응 관계를 표현하고 있다.
도 14에 표시한 예에서 도메인 내 명칭(84)이 "Nl"인 프로세스는 네트워크 포트 ID(82)가 「#10000」이고, 네트워크 노드 명칭(85)은 "node A"이다. 또한 "node A"는 통신 매체(86)로서 이서네트 및 ATM을 구비하고, 각 네트워크 어드레스(87)가 「111. 111. 111. 111」및 「111. 111. 111. 112」이다.
[도메인 참조 테이블]
도 15는 도메인 참조 테이블(53)을 설명하기 위한 도면이다.
도메인 참조 테이블(53)은 도메인의 참조 정보를 관리하기 위한 테이블이다. 앞에서 설명한 바와 같이 도메인은 계층 구조를 가질 수 있고 하나의 도메인 중에다른 도메인을 포함할 수가 있다.
도 15에서와 같이 도메인 참조 테이블(53)은 도메인 요소 참조 목록(91), 슈퍼도메인 참조 목록(92) 및 도메인 명칭(93)을 가진다.
도메인 요소 참조 목록(91)은 그 도메인의 구성 요소인 함수 참조 및 서브도 메인 참조로의 포인터를 나타내고 있다.
슈퍼도메인 참조 목록(92)은 그 도메인의 슈퍼도메인(상위 도메인)으로의 포인터 목록을 나타내고 있다. 여기에서 슈퍼도메인 참조에 목록 구조를 이용한 것은 하나의 도메인이 복수의 슈퍼도메인을 가지는 것이 있기 때문이다.
도메인 명칭(93)은 명칭 공간상의 도메인명을 나타내고 있다.
[도메인 명칭 해시 테이블]
도 16은 도메인 명칭 해시 테이블(54)을 설명하기 위한 도면이다.
도메인 명칭 해시 테이블(54)은 고유의 명칭 공간에서 부여된 도메인 명칭에 기초하여 구축되고, 명칭에 의한 도메인 참조 테이블의 검색을 가능하게 한다.
도 16에 표시한 바와 같이, 도메인 명칭 해시 테이블(54)은 도메인 명칭(100) 및 참조 목록(101)인 두 개의 필드를 갖는다.
도메인 명칭(100)은 명칭 공간상의 도메인명을 나타낸다. 참조 목록(101)은 도메인 참조 테이블로의 포인터 목록을 나타낸다.
도 16에 나타난 예에서 도메인명 "Dl"을 키로 하고, 도메인 명칭 해시 테이블(54)을 이용하면, 도메인 참조 테이블(53)의 도메인 명칭 "Dl"의 어드레스가 얻어진다.
[함수/프로세스 명칭 해시 테이블]
도 17은 함수/프로세스 명칭 해시 테이블(55)을 설명하기 위한 도면이다.
함수/프로세스 명칭 해시 테이블(55)은 독자적인 명칭 공간에서 부여되는 도메인 내 명칭에 기초하여 구축되고, 함수 참조 테이블 및 프로세스 참조 테이블의 명칭에 의한 검색을 가능하게 한다.
도 17에 나타난 바와 같이, 함수/프로세스 명칭 해시 테이블(55)은 도메인 내 명칭(110) 및 참조 목록(111)인 두 개의 필드를 갖는다.
도메인 내 명칭(110)은 명칭 공간상의 도메인 내에서의 함수명, 원격 함수명 및 프로세스명 중 어느 하나를 표시한다.
참조 목록(111)은 로컬 함수 참조 테이블(50), 원격 함수 참조 테이블(51) 및 프로세스 참조 테이블(52) 중 어느 하나에 대한 포인터 목록이다.
예를 들면, 도 17에서는, 도메인 내 명칭(110)인 함수명 "A"를 키로 하고 함수/프로세스 명칭 해시 테이블(55)고서의 로컬 함수 명칭 해시 테이블을 이용하면 참조 목록(111)에 의해 로컬 함수 참조 테이블(50)에서의 도메인 내 명칭"A" 어드레스가 얻어진다. 함수/프로세스 명칭 해시 테이블(55)로서는 로컬 함수 명칭 해시 테이블 이외에 원격 함수 명칭 해시 테이블 및 프로세스 명칭 해시 테이블이 있다.
[원격 함수 ID 해시 테이블]
도 18은 원격 함수 ID 해시 테이블(56)을 설명하기 위한 도면이다.
원격 함수 ID 해시 테이블(56)은 원격 함수 ID에 기초하여 구축되고, 원격 함수ID에 의한 로컬 함수 참조 테이블의 검색을 가능하게 한다.
도 18에 나타난 바와 같이, 원격 함수 ID 해시 테이블(56)은 원격 함수 ID(120) 및 로컬 함수 참조(121)라는 두 개의 필드를 갖는다.
로컬 함수 참조(121)는 원격 함수 ID에 대응한 로컬 함수 참조 테이블에서의 로컬 함수 참조로의 포인터(pointer)를 나타낸다.
예를 들면, 도 18에서는 원격 함수ID(120)인 「#000001」을 키로 하고, 원격함수 ID 해시 테이블(56)을 이용하면 로컬 함수 참조 테이블(50a)에서의 원격 함수 ID(64a)가 「#000001」의 위치의 어드레스가 얻어진다.
이하, 도 10에 표시한 참조 생성부(40)에서, 상술한 참조 정보를 생성하는 방법을 구체적으로 설명한다.
먼저, 참조 정보를 생성하는 공간구성에 관하여 설명한다.
도 19는 참조 정보를 생성하는 대상이 되는 공간구성을 설명하기 위한 도면이다. 도 19에 나타난 바와 같이 각 네트워크 노드에는 고유의 명칭 공간상에 "Nl", "N2"라고 하는 명칭이 부여되어 있다. 또한 각 네트워크 노드는 이서네트, ATM의 각 인터페이스를 구비하고, 각각 독자적인 DNS 명칭을 가지고 있다.
또한 각 프로세스에 "Pl", "P2"라 하는 도메인 내 명칭을 부여하고 있다.
또한 프로세스 "Pl"상의 프린트 명칭이 "funcl", "func2" 및 "func3"의 각 함수에 "Fl", "F2" 및 "F3"라 하는 도메인 내 명칭을 부여하고, 프로세스 "P2" 상의 프린트 명칭이 "func4" 및 "func5"의 각 함수에 "F4" 및 "F5"라 하는 도메인 내명칭을 부여하고 있다.
또한 프로세스 "P1", "P2" 및 "Fl", "F2", "F3", "F4", "F5"는 도메인 "D1"에 속한다. 또한 함수 "Fl", "F2", "F3"은 도메인 "D2"에도 속한다.
여기서, 도메인 "D1", "D2"는 계산 공간 "C1"에 속한다.
도 19에 표시한 예에서는 프로세스 "P1"을 실행하는 관리 프로세스와 프로세스 "P2"를 실행하는 관리 프로세스가 있다.
그리고, 공간 구성에 관한 정보는 이러한 관리 프로세스의 프로그램 기동시 해당 정보를 인수로 지정하거나, 이러한 관리 프로세스의 프로그램 코드 내에 해당정보를 저장하거나, 혹은 해당 정보를 기술한 파일을 작성하고 이 파일로부터 읽어내는 등의 방법으로 이러한 관리 프로세스의 참조 생성부로 인가된다.
각 관리 프로세스의 참조 생성부는 이 공간 구성 정보에 기초하여 도 20에 나타난 바와 같이 도메인 참조 테이블(53)을 초기화하고(Sl), 로컬 함수 참조 테이블(50)을 초기화하고(S2), 프로세스 참조 테이블(52)을 초기화하고(S3), 원격 함수참조 테이블(51)을 초기화(S4)하는 것으로 참조 정보를 생성한다. 이하 도 20에 표시한 각 단계에 관하여 상세하게 설명한다.
[도메인 참조 테이블의 초기화(Sl)]
프로세스 "P1"의 관리 프로세스의 참조 생성부는 미리 주어진 공간 구성에 관한 정보에 기초하여 도메인 참조 테이블(53)을 생성한다.
여기서 참조 생성부는 이하에 표시하는 (1), (2)의 공간 구성 정보에 기초하여 도메인 참조 테이블(53)을 생성한다.
(1) 도메인 "Dl"이 있고 그것의 슈퍼도메인은 없다.
(2) 도메인 "D2"이 있고 그것의 슈퍼도메인은 "Dl"이다.
먼저, 프로세스 "P1"의 참조 생성부는 도 21에 표시한 바와 같이 도메인 "D1"에 관한 정보가 기술된 도메인 참조 테이블(53)을 생성함과 동시에 도메인 "Dl"에 관한 정보가 기술된 도메인 명칭 해시 테이블(54)을 생성한다.
다음에 프로세스 "Pl"의 참조 생성부는 도메인 "D2"에 관한 참조 정보를 도메인 참조 테이블(53)에 부가한다. 이 때 참조 생성부(40)는 도메인 "D2"의 상위 도메인인 도메인 "Dl"의 참조 정보를 도 21에 표시한 도메인 명칭 해시 테이블(54)에서 얻고, 이 도메인 "Dl"의 참조 정보에 기초하여 도 22에 표시한 바와 같이 도메인 참조 테이블(53)에 있는 도메인 "Dl"의 도메인 요소 참조 목록(91)에 도메인 "D2"로의 포인터를 부가한다.
[로컬 함수 참조 테이블의 초기화(S2)]
프로세스 "P1"의 관리 프로세스의 참조 생성부는 이하에 표시한 (3)∼(5)의 공간 구성 정보에 기초하여 프로세스 "P1"에서, 도 23에 표시한 로컬 함수 참조 테이블(50)을 작성한다.
(3) 프린트 명칭이 "func1", 로컬 함수 ID가 「#000001」, 도메인 내 명칭이 "F1", 소속 도메인명 "Dl", "D2"인 함수
(4) 프린트 명칭이 "func2", 로컬 함수 ID가 「#000002」, 도메인 내 명칭이"F2", 소속 도메인명 "D1", "D2"인 함수
(5) 프린트 명칭이 "func3", 로컬 함수 ID가 「#000004」, 도메인 내 명칭이 "F3", 소속 도메인명 "D1"인 함수
여기서, 도 23에 표시한 로컬 함수 참조 테이블(50)의 로컬 기능 ID(62)는각 프로세스 내에서 고유하게 부여한다.
또한 각 함수가 소속 도메인명으로부터 이미 작성한 도 21에 표시한 도메인명칭 해시 테이블(54)을 빼고, 해당하는 도메인 참조 정보를 얻고, 도 23에 표시한 바와 같이 소속 도메인의 도메인 요소 참조 목록(91)에 해당 함수의 참조 정보로의 포인터를 부가한다.
이와 동시에, 프로세스"P1"의 참조 생성부는 도 24a 및 도 24b에 나타난 바와 같이 로컬 함수 명칭 해시 테이블(55) 및 원격 함수 ID 해시 테이블(56)을, 각 함수의 정보를 첨가하여 생성한다.
또한, 프로세스 "P2"의 참조 생성부는 이하에 표시하는 (6), (7)의 공간 구성 정보에 기초하여 프로세스 "P2"에서 도 25에 표시한 로컬 함수 참조 테이블(50)을 작성함과 아울러, 도 26a 및 도 26b에 표시한 로컬 함수 명칭 해시 테이블(55) 및 원격 함수 ID 해시 테이블(56)을 생성한다.
(6) 프린트 명칭이 ""func4", 로컬 함수 ID가 「#000001」, 도메인 내 명칭이 "F4", 소속 도메인명 "D1", "D2"인 함수.
(7) 프린트 명칭이 "funcl", 로컬 함수ID가 「#000001」, 도메인 내 명칭이 "F5", 소속 도메인명 "Dl"인 함수.
[프로세스 참조 테이블의 초기화(S3)]
프로세스 "Pl"의 관리 프로세스의 참조 생성부는 이하에 표시하는 (8)∼(11)의 공간 구성 정보에 기초하여 프로세스 "P1", "P2"에서 도 27에 표시한 프로세스참조 테이블(52) 및 도메인 참조 테이블(53)과, 도 28에 표시한 프로세스 명칭 해시 테이블(55)을 작성한다.
(8) 네트워크 노드 정보가 "Nl", 포트번호가 「#10000」, 소속 도메인명이 "D1", 도메인 내의 명칭이 "Pl"인 프로세스.
(9) 네트워크 노드 정보가 "N2", 포트번호가 「#10001」, 소속 도메인명이 "D2", 도메인 내의 명칭이 "P2"인 프로세스.
(10) "N1"은 「머신명」이 「a1. dv1. co. jp」의 「통신 매체」인 이서네트, 「머신명」이 「a2. dv1. co. jp」의 「통신 매체」인 ATM.
(11) "N2"는 「머신명」이 「b1. dv1. co. jp」의 「통신 매체」인 이서네트, 「머신명」이 「b2. dvl. co. jp」의 「통신 매체」인 ATM.
[원격 함수 참조 테이블(S4)]
프로세스"Pl"의 관리 프로세스의 참조 생성부는 이하에 나타내는 (12), (13)의 공간 구성 정보에 기초하여 프로세스 "Pl"에서 도 29에 표시한 원격 함수 참조테이블(51) 및 도메인 참조 테이블(53)과 도 30에 표시한 원격 함수 명칭 해시 테이블(55)을 작성한다.
(12) 프린트 명칭이 "func4", 프로세스명이 "P2", 소속 도메인이 "Dl", "D2", 도메인 내 명칭이 "F4".
(13) 프린트 명칭이 "funcl", 프로세스명이 "P2", 소속 도메인이 "D2", 도메인 내 명칭이 "F5".
또한 프로세스 "P2"의 관리 프로세스의 참조 생성부는 이하에 나타내는 (14)∼(16)의 공간 구성 정보에 기초하여 프로세스 "P2"에서 도 31에 표시한 원격 함수참조 테이블(51) 및 도메인 참조 테이블(53)과, 도 32에 표시한 원격 함수 명칭 해시 테이블(55)을 작성한다.
(14) 프린트 명칭이 "func1", 프로세스명이 "P1", 소속 도메인이 "D1", "D2", 도메인 내 명칭이 "F1".
(15) 프린트 명칭이 "func2", 프로세스명이 "Pl", 소속 도메인이 "Dl", "D2", 도메인 내 명칭이 "F2".
(16) 프린트 명칭이 "func3", 프로세스명이 "P1", 소속 도메인이 "D1", 도메인 내 명칭이 "F3".
그런데 원격 함수ID 취득은 「함수명(도메인명과 도메인 내 명칭의 조합)」을 주면, 원격 함수 ID를 얻도록 하는 프로그램을 이용하여 이루어진다.
예를 들면, 프로세스 "P1"의 관리 프로세스가 프로세스 "P2"의 관리 프로세스에 도메인명 "D1"으로 도메인 내 명칭이 "F4"인 함수를 조회한다. 프로세스"P2"의 관리 프로세스는 도메인 명칭 해시 테이블(54) 및 함수 명칭 해시 테이블(55)을 이용하여 원하는 함수의 참조 정보를 얻는다.
그리고 프로세스 "P2"의 관리 프로세스는 해당 함수의 원격 함수 ID인 「#000100」을 프로세스 "P1"의 관리 프로세스로 반송한다.
다음에, 도 19를 예로써, 병렬 분산처리 시스템의 참조 정보를 이용한 함수의 호출 동작에 관하여 설명한다.
여기서는 도 19에 표시한 프로세스 "P1"로부터 도메인명 "D2"의 함수 "F4"를 호출하는 경우를 예시하여 설명한다.
먼저, 프로세스 "P1"의 관리 프로세스는 도메인 내 함수명 "F4"를 도메인 내명칭(110)으로 하여, 도 30에 표시한 원격 함수 명칭 해시 테이블(55)을 꺼내고, 함수 참조(RF1)에 기초하여 도 29에 표시한 원격 함수 참조 테이블(51)의 도메인 참조 목록(74)을 하나씩 조사하여 도메인명이 "D2"인 것을 검색한다. 이 때, 원격함수 참조 테이블(51)의 프로세스 참조(72)로부터 도메인 내 함수형 "F4"는 프로세스 "P2"에 존재한다는 것을 안다.
다음에, 프로세스 "P1"의 관리 프로세스는 도 27에 표시한 프로세스 참조 테이블(52)에 기초하여 외부 프로세스에 액세스하기 위한 통신 수단을 지정한다. 이 경우에는 이서네트를 지정함으로써 프로세스 함수 "F4"가 존재하는 프로세스 "P2"의 DNS 호스트명이 지정된다. 그리고 프로세스 "Pl"의 관리 프로세스는 상기 지정된 DNS 호스트명과 네트워크 포트 ID(82)를 이용하여 프로세스 "P2"의 관리 프로세스에 액세스하고, 앞에서 설명한 함수 참조(RF1)에 기초하여 도 29에 표시한 원격함수 참조 테이블(51)로부터 얻어지는 원격 기능 ID(73)인 「#000100」으로 ID 지정 호출을 수행한다.
상기 호출을 수신한 프로세스 "P2"의 관리 프로세스는 지정된 원격 기능 ID 인 「#000100」을 키로 하여 도 26a, 도 26b에 표시한 프로세스 "P2" 상의 원격 함수 ID 해시 테이블(56)을 꺼내고, 함수 참조(LF1)를 얻는다. 다음에 이 관리 프로세스는 함수 참조(LF1)를 이용하여 도 25에 표시한 로컬 함수 참조 테이블(50)로부터 함수 "F4"에 관한 로컬 기능 ID(62) 등의 원하는 참조 정보를 얻는다. 이 때 함수 "F4"에 관한 로컬 기능 ID는 「#000001」이다. 관리 프로세스는 이 로컬 기능ID에 기초하여 함수 "F4"를 호출하여 실행하고 그 실행 결과를 프로세스 "P1"의 관리 프로세스로 반송한다.
이상 설명한 바와 같이, 병렬 분산처리 시스템(31)에 의하면, 계산 공간의 개념을 도입한 것으로서, 사용자는 용도에 상응한 필요한 함수만을 관리하는 관리 공간을 자유롭게 형성할 수가 있다. 그 결과 함수의 이름이나 식별자 등의 사용자관리 부담이 경감된다. 또한 관리되는 객체의 수가 감소되기 때문에 객체의 특정 시간을 단축할 수가 있다. 또한 참조 공간 이외의 객체에 잘못 액세스하는 것을 효과적으로 방지할 수가 있다.
또한 병렬 분산처리 시스템(31)에 의하면, 계산 공간에 더하여 도메인을 도입함으로써 도메인 상호간에 함수 등의 명칭의 충돌이 용납되고, 각 도메인에서 사용 가능한 함수의 명칭의 자유도가 높아진다.
또한, 병렬 분산처리 시스템(31)에 의하면, 새로운 함수가 추가되거나, 함수가 삭제된 경우 등, 해당 함수에 관련하는 로컬 함수 참조 테이블(50), 원격 함수참조 테이블(51), 프로세스 참조 테이블(52), 도메인 참조 테이블(53), 도메인 명칭 해시 테이블(54), 함수/프로세스 명칭 해시 테이블(55) 및 원격 함수ID 해시 테이블(56)의 위치를 수정함으로써 유연하고도 용이하게 대응할 수 있다.
또한, 위에서 설명한 병렬 분산처리 시스템(31)에서 도 19에 표시한 네트워크 노드(N1, N2)의 실행 환경(OS) 종류는 공간 관리와는 무관한 것이므로 실행 환경에 의존하지 않는 시스템을 제공할 수 있다.
또한 위에서 설명한 병렬 분산처리 시스템(31)에서는 도메인의 개념을 이용함으고써 네트워크에 관한 네트워크 노드의 접속 형태와 관계없이 각 프로세스에 구비된 함수의 참조를 관리할 수가 있다.
본 발명은 위에서 설명한 실시예에만 한정되지 않는다. 예를 들면, 도메인을 구성하는 계산 객체의 형태는 위에서 설명한 것에 한정되지 않는다.
또한, 위에서 설명한 실시예에서는 계산 객체로서 함수를 예시하였으나, 그밖에 소정 프로그램을 실행하는 계산 모듈, 인스턴스, 클래스, 방식, 전역 함수 및 파일 등의 참조 정보를 관리하는 경우에도 본 발명이 또한 적용될 수 있다.
또한 참조 유지부 및 참조 생성부는 각 프로세스마다 설치하여도 좋고, 각계산 객체마다 설치하여도 좋다.
또한, 위에서 설명한 실시예에서는 도 16, 도 17, 도 21, 도 22, 도 24a, 도 24b, 도 26a, 도 26b, 도 30 및 도 32에 나타난 바와 같이 객체의 명칭을 표시하는 도메인 내 명칭을 참조 정보로서 이용하였으나, 계산 객체의 소재를 나타내는 식별자를 참조 정보로서 이용하여도 좋다.
제3 실시예
[공간 관리 방식]
먼저, 본 실시예에 관계되는 병렬 분산 실행 지원 시스템에서 채용되는 공간관리 방식은 앞에서 설명한 도 9에 표시된 제2 실시예에 관계되는 병렬 분산 실행지원 시스템의 공간 관리 방식과 같고, 「참조 공간」, 「참조」 및 「도메인」의 개념도 동일하다.
또한 도메인은 도 9에 도시되어 있지 않고 도 36에 표시되어 있다.
도 33은 본 실시예에 관계되는 병렬 분산 실행 지원 시스템(31)의 구성도이다.
도 33에 표시된 바와 같이, 병렬 분산 실행 지원 시스템(31)은 네트워크(32)를 통해 네트워크 노드(33∼35)가 접속하고 있다.
네트워크 노드(33)에는 관리 프로세스(38)에 의해 실행되는 프로세스(부분공간)(36)가 있다.
관리 프로세스(38)는 참조 유지부(39), 참조 생성부(40) 및 프로세스 배치부(42)를 가진다.
참조 유지부(39)는 프로세스, 계산 객체 및 도메인을 식별하여 소재를 특정하고, 제어-관리하기 위한 참조 정보를 기억한다.
참조 생성부(40)는 반출 모듈(export module) 및 반입 모듈(import module)로부터 얻어지는 프로그램 모듈 상의 참조 정보와, 주어진 배치 정보로부터 뒤에 설명하는 참조 정보를 생성한다. 여기서, 프로그램 모듈이라는 것은 하나의 프로세스를 실행하는 프로그램의 집단을 말하고, 복수의 파일로 구성되어도 좋다. 예를 들면, 프로그램 모듈 "X"가 "px. exe" 및 "px. d11"이라는 두 개의 파일로 구성되어도 좋다.
각 프로그램 모듈은 참조 생성부(40)에 프로그램 모듈 상의 참조 관계를 부여하기 위해 내부 참조 테이블로의 등록 내용을 나타내는 반출 모듈과, 외부 참조테이블로의 등록 내용을 나타내는 반입 모듈을 내포하고 있다. 도 34에 나타난 예에서는 프로그램 모듈 "X"의 메인 함수(200)에서 프로그램 모듈 "Y"의 함수func4()를 판독하고 있다. 또한 메인 함수(200)의 함수 funcl ( )은 프로그램 모듈 "Y"의 메인 함수(201)로부터 판독하고 있다. 이 때, 프로그램 모듈 "X"의 반출 모듈(202)에는 「export (funcl);」이 기술되고, 반입 모듈(203)에는 「import (Y:func4);」가 기술된다. 도 34에 표시한 바와 같이 프로그램은 외부 함수의 호출을 기술하는 경우에 「call (Y:func, args)」로 기술한다. 이것은 프로그램 모듈 "Y"의 함수 func4를 args로 표시된 인수로 호출한다는 것을 의미한다. 이와 같이, 프로그램 상의 참조에 관한 프로그램의 기술은 프로그램 실행시의 배치와는 무관하게 기술된다.
한편 반출 모듈 및 반입 모듈은 번역기 등을 이용하여 애플리케이션 소스 코드로부터 자동으로 생성되거나, 애플리케이션 프로그램의 책임 하에서 생성된다.
프로세스 배치부(42)는 주어진 배치 정보에 기초하여 지정된 네트워크 노드상에서 프로그램 모듈을 실행하고 프로세스를 생성한다.
프로세스 배치부(42)는 도 35에 표시된 바와 같이 프로세스 배치 테이블(210) 및 포트번호 할당 테이블(211)을 구비한다.
[배치 정보]
배치 정보는 어느 프로그램 모듈을 어느 네트워크 노드에 배치할 것인가를 정하는 정보와, 프로세스와 계산 객체에 부여하는 명칭에 관한 정보 등으로부터 구성된다.
이 배치 정보는 예를 들면, 파일 읽기 혹은 사용자의 입력 조작 등에 의해 마스터 관리 프로세스로 입력되고, 이 배치 정보 중에서 프로세스 배치 테이블 및포트번호 할당 테이블을 작성하기 위해 필요한 정보가 마스터 관리 프로세스로부터 슬레이브 관리 프로세스로 출력된다.
여기서 설명의 편의상 최초로 배치 정보를 읽은 관리 프로세스를 마스터 관리 프로세스라고 부른다. 이에 대하여, 마스터 관리 프로세스로부터 프로세스 생성 명령을 받은 관리 프로세스를 슬레이브(slave) 관리 프로세스라고 부른다.
이하, 계산 공간 및 프로세스 배치가 각각 도 36 및 도 37에 나타난 구성을 하고 있는 경우를 예로 하여, 배치 정보의 구체예를 설명한다.
도 36에 나타낸 바와 같이 네트워크 노드 "A"에 프로세스 "PX1", "PZ1"이 배치되고, 네트워크 노드 "B"에 프로세스 "PY1"이 배치되고, 네트워크 노드 "C"에 프로세스 "PZ2"가 배치되어 있다.
여기서, 프로세스 "PX1", "PZ1", "PY1", "PZ2"에 의해 계산 공간 "C1"이 구성되어 있다.
또한 프로세스 "PX1", "PZ1"에 의해 도메인 "Dl"이 구성되고, 프로세스"PY1", "PZ2"에 의해 도메인 "D2"가 구성되어 있다.
여기서 프로세스 "PX1"은 도 34에 표시된 프로그램 모듈 "X"를 실행함으로써 생성되고, 프로세스 "PY1"은 프로그램 모듈 "Y"를 실행함으로써 생성되며, 프로세스 "PZ1", "PZ2"은 프로그램 모듈 "Z"를 실행함으로써 생성된다.
또한 도 37에 나타낸 바와 같이 네트워크 노드 "A4"는 이서네트(220) 및 ATM(221)과 접속되고, 각각의 네트워크 어드레스(DNS 명칭 IP어드레스)는 각각 「sl. dv1. co. jp」 및 「s1a. dv1. co. jp」이다.
네트워크 노드 "B"는 이서네트(220) 및 ATM (221)과 접속되고 각각의 네트워크 어드레스는 각각 「s2. dv1. co. jp」 및 「s2a. dv1. co. jp」이다.
네트워크 노드 "C"는 이서네트(220)와 접속되고 네트워크 어드레스는 「s3. dv1. co. jp」이다.
또한 도 37에 나타낸 바와 같이 네트워크 노드 "A", "B", "C"에는 각각 관리프로세스 A, B, C가 존재한다.
위에서 설명한 도 36, 도 37에 나타난 경우에서 배치 정보는 이하에 나타난 정보를 가진다.
- 프로그램 모듈 "X"를 네트워크 노드 "A" 상에 배치하고, 프로세스 "PX1"이라고 명명한다.
-프로그램 모듈 "Y"를 네트워크 노드 "B" 상에 배치하고, 프로세스 "PY1"이라고 명명한다.
- 프로그램 모듈 "Z"를 네트워크 노드 "A" 상에 배치하고, 프로세스 "PZ1"이라고 명명한다.
- 프로그램 모듈 "Z"를 네트워크 노드 "C" 상에 배치하고, 프로세스 "PZ2"이라고 명명한다.
- 프로그램 모듈 "X" 소재(실제 위치)는,
「ftp : // ftp. dv1. co. jp / bin / px. exe」
-프로그램 모듈 "Y" 소재는,
「ftp : // ftp. dv1. co. jp / bin / py. exe」와
「ftp : // ftp. dv1. co. jp / lib / py. d11」
-프로그램 모듈 "X" 소재는,
「ftp : // ftp. dv1. co. jp / bin / pz. exe」
- 네트워크 노드 "A"는, 네트워크 어드레스가
이서네트(매체)에서 「s1. dv1. co. jp」
ATM(매체)에서 「sla. dv1. co. jp」
- 네트워크 노트 "B"는, 네트워크 어드레스가
이서네트(매체)에서 「s2. dv1. co. jp」
ATM(매체)에서 「s2a. dv1. co. jp」
- 네트워크 노드 "C"는, 네트워크 어드레스가
이서네트(매체)에서 「s3. dv1. co. jp」
[관리 프로세스]
관리 프로세스는 병렬 분산 실행 지원 시스템에서 프로세스를 분산 배치시킬 때 미리 기동시키고 있다.
관리 프로세스는 프로세스의 일종이고, 각 네트워크 노드의 고정 포트(예를들면, 포트 번호 「010000」)가 할당되어 있고 배치 정보에 기초하여 일반 프로세스의 배치를 수행한다.
일반 프로세스와 관리 프로세스는 기능적으로는 동일하지만 관리 프로세스에는 고정 포트가 할당되어 있다는 점이 다르다.
도 37에서는 배치 정보는 관리 프로세스(C)로 전송되고 관리 프로세스(C)로부터 관리 프로세스(A, B)로 프로세스 생성 명령이 출력된다.
따라서, 관리 프로세스(C)는 마스터 관리 프로세스로 되고, 관리 프로세스(A, B)는 슬레이브 관리 프로세스로 된다.
마스터 관리 프로세스(C) 및 슬레이브 관리 프로세스(A, B)의 처리는 예를들면 도 38에 나타나 있다.
[프로세스 배치 테이블]
프로세스 배치 테이블(210)은 프로세스 배치부(42)에 마련되고 배치 정보 혹은 배치 정보 가운데 필요한 정보를 저장한다.
여기에서, 복수의 배치 정보가 있는 경우에, 배치 정보를 식별하기 위하여 각 배치 정보에 구성(Configuration) ID가 주어진다.
도 39는 프로세스 배치 테이블(210)을 설명하기 위한 도면이다.
도 39에서, 프로세스 배치 테이블(210)은 구성 ID(231), 마스터 노드의 네트워크 어드레스(232), 노드 정보(233), 프로그램 정보(234) 및 프로그램 배치 정보(235)로 구성된다.
노드 정보(233)는 노드명(236), 네트워크 어드레스(237) 및 매체(238)의 테이블이다.
프로그램 정보(234)는 프로그램명(239) 및 프로그램 소재 정보(240)의 테이블이다.
프로그램 배치 정보(235)는 프로세스명(241), 프로그램명(242) 및 노드명(243)의 테이블이다.
도 37에 도시한 병렬 분산 실행 지원 시스템에서 네트워크 노드(A, B, C)의 각 프로세스 배치부(42)는 앞에서 설명한 배치 정보에 따라 각각 도 41, 도 42 및 도 40에 나타낸 바와 같은 프로세스 배치 테이블(210)을 구비하고 있다. 네트워크노드의 프로세스 배치 테이블(210)은 배치 정보를 기본으로 관리 프로세스(C)가 생성한다. 네트워크 노드(A, B)의 프로세스 배치 테이블(210)은 배치 정보 가운데 필요한 정보에 기초하여 관리 프로세스(A, B)가 생성한다.
[포트번호 할당 테이블]
도 43은 포트번호 할당 테이블(211)을 설명하기 위한 도면이다.
도 43에 나타낸 바와 같이 포트번호 할당 테이블(211)은 구성 ID(250), 프로세스명(251) 및 포트번호(252)로 구성된다.
본 실시예에서는 도 44에 나타낸 바와 같이 슬레이트 관리 프로세스(A, B) 및 마스터 관리 프로세스에서 각각 포트번호 할당 테이블(253, 254, 211)이 생성된다. 포트번호 할당 테이블(253, 254, 211)은 각각 네트워크 노드(A, B, C)의 프로세스 배치부(42)에 마련된다.
[참조 정보]
이 참조 정보는 뒤에 설명하는 반입 처리 및 반출 처리에 의해 생성된다.
이하에 나타내는 예에서는 네트워크 상에 분산 배치된 함수를 참조하는 경우에 관하여 나타내고, 참조 정보는 제2 실시예에서 도 11에 나타낸 바와 같이 4개의 참조 테이블과 3개의 검색용 해시 테이블로 구성된다. 참조 테이블에는 도 12에 나타낸 로컬 함수 참조 테이블(50), 도 13에 나타낸 원격 함수 참조 테이블(51), 도14에 나타낸 프로세스 참조 테이블(52) 및 도 15에 나타낸 도메인 참조 테이블(53)이 있다. 또한 검색용 해시 테이블은 명칭과 식별자 사이의 해시 테이블이고, 도 16에 나타낸 도메인 명칭 해시 테이블(54), 도 17에 나타낸 함수/프로세스 해시 테이블(55) 및 도 18에 나타낸 원격 함수ID 해시 테이블(56)이 있다.
각각의 테이블 내용은 제2 실시예에서 설명한 것과 동일하다.
네트워크 노드(34)에는 관리 프로세스(41)에 의해 실행되는 프로세스(부분공간)(37)가 있고, 개념적으로 네트워크 노드(33)와 동일하다.
[관리 프로세스에서의 처리]
이하에서 도 38을 참조하면서 마스터 관리 프로세스(C) 및 슬레이브 관리 프로세스(A, B)의 처리를 설명한다.
도 38은 마스터 관리 프로세스(C) 및 슬레이브 관리 프로세스(A, B)의 처리 흐름도이다.
먼저 예를 들어, 마스터 관리 프로세스(C)에 복수의 배치 정보가 입력되면 마스터 관리 프로세스(C)에 의해 배치 정보를 식별하기 위해서 각 배치 정보에 구성 ID가 부여된다(단계 S1).
다음에, 마스터 관리 프로세스(C)는 배치 정보로부터 도 40에 표시된 바와같은 프로세스 배치 테이블(210)을 생성한다(단계 S2).
마스터 관리 프로세스(C) 슬레이브 관리 프로세스(A, B)에, 배치 정보 가운데 각 네트워크 노드 내에 프로세스를 생성하는데 필요한 정보를 출력한다(단계 S3).
슬레이브 관리 프로세스(A, B)는 마스터 관리 프로세스(C)로부터 입력한 정보를 각각의 프로세스 배치 테이블에 저장한다(단계 S9).
마스터 관리 프로세스(C)는 슬레이브 관리 프로세스(A, B) 및 네트워크 노드내의 일반 프로세스에 이하에 나타내는 바와 같은 프로세스 생성 명령을 출력한다(단계 S4).
즉, 마스터 관리 프로세스(C)는 슬레이브 관리 프로세스(A)에 구성 ID = #000001 에서 프로세스명이 "D1 / PX1", "D1 / PZ1"인 프로세스를 생성할 것을 지시하는 프로세스 생성 명령을 출력한다.
또한, 마스터 관리 프로세스(C)는 슬레이트 관리 프로세스(B)에 구성 ID = #000001 에서 프로세스명이 "D2 / PY1"인 프로세스를 생성할 것을 지시하는 프로세스 생성 명령을 출력한다.
또한, 마스터 관리 프로세스(C)는 자신에게 구성 ID = #000001 에서 프로세스명이 "D2 / PZ2"인 프로세스를 생성하는 지시를 출력한다. 이 때 마스터 관리 프로세스(C)는 마스터 및 슬레이브 쌍방의 기능을 수행한다.
슬레이브 관리 프로세스(A, B)는 프로세스 생성 명령을 입력하면(단계 S4) 각각 프로세스 배치 테이블로부터 해당하는 프로세스를 실현하는 프로그램을 얻고, 다시 프로그램명으로부터 프로그램의 소재 정보를 얻고, 그 프로그램의 다운로드를 개시한다(단계 S10). 다운로드의 프로토콜은 「ftp, http」 등이 이용된다.
그리고, 슬레이브 관리 프로세스(A, B)는 프로세스 생성 시에 포트번호를 각 네트워크 노드마다 고유하게 할당하고(단계 S11), 이렇게 할당된 포트번호 및 구성D를 인수(argument)로 하여 프로그램 모듈에 전송하여 프로세스를 생성한다(단계 S12). 상기 할당된 포트번호는 각 프로세스 배치부가 구비한 포트번호 할당 테이블(211)에 등록된다(단계 S13). 자신으로부터 프로세스 생성 명령을 받은 마스터 관리 프로세스(C)도 마찬가지 처리를 수행한다.
슬레이브 관리 프로세스(A, B) 및 네트워크 노드(C) 내의 일반 프로세스는 프로세스 생성 종료 후 마스터 관리 프로세스(C)에 대해 종료 메시지를 출력한다.
마스터 관리 프로세스(C)는 이러한 종료 메시지로부터 프로세스 생성이 모두 종료된 것으로 판단하면(단계 S5) 슬레이브 관리 프로세스(A, B) 및 네트워크 노드(C) 내의 일반 프로세스에 반입 개시 명령을 출력한다(단계 S6).
이 때, 마스터 관리 프로세스(C)는 구성 ID = #000001 인 프로세스 "D1 /PX1" 및 "D2 / PZ1"에 대한 반입 개시 명령을 슬레이브 관리 프로세스(A)로 출력한다.
또한, 마스터 관리 프로세스(C)는 구성 ID = #000001 인 프로세스 "D2 / PY1"에 대한 반입 개시 명령을 슬레이브 관리 프로세스(B)로 출력한다.
한편, 마스터 관리 프로세스(C)는 네트워크 노드(C)의 일반 프로세스에 구성 ID = #000001 인 프로세스 "D2 / PZ2"에 대한 반입 개시 명령을 출력한다.
슬레이브 관리 프로세스(A, B)는 포트번호 할당 테이블로부터 할당하는 포트번호를 얻고, 일반 프로세스로 반입 처리 명령을 출력한다(단계 S14). 일반 프로세스는 반입 처리 명령을 받으면 (도 45에 표시한 단계 S23) 반입 처리를 개시하고(단계 S24), 반입 처리가 종료되면 종료 메시지를 마스터 관리 프로세스(C)로 출력한다.
마스터 관리 프로세스(C)는 모든 반입 처리가 종료하였는지 여부를 판단하고(단계 S7) 종료된 것으로 판단한 경우에는 프로세스 실행 개시 명령을 슬레이브 관리 프로세스(A, B) 및 네트워크 노드(C)의 일반 프로세스로 출력한다(단계 S8).
이 때, 마스터 관리 프로세스(C)는 구성 ID = #000001인 프로세스 "D1/PX1" 및 "D2/PZ1"에 대한 프로세스(main 함수) 실행 개시 명령을 슬레이브 관리 프로세스(A)로 출력한다.
또한, 마스터 관리 프로세스(C)는 구성 ID = #000001인 프로세스 "D2/PYl"에 대한 프로세스 실행 개시 명령을 슬레이브 관리 프로세스(B)로 출력한다.
한편, 마스터 관리 프로세스(C)는 네트워크 노드(C)의 구성 ID = #000001인 프로세스 "D2/PZ2"에 대한 프로세스 실행 개시 명령을 일반 프로세스로 출력한다.
슬레이의 관리 프로세스(A, B)는 해당하는 일반 프로세스로 프로세스 실행 개시 명령을 출력한다(단계 S15). 즉, 슬레이브 관리 프로세스(A, B)는 포트번호 할당 테이블로부터 해당하는 포트번호를 얻고, 메인 함수의 호출 명령을 출력한다.
도 45는 일반 프로세스의 처리 흐름도이다.
도 45에 나타낸 바와 같이 일반 프로세스는 동일한 네트워크 노드의 관리 프로세스에서 포트번호, 구성 ID 및 마스터 노드의 네트워크 어드레스를 인수로 하여 입력하고 기동된다(단계 S21). 다음으로 일반 프로세스는 반출 처리를 실행한다(단계 S22).
그리고 마스터 관리 프로세스(C) 및 슬레이브 관리 프로세스(A, B)로부터 반입 처리 명령이 있는가 여부를 판단하고(단계 S23), 있다고 판단한 경우에는 반입처리를 실행하고(단계 S24) 프로세스 실행 개시 명령을 기다린다(단계 S25). 프로세스 실행 개시 명령이 입력되면 일반 프로세스는 메인 함수를 실행한다(단계 S26).
[반출 처리]
이하에서, 도 37에 나타낸 프로세스 "PX1"에 관한 반출 처리를 예로서 설명 한다.
먼저, 일반 프로세스는 도 37에 표시한 프로세스 "PX1"상의 반출 모듈인 도 34에 나타낸 「export(func1)」 을 호출하고, 도 51에 표시된 바와 같이 로컬 함수참조 테이블(50)의 프린트 명칭(61)에 「func1」을 등록한다.
로컬 함수 참조 테이블(50)에는 「func1」인 로컬 함수 ID(62)로서, 도 44의 포트번호 할당 테이블(253)에 표시되는 구성 IC 「#000001」이 등록되고, 원격 함수ID(63)로서 「#00100」이 등록된다. 이 원격 함수 ID 「#00100」은 도 52b에 나타난 원격 함수 ID 해시 테이블(56)에도 등록된다.
또한 함수 「func1」에는 명칭 공간상에서는 명칭이 주어지지 않으므로, 로컬 함수 참조 테이블(50)의 도메인 내 명칭(64)은 「ni1」로 된다. 또한 이 함수 「func1」은 어느 도메인에도 속하지 않고, 도메인 참조 목록(65)은 「nil」로 된다.
도 37에 나타낸 프로세스 "PY1"의 로컬 함수 참조 테이블(50)은 도 53에 표시된 바와 같다.
또한, 도 37에 나타낸 프로세스 "PZ1" 및 "PZ2"의 로컬 함수 참조 테이블(50)은 도 54에 표시된 바와 같다.
또한 반출 처리에서는 도 52a에 나타낸 함수/프로세스 명칭 해시 테이블(65)도 등록된다.
여기서는 상술한 바와 같이 도 37에 표시한 프로세스 "PX1"에서의 반입 처리 및 반출 처리를 예시하였으나, 도 37에 표시한 "PZ1", "PY1" 및 "PZ2"인 반입 처리 및 반출 처리도 마찬가지 순서로 수행된다.
[반입 처리]
도 46은 반입 처리를 설명하기 위한 흐름도이다.
네트워크 노드(A, B, C)의 일반 프로세스는 반입 처리를 개시하면 먼저 마스터 관리 프로세스와 통신하고, 프로그램 모듈에 포함된 반입 모듈을 호출하고, 프로세스 배치 테이블(210)에 기초하여 프로그램 모듈명으로부터 해당하는 프로세스의 프로세스명 및 그 배치 수신측(allocation destination) 노드명을 얻는다(단계S31). 이때 해당하는 프로세스가 복수인 경우에는 모두 반입 처리 대상으로 한다.
예를 들면, 도 37에 표시한 프로세스 "PX1"의 경우에는 프로그램 모듈 "X"의 반입 모듈에 포함되는 「import(Y:func4)」가 호출된다. 그리고 이 「import (Y:func4)」에 포함되는 프로그램 모듈명 "Y"를 키로 하고 도 40에 표시된 프로세스 배치 테이블(210)의 프로그램 배치 정보(235)로부터 해당하는 프로세스명"D2/PY1"과 노드명 "B"가 얻어진다.
다음으로, 이 일반 프로세스는 얻어진 프로세스명이 프로세스 참조 테이블(52)에 이미 등록되어 있는지 여부를 판단하고(단계 S32) 등록되지 않은 경우에는 다시 노드명이 프로세스 참조 테이블(52)에 등록되어 있는지를 판단한다(단계 S35). 노드명이 등록되어 있지 않은 경우에는 일반 프로세스는 마스터 관리 프로세스와 통신을 수행하고 해당 노드에 관한 정보를 취득하고 이 노드 정보를 프로세스 참조 테이블(52)에 등록한다(단계 S38).
예를 들면, 도 47에 표시된 바와 같이, 프로세스명 "D2/PY1"은 프로세스 참조 테이블(52)에 등록되어 있지 않으므로 이 프로세스를 프로세스 참조 테이블(52)에 등록한다. 이때 반입 수신측의 네트워크 어드레스를 특별히 정하기 위해 도 40에 표시된 프로세스 배치 테이블(210)을 이용하여 노드 정보를 프로세스 참조 테이블(52)에 등록한다. 이 노드 정보로부터 반입 수신측(import destination)의 네트워크 어드레스를 알 수 있다.
구체적으로, 도 40에 표시된 프로세스 배치 테이블(210)에서 네트워크 노드"B"의 네트워크 어드레스는 이서네트가 「s2. dv1. co. jp」이고, ATM이 「s2a. dv1. co. jp」이라고 하는 노드 정보를 얻는다.
다음으로, 일반 프로세스는 반입 수신측의 네트워크 노드 상의 관리 프로세스에 구성 ID 및 프로세스명을 키로 하고 질의를 수행하고, 해당하는 포트번호를 얻는다(단계 S36). 구체적으로, 일반 프로세스는 반입 수신측의 관리 프로세스에 구성 ID = #000001 및 프로세스명 "D2/PY1"을 키로 하여 포트번호를 질의한다. 질의를 접수한 관리 프로세스는 도 44에 표시한 포트번호 할당 테이블(254)을 참조하여 포트번호 「#010000」을 일반 프로세스로 반송한다.
일반 프로세스는 포트번호를 얻으면 이 포트번호와 프로세스명을 프로세스 참조 테이블(52)에 등록한다(단계 S37). 이렇게 하여 프로세스 참조 테이블(52)은 도 48에 표시된 것과 같게 된다.
또한 프로세스 "PY"는 소속 도메인 "D2"의 참조가 존재하지 않는 경우에 도 48에 표시된 바와 같이 도메인 참조 테이블(53)에 신규 도메인을 작성한다.
다음으로, 도 49a 및 도 49b에 표시된 바와 같이 함수/프로세스 명칭 해시 테이블(55) 및 도메인 명칭 해시 테이블(54)을 작성하고 참조 관계를 확립한다.
다음에, 일반 프로세스는 해당 프로세스의 참조를 프로세스명에서 얻고, 프린트 명칭을 키로 하여 원격 ID를 얻는다.(단계 S33)
구체적으로, 반입 모듈에 기술되어 있는 함수의 프린트 명칭 「func4」를 키로 하여 원격 ID에 예를 들면, 관리 프로세스에 질의한다. 관리 프로세스는 프린트 명칭 「func4」를 키로 하여 로컬 함수 참조 테이블로부터 원격 IC 「#000101」을 얻고 이것을 일반 프로세스로 반송한다. 로컬 함수 참조 테이블은 도 45에 표시된 바와 같이 반입 처리(단계 S24)가 개시되기 전에 수행하여지는 반출 처리(단계 S22)에 관하여 작성되어 있다.
그리고, 일반 프로세스는 얻어진 원격 ID, 프린트 명칭 및 프로세스 참조를 원격 함수 참조 테이블에 등록한다(단계 S34).
구체적으로, 일반 프로세스는 도 50에 표시된 바와 같이 얻어진 원격 ID「#000101」, 프린트 명칭 「func4」 및 프로세스 참조를 원격 함수 참조 테이블(51)에 등록한다(단계 S34).
[프로그램 모듈의 실행]
예를 들면, 도 37에 표시된 네트워크 노드(A)가 도34에 표시된 프로그램 모듈(X)을 실행하여 프로세스 "PX1"을 생성하면 프로그램 모듈(X)의 함수 「fnc2()」 내의 「call(Y:func4)」에 대응하는 처리가 실행된다. 이 때 프로세스 "PX1"은 네트워크 노드(A)의 도 41에 표시된 프로세스 배치 테이블(210)을 참조하고 프로그램모듈(Y)의 프로세스에 관한 프로세스 참조를 얻는다. 이 프로세스 참조는 프로그램 모듈(Y)이 네트워크 노드(B)에 배치되고 네트워크 노드(B)의 네트워크 어드레스가 이서네트에서 「s2. dv1. co. jp」이고, ATM 에서 「s2a. dv1. co. jp」인 것을 나타내고 있다.
다음으로, 프로세스 "PX1"은 얻어진 프로세스 참조와 프린트 명칭(func4)과 통신 매체의 조합을 키로 하고 도 50에 표시된 원격 함수 참조 테이블(51)을 참조하고 외부 참조를 얻는다. 이 외부 참조는 원격 함수 ID 「#000101」, 네트워크 어드레스 및 네트워크 포트 ID 「#010000」이다.
다음으로, 프로세스 "PX1"은 네트워크 어드레스 및 네트워크 포트 ID를 이용하여 상대방 프로세스에 액세스를 수행하고 원격 함수 ID의 지정에 의한 함수 호출을 수행한다.
호출된 프로세스는 원격 ID를 키로 하고 도 52b에 표시된 원격 함수 ID 해시 테이블(56)로부터 로컬 ID를 얻고 시스템(OS)에 함수 기동 명령을 출력한다.
이상 설명한 바와 같이, 병렬 분산 실행 지원 시스템(31)에서는 프로그램 모듈이 실행되는 네트워크 노드에 관한 배치 정보를 해당 프로그램 모듈 밖에서 기술하기 때문에 프로그램 모듈의 기술을 수정하지 않고 배치 정보만을 변경하는 것으로 프로그램 모듈이 실행되는 네트워크 노드를 동적으로 변경할 수 있다. 즉, 계산 객체 공간을 형성한 후에 그 공간구성을 동적으로 변경할 수 있다.
또한 병렬 분산 실행 지원 시스템(31)에 의하면 애플리케이션 프로그램은 프로그램 모듈 실행시에 참조 관계를 실행시의 네트워크 배치에 의존하지 않고 기술할 수 있다.
즉, 프로그램 모듈 실행시의 배치 정보를 프로그램 모듈 밖에서 기술하므로 사용자는 프로그램 모듈 상의 계산 객체의 참조 관계(프로그램명과 계산 객체명의 조합) 만을 의식하고 프로그램 모듈을 기술하면 된다. 따라서 프로그램 모듈 내에서 기술되는 계산 객체의 정적인 참조 관계와 배치 정보에 기술되는 동적인 참조 관계를 나누어 취급할 수 있다.
또한, 병렬 분산 실행 지원 시스템(31)에 의하면 계산 공간의 개념을 도입한 것으로서 사용자는 용도에 따른 필요한 관계만을 관리하는 관리 공간을 자유롭게 형성할 수 있다. 그 결과 함수의 명칭과 식별자 등의 사용자의 관리 부담이 줄어든다. 또한 관리되는 객체의 수가 감소하므로 객체의 특정 시간을 단축할 수 있다. 또한, 참조 공간 외의 객체에 잘못 액세스하는 것을 효과적으로 방지할 수 있다.
또한 병렬 분산 실행 지원 시스템(31)에 의하면 계산 공간에 더하여 도메인을 도입함으로써, 도메인 상호간에도 함수 등의 명칭 충돌이 허용되고 각 도메인에서의 사용 가능한 함수명의 자유도가 높아진다.
또한, 병렬 분산 실행 지원 시스템(31)에 의하면 새로운 함수가 추가된다든지 함수가 삭제된 경우 등 해당 함수에 관련된 로컬 함수 참조 테이블(50), 원격 함수 참조 테이블(51), 프로세스 참조 테이블(52), 도메인 참조 테이블(53), 도메인 명칭 해시 테이블(54), 함수/프로세스 명칭 해시 테이블(55) 및 원격 함수ID 해시 테이블(56)의 위치를 수정하는 것으로 유연하면서도 용이하게 대응할 수 있다.
또한 상술한 병렬 분산 실행 지원 시스템(31)에서는 도메인의 개념을 이용하는 것으로, 네트워크에서의 네트워크 노드의 접속 형태와 무관하게 각 프로세스에 구비된 함수의 참조를 관리할 수 있다.
본 발명은 상술한 실시예에 한정되지 않는다. 예를 들면, 도메인을 구성하는 계산 객체의 형태는 상술한 것에 한정되지 않는다.
또한 상술한 실시예에서는 계산 객체로서 함수를 예시하였으나 그밖에 소정의 프로그램을 실행하는 계산 모듈, 인스턴스, 클래스, 방식, 전역 함수 및 파일등의 참조 정보를 관리하는 경우에도 본 발명은 마찬가지로 적용될 수 있다.
또한 도 37에 표시된 관리 프로세스 가운데 어느 관리 프로세스가 마스터 관기 프로세스로 되어도 좋다.
또한 참조 유지부 및 참조 생성부는 각 프로세스마다 설치되어도 놓고, 각 계산 객체마다 설치되어도 좋다.
제4 실시예
본 실시예에서는 예를 들어 복수의 계산기 장치가 결합된 계산기 네트워크상에 복수의 처리 모듈에 의한 계산 공간이 전개되고 각 처리 모듈이 실질적으로 다른 모듈과 통신을 하면서 분산처리 혹은 병렬 분산처리를 수행하는 것과 같은 환경에서, 예를 들어, 그 처리 모듈 간의 통신을 수행하기 위해서 애플리케이션 수준으로 지정되는 각 처리 모듈의 참조 정보를 실제의 시스템 상의 객체를 직접 특정할 수 있는 시스템 참조 정보로 변환하기 위한 참조 변환 장치를 나타낸다.
도 55는 그 참조 변환 장치의 구성을 나타내는 블록도이다.
참조 변환 장치(530)는 입력 절환부(531), 제1 변환부(532), 제2 변환부(533), 제3 변환부(534), 제4 변환부(535), 제5 변환부(536), 출력 절환부(537), 및 제어부(538)를 가진다.
또한 도 55에서 부호 A는 애플리케이션 참조 정보를, 부호 S는 시스템 참조정보를 나타낸다.
먼저, 각부의 구성과 기능에 관하여 설명한다.
입력 절환부(531)는 제어부(538)로부터의 절환 신호에 기초하여 입력되는 애플리케이션 참조 정보 또는 후술하는 출력 절환부(537)로부터 다시 입력되는 애플리케이션 참조 정보를 제1 변환부(532) 내지 제5 변환부(536)의 어느 하나로 선택적으고 입력한다.
제1 변환부(532)는 입력된 애플리케이션 참조 정보를 하나의 시스템 참조 정보로 변환한다.
제2 변환부(533)는 입력된 애플리케이션 참조 정보를 둘 이상의 시스템 참조정보의 조합으로 변환한다.
제3 변환부(534)는 입력된 애플리케이션 참조 정보를 다른 애플리케이션 참조 정보로 변환한다.
제4 변환부(535)근 입력된 애플리케이션 참조 정보를 둘 이상의 애플리케이션 참조 정보의 조합으로 변환한다.
제5 변환부(536)는 입력된 애플리케이션 참조 정보를 다른 애플리케이션 참조 정보와 시스템 참조 정보의 조합으로 변환한다.
출력 절환부(537)는 제어부(538)로부터 입력되는 제어 신호를 기초로 제1 변환부(532) 내지 제5 변환부(536)에서 변환되어 순차 출력되는 참조 정보의 처리를 절환한다. 즉, 출력되는 참조 정보 중 시스템 참조 정보는 외부로 출력하도록 절환되고, 애플리케이션 참조 정보는 다시 입력 절환부(531)로 입력하도록 절환된다. 또한 출력 절환부(537) 내에는 도시되지 않은 기억부를 구비하고, 변환되어 외부로 출력 가능한 시스템 참조 정보는 일단 이 기억부에 기억된다. 그리고 참조 변환 장치(530)로 입력된 애플리케이션 참조 정보에 대한 참조 정보가 모두 시스템 참조 정보로 변환된 시점에 그 기억부에 기억된 정보도 포함하여 그 시스템 참조 정보가 일괄적으로 출력된다.
제어부(538)는 입력된 애플리케이션 참조 정보를 적절하게 시스템 참조 정보로 변환하도록 입력 절환부(531) 및 출력 절환부(537)를 제어한다.
제어부(538)는 먼저, 변환 대상의 애플리케이션 참조 정보인 외부보다 입력 절환부(531)로 입력된 애플리케이션 참조 정보, 또는 출력 절환부(537)에서 입력된 애플리케이션 참조 정보를 읽어 들이고, 그 내용을 판단하여 제1 변환부(532) 내지제5 변환부(536)의 어느 변환부에서 참조 해결을 수행하는 것이 적절한가를 판정한다. 그리고 그 판정 결과에 기초하여 그 입력 애플리케이션 참조 정보가 적절히 해당 변환부로 입력되도록 입력 절환부(531)를 절환한다.
또한 제어부(538)는 제1 변환부(532) 내지 제5 변환부(536)에서 출력 절환부(537)로 입력된 변환 결과의 참조 정보가 애플리케이션 참조 정보인가 시스템 참조정보인가를 판정하고, 애플리케이션 참조 정보이면 다시 입력 절환부(531)로 입력 되도록 출력 절환부(537)를 제어한다. 또한 시스템 참조 정보이면 출력용 참조 정보로서 출력 절환부(537) 내의 기억부에 기억하도륵 출력 절환부(537)를 제어한다.
또한 제어부(538)는 입력된 애플리케이션 참조 정보에 대한 참조 정보가 모두 시스템 참조 정보로 변환되는 경우, 그 시스템 참조 정보 혹은 그 시스템 참조 정보의 조합을 변환 결과로서 외부의 출력한다.
실질적으고 제어부(538)가 참조 변환 장치(530)를 제어하는 동작은 도 56의 흐름도를 참조하여 설명한다.
도 56에서, 제어부(538)는 참조 변환 장치(530)에 애플리케이션 참조 정보가 입력된다면 처리를 개시하고(단계 S110), 입력된 애플리케이션 참조 정보가 제1 변환부(532) 내지 제5 변환부(536) 중 어느 변환부에서 변환 가능한지를 조사하고 그 변환부에 그 애플리케이션 참조 정보를 입력함으로써 변환을 개시시킨다(단계S111). 그리고 변환이 종료되면 그 변환 결과의 참조 정보 내에 애플리케이션 참조 정보가 존재하는지 여부를 체크하고(단계 S112), 존재한 경우에는그 애플리케이션 참조 정보에 관하여 다시 단계 S111의 처리를 반복한다.
단계 S112에서 모든 참조 정보가 시스템 참조 정보로 변환되었다고 판정되면 그 변환 결과를 출력하고(단계 S113), 일련의 변환 처리를 종료한다(단계 S114).
다음으로, 이 참조 변환 장치(530)의 동작에 관하여 도 57a, 도 57b, 도 57c를 참조하여 설명한다.
먼저, 이 참조 변환 장치(530)에 대한 통상적인 동작예를 도 57a로 나타낸다.
도 57a에서, 먼저 입력된 애플리케이션 참조 정보(A)는 그 내용이 제어부(538)에서 조사되고, 제4 변환부(535)에서 변환되는 것이 결정되고, 제4 변환부(535)에서 애플리케이션 참조 정도의 조합(A1, A2, A3)으로 변환된다. 이 변환 결과는 모두 애플리케이션 참조 정보고서, 다시 변환이 수행됨으로써 다시 각 애플리케이션 참조 정보의 내용이 제어부(538)에 의해 조사되어 다음의 변환부가 결정된다. 도 57a의 예에서는 애플리케이션 참조 정보(A1∼A3)가 각각 별개로 제1 내지 제3 변환부(532∼534)로 입력되어 변환이 수행된다.
상기 변환 결과 애플리케이션 참조 정보(A1)는 제1 변환부(532)에서 하나의 시스템 참조 정보(S1)에, 애플리케이션 참조 정보(A2)는 제2 변환부(533)에서 시스템 참조 정보의 조합(S2, S3)으로, 애플리케이션 참조 정보(A3)는 제3 변환부(534)에서의 하나의 애플리케이션 참조 정보(A4)로 변환된다.
그리고, 이러한 변환 결과 가운데 참조 정보(A4) 만이 아직 애플리케이션 참조 정보 등에서 다시 변환된다. 즉, 다시 그 내용에 기초하여 변환부의 선택이 이루어지고, 그 결과 이번에는 변환부(536)에서의 애플리케이션 참조 정보와 시스템참조 정보의 조합(A5, S4, S5)으로 변환된다. 또한 상기 변환 결과 중에는 애플리케이션 참조 정보(A5)가 남아있으므로 이것을 이번에는 제1 변환부(532)에서 하나의 시스템 참조 정보(S6)로 변환한다.
이와 같이 순차 변환을 수행한 결과 입력된 애플리케이션 참조 정보(A)는 시스템 참조 정보의 열(S1, (S2, S3), (S6, S4, S5))로 변환되고 출력된다.
이어서, 애플리케이션 참조 정보 및 시스템 참조 정보는 구체적으로, 각 모듈 및 객체의 논리적인 명칭, 혹은 ID 등이다.
또한, 제1 변환부(523) 내지 제4 변환부(535)에서는 참조 정보의 조합에 대하여 일괄적으로 처리하는 것도 가능하다. 그 예를 도 57b에 나타낸다.
도 57b에서는 제4 변환부(535)에 의해 입력된 애플리케이션 참조 정보(A)로부터 애플리케이션 참조 정보의 조합(A1, A2, A3)이 생성되고, 다음에 이 애플리케이션 참조 정보의 조합을 그대로 제1 변환부(532)로 입력하고 대응하는 시스템 참조 정보의 조합(S1, S2, S3)을 얻고 있다.
참조 변환 장치(530)의 제1 변환부(532)∼제5 변환부(536)에서는 이와 같은 애플리케이션 참조 정보의 조합을 입력으로 할 수 있다.
또한 도 57b에 표시된 바와 같이 애플리케이션 참조 정보의 조합을 일괄적으로 입력하는 것이 아니고, 그 일부만을 입력하도록 하여도 좋다.
그러한 예를 도 57c에 나타낸다.
도 57c에서도 제4 변환부(535)에 의해 입력된 애플리케이션 참조 정보(A)로부터 애플리케이션 참조 정보의 조합(A1, A2, A3)이 생성되고 있다. 그리고 다음 단계에서는 이와 같이 생성된 애플리케이션 참조 정보의 조합을 적절히 변형하여 다음 단계의 애플리케이션 참조 정보의 입력으로 하는 것도 가능하다.
이와 같이 참조 변환 장치(530)에서는 입력된 애플리케이션 참조 정보에 대하여 그 참조 정보의 내용을 기초로 제1 변환부(532)∼제5 변환부(536)가 적절히 반복 선택되고 참조 정보의 변환을 수행하고 있다. 따라서 복잡한 구성의 애플리케이션 참조 정보에서도 최종적으로 시스템 상기 객체를 직접 나타내는 시스템 참조 정보의 열로 전개된다.
제5 실시예
본 실시예의 병렬 분산 실행 지원 시스템은 제2 실시예에서 설명한 도 9에 나타낸 병렬 분산 실행 지원 시스템에, 제4 실시예에서 앞에서 설명한 참조 변환 장치를 적용하여 각 처리 모듈이 실질적으로 연계하여 처리를 수행하는 것이다.
도 9에 도시한 병렬 분산처리 시스템에서는, 메시지 송신을 기초로 하여 각 병렬 객체가 통신하고, 병렬 분산처리를 실현한다.
본 실시예의 병렬 분산 실행 지원 시스템에서는 이 메시지 송신에서는 송신처의 객체(Object)에 대한 원격 참조로부터 송신처의 노드와 프로세스, 객체를 특정하고, 송신 처리를 수행한다. 이 때 송신처가 도메인과 객체 클러스터로 되어 있으면 멀티캐스트를 수행한다.
또한 참조자가 프록시(proxy) 객체를 표시하고 있으면 프록시를 중계하고 메시지 송신을 수행한다. 이어서, 송신처의 소재에 따라서는 네트워크 상의 RPC, 노드 내 IPC, 혹은 프로세스 내 통신을 선택하여 메시지 송신을 수행한다.
이 때, 병행 객체는 애플리케이션 공간에서 상호 원격 참조를 관리하여, 이것에 의해 고속 메시지 송신을 실현한다.
본 발명에 관하여 이와 같은 분산처리 시스템에서의 애플리케이션 공간에 대한 객체 참조 정보와 실제 송신을 수행하기 위한 시스템 참조 정보와 변환을 수행하는 참조 변환 장치에 관하여 이하에 설명한다.
도 58은 그 참조 변환기(650)의 구성을 나타내는 블록도이다.
참조 변환기(650)는 프로세스 변환부(654), 도메인 변환부(652), 엔티티(entity) 변환부(653), 프로세스 변환부(654), 노드 명칭 변환부(655), DNS명 프록시 변환부(656)를 가진다.
먼저, 도메인 변환부(652)∼노드 명칭 변환부(655)의 각부로부터 참조되고, 본 발명에 따른 분산처리 시스템의 공간 관리를 위한 참조 정보에 관하여 설명한다.
이 분산처리 시스템에 관하여 이용되는 주된 참조 정보는 앞에서 설명한 도 11에 나타난 바와 같이 네 개의 참조 테이블과 세 개의 검색용 해시 테이블로 관리된다. 네 개의 참조 테이블은 도 12에 표시된 로컬 함수 참조 테이블(50), 도 13에 표시된 원격 함수 참조 테이블(51), 도 14에 표시된 프로세스 참조 테이블(52) 및 도 15에 표시된 도메인 참조 테이블(53)이 있다. 또한 검색용 해시 테이블은 명칭과 식별자 사이의 해시 테이블이고, 도 16에 표시된 도메인 명칭 해시 테이블(54), 도 17에 표시된 함수/프로세스 명칭 해시 테이블(55) 및 도 18에 표시된 원격 함수ID 해시 테이블(56)이다. 각각의 테이블은 내용은 전술한 제2 실시예에 관하여 설명한 것과 동일하다.
다음으로 도58에 나타낸 참조 변환기(650) 각부의 구성에 관하여 설명한다. 변환 제어부(651)는 참조 변환기(650) 전체를 관리한다. 구체적으로, 입력된 애플리케이션 참조 정보의 내용을 확인하고, 그 종류에 따라 입력된 명칭을 도메인 변환부(652)∼노드 명칭 변환부(655) 중 어느 한 곳으로 출력한다. 그리고 그 변환부에서 얻어진 변환 결과를 읽어 내고, 얻어진 참조 정보가 시스템 참조 정보인가 아닌가를 조사한다. 그리고 애플리케이션 참조 정보에 관하여는 그 내용에 따라 다시 도메인 변환부(652)∼노드 명칭 변환부(655)로 입력한다. 이러한 처리를 반복하고 변환 제어부(651)는 최종적으로 입력된 애플리케이션 참조 정보가 시스템 참조 정보로 표시되도록 하고, 얻어진 시스템 참조 정보를 출력한다.
한편, 이 변환 제어부(651)는 기억 수단을 가지고 있어서, 입력된 참조 정보에 대하여 순차 검출되는 출력용 시스템 참조 정보를 차례로 기억하여 놓는다. 그리고 최종적으로 모든 참조 정보가 시스템 참조 정보로 변환되면, 이 기억 수단의 내용을 읽어 내고, 변환된 시스템 참조 정보를 일괄하여 출력한다.
또한 변환 제어부(651)에서는 애플리케이션 참조 정보와 함께 통신 매체를 지정하는 정보 등의 부가 정보가 입력된 경우에는 각 참조 정보와 함께 그 부가 정보도 변환부에 대하여 출력한다.
도메인 변환부(652)는 입력된 도메인 참조 정보를 도메인 참조 테이블(53)을 참조하고 입력된 도메인의 참조 정보를 그 도메인을 구성하는 요소의 집합으로 변환한다. 구체적으로, 예를 들면, 그 도메인에 포함된 엔티티 참조와 도메인 참조의 조합으로 변환한다.
엔티티 변환부(653)는 입력된 엔티티 참조 정보를 엔티티 참조 테이블을 참조하여 그 엔티티가 존재하는 프로세스의 참조 정보와, 거기에서의 원격 식별자로 변환한다. 이 엔티티 참조 테이블은 실질적으로 전술한 로컬 함수 참조 테이블(50) 및 원격 함수 참조 테이블(51)과 동일한 테이블이다. 여기에서 엔티티라 함은 예를 들면, 인스턴스, 클래스, 방식, 전역(global) 함수 등을 나타낸다.
프로세스 변환부(654)는 입력된 프로세스 참조 정보를, 프로세스 참조 테이블(52)을 참조하여 그 프로세스가 존재하는 노드의 정보와, 그 노드 내에서의 프로세스 식별자로 변환한다. 노드의 정보로서는 DNS 명칭, IP 어드레스, 혹은 고유하게 부여한 노드 명칭 중의 어느 하나이다.
노드 명칭 변환은(655)는 입력된 노드 명칭을 프로세스 참조 테이블(52)에 내포되는 노드 참조 테이블을 참조하여 DNS 명칭, 또는 IP 어드레스로 변환한다.
DNS 명칭 프록시 변환부(656)는 입력된 DNS 명칭을 IP 어프레스로 변환한다. DNS 명칭 프록시 변환부(656)는 내부에 통신 수단과 기억 수단을 갖고 있다. 그리고 DNS 명칭이 입력되면 외부의 참조 변환 장치인 DNS 명칭 변환부(660)에 대하여, 그 통신 수단을 통해 통신을 수행하고 DNS 명칭의 IP 어드레스로의 변환을 꾀한다.그 결과를 변환 결과로 출력한다.
또한 DNS 명칭 프록시 변환부(656)에서는 이때 얻어진 DNS 명칭과 IP 어드레스의 대응을, 전술한 내부 기억 수단에 기억해 놓는다. 그리고 변환 대상인 DNS 명칭이 입력된 경우에 먼저 이 기억 수단에 기억되어 있는 DNS 명칭을 검색하고, 동일한 DNS 명칭이 있는(이미 한 번 변환하였음) 경우에는 그 기억 수단에 기억되어 있는 IP 어드레스를 변환 결과로 출력한다. 따라서 DNS 명칭 변환부(660)에 대하여는 내부의 기억 수단에 기억되지 않은 DNS 명칭만을 질의한다.
도메인 변환부(652)∼노드 명칭 변환부(655)의 각 변환기에서 입력된 애플리케이션 참조 정보가 명칭 또는 ID인 경우에는 앞에서 설명한 도메인 명칭 해시 테이블(54)∼원격 함수 ID 해시 테이블(56) 및 도시되지 않은 그 밖의 해시 테이블을 적절히 참조하고 이것에 의해 각 테이블의 해당 항목을 검색한다.
또한 프로세스 변환부(654)∼노드 명칭 변환부(655)에서 수행되는 네트워크상의 노드에 관한 정보 변환은 변환 제어부(651)로부터 참조 정보와 함께 입력되는 통신 매체를 나타내는 부가정보를 참조하여 수행된다. 동일한 시스템에 대하여도 통신 매체가 다르면 어드레스가 통상 다르기 때문이다. 따라서, 부가정보로서는 구체적으로, 이서네트 또는 ATM을 지정하는 정보가 입력된다. 그리고 본 실시예에서 이러한 통신 매체의 지정이 없는 경우에는 디폴트로서 이서네트를 통신 매체로 하여 변환이 수행된다.
다음에, 참조 해결기(650)의 구체적인 동작에 관하여 도 59를 참조하여 설명한다.
도 59는 참조 변환기(650)의 동작의 일례로서, 도메인 내에 속하는 모든 엔티티로 메시지 송신을 수행하는 경우의 참조 정보 변환 처리를 나타내는 도면이다.
도 59에는 각 변환 처리에서 전술한 제1 실시예의 참조 변환 장치(530)에서와 동일한 동작을 수행한 경우에 그 변환 처리를 수행하는 변환부 및 그 변환 동작의 종류를 동시에 기억해 놓는다.
먼저, 그 도메인명(D1)이 참조 변환기(650)의 변환 제어부(651)로 입력되면 변환 제어부(651)는 내용이 도메인명이므로 그 참조 정보를 도메인 변환부(652)로 출력한다.
도메인 변환부(652)에서는 도메인 명칭 해시 테이블(54)을 통해 도메인 참조 테이블(53)을 참조하고 그 도메인에 포함되는 모든 엔티티 및 도메인을 추출한다. 그 결과 도메인명(D1)은 엔티티(E1, E2)와 도메인명(D2, D3)의 조합으로 변환된다.
얻어진 요소 중 도메인명(D2, D3)은 다시 도메인 변환부(652)에서 재귀적으로(reflectively) 변환이 이루어지고, 그것에 따라 각각 엔티티(E3, E4) 및 엔티티(E5, E6)의 조합으로 변환된다.
결국, 입력된 도메인명(D)은 도메인 변환부(652)에서 엔티티 집합(E1, E2, E3, E4, E5, E6)으로 변환된다.
다음으로, 얻어진 엔티티 E1∼E6 는 순차 엔티티 변환부(653)로 입력된다.
엔티티 변환부(653)에서는 각 엔티티 참조 정보 E1∼E6을 그 엔티티가 존재하는 프로세스의 참조 정보와 원격 식별자의 조합으로 변환한다. 그 결과 도시된 바와 같이 참조 정보 P1∼P4와 원격 식별자 ID1∼ID3의 조합으로 표시되는 참조 정보가 얻어진다.
다음으로, 변환 제어부(651)는 얻어진 프로세스의 참조 정보(Pl∼P4)를 프로세스 변환부(654)로 입력한다. 프로세스 변환부(654)에서는 그 프로세스의 참조정보가 노드 정보와 프로세스 식별자로 변환된다. 즉, 프로세스 P1 및 P2에 대하여는 DNS 명으로 표시된 노드 정보와 그 노드에서의 프로세스 식별자가, 프로세스 P3에 대하여는 IP 어드레스로 표시된 노드 정보와 그 노드에서의 프로세스 식별자가, 프로세스 P4에 대하여는 노드명으로 표시된 노드 정보와 그 노드에서의 프로세스 ID가 얻어진다.
얻어진 노드명의 정보 중에서 프로세스 P4에 대해서 얻어진 노드명으로 표시된 노드 정보는 다음에 노드 명칭 변환부(155)로 입력되고, DNS 명칭으로 변환된 다.
또한 프로세스 P1 및 P2에 대해 얻어진 DNS 명칭으로 얻어진 노드 정보는 노드 명칭 변환루(655)를 통해 DNS 명칭 변환부(660)로 전송되고, DNS 명칭 변환부(660)에서 IP 어드레스로 변환된다.
이러한 처리 결과 입력된 도메인명 D1은 모두가 시스템 어드레스로 표시된 시스템 참조 정보로 변환된다.
이와 같이, 참조 변환기(650)는 참조 정보의 변환을 재귀적이며 다단계 처리에 의해 수행되므로 복잡한 계산기 네트워크 상에서도 애플리케이션 레벨의 참조정보를 시스템 참조 정보로 변환할 수가 있다. 환언하면, 시스템 구성에 의존하지 않고 여러 가지의 계산 자원, 즉, 도메인, 노드, 프로세스, 인스턴스, 클래스, 방식, 전역 함수 등을 논리적인 애플리케이션 참조 정의로부터 참조할 수 있다. 그 결과, 물리적인 네트워크 구성에 의존하지 않고 고도의 분산처리 시스템을 실현할 수 있다.
본 발명은 본 실시예에 한정되는 것이 아니며, 임의로 적절하게 변경하여도 좋다.
예를 들면, 본 발명에 관한 참조 변환기의 구성은 도 58에 나타나 있으나, 이 구성은 기본적인 기능을 나타낸 것이고 여러 가지 변형을 첨가할 수 있다.
그 일례로서, 보다 구체적인 참조 변환기의 구성예를 도 60에 표시한다.
도 60에 나타낸 참조 해결기(700)는 변환부를 명칭 해결부(702)와 참조 해결부(708)로 분리하여 구성한 것이다.
이하, 간단히 참고 해결기(700)의 구성 및 기능에 관하여 설명한다.
참조 해결기(700)는 해결기 관리부(701), 명칭 해결부(702), 참조 해결부(708), 및 테이블 관리부(714)를 가진다.
해결기 관리부(761)는 참조 해결기(700) 전체를 관리한다. 구체적으로, 입력된 참조 정보가 명칭인가 참조 정보인가를 판단하고, 명칭이면 명칭 해결부(702)로, 참조 정보이면 참조 정보 해결부(708)로 출력한다.
명칭 해결부(702)는 해결기 관리부(701)에서 입력된 변환 대상인 명칭 공간상의 명칭을, 대응하는 레퍼런스로 변환한다.
명칭 해결 관리부(703)는 명칭 해결부(702) 전체를 관리한다. 명칭 해결 관리부(703)는 주어진 명칭의 종류에 대응하여 입력된 명칭을 도메인명 해결부(704)∼프록시 해결부(707) 중의 어느 하나로 출력한다. 그리고 그 해결부에서 얻어진 참조를 읽어 내고, 해결기 관리부(701)로 출력한다.
도메인명 해결부(704)는 도메인 명칭 해시 테이블(54)을 이용하고, 도메인명에서 도메인 참조로의 변환을 수행한다.
프로세스명 해결부(705)는 함수/프로세스 명칭 해시 테이블(55)을 이용하고 프로세스명에서 프로세스 참조로의 변환을 수행한다.
엔티티명 해결부(706)는 도시되지 않은 별도의 명칭 해시 테이블을 이용하고 엔티티명에서 엔티티 참조로의 변환을 수행한다.
외부명 프록시 해결부(707)는 프록시를 이용하고 외부명에서 외부 참조로의 변환을 수행한다. 구제적으로 예를 들면, DNS명 서버로의 프록시이다.
참조 해결부(708)는 해결 관리부(701)에서 입력된 변환 대상인 참조를 원시(primitive) 참조로의 변환을 수행한다.
참조 해결 관리부(709)는 참조 해결부(708) 전체의 관리를 수행한다. 참조 해결 관리부(709)는 주어진 참조의 종류에 대응하여 입력된 참조를 도메인 참조 해결부(710)∼외부 참조 해결부(713) 중 어느 하나로 출력한다. 그리고 그 해결부에서 얻어진 변환 결과를 읽어 내고, 해결기 관리부(701)로 출력한다.
도메인 참조 해결부(710)는 도메인 참조로부터 엔티티 참조로의 변환을 수행한다. 구체적으로, 도메인 참조는 (엔티티 참조, 도내인 참조)의 조합으로 변환된다. 그리고 변환 결과 얻어진 도메인 참조는 도메인 참조 해결부(710)에서 재귀적 으로 변환된다.
프로세스 해결부(711)는 프로세스 참조에서 원시(primitive) 프로세스 참조로의 변환을 수행한다. 이 때 네트워크 노드명을 통신 매체를 지정하여 원하는 네트워크 어드레스로 변환한다.
엔티티 참조 해결부(712)는 입력된 엔티티 참조에서 원시 엔티티 참조로의 해결을 수행한다. 본 예에서, 로컬 엔티티 참조를 변환하는 경우에는 주어진 로컬엔티티 참조를 그대로 변환 결과로서 되돌린다. 또한 원격 엔티티 참조를 해결하는 경우에는 내부 표현에 나타나는 프로세스 참조를 원시 참조로 변환하여 결과를 출력한다.
외부 참조 해결부(713)는 외부 참조에서 원시 외부 참조로의 해결을 수행한다.
한편, 도 60에서, 외부명 해결부(715)는 DNS 명칭 변환 수단이고 입력된 DNS 명칭을 IP 어드레스로 변환한다.
또한 메시지 송신부(800)는 분산처리 시스템(1)에서 객체간의 통신을 수행하기 위한 메시지 송신을 수행한다.
따라서, 참조 해결기(700)에서는 구체적으로 메시지 송신부(800)로부터 예를들면, 송신처의 노드와 프로세스, 객체를 나타내는 참조 정보가 입력되고, 참조 해결기(700)에서 그 참조 정보를 시스템 참조 정보로 변환하여 메시지 송신부(800)로 출력하고, 메시지 송신부(800)는 그 시스템 참조 정보에 기초하여 실제 통신을 수행한다.
참조 해결기는 이러한 구성으로 되어도 좋다.

Claims (22)

  1. 단수 또는 복수의 계산 객체(computation object)를 구비한 프로세스를 실행하는 복수의 연산 처리 노드가 네트워크를 통해 서로 접속된 병렬 분산 처리 시스템(parallel distributed processing system)으로서,
    제1 프로세스가 구비한 계산 객체 또는 그 기능(facility)을 제2 프로세스가 호출하여 실행하는 경우, 상기 제2 프로세스는, 상기 계산 객체 또는 그 기능의 명칭이나 식별자를 키(key)로 하여 참조 정보(reference information)로부터 상기 계산 객체 또는 그 기능을 상기 네트워크 상에서 직접 특정하는 소재 정보(location information)를 얻고, 상기 소재 정보를 상기 제1 프로세스에 송신하고, 상기 제1 프로세스가 구비한 계산 객체 또는 그 기능을 호출하여 처리를 수행하며,
    상기 참조 정보는,
    계산 객체 또는 그 기능의 수신측 프로세스에 설치되고, 호출되는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 식별 번호와 상기 계산 객체 또는 그 기능의 실행 어드레스와의 대응을 나타내는 내부 참조 수단, 그리고
    계산 객체 또는 그 기능의 송신측 프로세스에 설치되고, 호출을 수행하는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 명칭이나 식별자와 상기 계산 객체 또는 그 기능의 식별 번호와의 대응을 나타내는 외부 참조 수단으로 포함하며,
    상기 송신측 프로세스는 호출을 수행하는 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 외부 참조 수단으로부터 대응하는 식별 번호를 얻고, 상기 식별 번호를 포함하는 메시지를 계산 객체 또는 그 기능의 수신측 프로세스로 보내며,
    상기 수신측 프로세스는 상기 송신측 프로세스에서 보낸 메시지에 포함된 상기 식별 번호를 키로 하여 상기 내부 참조 수단으로부터 상기 호출된 계산 객체 또는 그 기능의 실행 어드레스를 얻고, 상기 실행 어드레스에 기초하여 상기 호출된계산 객체 또는 그 기능을 실행하는 병렬 분산 처리 시스템.
  2. 제1항에서,
    단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합(集合)으로 이루어지고, 상기 집합 내에서만 상기 계산 객체 또는 그 기능의 명칭이나 식별자의 일의성(uniqueness)이 요구되는 계산 공간을 규정하고,
    상기 참조 정보는 상기 계산 공간 내에서 상기 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 계산 객체 또는 그 기능의 소재 정보를 주는 병렬 분산 처리 시스템.
  3. 제1항에서,
    상기 연산 처리 노드는,
    상기 프로세스를 실현하는 프로그램 모듈의 소재 정보와 상기 프로그램 모듈의 배치 수신측(allocation destination)의 연산 처리 노드에 대한 정보와의 대응을 나타내는 배치 정보에 기초하여, 소정의 연산 처리 노드에 상기 프로그램 모듈을 배치하고, 상기 배치 수신측의 연산 처리 노드에서 프로세스를 생성하는 프로세스 배치 수단, 그리고
    각각의 프로세스에서 상기 배치 정보와 상기 프로그램 모듈에 기술된 계산 객체 또는 그 기능 상호간의 참조 관계에 기초하여 상기 프로세스를 실현하는 프로그램 모듈이 상호 참조하는 계산 객체 또는 그 기능의 상기 참조 정보를 생성하는 참조 정보 생성 수단을 포함하는 병렬 분산 처리 시스템.
  4. 제1항에서,
    단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합으로 이루어지고, 상기 집합 내에서만 상기 계산 객체 또는 그 기능의 명칭이나 식별자의 일의성이 요구되는 계산 공간은 규정하고,
    상기 계산 공간에서 계산 객체 또는 그 기능을 특정하는 논리적 참조 정보를 동일한 논리적 참조 정보 및 상기 소재 정보로서의 시스템 참조 정보 중 어느 하나, 또는 그것들을 조합한 참조 정보로 변환하는 복수의 참조 변환 수단, 그리고
    입력된 논리적 참조 정보 및 상기 참조 변환 수단에서 변환되고 생성된 논리적 참조 정보를 상기 논리적 참조 정보에 기초하여 상기 복수의 참조 변환 수단 중의 어느 하나에 재귀적(再歸的)으로 입력하고, 상기 입력된 논리적 참조 정보를 상기 시스템 참조 정보로 변환하는 변환 제어 수단을 더 포함하며,
    통신 수신측 프로세스의 논리적 참조 정보를 상기 변환 제어 수단을 통해 상기 참조 변환 수단에 의해 시스템 참조 정보로 변환하고, 프로세스 상호간의 통신을 수행하는 병렬 분산 처리 시스템.
  5. 제1항에서,
    상기 메시지에는 상기 송신측 프로세스에서 이용되는 타이머가 표시하는 시각을 포함하는 병렬 분산 처리 시스템.
  6. 제1항에서,
    송신측 프로세스로부터 수신측 프로세스로 복수의 메시지가 보내진 경우에 이러한 메시지에 대응하는 복수의 기능 호출을 메시지에 포함되는 수신측 프로세스에서 처리하는 우선 순위에 따라 차례로 수행하는 병렬 분산 처리 시스템.
  7. 제1항에서,
    상기 메시지에는 호출된 기능이 수신측 프로세스에서 실행되는 시각을 포함하는 병렬 분산 처리 시스템.
  8. 제1항, 제2항 내지 제7항 중 어느 한 항에서,
    상기 계산 객체 또는 그 기능은 함수(function), 클래스(class), 인스턴스(instance), 방식(method), 대역 공유 변수(global variable) 및 파일 중 하나인 병렬 분산 처리 시스템.
  9. 제4항에서,
    상기 복수의 참조 변환 수단은,
    상기 논리적 참조 정보를 상기 시스템 참조 정보로 변환하는 제1 참조 변환 수단,
    상기 논리적 참조 정보를 상기 시스템 참조 정보의 조합으로 변환하는 제2 참조 변환 수단,
    상기 논리적 참조 정보를 그 밖의 논리적 참조 정보로 변환하는 제3 참조 변환 수단,
    상기 논리적 참조 정보를 그 밖의 논리적 참조 정보의 조합으로 변환하는 제 4 참조 변환 수단, 그리고
    상기 논리적 참조 정보를 상기 시스템 참조 정보와 상기 논리적 참조 정보의 조합으로 변환하는 제5 참조 변환 수단을 포함하고,
    상기 변환 제어 수단은 상기 입력된 논리적 참조 정보 및 상기 변환되어 생성된 논리적 참조 정보를 상기 논리적 참조 정보의 내용에 기초하여 상기 제1 참조변환 수단 내지 제5 참조 변환 수단 중 어느 하나로 입력하는 병렬 분산 처리 시스템.
  10. 제1항, 제2항 내지 제7항 중 어느 한 항에서,
    새로운 계산 객체 또는 그 기능이 등록된 때, 상기 계산 객체 또는 그 기능이 수신측 및 송신측으로 되는 프로세스에 대하여 해석하고, 그 해석 결과에 기초하여 상기 참조 정보를 동적으로 작성하는 병렬 분산 처리 시스템.
  11. 단수 또는 복수의 계산 객체를 구비한 프로세스를 실행하고, 그 밖의 연산처리 장치와 네트워크를 통해 상호 접속된 연산 처리 장치로서,
    제1 프로그램 모듈에 대응하는 제1 프로세스를 생성하는 프로세스 생성 수단,
    복수의 프로그램 모듈에 기술된 계산 객체 또는 그 기능의 상호간 참조 관계에 기초하여 상기 복수의 프로그램 모듈이 상호 참조하고 있는 계산 객체 또는 그 기능을 네트워크 상에서 직접 특정하는 소재 정보에 관한 참조 정보를 생성하는 참조 정보 생성 수단,
    상기 참조 정보를 유지하는 참조 정보 유지 수단,
    제2 프로그램 모듈에 대응하는 제2 프로세스가 구비하는 계산 객체 또는 그 기능을 상기 제1 프로세스가 호출하고 실행할 때, 상기 계산 객체 또는 그 기능의 실행 어드레스를 상기 참조 정보 유지 수단에 질의하여 얻는 참조 질의 수단, 그리고
    상기 참조 질의 수단에 의해 얻은 참조 정보를 포함하는 메시지를 상기 제1 프로세스와 상기 제2 프로세스 사이에서 송수신하고, 상기 제1 프로세스 및 상기 제2 프로세스가 구비하는 계산 객체 또는 그 기능의 상호 호출 처리를 수행하는 메시지 통신 수단을 포함하고,
    상기 참조 정보는
    계산 객체 또는 그 기능의 수신측 프로세스에 설치되고, 호출되는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 식별 번호와 상기 계산 객체 또는 그 기능의 실행 어드레스와의 대응을 나타내는 내부 참조 수단, 그리고
    계산 객체 또는 그 기능의 송신측 프로세스에 설치되고, 호출을 수행하는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 명칭이나 식별자와 상기 계산 객체 또는 그 기능의 식별 번호와의 대응을 나타내는 외부 참조 수단을 포함하며,
    상기 송신측 프로세스는 호출을 수행하는 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 외부 참조 수단으로부터 대응하는 식별 번호를 얻고, 상기 식별 번호를 포함하는 메시지를 계산 객체 또는 그 기능의 수신측 프로세스로 보내며,
    상기 수신측 프로세스는 상기 송신측 프로세스에서 보낸 메시지에 포함되는 상기 식별 번호를 키로 하여 상기 상기 내부 참조 수단으로부터 상기 호출된 계산 객체 또는 그 기능의 실행 어드레스를 얻고, 상기 실행 어드레스에 기초하여 상기 호출된 계산 객체 또는 그 기능을 실행하는 연산 처리 장치.
  12. 단수 또는 복수의 계산 객체를 구비한 프로세스를 실행하고, 그 밖의 연산 처리 장치와 네트워크를 통해 상호 접속된 연산 처리 장치로서,
    상기 프로세스를 실현하는 프로그램 모듈의 소재 정보와 상기 프로그램 모듈의 배치 수신측(allocation destination)의 연산 처리 노드에 대한 정보와의 대응을 나타내는 배치 정보를 기초로 하고,
    소정의 연산 처리 노드에 대하여, 상기 프로그램 모듈의 배치와 상기 프로그램 모듈에 대응하는 프로세스의 생성을 지시함으로써 상기 프로세스를 실질적으로 생성하는 프로세스 배치 수단,
    상기 배치 정보와 상기 프로그램 모듈에 기술된 계산 객체 또는 그 기능 상호간의 참조 관계에 기초하여 프로그램 모듈에 대응하여 생성된 상기 프로세스에 대하여, 복수의 프로그램 모듈이 상호 참조하고 있는 계산 객체 또는 그 기능을 네트워크 상에서 직접 특정하는 소재 정보에 관한 생성을 지시함으로써 참조 정보를 실질적으로 생성하는 참조 정보 생성 수단, 그리고
    상기 프로세스의 배치를 상기 연산 처리 노드에 지시하고 상기 참조 정보의 생성을 상기 프로세스에 지시하기 위한 통신 수단을 포함하고,
    상기 참조 정보는,
    계산 객체 또는 그 기능의 수신측 프로세스에 설치되고, 호출되는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 식별 번호와 상기 계산 객체 또는 그 기능의 실행 어드레스와의 대응을 나타내는 내부 참조 수단, 그리고
    계산 객체 또는 그 기능의 송신측 프로세스에 설치되고, 호출을 수행하는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 명칭이나 식별자와 상기 계산 객체 또는 그 기능의 식별 번호와의 대응을 나타내는 외부 참조 수단을 포함하며,
    상기 송신측 프로세스는 호출을 수행하는 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 외부 참조 수단으로부터 대응하는 식별 번호를 얻고, 상기 식별 번호를 포함하는 메시지를 계산 객체 또는 그 기능의 수신측 프로세스로 보내며,
    상기 수신측 프로세는 상기 송신측 프로세스에서 보낸 메시지에 포함되는 상기 식별 번호를 키로 하여 상기 내부 참조 수단으로부터 상기 호출된 계산 객체 또는 그 기능의 실행 어드레스를 얻고, 상기 실행 어드레스에 기초하여 상기 호출된 계산 객체 또는 그 기능을 실행하는 연산 처리 장치.
  13. 단수 또는 복수의 계산 객체를 구비한 프로세스를 실행하는 복수의 연산 처리 노드가 서로 접속된 네트워크에서의 병렬 분산 처리 방법으로서,
    제1 프로세스가 구비한 계산 객체 또는 그 기능을 제2 프로세스가 호출하여 실행할 때 상기 제2 프로세스는 상기 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 참조 정보로부터 상기 계산 객체 또는 그 기능을 상기 네트워크 상에서 직접 특정하는 소재 정보를 얻고, 상기 소재 정보를 상기 제1 프로세스에 송신하고, 상기 제1 프로세스가 구비하는 계산 객체 또는 그 기능의 호출 처리를 수행하며,
    상기 참조 정보는,
    계산 객체 또는 그 기능의 수신측 프로세스에 설치되고, 호출되는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 식별 번호와 상기 계산 객체 또는 그 기능의 실행 어드레스와의 대응을 나타내는 내부 참조 정보, 그리고
    계산 객체 또는 그 기능의 송신측 프로세스에 설치되고, 호출을 수행하는 계산 객체 또는 그 기능에 관하여, 상기 계산 객체 또는 그 기능의 명칭이나 식별자와 상기 계산 객체 또는 그 기능의 식별 번호와의 대응을 나타내는 외부 참조 정보을 포함하며,
    상기 송신측 프로세스는 호출을 수행하는 게산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 외부 참조 정보로부터 대응하는 식별 번호를 얻고, 상기 식별 번호를 포함하는 메시지를 계산 객체 또는 그 기능의 수신측 프로세스로 보내며,
    상기 수신측 프로세스는 상기 송신측 프로세스에서 보낸 메시지에 포함된 상기 식별 번호를 키로 하여 상기 내부 참조 정보로부터 상기 호출된 계산 객체 또는 그 기능에 대한 실행 어드레스를 얻고, 상기 실행 어드레스에 기초하여 상기 호출된 계산 객체 또는 그 기능을 실행하는 병렬 분산 처리 방법.
  14. 제13항에서,
    단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합으로 이루어지고, 상기 집합 내에서만 상기 계산 객체 또는 그 기능의 명칭이나 식별자의 일의성이 요구되는 계산 공간을 규정하고,
    상기 참조 정보는 상기 계산 공간 내에서 상기 계산 객체 또는 그 기능의 명칭이나 식별자를 키로 하여 상기 계산 객체 또는 그 기능의 소재 정보를 주는 병렬분산 처리 방법.
  15. 제13항에서,
    상기 연산 처리 노드는,
    상기 프로세스를 실현하는 프로그램 모듈의 소재 정보와 상기 프로그램 모듈의 배치 수신측(allocation destination)의 연산 처리 노드에 대한 정보와의 대응을 나타내는 배치 정보에 기초하여, 소정의 연산 처리 노드에 상기 프로그램 모듈을 배치하고, 그 배치 수신측의 연산 처리 노드에서 프로세스를 생성하고,
    각각의 프로세스에서, 상기 배치 정보와 상기 프로그램 모듈에 기술된 계산객체 또는 그 기능 상호간의 참조 관계에 기초하여, 상기 프로세스를 실현하는 프로그램 모듈이 서로 참조하고 있는 계산 객체 또는 그 기능의 상기 참조 정보를 생성하는 병렬 분산 처리 방법.
  16. 제13항에서,
    단수 또는 복수의 임의의 상기 계산 객체 또는 그 기능의 집합으로 이루어지고, 상기 집합 내에서만 상기 계산 객체 또는 그 기능의 명칭이나 식별자의 일의성이 요구되는 계산 공간을 규정하고,
    상기 계산 공간에서 프로세스의 통신 수신측의 계산 객체 또는 그 기능을 특정하는 논리적 참조 정보에 관하여, 그 내용에 기초하여 참조 변환의 방법을 결정하고,
    상기 결정된 참조 변환의 방법으로 상기 통신 수신측의 논리적 참조 정보를그 밖의 논리적 참조 정보 및 상기 계산기 네트워크 상의 객체를 직접 특정하는 시스템 참조 정보 중 어느 하나 또는 그것들을 조합한 참조 정보로 변환하고,
    상기 변환 결과의 참조 정보 가운데 논리적 참조 정보에 관해서는 다시 상기 논리적 참조 정보에 기초하여 참조 변환의 방법을 결정하고,
    상기 결정된 참조 변환의 방법에 의해 상기 변환을 다시 수행하고,
    상기 변환 결과의 참조 정보에 대한 모든 요소가 상기 시스템 참조 정보로 될 때까지 논리적 참조 정보에 대한 상기 참조 변환 방법의 결정 및 그것에 기초한 변환을 반복하고, 상기 모든 요소가 상기 시스템 참조 정보로 되면 그 참조 정보에 기초하여 상기 각 프로세스간의 통신을 수행하고,
    상기 각 프로세스가 실질적으로 연계하여 분산 처리를 수행하는 병렬 분산 처리 방법.
  17. 제13항에서,
    상기 메시지에는 상기 송신측 프로세스에서 이용되는 타이머가 표시하는 시각을 포함하는 병렬 분산 처리 방법.
  18. 제13항에서,
    송신측 프로세스로부터 수신측 프로세스로 복수의 메시지가 전송되는 경우, 이 메시지에 대응하는 복수의 기능 호출을 메시지에 포함하는 수신측 프로세스에서처리하는 우선 순위에 기초하여 차례로 수행하는 병렬 분산 처리 방법.
  19. 제13항에서,
    상기 메시지에는 호출된 기능이 수신측 프로세스에서 실행되는 시각을 포함하는 병렬 분산 처리 방법.
  20. 제13항, 제14 내지 제19항 중 어느 한 항에서,
    상기 계산 객체 또는 그 기능은 함수, 클래스, 인스턴스, 방식, 대역 공유변수 및 파일 중 어느 하나인 병렬 분산 처리 방법.
  21. 제16항에 있어서,
    상기 참조 변환의 방법은,
    상기 논리적 참조 정보를 상기 시스템 참조 정보로 변환하는 제1 방법,
    상기 논리적 참조 정보를 상기 시스템 참조 정보의 조합으로 변환하는 제2 방법.
    상기 논리적 참조 정보를 그 밖의 논리적 참조 정보로 변환하는 제3 방법,
    상기 논리적 참조 정보를 그 밖의 논리적 참조 정보의 조합으로 변환하는 제4 방법,
    상기 논리적 참조 정보를 상기 시스템 참조 정보와 상기 논리적 참조 정보의 조합으로 변환하는 제5 방법을 포함하며,
    상기 참조 변환의 방법은 상기 제1 내지 제5 방법 중에서 상기 입력된 논리적 참조 정보 및 상기 변환되고 생성된 논리적 참조 정보의 내용에 기초하여 결정되는 병렬 분산 처리 방법.
  22. 제13항, 제14 내지 제19항 중 어느 한 항에서,
    새로운 계산 객체 또는 그 기능이 등록된 때, 상기 계산 객체 또는 그 기능이 수신측 및 송신측으로 되는 프로세스에 관하여 해석하고, 그 해석 결과에 기초하여 상기 참조 정보를 동적으로 작성하는 병렬 분산 처리 방법.
KR1019970007241A 1996-03-05 1997-03-05 병렬분산처리시스템및그방법 KR100322213B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP4783396A JPH09245003A (ja) 1996-03-05 1996-03-05 並列分散処理システムおよびその方法
JP96-047833 1996-03-05
JP27836496A JPH10124319A (ja) 1996-10-21 1996-10-21 並列分散処理システムおよびその方法
JP96-278364 1996-10-21
JP96-279732 1996-10-22
JP8279732A JPH10124423A (ja) 1996-10-22 1996-10-22 参照変換装置とその方法、および、分散処理システムとその方法
JP35161096A JPH10187468A (ja) 1996-12-27 1996-12-27 並列分散処理システムおよびその方法
JP96-351610 1996-12-27

Publications (2)

Publication Number Publication Date
KR970066862A KR970066862A (ko) 1997-10-13
KR100322213B1 true KR100322213B1 (ko) 2002-06-22

Family

ID=27462108

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970007241A KR100322213B1 (ko) 1996-03-05 1997-03-05 병렬분산처리시스템및그방법

Country Status (6)

Country Link
US (1) US6098111A (ko)
EP (1) EP0794493B1 (ko)
KR (1) KR100322213B1 (ko)
CN (1) CN1132098C (ko)
CA (1) CA2199108C (ko)
DE (1) DE69735045T2 (ko)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134603A (en) * 1998-03-20 2000-10-17 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
CN1298514A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 确定性散列识别远程方法的方法和系统
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
JP2978882B1 (ja) 1998-06-03 1999-11-15 三菱電機株式会社 デバイス間データ転送装置及びデバイス間データ転送方法
US6553421B1 (en) * 1998-09-15 2003-04-22 International Business Machines Corporation Method and system for broadcast management in a data communication network that permits namesharing
US6470346B2 (en) * 1998-10-07 2002-10-22 Millennium Pharmaceuticals, Inc. Remote computation framework
US6434594B1 (en) * 1999-03-09 2002-08-13 Talk2 Technology, Inc. Virtual processing network enabler
DE19910537A1 (de) * 1999-03-09 2000-09-14 Siemens Ag Automatisierungssystem mit Automatisierungsobjekten mit Verzeichnisstruktur und Verfahren zur Verwaltung von Automatisierungsobjekten in einer Verzeichnisstruktur
WO2000055725A1 (fr) 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement
JP3861538B2 (ja) 1999-12-15 2006-12-20 株式会社日立製作所 プログラム配付管理システム
US7209959B1 (en) * 2000-04-04 2007-04-24 Wk Networks, Inc. Apparatus, system, and method for communicating to a network through a virtual domain providing anonymity to a client communicating on the network
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
DE10131944A1 (de) 2001-07-02 2003-01-16 Siemens Ag Verfahren zur Verarbeitung von Daten
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US6865659B2 (en) * 2002-06-07 2005-03-08 Sun Microsystems, Inc. Using short references to access program elements in a large address space
US6934876B1 (en) * 2002-06-14 2005-08-23 James L. Holeman, Sr. Registration system and method in a communication network
US7210125B2 (en) * 2003-07-17 2007-04-24 International Business Machines Corporation Method and system for application installation and management using an application-based naming system including aliases
US7483914B2 (en) 2003-07-17 2009-01-27 International Business Machines Corporation Method and system for implementing an application-based naming system
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7467384B2 (en) * 2004-02-20 2008-12-16 Microsoft Corporation Uniform resource discovery with multiple computers
US20050187924A1 (en) * 2004-02-20 2005-08-25 Microsoft Corporation Uniform resource discovery provider
US7343378B2 (en) * 2004-03-29 2008-03-11 Microsoft Corporation Generation of meaningful names in flattened hierarchical structures
JP4717426B2 (ja) * 2004-12-07 2011-07-06 キヤノン株式会社 情報処理装置及びその方法
US8028058B2 (en) * 2005-03-18 2011-09-27 International Business Machines Corporation Dynamic discovery and reporting of one or more application program topologies in a single or networked distributed computing environment
US7603359B2 (en) * 2006-01-17 2009-10-13 International Business Machines Corporation Method and apparatus for maintaining federated name context bindings in a name space
US10078574B2 (en) * 2006-09-25 2018-09-18 Typemock Ltd. Methods and systems for isolating software components
US8065503B2 (en) * 2006-12-15 2011-11-22 International Business Machines Corporation Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process
KR100953485B1 (ko) * 2008-02-26 2010-04-16 연세대학교 산학협력단 항공 레이저 측량 데이터의 병렬 처리 시스템 및 그 방법
US8103780B2 (en) * 2008-12-18 2012-01-24 At&T Intellectual Property I, Lp Systems and methods for determining the location of a request on a content delivery network
US9286369B2 (en) * 2009-12-30 2016-03-15 Symantec Corporation Data replication across enterprise boundaries
US20110314075A1 (en) * 2010-06-18 2011-12-22 Nokia Corporation Method and apparatus for managing distributed computations within a computation space
CN102314460B (zh) 2010-07-07 2014-05-14 阿里巴巴集团控股有限公司 数据分析方法、系统及服务器
CN102375737A (zh) * 2010-08-25 2012-03-14 中兴通讯股份有限公司 一种移动终端应用的事件处理装置和方法
US20120101987A1 (en) * 2010-10-25 2012-04-26 Paul Allen Bottorff Distributed database synchronization
CN103309730B (zh) * 2012-03-15 2016-03-16 腾讯科技(深圳)有限公司 跨进程回调的方法及装置
JP5949506B2 (ja) * 2012-11-30 2016-07-06 富士通株式会社 分散処理方法、情報処理装置、及びプログラム
WO2014118918A1 (ja) * 2013-01-30 2014-08-07 三菱電機株式会社 数値制御装置
JP2015005214A (ja) * 2013-06-21 2015-01-08 富士通株式会社 情報関連付けプログラム、及び情報関連付け方法
CN104348764B (zh) * 2013-07-31 2017-09-19 国际商业机器公司 在数据接收链路中分配计算单元的方法和装置
CN108009258B (zh) * 2017-12-10 2022-03-15 恒创数字科技(江苏)有限公司 一种可在线配置的数据采集与分析平台
CN113448867B (zh) * 2021-07-16 2022-08-16 谢靖 一种软件压力测试方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5422999A (en) * 1989-06-19 1995-06-06 Digital Equipment Corporation Information object transport system
GB2246218B (en) * 1990-07-18 1994-02-09 Stc Plc Distributed data processing systems
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5251205A (en) * 1990-09-04 1993-10-05 Digital Equipment Corporation Multiple protocol routing
CA2048306A1 (en) * 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
US5227778A (en) * 1991-04-05 1993-07-13 Digital Equipment Corporation Service name to network address translation in communications network
JP3055970B2 (ja) * 1991-06-20 2000-06-26 富士通株式会社 オブジェクト指向言語間インタフェース実現方法および装置
US5377323A (en) * 1991-09-13 1994-12-27 Sun Microsytems, Inc. Apparatus and method for a federated naming system which can resolve a composite name composed of names from any number of disparate naming systems
US5434974A (en) * 1992-03-30 1995-07-18 International Business Machines Corporation Name resolution for a multisystem network
DE69220093T2 (de) * 1992-06-18 1997-12-04 Ibm Verarbeitungsnetzwerk für verteilte anwendungsprogramme.
US5425028A (en) * 1992-07-16 1995-06-13 International Business Machines Corporation Protocol selection and address resolution for programs running in heterogeneous networks
US5396630A (en) * 1992-10-06 1995-03-07 International Business Machines Corporation Method and system for object management across process boundries in a data processing system
EP0614139A3 (en) * 1993-03-04 1995-05-03 Ibm External procedure call for a distributed processing environment.
US5581761A (en) * 1993-07-20 1996-12-03 Sun Microsystems, Inc. Methods and apparatus for providing an extensible set of auxiliary services for objects in an object-oriented system
US5548726A (en) * 1993-12-17 1996-08-20 Taligeni, Inc. System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
US5630140A (en) * 1995-01-23 1997-05-13 Tandem Computers Incorporated Ordered and reliable signal delivery in a distributed multiprocessor
US5790548A (en) * 1996-04-18 1998-08-04 Bell Atlantic Network Services, Inc. Universal access multimedia data network

Also Published As

Publication number Publication date
CN1132098C (zh) 2003-12-24
KR970066862A (ko) 1997-10-13
US6098111A (en) 2000-08-01
DE69735045D1 (de) 2006-03-30
EP0794493A3 (en) 2002-01-23
CA2199108C (en) 2002-04-23
CA2199108A1 (en) 1997-09-05
CN1165343A (zh) 1997-11-19
DE69735045T2 (de) 2006-08-31
EP0794493B1 (en) 2006-01-04
EP0794493A2 (en) 1997-09-10

Similar Documents

Publication Publication Date Title
KR100322213B1 (ko) 병렬분산처리시스템및그방법
CA2172644C (en) Methods and apparatus for storage and retrieval of name space information in a distributed computing system
US6834284B2 (en) Process and system for providing name service scoping behavior in java object-oriented environment
US5452433A (en) Common agent computer management system and method
EP0479660B1 (en) Distributed configuration profile for computing system
US5265250A (en) Apparatus and methods for performing an application-defined operation on data as part of a system-defined operation on the data
JP3484779B2 (ja) 名前サービス方式及び名前サービス方法
IL124916A (en) Method and system for constructing software components
JP4042527B2 (ja) 呼出規約変換処理の生成方法
CN111324395B (zh) 调用方法、装置和计算机可读存储介质
US7958145B2 (en) Creating multiple MBeans from a factory MBean
JPH10187468A (ja) 並列分散処理システムおよびその方法
Lopes et al. DiTyCO: An experiment in code mobility from the realm of process calculi
JPH11272622A (ja) 並行分散処理システムおよびその方法
Homer et al. Configuring scientific applications in a heterogeneous distributed system
JPH10124423A (ja) 参照変換装置とその方法、および、分散処理システムとその方法
US20080320034A1 (en) Method for client management of jmx mbean state
Jones et al. Applications of CORBA in the ATLAS prototype DAQ
JP3007340B1 (ja) 機能呼び出し方法、並列分散処理システムおよびコンピュータ
JPH09245003A (ja) 並列分散処理システムおよびその方法
JP3785152B2 (ja) 参照変換装置および、分散処理システムとその方法
JPH0830455A (ja) オブジェクト指向情報処理システム
JPH10124319A (ja) 並列分散処理システムおよびその方法
KR0170197B1 (ko) 고속 병렬 컴퓨터에서 데스크의 병렬처리를 위한 가상 시스템
JPH06110841A (ja) 名前管理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121221

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20131219

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 16

EXPY Expiration of term