KR950014163B1 - 분산 프로그램을 스택하기 위한 방법 및 장치 - Google Patents

분산 프로그램을 스택하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR950014163B1
KR950014163B1 KR1019920004488A KR920004488A KR950014163B1 KR 950014163 B1 KR950014163 B1 KR 950014163B1 KR 1019920004488 A KR1019920004488 A KR 1019920004488A KR 920004488 A KR920004488 A KR 920004488A KR 950014163 B1 KR950014163 B1 KR 950014163B1
Authority
KR
South Korea
Prior art keywords
procedure
callable
processor
procedures
program
Prior art date
Application number
KR1019920004488A
Other languages
English (en)
Other versions
KR920020337A (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 KR920020337A publication Critical patent/KR920020337A/ko
Application granted granted Critical
Publication of KR950014163B1 publication Critical patent/KR950014163B1/ko

Links

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
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

내용 없음.

Description

분산 프로그램을 스택하기 위한 방법 및 장치
제 1 도는 본 발명의 실시예에 따라서 단일-처리 프로그램들을 실행하기 위한 멀티-프로세서 시스템의 주요 하드웨어 구성품들을 도시한 도.
제 2 도는 종래 프로그램이 일련의 내포된 절차 호출들을 유니-프로세서 컴퓨터 아키택쳐에서 어떻게 실행하는지를 도시한 도.
제 3 도는 제 2 도의 종래 프로그램이 본 실시예에 따라서 멀티-프로세서 시스템상에서 어떻게 실행되는지를 도시한 도.
제 4 도는 본 실시예에 따라서 리모트 절차 호출에 관계된 파티션내의 각종 유닛들을 도시한 도.
제 5 도는 본 실시예에 따라서 분산 스택을 도시한 도.
제 6 도는 본 실시예에 따라서 에이전트 상태 스택의 구조를 도시한 도.
제 7 도는 본 실시예에 따라서 에이전트들간의 메시지 구조를 도시한 도.
제 8 도는 단일 리모트 절차 호출 및 복귀 단계동안 제어 전달을 도시한 도.
제 9 도는 본 실시예에 따라서 단일 리모트 절차 호출 및 복귀 부분으로서 c-스터브들과 s-스티브들에의해 수행되는 단계를 도시한 플로우챠트.
제10a도 내지 f도는 본 실시예에 따라서 에이전트들에 의해 수행되는 단계를 도시한 플로우챠트.
제11도는 본 실시예에 따라서 리모트 절차 호출들에 대한 루팅 정보를 유지시키는 데이블 구조를 도시한 도
제12도는 본 실시예에 따라서 로더/스타터 매카니즘을 도시한 도.
* 도면의 주요 부분에 대한 부호의 설명
102 : ClSC CPU 122 : RISC CPU
103,123 : 국부 메모리 104,124 : 메모리 버스
105 : 프로세서 인터페이스 유닛 106,125 : 시스템 버스
108,109,126 : 버스 인터페이스
본 발명은 데이타 처리 소프트웨어 용법(data processing software usage)에 관한 것이며, 특히 단일-처리 컴퓨터 프로그램(single-thread computer program)을 멀티 -프로세서 (multi-processor) 상에서 효율적으로 실행하기 위한 데이타 처리 소프트웨어 용법에 관한 것이다.
현대 컴퓨터 시스템은 전형적으로 단일 중앙 처리 장치(single central processing unit(CPU))를 구비하고 시스템 메모리(system memory), 통신 버스들(communications buses), 입/출력 제어기들(input/output controlIers) 기억 장치들(storage devices)등과 같은 보조 하드웨어(supporting hardware)를 구비한다 CPU는 컴퓨터 시스템의 심장부이다. CPU는 컴퓨터 프로그램을 포함하는 명령들(instructions)을 실행하고 다른 시스템 구성품들(components)의 동작을 지시한다.
컴퓨터 개발 초창기에, CPU는 컴퓨터 시스템에서 가장 값비싼 부분이었다. 그로 인해, 이하에 기술된 시스템이 CPU 용법을 최적화하기 위하여 CPU 주변에 구성되었다. 다수의 사용자가 여러 과업들을 동시에 실행하도륵한 다중-과업화 시스템(Multi-tasking systems)은 컴퓨터 개발사의 결과이다. 다중-과업화란다수의 사용자들과 다중 과업들이 CPU를 공유(share)하도록 한것이다. 비록 다중-과업화 시스템이 다수의 사용자로 하여금 각종 과업들을 동시에 실행하도록 한 것일지라도, 단지 한가지 과업만이 어떤 임의 시간에서 CPU에서 실행될 수 있다. 만일 특정 과업이 CPU를 필요로한데, 그 CPU가 통신중(busy)이라면,그 과업은 대기해야만 한다. 따라서, 다중-과업화가 CPU 활용도를 더욱 크게하는 반면에, 그것은 전체시스템 수행 성능(perfomnnce)면에서 보면 CPU가 더욱 병목(bottleneck)될 수 있다는 것을 의미한다.
집적 회로의 출현에 따라, 다른 시스템 구성품들과 관계하는 프로세서 비용은 경감되어 왔다. 결과적으로, 컴퓨터 시스템들은 더 많은 프로세서들을 갖도록 설계되는 중이다. 예를들어, 디스크 구동 제어기 프로세서(disk drive controller processor), 워크 스터이션 제어기 프로세서(workstation controllerprocessor)등과 같은 슬레이보 프로세서들(slave processors)에서 어떤 저 레벨 주변 기능들(certain lowlevel peripheral functions)을 수행하는 것이 수십년동안 표준이 되어 왔다. 상기 주변 프로세서들의 상대적 비용이 절감되어 왔기 때문에, 시스템 설계자들은 그들의 사용을 확대하여 CPU에 부여된 작업부담(workload)을 감소시켜 왔다.
최근에, 이런 값싼 프로세서들을 활용하여 단열 CPU에 의해 전통적으로 수행되어온 기능들을 수행하는 멀티플 프로세서들을 포함하는 병렬 및 분산 처리 시스템(parallel and distributed processing system)의 개발을 이끌었다. 상기 멀티-프로세서 시스템내의 프로세서들은 개별적인 어드레스 공간(separate addresspaces)을 갖고 그들 자신의 기억 장치와 그들 자신의 내부 데이타 버스(internal data bus) 및 I/O를 갖을수 있다. 상기 프로세서들은 공유 버스(shared bus) 및 공유 메모리(shared memory)를 통해 연결되거나 또는 통신 네트워크 혹은 다른 I/O 제어기들을 경유하여 보다 루즈하게(loosely) 연결된다.
그러한 멀티-프로세서 시스템의 특정 예로서 법용의 주 프로세서(general purpose main procesor)와 더불어 사용되는 수치-접중 코-프로세서(numeric-intensive co-processor)를 들 수 있다. 수치-집중 코-프로세서의 아키텍쳐(architecture)는 집중 계산(통상석으로 부동 소숫짐(floating point)계산)을 필요로 하는 장치를을 수행시키는데 최적인 반면에, 구 프로세서는 데이타 이동(data moves), 비교(compares), I/O 등과 같은 전형적인 명령 혼합(instruction mix)을 조정(handle)하는데 최적이다.
상기 멀티-프로세서 시스템이 갖고 있는 문제들중 하나는 컴퓨터 시스템상에서 실행되도록 설계된 대부분의 프로그램들이 본질적으로 단일-처리된다는 것이다. 여기서 사용되는 "단일-처리(single-thread)"라는 말은 프로그램이 단지 하나의 제어 흐름만을 포함한다는 것을 의미하며, 그로인해, 명령들중 단지 하나의 시퀀스(sequence)만이 어떤 임의 시간에서 실행된다. 그러한 시퀀는 부호(code)내의 상이한 포인트로 루프되거나 또는 점프(1oop or jump)될 수 있지만, 그것은 항상 단일 통로를 따른다. 그러한 단일-처리프로그램은 다중-처리(multipIe-threads) 프로그램과 구별되는데, 여기서 다중-처리 프로그램 흐름은 길(road)이 포크(fork)로 분기되는 것처럼 분할될 수 있고 양 통로를 따라서 동시에 진행할 수 있다. 단일-처리 프로그램은 멀티플 프로세서들 상에서 실행하기 좋게 변경될 수 없다.
단일-처리 프로그램이 각종 타잎의 프로세서들을 포함하는 멀티-프로제서 시스템상에서 실행되어야만하는 경우, 프로그램 부분들(portions of the program)은 프로그램을 실행하기 위한 각종 프로세서들에 할당되어야만 한다. 또다른 한가지 방법은 상이한 제어 흐름을 서포트(supports)하기 위한 단일-처리 부호(single-thread code)를 제기입(rewrite)하여, 멀티플 프로세서들을 최적화하는 것이다. 비록 컴퓨터 프로그램들이 존재하는 단지 작은 프랙션(small fraction)만이 컴퓨터 언어로 기입되었을지라도, 어떤 컴퓨터언어들은 상기 다중-처리를 서포트한다. 예를들어, SIMULA 언어는 프로그램 실행시 다중 동시 처리(multiple simultaneous threads)를 할 수 있계 하는 코-루단(co-routines)의 사용을 서포트한다. 그러나, 이 해결책이 항상 가능한 것은 아니며, 심지어 가능하다 할지라도, 재기입되는 현존 부호(rewritingexisting code)는 매우 값비싼 경향이 있다.
프로그램 부분들을 멀티-프로세서에 할당하는 또다른 방법으로서 분산 처리 시스템에 통상적으로 사용되는 클라이언트-서버 모델(client-server model)을 들수 있다. 각 프로그램 부분은 어떤 프로세서(클라이언트)상에서 실행된다. 어떤 프로세서(클라이언트)가 자신과 상이한 능력(capability)을 갖는 또다른 프로세서(서버)의 서비스를 필요로 할때, 클라이언트는 서버가 자신을 대신하여 어떤 작업올 행하도록 요청을 발부한다(isue). 서버가 작업을 마쳤을 때 요구된 바와같이 자신의 작업결과와 더불어 제어(control)를 클라이언트에 복귀(return)시킨다. 클라이언트-서버 모델은 프로그램 실행시 각종 프로세서들을 협동하도록 하지만, 그 협동 정도는 제한 받는다. 클라이언트는 서버가 실행을 시작하기 전, 즉 통상적으로 무슨 정보가 필요한지를 알기전, 필요한 모든 정보를 서버에 제공해야만 한다. 현존하는 클라이언트-서버 모델은 본래 단방향성(unidirectional)이다: 그로인해 서버는 클라이언트에 다시 호출을 반부할 능력을 갖지 못한다.부호의 광법위한 변경없이 각종 프로그램 부분들을 멀티-프로세서 시스템내의 각종 프로세서들에 할당하는 것이 바림직하다. 특히, 법용의 주 프로세서 및 수치-짐중 코-프로세서를 갖는 시스템의 정우에, 수치 -집중 절차들(numeric-intensive procedures)을 코-프로세서상에서 실행하는 것이 바람직하고 그외의 절차들은 주 프로세서상에서 실행하는 것이 바람직하다. 불행하게도, 종래 기술 메카니즘은 최적의 형태로절차(procedure)를 할당하는 시스템 성능을 제한하였다.
본 발명의 목적은 멀티 프로세서 컴퓨터 시스템상에서 프로그램을 실행하기 위한 향상된 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 프로그램 부분들을 멀티-프로제서 컴퓨터 시스템내의 각종 프로세서들에 할당하기 의한 향상된 방법 및 장치를 제공하는 것이다.
본 발명의 또다른 목적은 프로그램 부분들을 멀티-프로세서 컴퓨터 시스템내의 각종 프로세서들에 할당하는 유연성(flexibiIity)을 증대시키는 것이다.
본 발명의 추가 목적은 멀티-프로세서 컴퓨터 시스템상에서 실행되는 프로세서들(processes)의 효율성을 증대시키는 것이다.
본 발명의 또한 다른 목적은 단열-처리 프로그램을 멀티-프로세서 컴퓨터상에서 효율적으로 실행되도록하여 단일-처리 프로그램에 요구되는 변경양을 감소시키는 것이다.
본 발명의 추가 목적은 멀티-프로세서 컴퓨터 시스템1상에서 프로그램 실행 비용을 경감시키는 것이다
본 발명의 또다른 목적은 법용 프로세서 및 수치-집중 코-프로세서를 구비한 컴퓨터 시스템상에서 프로그램을 실행하기 위한 향상된 방법 및 장치를 제공하는 것이다.
하나 이상의 호출가능한 절차들(callable procedures)을 각각 포함하는 다수의 프로그램 모듈(a pluralityof program module)을 구비하는 컴퓨더 프로그램은 멀티-프로세서 시스템상에서 실행된다. 비록 어떤 하나의 프로세서가 하나 이상의 모듐을 실행할 수 있을지라도, 각 프로그램 모듐은 멀티-프로세서 시스템1내의 프로세서들중 하나의 프로세서상에서 실행된다 각 프로세서의 국부적으로 어드레스가능한 메모리(1ocally addressable memory)는 프로그램 스택(program stack), 상기 프로세서상에서 실행되는 각 모듈의 목적 부호(object code) 그리고 다른 프로세서들과의 통신을 조정하기 위한 링키지 정보(linkageinfonnation)를 포함하는 에이전트 목적(agent object) 밋 데이타 구조들(data structures)을 포함한다 게다가, 국부 메모리(1ocal memory)는 자체내의 절차들중 하나의 절차에 의해 호출될 수 있는 각 절차를 각종 프로세서상에서 실행하기 위한 c-스터브 모듈(c-stub module)을 포함하고 또다른 프로세서상에서 실행되는 절차에 의해 호출될 수 있는 국부 메모리내의 각 절차를 실행하기 위한 s-스더브 모듐(s-stubmodule)을 포함한다. 프로세서의 국북 메모리내의 프로그램 모듈들, 스터브들, 스택 및 에이전트의 집합을 파티션(partition) 이 라 칭 한다.
프로세서 A상에서 실행되는 절차 P1가 프로세서 B에서 실행되는 절차 P2를 호출하기 바랄때, 절차 P1은 프로세서 A의 국부적으로 어드레스가능한 메모리내의 P2에 대응하는 c-스터브에 국부 호출(1ocal call)을 반부한다 그리고나서, P2 c-스터브는 프로세서 B 내의 대응 에이전트 프로세스(a correspondingagent process)와 통신하는 프로세서 A 내의 에이전토 프로세스를 호출한다. 프로세서 B 내의 에이전트프로세서는 절차 P2에 대응하는 프로세서 B 내의 s-스터브로 하여금 국부 호출을 절차 P2에 발부시키도록 한다. 어떤 절차로부터의 복귀는 상기 경로의 역순이다 각 프로세서는 자신의 프로그램 스택의 버젼(version)을 독립적으로 유지하는데, 상기 프로그램 스택의 스택 엔트리(stack entries)는 국부적으로 실행가능한 절차들, 국부 스터브들 또는 국부 에이전트들을 기준으로 한다. 각 국부 호출 또는 복귀에 따라, 상기 프로세서에 대한 .프로그램 스택은 적당하게 갱신된다. 우리는 이 매카니즘을 "분산 스택(distributedstack)"이라 칭한다.
각 프로세서는 국부 절차, 스터브 및 에이젼트를 기준으로 하는 자신의 스택을 독립적으로 유지하기 때문에, 리모트 절차 호출(remote procedure calI)은 전형적인 종래 기술인 클라이언트-서버 모델(그것온 단방향이다)의 경우에 제한받았던 것처럼 과거 프로세서의 호출에 의해 제한받지 않는다. 프로세서 A 내의절차 P1은 프로세서 B 내의 절차 P2를 호출할 수 있으며, 프로세서 B 내의 절차 P2는 순서내로 프로세서A 내의 또다른 절차 P3을 호출할 수 있다. 내안적으로 절차 P2는 프로세서 A 내의 절차 P1를 순환적으로(recursively) 호출할 수 있다.
본 발명에 따라서, 유니-프로세서 시스템1(uni-proCessor system)상에서 실행하기 위하여 기입된 종래의 단일-처리 프로그램은 소스 부호(source code)를 약간 또는 아예 수정하지 않은채 멀티-프로세서상에서 동작하도록 변경될 수 있다. 각 프로그램 모듈과 관계하여, 시스템내의 프로세서가 모듐을 실행하는 것에 대한 어떤 결정이 이루어진다. 이 결정은 다른 모듈들과 관계하여 이루어진 결정과 관계가 없다. 스터브들은 요구되는 대로 자동적으로 발생된다. 모든 절차 호출들은 호출중인 절차(calling procedure)에 국부적으로 나타나며, 그 결과로 소스 코드의 수정없이도 실제 국부적인 호출들이 리모트 절차 호출과 구별되도록요구된다. 로더 프로세서(loader process)는 요구되는대로 리모트 프로세서들상에서 파티션을 시작하고 또한 로더 프로세스는 각종 프로세서들간에 통신을 설립하는데 필요한 링키지 정보(linkage information)를복귀시킨다.
본 실시예에서, 멀티 프로세서 시스템은 IBM RISC 시스템/6000 시스템 프로세서에 연결된 IBM 응용시스템∵400 시스템 프로세서를 구비한다. 전자의 프로세서는 법용의 상업적인 트랜작신 처리(generalpurpose commercial transaction processing)를 위해 설계된 반면에, 후자의 프로세서는 과학/공학 분야를위해 설계된 축소형 명령 제트(reduced instnlction set(RISC)) 프로세서이다. RISC 프로세서는 수치 집중연산, 특히 부동 소숫점 연산을 포함하는 절차에 내한 가속기로서 작용한다. 본 실시예에서, 법용의 상업적트랜잭션을 서포트하는 절차들은 법용 프로세서상에서 실행되는 반면에 수치 집중 연산을 포함하는 절차들은 RISC 프로세서상에서 실행된다.
본 발명의 바람직한 실시예를 따르는 멀티-프로세서 시스템(multi-processor system)의 주요 하드웨어구성품(components)들의 다이어그램이 제l도에 도시되어 있다·멀티-프로세서 시스템}(1OO)은 특수용 수치 가속기 시스템(numeric accelator system)(121)에 연결된 법용의 상업적 트랜잭션 시스템(commercialtransaction system)(1O1)을 구비한다. 법용 시스템(1O1)은 종래의 복잡한 명령 제트(con2plex instmctionset(CISU)) CUP(102)에 의해 구동된다. CPU(102)는 메모리 버스(memory bus)(l04)를 경유하여 국부메모리(IocaI memory)(103) 및 프로세서 인더폐이스 유닛(processor interface unit) [105)과 통신한다. 프로세서 인터페이스 유닛(105)은 메모리 버스(104) 및 시스템1 버스(106)간의 통신을 조정한다. 시스템 버스I/O 체널 어댑터(system bus I/O channel adapter)(107)는 시스템 버스(106)에 접속된다. 추가 버스 인터폐이스 장치들(108,109)은 시스템 버스(106)에 접속되어,I/O 장치들(도시되지 않음)을 I/O 버스들(110,111)을 경유하여 시스템 버스(106)와 통신시킨다. 수치 가속기 시스템(121)은 과학/공학 분야들과 같은 집중적인 수치 계산(intensive numeric computation)을 필요로 하는 분야를 위해 설계되는 축소형 명링 제트(reduced instruction set(RISC)) CPU(122)에 의해 구동된다. RISC CPU(122)는 메모리 버스(124)를 경유하여 국부 메모리(123)와 통신한다.
CPU(122)는 시스템 버스(125)에 또한 점속되는, 상기 시스템 버스를 버스 인더폐이스(126)를 경유하여I/O 채널 어댑터(127)와 통신시킨다.I/O 채널(128)은 I/O 채널 어댑터(127) 및 시스템 버스 1/O 채널 어댑터(107)간을 접속시키고 법용 시스템(101) 및 수치 가속기 시스템(121)간을 접속시킨다.I/O 채널(128)은 또한 다수의 I/O 장치들(도시되지 않음)을 I/O 장치 어댑터(129,130)를 정유하여 시스템(12l)에 접속시킨다. 비록 두개의 I/O 버스들(110,111) 및 버스 인터페이스 장치들(108,109)이 시스템(101)에 접속되어있고 I/O 장치 어댑터들(129,130)이 시스템(12l)에 접속되어 있을지라도, 상기 시스템들에 접속되는 실제 장치수는 변화할 수 있다
국부 메모리(103)는 CPU(102)의 어드레스 공간(address space)내에 있고 국부 메모리(123)는 CPU(122)의 어드레스 공간내에 있다. 비록 이들 국부 메모리들이 단일 유닛처럼 도시되어 있지만, 각 프로세서의 국부 메모리는 실제로 작지만 비교적 빠른 캐쉬 메모리(cache memory) 및 느리지만 콘 주 메모리와 같은 계층 메모리 디바이스(a hierarchy of memory devices)일 수 있다는 것을 알아야만 한다. 각 시스템은 전형적으로 자기 디스크 구동기들(magnetic disk drives)과 같은 하나 이상의 국부 대량 기억 장치들(1ocalma$ storage devices)을 포함하고 요구된 대로 데이타를 상기 대량 기억 장치로부터 국부 메모리로 적재(Ioading)시키는 매카니즘을 갖는다는 것을 또한 알아야만 한다. 그러한 메모리 디바이스들의 사용이 상기기술에 널리 공지되어 있다. 본 발명의 목적을 위하여, 국부 메모리는 각 프로세서의 어드레스 공간내에서단일 유닛으로서 개념적으로 도시되어 있다.
본 실시예에서는, 시스템(101)은 IBM 응용 시스템/400 시스템이고 시스템(12l)은 lBM RISC 시스템/6000 시스템이다.I/O 체널(128)은 IBM 마이크로 채널 버스이다. 시스템(121)은 기본 시스템인 시스템(1O1) 성능을 증내시키기 위하여 기본적으로 슬레이브 시스템(slave system)으로서 기능한다. 본 실시예에서, 시스템(10l) 및 시스템(121)은 동일 유닛내에서 물리적으로 수용되고(physicalIy housed) 공통 소스(common source)로부터 나온 전원(power)을 수신한다. 상기 시스템들을 항께 수용하면, 데이타를 고속으로 시스템들간에 전송시킬 수 있다. 그러나, 본 발명은 다른 구성 형태의 다른 컴퓨터 시스템들로 실행될수 있고 상기 시스템들이 반드시 동일한 불리적 유닛내에 함께 수용될 필요가 된다는 것을 알아야만 한다.
종래의 단열-처리 컴퓨터 프로그램(single-thread computer program)은 내포되거나 또는 순환적 형태(nested or recursive fashion)로 서로를 호출할 수 있는 다수의 절차들을 포함한다. 제2도의 종래의 유니-프로제서 컴퓨터 아키텍쳐(uni-procesor computer architecture)에서 그러한 프로그램에 대한 일련의 내포된 절차 호출들(a series of nested procedure calls)을 도시한 것이다. 제2도의 예에서, 절차 A(201)는 호출(211)을 절차 B에 발부하여, 제어를 절차 B에 전달한다. 그리고 나서, 절차 B(202)는 호출(212)을 절차 C(203)에 발부하여(절차 A로 복귀(return)되기 전에), 제어를 절차 C에 전달한다. 절차 C(203)는 호출(213)을 절차 D(204)에 발부한다(절차 C로 복귀되기 전에), 절차 D가 실행을 끝냈을 때, 절차 D는 제어(214)를 절차 C로 복귀시킨다. 그후에, 절차 C가 실행올 끝냈을 때 절차 C는 제어(215)를 절차 B로 복귀시킨다. 절차 B가 실행을 끝냈을 때 절차 B는 제어(2l6)를 절차 A로 복귀시킨다. 상기 종래 시스템에서어떤 절차가 사전에 호출된 절차를 호출하는 것이 가능한데, 그것을 순환식(recursion)이라 칭한다. 예를들어, 절차 C는 절차 D 내실에 절차 B를 호출할 수 있거나 또는 심지어 자기 자신을 호출할 수 있다.
종래의 유니-프로세서 아키텍쳐에서, 스택(stack)을 호출하는 데이타 구조는 어떤 절차가 사전에 호출된 절차로 복귀할 때 프로그램의 실행을 재개시키기 위하여 요구되는 상태 정보(state information)를 적당한 장소(proper place)에 유지시킨다. 스택은 하나 이상의 절차 활성 블럭들(procedure activation blocks)을 구비하며, 상기 각 블럭은 어떤 절차에 대한 실행될 다음 명링, 국부 변수 상태(state of Iocalvariables)등과 같은 상태 정보를 포함한다. 어떤 절차가 호출될 때, 새로운 활성 블럭이 스택에 부가되고 호출된 절차의 상태 정보는 세이브(save)된다. 어떤 절차가 복귀될 때, 상태 정보는 활성 블럭으로부더 판독되고 스택상의 상부 활성 블럭은 제거된다.
본 발명에 따라서 프로그램을 구성하는 절차들은 각각의 개별 프로세서에 대해 하나의 파티션(partition)이 할당되는 식으로 다수의 파티션들중에 할당된다. 프로그램의 의부 절차(outer procedure)가 실행되는(즉, 프로그램이 실행을 시작하는) 파티션은 주 파티션(main partition)을 호출하고 모든 다른 파티션들은 보조 파티션들(seconda partitions)을 호출한다·제3도는 제2도의 프로그램이 두개의 파티션이 존재하는 컴퓨더 시스템상에서 어떻게 실행되는지를 개념적으로 도시한 것이다. 이 예에서, 파티션 I (301)은 주파티션이고 파티션 II(302)는 보조 파티션이다. 절차 A(303) 및 절차 C(305)는 파티션 I에 할당되는 반면에, 절차 B(304) 및 절차 D(306)는 파티션 II에 할당된다. 절차 A가 호출(311)을 절차 B에 발부할 때,호출은 파티션 경계(partition boundary)를 교차하는데(cros), 그것을 "리모트 절차 호출(remoteprocedure call)" 이라 칭한다. 그리고 나서, 절차 B는 리모트 절차 호출(312)을 절차 C에 발부하며, 절차 C는 순서적으로 리모트 절차 호출(313)을 절차 D에 반부한다. 절차 D가 실행을 끝냈을 때, 절차 D는 제어(314)를 절차 C로 복귀시키며, 절차 C가 실행을 마쳤을 때 절차 C는 제어(315)를 절차 B로 복귀시키고 절차 B가 실행을 마쳤을 때 절차 B는 제어(316)를 절차 A로 복귀시킨다. 유니-프로세서 시스텀의 경우와 마찬가지로, 파티션 경계들을 순환적으로 교차하는 절차들을 호출하는 것이 가능하다. 예를들어, 절차 C는 절차 D 대신에 절차 B를 호출할 수 있다.
절차들은 성능의 다양성 또는 다른 고려 상황들에 따라서 파티션에 할당된다. 제 3 도의 예에서, 절차들B 및 D는 복잡한 계산을 수행하기 위한 RISC 프로세서를 포함하는 파티션에 할당되는 수치 집중 절차들일수 있다. 절차들 A 및 C은 실제 I/O 또는 다른 일반적인 명령 혼합(instruction mix)을 갖는 절차들일 수있으며, 상기 절차들 A 및 C은 법용 CISC 프로세서상에서 더욱 효율적으로 실행된다. 그러나, 절차들을 할당시에 다른 상황들을 고려할 수 있다. 예를들어, 또다른 실시예로서 분산 처리 시스템은 다수의 식별 프로세서들(identical processors)을 구비하며, 각 식별 프로세서는 자체의 국부 기억 장치(1ocal storage)내에서 상이한 데이타 베이스들을 갖는다. 이경우에, 절차들은 자신들이 액제스(access)하는 데이타 베이스에 따라서 프로세서들에 할당될 수 있다.
리모트 절차 호출을 발부하는 절차는 클라이언트(client)의 역활을 한다. 호출된 절차는 서버(sewer)의 역활을 한다. 단일 절차는 어떤 호출들에 관해서는 클라이언트의 역활을 할 수도 있고 그의 다른 호출들에 관해서는 서버의 역활을 할 수 있다. 제 3 도의 예에서, 절차 A가 리모트 절차 호출(311)을 발부할 때 절차A는 클라이언트의 역활을 하고 절차 B는 상기 호출에 관계하여 서버의 역활을 한다 그러나, 절차 B가 리모트 절차 호출(312)을 발부할 때 절차 B는 클라이언트의 역활을 하고 절차 C는 서버의 역활을 한다.
제 4 도는 파티션의 각종 유닛들을 도시한 것이고 어떻게 상기 유닛들이 본 실시예에서 리모트 절차 호출동안 상호 작용(interact)하는지를 도시한 것이다. 각 파티션은 하나 이상의 절차 부호 블럭들(procedurecode blocks) (402,412), 하나 이 상의 c-스터 브들(c-stubs) (403,413), 하나 이 상의 s-스터 브들(s-stubs)(404,414) 및 에이전트(agent)(405,415)를 구비한다. 절차 부호 블럭들(402,412)은 절차를 실행하기 위한기계식 실행가능한 명령들(machine executable instmctions)을 포함한다. 각 절차 부호 블럭은 개별적으로 컴파일된 모듈(separately compiled module)일 수 있는데, 즉 다중 블럭들은 파티션내에서 단열 모들(single module)로 컴파일될 수 있다. 컴파일된 모듈은 단지 하나의 절차만을 갖거나 또는 하나이상의 절차를 갖든지간에, 항상 단열 파티션내에 포함된다.
제 4 도를 참조하여, 만일 파티션(401)내의 절차 X(402)가 호출을 파티션(411)내의 절차 Y(412)에 반부하면, 상기 호출은 파티션(401)내의 절차 Y의 c-스터브(403)에 의해 수신된다. c-스터브(403)는 자신의 국부 에이전트(405)를 호출하여, 그 국부 에이전토에게 리모트 서버를 호출하도록 요청한다. 에이전트(405)는 파티션 경계를 교차하는 호출을 에이전트(415)에 발부한다. 그리고나서, 에이전트(415)는 절차 Y의 s-스터브(414)를 호출하며, 절차 Y의 s-스티브(414)는 또다른 국부 절차로부터 나오는 것으로 보이는 국부호출을 절차 Y에 발부한다. 절차 Y는 c-스터브(413), 에이전트(415), 에이전트(405) 및 s-스터브(404)를 경유해서 절차 X를 호출한다.
스터브들은 -모트 절차 호출들이 호출중인 절차에 국부적으로 나타나도록 한다. 그러므로, 호출을 발부하는 절차는 호출반은 절차가 동일 파티션내에 있는지 여부를 알필요는 없다. 그것은 그에 관계없이 단지정상 국부 절차 호출(normallocal procedure call)을 발부한다. c-스터브는 상이한 파티션내의 서버 절차를 대신하여 c-스터브와 동일한 파티션내의 클라이언트 절차로부터 국부 절차 호출을 수신한다. s-스터브는 상이한 분할내의 클라이언토 절차를 대신하여 s-스터브와 동일한 분할내의 서버 절차에 국부 절차 호출을 발부한다. 서버로서 작용하는 각 절차에 대하여, 서버의 파티션내에 개별적인 s-스터브가 있고 다른 파티션들의 각각에 개별적인 c-스터브가 있다. 스터브들은 단지 서버로서 역활하는 절차들에 대해서만 필요하다.
각 파티션은 다른 파티신과의 접속을 조정하는 하나의 에이전트를 갖는다. 더욱 정확하게 말하면, 상기에이전트는 파티션 경계를 가로질러 프로그램 제어를 전달하는 역활을 한다. 상이한 파티션의 에이전트들은 통신 매체로 서로 통신하는데, 상기 통신 매체는 본 실시예에서 I/O 채널(128)을 경유하여 시스템(101) 및 시스템(121)간의 통신을 실행하는 통로이다. 주어진 파티션내의 상기 에이전트는 나가는 리모트 절차 호출들 및 들어오는 리모트 절차 호출들 둘다를 조정한다. 따라서, 에이전트는 접합(junction)되는데, 그 접합을 통해 제어의 단일 처리가 국부 파티션을 왕복한다(leave and return). 각 에이전트는 서버들이 들어오는 리모트 호출들에 응답하여 국부적으로 디스페치(dispatch)되도록 하는 것이 무언지에 관한 정보 및 나가는 리모트 호출들이 다른 파티션 내의 서버에 어멓게 루트(route)되는지에 관한 정보를 갖는다.
각 파티션은 개별적인 국부 스택(1ocal stack)을 포함하며, 상기 국부 스택은 파티션내의 절차들, 스터브들 및 에이전트들에 대한 활성 블럭들을 포함한다. 파티션내의 개개 국부 스택들은 필요한 모든 프로그램상태 정보를 포함하여 프로그램 흐름(program fIow)을 유지시킨다. 본 발명가는 이 구조를 "분산 스택(distributed stack)"이라 칭하였다.
제 5 도는 제 3 도에 도시된 리모트 절차 호출들에 대한 분산 스택의 일예를 도시한 것이다. 이 예에서, 분산 스택(500)은 제 3 도의 파티션 I(301) 및 파티션 II(302)에 각각 포함된 두개의 국부 스택(501,531)을 구비한다. 파티션 I은 주 파티션이기 때문에, 스택(501)의 바닥에서의 제 1 엔트리(entry)는 절차 A에 대탄 활성 블럭이다. 절차 A가 실행될 때 그리고 절차 A가 호출을 반부하기 전, 이것은 스택(501)상의 유일한 활성 블럭이 된다. 스택(53l)은 후술되는 바와같이 파티션 II이 여전히 시작되고 있는지 여부에 따라서 파티션 II 내의 에이전트 II에 대한 활성 블럭을 포함하거나 또는 포함하지 않는다 절차 A가 리모트 호출(311)을 절차 B에 반부할 때, 그것은 실제로 국부 호출(51l)을 파티션 I 내의 절차 B에 대한 c-스터브에 반부하여 c-스터브 활성 블럭(503)이 스택(501)상에 배치되도록 한다. 절차 B의 c-스터브는 파티션 I의 에이전트(에이전트 I)에 호출(512)을 발부하여 에이전트 I 활성 레코드(activation record)(504)가 스택(501)상에 배치되도록 한다. 그리고나서, 에이전트 I는 에이전트 II와 통신한다. 만일 파티션 II이 아직도 시작되지 않았다면, 로드/스타트 유틸러티(Ioad/start utility)가 후술한 바와같이 파티션 II을 시작하기 위하여 호출될 것이다. 로드/'스타트 유틸러티는 스택(531)을 초기화하고 에이전트 II에 대한 활성 블럭(532)을 스택의 바닥에 배치한다. 그리고나서, 에이전트 II는 절차 B의 s-스터브를 호출(541)하여, s-스터브활성 블럭(533)이 스택(531)상에 배치되도록 한다. 그리고나서, 절차 B의 s-스터브는 절차 B를 호출(542)하여, 절차 B의 활성 블럭(534)이 스택(53l)상에 배치되도록 한다.
따라서, 단열 개념 리모토 호출(single conceptual remote calI)로서 제 3 도에 도시된 리모트 절차 호출(311)은 일련의 국부 호출들(511,512,541,542)과 에이전트들간의 리모트 호출(513)을 구비한다. 절차 B가실행될 때와 그것이 또다른 절차를 호출하기 전에, 스택(501)은 절차 A(502), B의 c-스터브(503) 및 에이전트 I(504)에 대한 활성 블럭들을 포함하는 반면에, 스택(531)은 에이전트 II(532), B의 s-스터브(533) 및 절차 B(534)에 대한 활성 블럭들을 포함한다.
분산 스택(500)은 제 3 도에 도시된 남아있는 리모토 절차 호출들과 유사하게 성장(grow)한다. 리모트 절차 호출(312)을 절차 C에 반부하는 절차 B에 대하여, 절차 B는 파티신 II 내의 C의 c-스터브를 호출(543)하여, 활성 블럭(535)을 스택(531)에 부가한다; C의 c-스터보는 에이전트 II를 호출(544)하여, 활성 블럭(536)을 스택(531)에 부가한다; 에이전트 II는 에이전트 I와 통신(545)한다, 에이전트 I는 파티션 I 내의 C의 s-스터보를 호출(514)하여, 활성 블럭(505)을 스택(501)에 부가한다; 그리고 C의 s-스터브는 절차 C를 호출(515)하여 활성 블럭(506)을 스택(501)에 부가한다; 절차 C가 리모토 절차 호출(313)을 절차 D에 반부할 때, 절차 C는 파티션 I 내의 D의 c-스터브를 호출(516)하여 활성 블럭(507)을 스택(501)에 부가한다; D의 c-스터브는 에이전트 I를 호출(517)하여, 활성 블럭(508)을 스택(501)에 부가한다, 에이전트 I는 에이전트 II를 호출(518)한다. 에이전트 II는 파티션 II 내의 D의 s-스터브를 호출(54)하여, 활성 블럭(537)을 스택(531)에 부가한다, 그리고 D의 s-스터브는 절차 D를 호출(547)하여 활성 블럭(538)을 스택(531)에 부가한다. 절차 D가 실행될 때, 분산 스택(500)은 제 5 도에 도시된 모든 활성 블럭을 포함한다.
절차들로부터의 복귀는 상기 시퀸스의 역순이다. 절차 D가 실행을 끝냈을 때, 절차 D는 D의 s-스터브로 복귀(548)시키므로서 절차 C로 복귀되어(단열 복귀(314)로서 제 3도에 도시됨), D의 활성 불럭(538)이 스택(531)으로부터 제거되도록 한다; D의 s-스터브는 에이전트 II로 복귀(549)되어 활성 블럭(537)이 스택(531)으로부터 제거되도록 한다; 에이전트 II는 에이전트 I와 통신(550)한다; 에이전트 I는 D의 c-스터브로 복귀(519)되어 활성 블럭(508)이 스택(501)으로부터 제거되도록 한다; 그리고 D의 c-스터브는 절차 C로 복귀(520)되어 활성 블럭(507)을 스택(501)으로부터 제거한다. 에이전트 II에 대한 활성 블럭이파티션 경계를 고차하여 복귀할 때 스택으로부터 제거되지 않는데, 그 이유는 에이전트 II는 제어가 상기경계를 재차 교차할때 엔트리 포인트(entry point)로서 다시 요구되기 때문이다. 절차 C는 연속적인 복귀에 의해 즉 C의 s-스터브로 복귀(521)하며, 에이전트 I로 복귀(552)하며, 에이전트 II로 복귀(523)하고 C의 s-스더브로 복귀(551)하므로서 절차 B로 복귀(552)하는데 그동안에 활성 블럭들(506,555,536 및 535)은 그들의 각 스택으로부터 제거된다. 절차 B는 연속적인 복귀에 의해 즉 B의 s-스터브로 복귀(553)하며, 에이전트 II로 복귀(554)하며, 에이전트 I로 복귀(555)하고, B의 c-스터브로 복귀(524)하므로서 절차 A로 복귀(525)하는데, 그 동안에 활성 블럭(534,533,504 및 503)은 그들의 각 스택으로부터 제거된다.
각 에이전트는 내부 에이전트 상태 스택(int라nal agent status stack)을 유지한다. 에이전트 상태 스택의 구조가 제 6 도에 도시되어 있다·에이전트 상태 스택(601)은 에이전트 상태를 레코드(record)하여, 제어가 호출 또는 복귀의 결과로서 에이전트로 통과될 때 에이전트로 하여금 적당한 장소에서 실행을 재개시키도록 한다. 스택(601)은 하나 이상의 에이전트 상태 레코드들(602)을 구비하며, 각 기록은 상태 필드(statefield), 플래그 필드(612), 모듈 식별기(module identifier) (613), 절차 식별기(procedure identifier)(614)및 파티션 식별기(partition identifier)(615)를 포함한다. 상태 필드(611)는 에이전트의 현재 상태 즉 예를들어 AGT_IN_SERVICE, AGT_CALL, AGT_RETURN 등을 포함한다. 플래그 필드(612)는 다양한 실행-시간 조건(various run-time conditions)을 신호화하는 비트 벡터(bit vector)이다. 호출이 리모트 절차를 대신하여 국부적이거나 또는 국부 절차를 대신하여 리모트되든 지간에, 모듈 식열기 필드(613), 절차식별기 필드(614) 및 파티신 식별기 필드(615)는 모듈 절차 및 에이전트에 의해 호출되는 절차의 파티신 각각의 식별 변호(identifying number)를 포함한다. 리모트 서버(국부 클라이언트를 대신하여)을 호출하자마자, 현재 상태는 스택(601)상으로 푸쉬(push)되고 새로운 에이전트 상태를 반영하도록 갱신된다. 리모트호출이 복귀될 때, 구 에이전트 상태(old agent status)는 스택의 상부로부터 제거(팝된다 popped)된다.리모토 요청(국부 서버를 대신하여)을 수신하자마자, 현재 상태는 국부 서비스가 호출되기전 스택(601)상으로 푸쉬되고 서비스 완료시 스택의 상부로부터 제거된다(팝된다).
제 7 도는 내부-파티션 메시지의 포맷(format)을 도시한 것이다. 버브 필드(verb fieId)(70l)는 메시지에의 해 요정되 는 액션을 포함하는데, 그것은 AGT_CALL, AGT_REPLY, AGT_RETURN, AGT_ERROR,AGT_DEBUG 또는 AGT_TERMINATE 중 어느 하나일 수 있다. 우선 이들중 세가지가 이하에 설명된다. 나머지들은 충분히 설명되어 있으며 본 발명에서 중요한 것은 아니다. 플래그 필드(702)는 에이전트 상태 레코드의 플래그 필드(612)와 동열한 정보를 포함한다. 타겟 모듈 식별기 필드(tar9et moduleidentifier field)(703) 및 타겟 절차 식별기 필드(target procedure identifier field)(704)는 메시지 수신지(me$age destination)의 모듈 및 절차를 각각 포함한다. 원 파티션 식별기(Origin partition identifier)(705)는 전송자의 파티션 식별기를 포함한다. 마설 파라미터 필드(Marshalled parameters field)(706)는통과된 파라미터들의 엔코딩을 포함한다.
본 실시예에서, 파라미터 엔코딩은 기계-종속 포맷(machine-dependent format)으로 다른 프로세서에 통과되는 원시적인 간단한 데이타 요소들(primitive simpIe data elements)이 식별될 때까지 계층식 데이타구조들의 순환적인 하강 트래버셜(recursive descent traversal) 방법을 이용한다. 이 동작이 파라미터 마셜링(marshalling)으로서 알리졌다. 상기 역동작은 계층식 데이타 구조들이 기계-종속 포맷으로부터 복원된원시 데이타 요소들로 이루어진 파라미터 디코딩시 발생한다. 이 동작이 파라미터 언마셜링(unmarsha1-1ing)으로서 알리졌다. 파라미터 마셜링/언마셜링 기술은 공지되어 있으므로 여기에서 상제히 언급되지는 않는다. 공지된 각종 다른 파라미터 엔코딩/디코딩 계획중 어느것이라도 사용될 수 있다.
리모트 호출 절차 단계가 지금부터 상제하게 서술될 것이다. 제 8 도는 단일 리모트 절차 호출 및 복귀 단계동안 클라이언트, 스터브, 에이전트 및 서버간의 제어 전달을 개념적으로 도시한 것이다. 제 9 도는 단열리모트 절차 호출 및 복귀 부분으로서 클라이언트 및 서버 스터브에 의해 수행되는 단계의 플로우챠트이다. 제10도는 에이전트들에 의해 수행되는 단계의 플로우챠트이다.
리모트 절차 호출 시작에 앞서, 프로그램 상태는 다음과 같다. 리모트 절차 호출을 막 발부하려는 파티션이 호출을 발부하는 클라이언트 절차에서 실행중이다. 모든 다른 파티션은 자신들의 각 에이전트에서 실행중이며, 상기 에이전트는 리모트 파티션으로부터 신호화될 이벤트(events)를 대기하는 AGT WAIT 상태에있다. 이 상태가 제 8 도에 (801)로 나타나있다. 리모트 호출에 응답하기 위하여, 에이전트는 또한 AGTGET REPLY 또는 AGT ACCEPT RETURN 상태일 수 있다. 그러나, 다음 설명에서, AGT WAIT 상태는 모든 세가지 상태들을 나타낸다.
클라이언트 절차가 리모트 서버를 호출할 준비가 되어 있을때, 그것은 국부 절차 호출을 상기 서버(802)의 국부 클라이언트 스터브(802)에 발부하며, 어떤 다른 국부 절차 호출과 똑같은 것을 클라이언트에 발부한다. 이 호출이 c-스터브 실행을 시작(901)시키며, 그리고나서 c-스터브가 호출을 AGT CALL 이벤트를 갖는 국부 에이전트에 발부하여(803,902) 국부 에이전트에게 리모토 서버를 호출하도록 요청한다. 클라이언트 에이전트는 리모트 접속을 설립하고 AGT CALL 메시지를 AGT WAIT 상태로 대기중인 서버 에이전트(804)로 통과시킨다.
제10a도는 AGT CALL 이벤트 수신시 클라이언트 에이전트에 의해 취해지는 액션을 도시한 것이다. 클라이언트 에이전트는 상태(현재 상태에서 AGT CALL을 수신하는 것이 합법적인지 아닌지 여부)를 우선검사한다(1001). 만열 상태가 합법이라면, 현재 에이전트 상태는 단계(1002)에서 에이전토 상태 스택상에서 세이브된다(601). 그리고나서 에이전트는 버브 AGT_CALL, 타겟 모듈 및 절차 식열기들 그리고 원 국부파티션 식변기를 이용하여 단계(1003)에서 메시지를 구성하며, 단계(1004)에서 세로운 에이전트 상태를 설정하고 메시지를 타겟 파티션에 전송한다(1005). 서버 에이전트가 메시지를 수신할 때, 클라이언트 에이전트는 제어를 c-스터브로 복귀시킨다.
제10b도는 클라이언트 에이전트로부터 나온 AGT二CALL 메시지의 수신시 서버 에이전트에 의해 취해지는 액션을 도시한 것이다. 서버 에이전트는 AGT WAIT 상태에 있는 동안(1011) 어떤 메시지가 도달되기 전 자신의 상태를 AGT NULL CODE 부호로 초기에 설정한다. 그리고나서 에이전트는 자신의 버퍼에서 메시지를 수신하고(1012) 버브를 검사한다. 만일 버브가 AGT_CALL도 아니고(1013) AGT_TERMINATE도 아니면(1014), 에러가 신호화된다. 만일 버브가 AGT_TERMINATE라면, 에이전트 프로세스는 자신의파티션을 터미네이트(termlnate)시킨다. 만일 버스가 AGT_CALL라면, 수신 에이전트는 자신의 현제 상태를 에이전트 상태 스택상으로 푸쉬하며(1015), 메시지 헤더로부터 세로운 상태 플래그를 설정하며(1016),그것의 상태를 AGT_IN SERVICE로 설정하고(1017) 국부 서버 스터브를 호출하므로서 서비스를 디스페치하여(1018,805), s_스터브가 시작되도록 한다(911). 서버가 완료되고 복귀될 때(10169), 상태는 그후에 에이전트 상태 스택으로부터 복원될 것이다.
클라이언트 파티션내의 c-스터브 및 서버 파티션에서 초기화된 s-스터브로 복귀된 제어에 따라서, c-스터브는 입력 파라미터를 s-스터브에 전송하며(903,806), s-스터브는 그들을 수신한다(912,807). 모든입력 파라미터들이 전송된 후, c-스터브는 AGT_GEI_REPLY 이벤트(904,808)를 갖는 클라이언트 에이전트를 호출하며, c-스터브는 복귀하는 리모트 서버를 대기시키기 의하여 클라이언트 에이전트를 신호화한다. 그리고나서, 클라이언트 에이전트는 AGI_WAlT 상태를 입력하며(809), 그로인해 그것은 어떤 리모트 에이전트로부터 두 이벤트 즉 AGT_REPLY 또는 AGT_CALL중 하나를 수신할 수 있다. AGTREPLY 이벤트는 서버 절차가 판료된 후 현재 진행중인 리모트 절차 호출의 서버 에이전트로부더 도달된다. AGT CALL 이벤트(어느 것이든지)는 원래의 리모트 절차 호출내에 내포된 약간의 국부 서비스에 대한 새로운 리모트 절차 호출 부분으로서 도달된다. 그러한 호출은 어떤 다른 에이전트로부터 도달할 수 있다.
서버 스터브가 모든 입력 파라미터를 수신한 후, 서버 스터브는 국부 호출을 서버 절차에 반부하여(810,913), 국부 호출을 어떤 국부 호출과 동일한 방식으로 파라미터를 통과시킨다·그리고나서 서버 절차가 실행된다. 서버 절차는 상술된 절차를 이용하여 내포된 호출을 또다른 국부 또는 리모트 절차에 반부하지단이 예에서는 단지 단일 호출 및 복귀만이 서술되어 있다. 서버 절차가 마쳤을 때, 서버 절차는 s-스터브로복귀 한다(811) .
s-스터브는 AGT REPLY 이벤트를 갖는 서버 에이전트를 호출하여(812,914), 서비스가 완료된 클라이언트를 변경시키기 위해 서버 에이전트를 신호화 한다. 제10c도는 제 8 도에서 (813)으로 표시된 AGTREPLY 이벤트를 발부시 서버 에이전트에 의해 취해지는 액션을 도시한 것이다. 서버 에이전트는 상태(힌재 상태에서 AGT REPLY을 발부하는 것이 합법적인지 아닌지 여부)를 우선 검사한다(1021)·단열 상태가 합법이라면, 에이전트는 버브 AGT REPLY, 타켓 모들 및 절차 식열기 그리고 원 파티션 식변기를 이용하여 단계(1022)에서 현재 에이전트 상태로부터 메시지를 구성한다. 그리고 나서 서버 에이전토는 메시지를클라이언트 파티션(1023)에 전송하고 그것의 상태를 AGT IN SERVICE로 설정한다(1024). 메시지가 수신될 때, 서버 에이전트는 s-스터브로 복귀한다.
제10d도는 제8도에서 단계(814)로 표시된 서버 에이전트로부터 AGT REPLY 메시지의 수신시 에이전트 클라이언트에 의해 취해진 액신을 도시한 것이다. 클라이언트 에이전토가 서버 호출을 마쳤을때, 에이전트 클라이언트는 자신의 출력 데이타(1031)를 플러쉬(flush)하고 전술한 바와 같은 또다른 파티션으로부터 나온 메시지를 대기시키는 대기상태를 입력시킨다. 메시지가 도달될때, 메시지는 에이전트의 버퍼(103)에 배치되고 버브가 검사된다. 반일 버브가 AGT REPLY(1033)라면, 버브는 상태를 검사한다(1034). 만일AGT REPLY 메시지가 현재 상태에 대해 합법적이라면, 에이전트는 국부 c-스더브로 복귀한다(1034,904). 만일 버브가 AGT CALL(1036)이라면, 내포된 리모트 절차 호출이 표시된다. 에이전트는 현재 상태를 에이전트 상태 스택상으로 푸쉬하며, 메시지 헤더 데이타(mesage header data)로부터 상태 필드(status fields)를 리셋하며, 자신의 상태를 AGT IN SERVICF로 설정하고, 적당한 s-스터브를 실시하므로서(1037) 서비스를 디스패치한다(l037). 국부 서비스가 완료될때, 국부 서비스는 자신의 사전 상태를 에이전트상태 스택으로부터 복원하고(1038) 내기 상태를 제입력한다.
제어가 클라이언트 에이전트로부터 국부 c-스터보로 복귀되고 서버 에이전트로부터 s-스터브로 복귀될때, s-스터브는 출력 파라미터를 c-스터브로 전송하고 c-스터브는 그들을 수신한다(816,905). 모든 출력파라미터들이 수신된 후, c-스터브는 AGT ACCEPT RETURN 이벤트를 갖는 클라이언트 에이전트를 호출하여(817,906), 서버 에이전트로부터 리모트 절차 호출의 복귀를 예측하기 위하여 클라이언트 에이전트를 신호화 한다. 거의 동열한 시간에서, s-스터브는 제어를 AGT RETURN 이벤트를 갖는 서버 에이전트로 복귀시키며(818,916), 리모트 절차 호출을 클라이언트 에이전트로 복귀시키기 위하여 서버 에이전트를 신호화한다. 그리고나서 s-스터브는 자신의 역활을 끝낸다.
제10e도는 s-스터브로부터의 복귀를 신호화하는 AGT RETURN 이벤트를 발부시 서버 에이전트에 의해 취해진 액션을 도시한 것이며, 서버 에이전트는 상태를 검사한다(1041). 만일 주어진 현재 상태에서AGT RETURN을 발부하는 것이 합법적이라면, 에이전트는 메시지를 클라이언트 에이전트서버에 구성하여, 자신의 현재 상태로부터 된 모듈, 절차 및 파티션 식별기와 더불어 버브 AGT RETURN을 메시지 헤더에 배치한다(1042). 그리고나서, 에이전트는 메시지를 클라이언트「 에이전트에 전송한다(819,1043). 메시지가 전송될때, 서버 에이전트는 자신의 출력 버퍼를 플러쉬하고(1044) 제어를 s-스터브로 복귀시킨다. 이벤트 AGT_WAIT, AGT_GET_REPLY 또는 AGT ACCEPT RETVRN중 하나를 수행하는 동안, 스터브는 또한 자신의 실행을 완료하고 AGT_WAlT 상태의 에이전트인 자신의 디스패쳐에 복귀시킨다. 이점에서, 에이전트는 또다른 호출을 대기한다.
제10f도는 제 8 도에서(820)로 표시된 AGT_RETURN 메시지를 수신시 클라이언트 에이전트에 의해 취해진 액션을 도시한 것이다. 클라이언트 에이전트가 리모트 절차 호출의 복귀를 예측하기 위하여 호출을 신호화하는 c-스터보로부터 나온 호출을 수신한 후, 클라이언트 에이전트는 대기 상태에 놓인다. 메시지가수신될때, 메시지는 버퍼에서 판독되고(1051) 버브가 검사된다. 만일 버브가 AGT RETURN이라면, 에이전트는 상태를 검사힌다(1052). 만일 메시지를 수신하는 것이 합법적이라면, 에이전트는 자신의 상태를 에이전트 상태 스택으로부터 복원하고(1053) c-스터브로 복귀한다. AGT_RETURN을 대기하는 동안,(1054)에 도시된 바와 같이, 또다른(내포된) AGT_CALL 메시지를 수신하는 것이 가능하다. 이 경우에, 에이전트는 현재 상태를 에이전트 상태 스택상으로 푸쉬하며, 메시지 헤더 데이타로부터 상태 필드를 리셋하며, 자신의 상태를 AGT_IN_SERVICE로 설정하고 적당한 c-스터브를 호출하므로서 서비스를 디스패치한다(1055). 국부 서비스가 완료될때, 국부 서비스는 자신의 사전 상태를 에이전트 상태 스택로부터 복원하고(1056) 대기 상태를 재입력한다. 국부 c-스터브가 에이전트로부터 복귀를 수신할때, 국부 c-스터브는파라미터(국부 복귀)들을 클라이언트 절차에 복귀시킨다(821).
각 파티선은 제11도에 도시된 바와 같이 리모트 호출을 수행하기 위한 루팅 정보를 포함하는 여러 테이블을 유지시킨다. 이들은 모듈-대 -파티션 매핑 태이블(module-to-partition mapping table) (11O1), 모듈디스패치 태이블(module dispatch table)(ll11) 및 절차 더스패치 테이블(procedure dispatch tabIe)(1121)를 구비한다. 파티션물은 0에서부터 n까지의 변호로 표시되는데, 여기서 상기 전체 파티션은 n+1이된다. 주 파티션은 변호 0으로 표시된다. 모듈은 0에서부터 m까지 번호로 표시되며, 여기서 상기 전체 모듈은 m+1이 된다. 모듈-대-파티션 테이블은 모들수와 동일한 다수의 엔트리를 포함하며, 파티신 식별기를 포함하는 각 엔트리는 엔트리를 색인(index)하는 모듈을 포함한다. 테이블(1101)은 각 파티션에서 중복(duplicated)되어, 에이전트로 하여금 리모트 절차 호출을 보정 파티션(correct partition)으로 루트시킨다.모듈 디스패치 테이블(111)은 모듈수와 동일한 다수의 엔트리를 포함하며, 각 엔트리는 특정 모들 스터브의국부 어드레스를 포함한다. 모든 모듈이 어떤 하나의 피타션에 포함되지 않기 때문에, 모듈 디스패치 테이블은 국부 파티신에 포함되지 않는 그들 모듐에 대한 에러 조정 절차(error handing procedure)의 국부 어드레스를 포함한다. 비록 각 파티션이 모듈 디스패치 테이블(1111)을 갖을지라도, 엔토리는 각 파티션에 대해 상이하게 될 것이다. 각 모듈 스터브는 절차 디스패치 테이불(1121)을 포함한다. 절차 디스패치 테이블은 모듈에서 서버 절차수와 동일한 다수의 엔트리를 포함하며, 각 엔트리는 절차 s-스터브의 국부 어드레스를 포함한다 에이전트가 리모트 파티션으로부터 서비스에 내한 호출을 수신할때, 에이전트는 테이블(1111)로부터 모듈-스터브를 획득하며, 그것은 테이불(1121)로부터 s-스터브 어드레스를 획득하는 모듈-스터브를 호출하고 나서 s-스터브를 실시한다.
본 발명에 따라서, 상이한 프로그램의 부분들은 상이한 프로세서들의 국부 기억장치에 포함된다. 프로그램이 실행(그것의 주 파티션 내에서)을 시작할때, 보조 파티션내의 프로그램 모듈이 필요한 만큼 적재되도록 보장하기 위한 어떤 매카니즘이 존제해야만 한다. 본 실시예에서, 개개의 로더/스타터 프로세스(1oader/starter process)가 이 과업을 수행한다.
제12도는 로더/스타터 매카니즘을 도시한 것이다. 로더(1205), 스타터(1206,1207), 주 파티션(1203) 및 보조 파티션(1208,1209) 각각이 실행을 시작할때 자신들에 할당되는 마스터 포트를 소유한다. 마스터 포트는 저 레벨에서 상호 파티션 접속을 설립할 필요가 있다. 각 스타더(1206,1207)는 운영 시스템 프로세스이며, 프로세서당 하나의 스타터가 존재한다: 그것의 마스터 포트 네임(name)은 로더로 알려쳤다. 스타터(1206,1207)는 로더(1205)로부터 나온 명령에 따라 각 파티션(1208,1209)을 시작한다. 로더(1205)는 주 파티션과 동일한 국부 어드레스 공간내에 포함되거나, 또는 상이한 프로세서의 어드레스 공간상에 놓일 수 있다. 패런트 프로제서(parent process)(1202)가 프로그램(주 파티션(1203) 내에서)을 호출할때, 페런트 프로세서는 동일한 시간에서 로더를 호출한다. 패런트 프로제서는 로더(제12도에서 "M2011")의 마스터 포트수를 환경(environment)(1204)을 통해 주 파티션으로 통과시킨다. "환경"은 환경 변수(enyironmentvariable), 외부 파열(outer file) 또는 그외 다른 수단과 같은 포트수를 통과시키기 위해 사용되는 각종 매카니즘중 어느 하나의 매카니즘을 의미한다. 로더(1205)는 각 스타터를 호출하여, 스터타로하여금 로더의 마스터 포토 네임을 통과시킨다. 그리고나서, 스타터는 각 보조 파티션을 시작한다. 파티션을 시작하려면 스택의 바닥에서 에이전트 프로세스에 대한 활성 블럭을 갖는 보조 파티션에 대한 프로그램 스택의 창출(creation) 을 요구한다.
보조 파티신의 에이전트 프로세서는 AGT_WAIT 상태에서 시작된다. 주 및 보조 파티션은 사전에 공급된 로더 마스터 포트 네임을 이용하여 로더를 접속시키고 각 파티션의 마스터 포트 내임을 로더에 전송시킨다. 그리고나서 로더는 모든 다른 파티션에 포트 내임을 분배한다.
비록 본 실시예에서 프로그램의 모든 파티션이 주 파티션이 시작될때 적재되고 연결될지라도 또다른 실시예에서, 리모토 절차 호출이 비적재된 파티션(적재 요구)에 포함된 절차를 실시할때까지 적재를 지연시키는것이 가능하다. 또다른 실시예에서, 각 파티션은 사전에 적재된 파티션의 마스터 포트를 포함하는 벡터를유지시킨다. 리모토 절차 호출이 이루어질때, 클라이언트 파티션은 우선 상기 벡터를 검사하여 타겟 파티션이 적재된 것을 검사한다. 만일 타겟 파티션이 적재되지 않았다면, 타겟 프로세서의 스타더는 호출 파티션내의 적재 기능으로부터 나온 명령에 따라 타겟 파티션을 시작한다. 단지 하나의 파티션만이 어떤 시간에서 시작되지만, 만일 그렇지 않으면 상기 요구 로더는 본 실시예에서 처럼 모든 파티션의 사전 적재(pre-loading)에 대한 기능을 한다.
본 실시예에서, 각각 개별적으로 컴파일된 부호 모들은 성능 또는 다른 고려 상황을 토대로 프로세서에 할당된다. 소스 부호에 대한 어떤 수정을 회피하기 위하여 할당은 절차 레벨에서 실행되지 않고 모듈 레벨에서 행해진다. 만일 개개 절차 레벨에서 모들을 할당하는 것이 바람직하면, 각 절차를 개별적으로 컴파일하는 것이(내부분의 컴퓨터 언어들에서) 가능하다. 또다른 실시예에서, 컴파일러 방향성(compiIerdirectives)은 소스 부호내에 포함되며, 그것은 단일 모듈내에서 상이한 절차가 개개의 파티션상에 사용하기 위하여 개별적인 모들로 컴파일되도록 허용한다.
본 실시예에서, 본 발명은 법용 컴퓨터 시스템에 접속된 수치-집중 가속기 시스템을 손쉽게 하기 위하여사용되며, 여기서 가속기는 우선적으로 슬레이브 시스템으로서 기능한다. 그러나, 시스템 구성 형태 및 용법의 수많은 또다른 실시예가 가능하다. 예를들어, 모든 프로세서들은 동일할 수 있지만 그 프로세서 각각은 상이한 국부 데이타 베이스에 액세스한다 통신 링크는 본 실시예에서 사용된 것보다 더욱 리모트하거나 더욱 클로우즈한다. 예를들어, 상이한 프로세서들은 각종 국부 지역 네트워크 기술중 어느 기술에 의해 연결될 수 있다.
비록 본 발명의 특정 실시예에 관해서만 서술되었을지라도, 본 기술에 숙련된 사람들은 다음 청부범위 영역을 벗어나지 않고 각종 수정 및 변경을 행할 수 있다는 것을 알 수 있다.

Claims (25)

  1. 다수의 호출가능한 절차(a pluraIity of calIable procedures)을 갖는 프로그램을 실행하기 위한 분산처리 장치(a distributed procesing apparatus)에 있어서, 제 1 국부 메모리(first local memory)에 포함된 절차를 실행하기 위한 상기 제 1 국부 메모리에 결합된 제 1 프로세서(first processor)와, 제 2 국부 메모리(second locaI memory)에 포함된 절차를 실행하기 위한 상기 제 2 국부 메모리에 결합된 제 2 프로세서(second procesor)와, 상기 제 1 및 제 2 프로세서 간에 데이타를 통신시키기 위한 수단과, 상기 제 1 국부메모리에 포함된 상기 프로그램의 제 1 호출 가능한 절차에 대해 상기 제 2 국부 메모리에 포함된 상기 프로그램의 제 2 호출 가능한 절차를 호출하기 위한 수단 및, 상기 제 1 호출 가능한 절차 대신에 실행되는 동안 상기 제 2 호출 가능한 절차에 대해 상기 제 1 국부 메모리에 포함된 호출가능한 절차를 호출하기 위한 수단을 포함하는·것을 특징으로 하는 분산 처리 장치.
  2. 제 1 항에 있어서, 상기 제 2 호출 가능한 절차에 대해 상기 제 1 국부 메모리에 포함된 호출가능한 절차를 호출하기 위한 상기 수단은 상기 제 2 호출 가능한 절차에 대해 상기 제 1 호출 가능한 절차를 순환적으로 호출하기 위한 수단을 포함하는 것을 특징으로 하는 분산 처리 장치
  3. 제 1 항에 있어서, 상기 제 1 국부 메모리에 포함된 절차의 실례 상태 정보(state informatlon ofinstance of procedure)를 각각 포함하는 하나 또는 그 이상의 활성 불럭(one or more actlvation blocks)을 구비하고 상기 제 1 국부 메모리에 포함되는 제 1 프로그램 스택(first program stack) 및, 상기 제 2 국부메모리에 포함된 절차의 실례 상태 정보를 각각 포함하는 하나 또는 그 이상의 활성 불럭을 포함하는 제 2 프로그램 스택(second program stack)을 구비하고 상기 제 2 국부 메모리에 포함되는 것을 특징으로 하는분산 처리 장치.
  4. 제 1 항에 있어서, 상기 제 1 프로세서에서 상기 프로그램의 실행을 시작하기 위해 상기 프로그램의 외부절차(outer procedure)를 호출하기 위한 수단과, 상기 제 1 절차와 상기 제 2 절차간의 링크(link)를 자동으로 설정하며, 여기서 상기 제 1 호출 가능한 절차에 내해 자동으로 인에불된 상기 제 2 호출 가능한 절차를 호출하기 위한 수단 및, 상기 제 2 절차와 상기 제 1국부 메모리에 포함된 호출가능한 절차간에 링크를 자동으로 설정하며, 여기서 자동으로 인에블된 상기 제 1 호출 가능한 절차 대신에 실행되는 동안, 상기 제 2 호출 가능한 절차에 대해 상기 제 1 국부 메모리에 포함된 호출가능한 절차를 호출하기 위한 수단을 포함하는것을 특징으로 하는 분산 처리 장치.
  5. 제 1 항에 있어서, 상기 제 1 국부 메모리에 포함되고 상기 제 2 호출 가능한 절차를 나타내는 제1c-스터브 모듈(flrst c-stub module)과, 상기 제 2 국부 메모리에 포함되고 상기 제 1 호출 가능한 절차를 나타내는 제 1s-스터브 모듈(first s-stub mod山e)과, 상기 제 2 국부 메모리에 포함되고 상기 제 1 호출 가능한 절차 대신에 실행되는 동안 상기 제 2 호출 가능한 절차에 의해 호출될 수도 있는 상기 제 1 국부 메모리에 포함된 상기 절차를 나타내는 제 2c-스터브 모듈(second c-stub module)과, 상기 제 1 국부 메모리에 포함되고 상기 제 2 호출 가능한 절차를 나타내는 제 2s-스터브 모듈(second s-stub module)과, 상기 제 1 호출 가능한 절차에 대해, 상기 제 1c-스터브 모듈에 제1 국부 호출을 발부하기 위한 수단과, 상기 제 1 국부 호출에 응답하여, 상기 제 1c-스터브 모듈에 대해, 상기 제 1 국부 호출에 포함된 데이타를 상기 제 1s-스터브 모듈에 통신시키기 위한 수단과, 상기 제 1c-스티브 모듈에 대해 상기 제 1s-스터브 모듈에 상기 제 1 국부 호출에 포함된 데이타를 통신시키기 위한 상기 수단에 응답하여, 상기 제1s-스터브 모듈에대해 상기 제 1 호출 가능한 절차 대신에 상기 제 2 호출 가능한 절차에 제 2 국부 호출을 반부하기 위한 수단과, 상기 제 2 호출 가능한 절차가 상기 제 1 호출 가능한 절차 대신에 실행되는 동안 상기 제 2 호출 가능한 절차에 대해 상기 제 2c-스터브 모듈에 제 3 국부 호출을 발부하기 위한 수단과, 상기 제 3 국부 호출에 응답하여, 상기 제 2c-스터브 모듈에 대해 상기 제 3 국부 호출에 포함된 데이타를 상기 제 2s-스터브 모듈에 통신시키기 위한 수단 및, 상기 제 2 -c-스터브 모듈에 대해 상기 제 3 국부 호출에 포함된 데이타를 상기 제 2s-스터브 모듈에 통신시키기 위한 상기 수단에 응답하여, 상기 제 2s-스터브 모듈에 대해 상기 제 1 호출 가능한 절차 대신에 실행되는 동안에 상기 제 2 호출 가능한 절차에 대해 호출될 수도 있는 상기 제 1 국부 메모리에 포함된 상기 절차에 상기 제 2 호출 가능한 절차 대신에 발부되는 제 4 국부 호출을 나타내기 위한 수단을 포함하는 것을 특징으로 하는 분산 처리 장치.
  6. 제 5 항에 있어서, 상기 제 2 호출 가능한 절차에 대해 상기 제 1 국부 메모리에 포함된 절차를 호출하기 위한 상기 수단은 상기 제 2 호출 가능한 절차에 대해 상기 제 1 호출 가능한 절차를 순환적으로 호출하기위한 수단을 포함하는 것을 특징으로 하는 분산 처리 장치.
  7. 제 5 항에 있어서, 상기 제 1 국부 메모리에 포함되며, 상기 제 1 국부 메모리에 포함된 절차의 각각의 상기 제 1 국부 메모리에 포함된 c-스터브의 각각의 실례 및 상기 제1 국부 메모리에 포함된 s-스터브의각각의 실례가 상기 실례의 상태 정보를 포함하는 상기 제 1 프로그램 스택의 유일한 활성 블럭에 의해 표시되는 하나 또는 그 이상의 활성 블럭을 포함하는 제 1 프로그램 스택 및, 상기 제 2 국부 메모리에 포함되며,상기 제2국부 메모리에 포함된 절차의 각각의 실례와, 상기 제2국부 메모리에 포함된 c-스터브의 각각의실례 및, 상기 제 2 국부 메모리에 포함된 s-스터브의 각각의 실례가 상기 실례의 상태 정보를 포함하는 상기 제 1 프로그램 스택의 유일한 활성 블럭에 의해 표시되는 하나 또는 그 이상의 활성 블럭을 포함하는 제 2 프로그램 스택을 포함하는 것을 특징으로 하는 분산 처리 장치.
  8. 제 5 항에 있어서, 상기 제 1 프로세서의 상기 프로그램의 실행을 시작하기 위해 상기 프로그램의 외부절차를 호출하기 위한 수단과, 상기 제 1 절차와 상기 제 2 절차간에 링크를 자동으로 설정하며, 여기서 상기 제 1 호출 가능한 절차에 대해, 자동으로 인에이블된 상기 제 2 호출 가능한 절차를 호출하기 위한 수단 및, 상기 제 2 절차와 상기 제 1 국부 메모리에 포함된 호출가능한 절차간에 링크를 자동으로 설정하며, 여기서 자동으로 인에이불되는 상기 제 1 호출 가능한 절차 대신에 실행되는 동안 상기 제 2 호출 가능한 절차에 대해 상기 제 1 국부 메모리에 포함된 호출가능한 절차를 호출하기 위한 수단을 포함하는 것을 특징으로 하는분산 처리 장치.
  9. 상기 프로그램에 포함된 제 1 세트의 호출가능한 절차를 제 1 프로세서에 할당하는 단계와, 상기 프로그램에 포함된 제 2 세트의 호출가능한 절차를 제 2 프로세서에 할당하는 단계와, 상기 제 1 프로세서로 상기 제 1 세트의 호출가능한 절차에 포함된 제 1 호출 가능한 절차를 실행하는 단계와, 상기 제 1 프로세서로 제 1 호출 가능한 절차를 실행하는 상기 단계를 수행하는 동안, 상기 제 2 세트의 호출가능한 절차에 포함된 호출가능한 절차를 상기 제 1 호출 가능한 절차로부터 호출하는 단계와, 상기 제 2 프로세서로 상기 제 1 호출 가능한 절차 대신에 제 2 호출 가능한 절차를 실행하는 단계 및, 상기 제 2 프로세서로 상기 제 2 호출 가능한절차를 실행하는 상기 단계를 수행하는 동안, 상기 제 1 세트의 호출가능한 절차에 포함된 호출가능한 절차를 상기 제 2 호출 가능한 절차로부터 호출하는 단계를 포함하는 깃을 특징으로 하는 멀티-프로세서 시스템상에서 컴퓨터 프로그램을 실행하는 방법.
  10. 제 9 항에 있어서, 상기 제 1 세트에 포함된 호출가능한 절차를 상기 제 2 호출 가능한 절차로부터 호출하는 상기 단계가 상기 제 1 호출 가능한 절차를 순환적으로 호출하는 것을 특징으로 하는 멀티-프로세서 시스템상에서 컴퓨터 프로그램을 실행하는 방법.
  11. 제 9 항에 있어서, 상기 제 1국부 메모리에 포함된 절차의 실례의 상태 정보를 각각 포함하는 하나 또는 그 이상의 활성 블럭을 포함하는 제 1 프로그램 스택을 상기 제 1프로세서의 제 1 국부 메모리에 유지시키는 단계 및, 상기 제 2 국부 메모리에 포함된 절차의 실례의 상태 정보를 각각 포함하는 하나 또는 그 이상의 활성 블럭을 포함하는 제 2 프로그램 스택을 상기 제 2 프로세서의 제 2 국부 메모리에 유지시키는 단계를 포함하는 겻을 특징으로 하는 멀티-프로세서 시스템상에서 컴퓨터 프로그램을 실행하는 방법.
  12. 제 9 항에 있어서, 상기 제 2 세트의 호출가능한 절차를 상기 제 1 호출 가능한 절차로부터 호출하는 상기 단계는 (a) 상기 제 1 호출 가능한 절차로부터 상기 제 1 프로세서의 제 1 국부 메모리에 포함된 제1c-스터브 모듈로 제 1 국부 호출을 발부하는 단계와,(b) 상기 제 1 국부 호출을 상기 제 2 프로세서의 제 2 국부 메모리에 포함된 제 1s-스터브 모듈에 통신시키는 단계와,(c) 상기 제 1s-스터브 모듈로부터 상기 제 1 호출 가능한 절차 대신에 상기 제 2 세트의 호출가능한 절차로 제 2 국부 호출을 발부하는 단계를 포함하며, 상기 제 1 세트의 호출가능한 절차에 포함된 호출가능한 절차를 상기 제 2 호출 가능한 절차로부터 호출하는 상기 단계는,(d) 상기 제 2 호출 가능한 절차로부터 상기 제 2 국부 메모리에 포함된 제 2c-스터브 모듈로 제 3 국부 호출을 반부하는 단계와,(e) 상기 제 3 국부 호출을 상기 제 1 국부 메모리에 포함된 제2s-스터브 모듈에 통신시키는 단계와,(f) 상기 제 2s-스터보 모듈로부터 상기 제 2 호출 가능한 절차 대신에 상기 제 1 세트의 호출가능한 절차로 제 4 국부 호출을 발부하는 단계를 포함하는 것을 특징으로 하는 멀티-프로세서 시스템상에서 컴퓨터 프로그램을 실행하는 방법.
  13. 제11항애 있어서, 상기 제 1 국부 메모리에 포함된 절차의 각각의 실례와, 상기 제 l 국부 메모리에 포함된 c스터브의 각각의 실례 및, 상기 제 1 국부 메모리에 포함된 s-스터브의 각각의 실례가 상기 실례의상태 정보를 포함하는 제 1 프로그램 스택의 유일한 활성 불럭에 의해 표시되는 하나 또는 그 이상의 활성블럭을 포함하는 상기 제 1 프로그램 스택을 상기 제 1 프로세서의 상기 제 1 국부 메모리에 유지시키는 단계 및, 상기 제2국부 메모리에 포함된 절차의 각각의 실례와, 상기 제 2 국부 메모리에 포함된 c-스터브의 각각의 실례 및, 상기 제 2 국부 메모리에 포함된 s-스터브의 각각의 실례가 상기 실례의 상대 정보를 포함하는 제 2 프로그램 스택의 유열한 활성 블럭에 의해 표시되는 하나 또는 그 이상의 활성 블럭을 포함하는 상기 제 2 프로그램 스택의 상기 제 2 국부 메모리에 유지시키는 단계를 포함하는 겻을 특정으로 하는 멀티-프로세서 시스템의 컴퓨터 프로그램을 실행하는 방법.
  14. 제 9 항에 있어서, 상기 제 1 프로세서에 상기 프로그램의 실행을시작하기 의해 상기 프로그램의 외부절차를 호출하는 단계를 포함하며, 상기 제 1 절차와 상기 제 2 세트에 포함된 호출가능한 절차간에 자동으로 링크를 설정하는 단계를 포함하며, 여기서 상기 제 1 호출 가능한 절차에서 상기 제 2 세트의 호출가능한 절차에 포함된 호출가능한 절차를 호출하는 상기 단계가 자동으로 인에이블되며, 상기 제 2 절차와 상기 제 1 세트의 호출가능한 절차에 포함된 호출가능한 절차간에 링크를 자동으로 설정하는 단계를 포함하며, 여기서 상기 제 2 호출 가능한 절차에서, 상기 제 1 세트의 호출가능한 절차에 포함된 호출가능한 절차를 호출하는상기 단계가 자동으로 인에이블되는 것을 특징으로 하는 멀티-프로세서 시스템상에서 컴퓨터 프로그램을실행하는 방법.
  15. 다수의 호출가능한 절차를 구비한 단일-처리 컴퓨더를 실행하는 방법에 있어서, 상기 프로그램의 상기 다수의 호출가능한 절차 각각을 다수 세트의 호출가능한 절차중 한 절차에 할당하는 단계와, 멀티-프로세서 컴퓨터 시스템의 제 1 의 프로세서의 제 1 국부 메모리에 상기 다수 세트의 호출가능한 절차중 제 1 세트의 호출가능한 절차를 기억시키는 단계와, 상기 멀티-프로세서 컴퓨터 시스템의 제 2 프로세서의 제 2 국부메모리에 상기 다수의 세트의 호출가능한 절차의 제 2 세트의 호출가능한 절차를 기억시키는 단계를 포함하며, 상기 멀티-프로세서 시스템상에서 상기 프로그램을 실행하는 단계는 (a) 상기 제 1 프로세서의 상기제 1 세트의 호출가능한 절차에 포함된 호출가능한 절차를 실행하는 단계를 포함하며, 여기서 상기 제 1 세트의 적어도 한 절차가 상기 제 2 세트의 절차를 호출하며,(b) 상기 제 2 프로세서의 상기 제 2 세트의 호출가능한 절차에 포함된 호출가능한 절차를 실행하는 단계를 포함하며, 여기서 상기 제 2 세트의 적어도 한 절차가 상기 제 1 세트의 절차를 호출하는 것을 특징으로 하는 단열-처리 컴퓨터 실행 방법.
  16. 제15항에 있어서, 상기 프로그램의 상기 다수의 호출가능한 절차 각각을 다수의 세트의 호출가능한절차중 한 절차에 할당하는 상기 단계는 각각의 상기 호출가능한 절차와 관계하여, 상기 멀티-프로세서 시스템중 어느 프로세서가 호출가능한 절차를 수행하는지를 결정하는 단계를 포함하며, 여기서 상기 결정은 상기 프로그램의 호출과 관련없이 행해지는 것을 특징으로 하는 단열-처리 컴퓨터 실행 방법.
  17. 제16항에 있어서, 상기 제 1 프로세서가 상기 제 2 프로세서 보다 더 효율적으로 제 1형태의 호출가능한 절차를 실행하고, 상기 제 2 프로세서가 상기 제 1 프로세서 보다 더 효율적으로 제 2 형태의 호출가능한절차를 실행하며, 여기서 상기 결정하는 단계는 상기 제 1 형태의 호출가능한 절차가 상기 제 1 프로세서에 의해 실행되고, 상기 제 2 형태의 호출가능한 절차가 상기 제 2 프로세서에 의해 실행되는 것을 특징으로 하는 단열-처리 컴퓨터 실행 방법.
  18. 제17항에 있어서, 상기 제 1 프로세서는 법용의 상업 트랜잭션 프로세서이고 상기 제2 프로세서는 수치-집중 프로세서인 것을 특징으로 하는 단일-처리 컴퓨터 실행 방법.
  19. 제15항에 있어서, 상기 멀티-프로세서 시스템상에서 상기 프로그램을 실행하는 상기 단계는 상기 제 1 프로세서의 상기 프로그램의 실행을 시작하기 위해 상기 프로그램의 외부 절차를 호출하는 단계를 포함하며, 상기 제 1 세트의 호출가능한 절차중 한 절차와 상기 제 2 세트의 절차간에 링크를 자동으로 설정하는 단계를 포함하며, 여기서 상기 제 1 세트의 상기 절차가 상기 제 2 세트의 상기 절차를 호출하기 위해 자동으로인에이블되며, 상기 제 2 세트의 호출가능한 절차중 한 절차와 상기 제 1 세트의 절차간에 링크를 자동으로 설정하는 단계를 포함하며, 여기서 상기 제 1 세트의 상기 절차가 상기 제 2 세트의 상기 절차를 호출하기 위해 자동으로 인에이블 되는 것을 특징으로 하는 단열-처리 컴퓨터 실행 방법.
  20. 다수의 호출가능한 절차를 갖고 본질적으로 단일 프로세서 시스템상에서 실행되도록 기입된 단일-처리 컴퓨터 프로그램을 멀티--프로세서 시스템상에서 실행되도록 변경하는 방법에 있어서, 제 1 세트의 호출기능한 절차를 포함하는 상기 컴퓨터 프로그램의 제 1 파티션을 형성하는 단계와, 상기 제 1 세트와 결합하지않는 제 2 세트의 호출가능한 절차를 포함하는 상기 컴퓨터 프로그램의 제 2 파티션을 형성하는 단계를 포함하며, 상기 제 1 세트의 호출가능한 절차의 호출가능한 절차가 상기 제 2 세트의 호출가능한 절차의 호출가능한 절차에 대한 호출을 포함하며, 상기 제 2 세트의 호출가능한 절차의 호출가능한 절차가 상기 제 1 세트의 호출가능한 절차의 호출가능한 절차에 대한 호출을 포함하며, 상기 제 1 세트의 호출로부터 상기 제 2 세트의 호출로의 국부 호출을 수신하기 위해 상기 제 1 파티션 수단에 배치시키는 단계를 포함하며, 상기 제 1 세트의 절차 대신에 상기 제 2 세트의 절차에 국부 호출 발부하기 위해 상기 제 2 파티션 수단에 배치시키는 단계를 포함하여, 상기 제 2 세트의 절차로부터 상기 제 2 세트의 절차로의 국부 호출을 수신하기 위해 상기 제 2 파티션 수단에 배치시키고 상기 제 2 세트의 절차 대신에 상기 제 1 세트의 절차에 국부 호출을 발부하기 위해 상기 제 1 파티션 수단에 역순으로 배치시키는 단계를 포함하는 것을 특징으로 하는 단일 처리 컴퓨터 프로그램 변경 방법.
  21. 제20항에 있어서, 상기 멀티-프로세서 시스템은 제 1 및 제 2 프로세서를 포함하며, 상기 제 1 프로세서는 상기 제 2 프로세서 보다 더 효율적으로 제 1 형태의 호출가능한 절차를 실행하고, 상기 제 2 프로세서는 상기 제 1 프로세서 보다 더 효율적으로 제 2 형태의 호출가능한 절차를 실행하고, 제 1 파티션을 형성하고 제 2 파티션을 형성하는 상기 단계는 상기 제 1 형태의 절차를 상기 제 1 파티션에 할당하고 상기 제 2 형태의 절차를 상기 제 2 파티신애 할당하는 것을 특징으로 하는 단일-처리 컴퓨터 프로그램 변경 방법.
  22. 제21항에 있어서, 상기 제 1 프로세서는 법용의 상업 트랜잭션 프로세서이고 상기 제2 프로세서는 수치-집중 프로세서인 것을 특징으로 하는 단일-처리 컴퓨터 프로그램 변경 방법.
  23. 멀티-프로세서 컴퓨터 시스템의 실행을 위한 프로그램 프로덕트에 있어서, 단일-처리 모드에서의실행을 위한 컴퓨터 프로그램과, 다수의 호출가능한 절차를 포함하며, 상기 멀티-프로세서 시스템중 제 1 프로세서에 의해 실행되는 상기 컴퓨터 프로그램의 제 1 파티션과, 다수의 호출가능한 절차를 포함하며, 상기 멀티-프로세서 시스템중 제 2 프로세서에 의해 실행되는 상기 컴퓨터 프로그램의 제 2 파티션과, 상기 제 2 파티션의 호출가능한 절차에 호출을 반부하기 위한 수단을 구비한 상기 제 1 파디션에 포함된 제 1 호출 가능한 절차와, 상기 제 1 호출 가능한 절차 대신에 실행되는 동안 상기 제 1파티신에 포함된 호출가능한 절차에 호출을 반부하기 위한 수단을 구비한 상기 제 2 파티션에 포함된 제 2 호출 가능한 절차를 포함하는 것을 특징으로 하는 멀티-프로세서 컴퓨터 실행용 프로그램 프러덕-
  24. 제23항에 있어서, 상기 제 2 호출 가능한 절차는 상기 제 1 호출 가능한 절차를 순환적으로 호출하는 수단을 포함하는 것을 특징으로 하는 멀터-프로세서 컴퓨터 실행용 프로그램 프로덕트.
  25. 제23항에 있어서, 상기 제 1 파티션에 포함되고 상기 제 2 파티션에 포함된 호출가능한 절차를 나타내는 제 1c-스터브 모듈과, 상기 제 2 파티션에 포함되고 상기 제 1 호출 가능한 절차를 나타내는 제 ls-스터브 모듈과, 상기 제 2 파티션에 포함되고 상기 제1 파티션에 포함된 호출가능한 절차를 나타내는 제 2c-스터브 모듈과, 상기 제 1 파티신에 포함되고 상기 제 2 호출 가능한 절차를 나타내는 제 2s-스터브 모듈을 포함하며, 상기 제 2 호출 가능한 절차에 포함되며, 상기 제 2 파티션의 절차에 호출을 발부하기 위한 상기 수단은 제 1 국부 호출을 상기 제 1c-스터브 모듈에 반부하기 위한 수단을 포함하며, 상기 제 1c-스터브 모듈은 상기 제 1 국부 호출에 응답하여, 데이타를 상기 제 1s-스터브 모듈로 전송하기 위한 수단을 포함하며, 상기 제 1s-스터브 모듈을, 상기 제 1 호출 가능한 절차 대신에, 제 2 국부 호출을 상기 제 2 파티션에 포함된 호출가능한 절차에 발부하기 위한 수단을 포함하며, 상기 제 2 호출 가능한 절차에 포함되며, 상기 제 1 호출 가능한 절차 대신에 실행되는 동안, 호출을 상기 제 1 파티신에 포함된 호출가능한 절차에 발부하기 위한 상기 수단은 제 3 국부 호출을 상기 제 2c-스터브 모듈에 발부하기 위한 수단을 포함하며, 상기 제 2c-스터브 모듈은 상기 제 3 국부 호출에 응답하여 데이타를 상기 제 2s-스터브 모듈로 전송하기 위한 수단을 포함하고, 상기 제2s-스터브 모듈은 상기 제 2 호출 가능한 절차 대신에 상기 제 1 파티션에 포함된 호출가능한 절차에 제 4 국부 호출을 발부하기 위한 수단을 포함하는 것을 특징으로 하는 멀티-프로세서 컴퓨터 실행용 프로그램 프로덕트.
KR1019920004488A 1991-04-17 1992-03-18 분산 프로그램을 스택하기 위한 방법 및 장치 KR950014163B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IL97894 1991-04-16
IL97894A IL97894A0 (en) 1991-04-17 1991-04-17 Multi-processor computer system

Publications (2)

Publication Number Publication Date
KR920020337A KR920020337A (ko) 1992-11-21
KR950014163B1 true KR950014163B1 (ko) 1995-11-22

Family

ID=11062277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920004488A KR950014163B1 (ko) 1991-04-17 1992-03-18 분산 프로그램을 스택하기 위한 방법 및 장치

Country Status (8)

Country Link
EP (1) EP0509946A3 (ko)
JP (1) JPH07306837A (ko)
KR (1) KR950014163B1 (ko)
CN (1) CN1042979C (ko)
BR (1) BR9201274A (ko)
IL (1) IL97894A0 (ko)
TW (1) TW253041B (ko)
UY (1) UY23398A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
US6470398B1 (en) 1996-08-21 2002-10-22 Compaq Computer Corporation Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US20120209413A1 (en) * 2011-02-14 2012-08-16 Microsoft Corporation Background Audio on Mobile Devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3548384A (en) * 1967-10-02 1970-12-15 Burroughs Corp Procedure entry for a data processor employing a stack
JPS61283955A (ja) * 1985-06-11 1986-12-13 Nec Corp 密結合型マルチ・プロセツサ・システムのタスク制御方式
JP2518293B2 (ja) * 1987-07-24 1996-07-24 日本電気株式会社 デ−タフロ−プロセツサ
US4949255A (en) * 1988-09-07 1990-08-14 International Business Machines Corp. Message interface and method for recursive calling between interpretive and compiled computer processes
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
JPH1029938A (ja) * 1996-07-17 1998-02-03 Maruha Corp 虚血性眼疾患の予防および/または治療剤

Also Published As

Publication number Publication date
JPH07306837A (ja) 1995-11-21
EP0509946A3 (en) 1994-11-30
BR9201274A (pt) 1992-12-01
IL97894A0 (en) 1992-06-21
TW253041B (ko) 1995-08-01
KR920020337A (ko) 1992-11-21
CN1042979C (zh) 1999-04-14
UY23398A1 (es) 1992-04-21
CN1065942A (zh) 1992-11-04
EP0509946A2 (en) 1992-10-21

Similar Documents

Publication Publication Date Title
US5659701A (en) Apparatus and method for distributed program stack
US5381534A (en) System for automatically generating efficient application - customized client/server operating environment for heterogeneous network computers and operating systems
US5043873A (en) Method of parallel processing for avoiding competition control problems and data up dating problems common in shared memory systems
US4675806A (en) Data processing unit utilizing data flow ordered execution
US5506999A (en) Event driven blackboard processing system that provides dynamic load balancing and shared data between knowledge source processors
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
EP0477364B1 (en) Distributed computer system
US6385668B1 (en) Method and apparatus for compound hardware configuration control
CN112306946B (zh) 一种多核处理器及其执行复杂计算的方法
US7823158B2 (en) Adaptive scheduling and management of work processing in a target context in resource contention
CN115203142A (zh) 一种多核核间实时通信系统及方法
AU603876B2 (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
KR950014163B1 (ko) 분산 프로그램을 스택하기 위한 방법 및 장치
CN116126459A (zh) 一种面向异构计算环境的fpga虚拟化实现方法
Tanenbaum et al. Programming a distributed system using shared objects
CN114281529A (zh) 分布式虚拟化的客户操作系统调度优化方法、系统及终端
JPH02245864A (ja) 多重プロセッサシステム
Dennis et al. Research directions in computer architecture
Samman et al. Architecture, on-chip network and programming interface concept for multiprocessor system-on-chip
Halang et al. A function oriented architecture for process control systems minimising internal data transfer costs
KR100272094B1 (ko) 객체전이 시스템 및 방법
Syrigos et al. On the Implementation of a Software-Defined Memory Control Plane for Disaggregated Datacenters
JPH02171952A (ja) マルチプロセッサにおけるディスパッチ方式
Lesser The design of an emulator for a parallel machine language
JP2000137688A (ja) 多重プロセッサシステムおよびデ―タ処理方法

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20001021

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee