KR100331519B1 - 분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법 - Google Patents

분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법 Download PDF

Info

Publication number
KR100331519B1
KR100331519B1 KR1020007003507A KR20007003507A KR100331519B1 KR 100331519 B1 KR100331519 B1 KR 100331519B1 KR 1020007003507 A KR1020007003507 A KR 1020007003507A KR 20007003507 A KR20007003507 A KR 20007003507A KR 100331519 B1 KR100331519 B1 KR 100331519B1
Authority
KR
South Korea
Prior art keywords
location
application
instructions
network
identified
Prior art date
Application number
KR1020007003507A
Other languages
English (en)
Other versions
KR20010030849A (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 KR20010030849A publication Critical patent/KR20010030849A/ko
Application granted granted Critical
Publication of KR100331519B1 publication Critical patent/KR100331519B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4868Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication

Abstract

본 발명은 네트워크내의 상이한 위치들에서 실행가능한 컴퓨터 프로세스용 인스트럭션들을 포함하는 분산 애플리케이션을 네트워크에서 실행시키기 위한 컴퓨터화된 방법 및 시스템을 제공한다. 이들 인스트럭션들로서 송출 커맨드 및/또는 해제 커맨드가 포함된다.

Description

분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법{COMPUTERIZED METHOD AND SYSTEM FOR IMPLEMENTING DISTRIBUTED APPLICATIONS}
본 발명은 컴퓨터 네트워크에서 분산 애플리케이션(distributed applications)를 실행시키는 방법 및 시스템에 관한 것이다. 일반적으로, 이들 애플리케이션은 네트워크내의 임의의 위치에서 실행가능하다.
애플리케이션이 처리되고 실행되는 컴퓨터와 장치들(devices)은 네트워크를 통해 접속된다. 그들의 동작을 위한 다양한 아키텍쳐와 프로그래밍 언어가 공지되어 있다. 파스칼(Pascal), C 또는 자바(Java)와 같은 통상의 프로그래밍 언어는 위치 요건(location requirements)을 식별하는 표준 수단을 전혀 제공하고 있지 않다. 고전적인 분산 컴퓨터 애플리케이션에서, 이러한 종속성은 전체 애플리케이션을, '클라이언트(client)' 및 '서버(server)'와 같은 필수 부분들로 나누고, 이들 부분을 분리해서 프로그램하며, 그들을 요구된 위치 또는 요구된 장치에 인스톨하는 애플리케이션 프로그래머에 의해 식별된다. 이들 부분간의 통신은 메시지-전송(message-passing), 프로시쥬어 콜(procedure calls) 또는 객체 지향 프로그래밍 언어인 경우 원격 메쏘드 호출(remote method invocations)에 의해 제공된다.
최근, 에이젼트-테크놀로지(agent-technology) 또는 이동 코드 프로그래밍(mobile code programming)에 의해 분산 시스템을 실현하는 다른 방법이 소개되었다. 개개의 부분에서 전체 애플리케이션을 전개할 필요성이 제거되었으며, 애플리케이션 전체를 다른 위치로 이동시키는 'GO' 커맨드와 같은 단순 언어 원시함수(simple language primitives)로 대체되었다. 이에 의하면, 애플리케이션이 단일의 제어 흐름으로 작성될 수 있으므로, 애플리케이션의 프로그래밍을 간략화시킨다는 것이 밝혀졌다.
미국 특허 제 5,603,031 호는 네트워크내에서 프로세스들의 이동, 실행 및 상호작용에 근거한 분산 계산용 시스템 및 방법을 기술한다. 에이젼트 프로세스는 티켓을 이용하여 네트워크내의 한 위치 프로세스로부터 다른 위치 프로세스로의 이동을 제어하며, 에이젼트 프로세스의 복재를 다수 위치의 프로세스로 동시에 전송한다.
공통 시스템에 사용되는 이와 같은 단순 프로그래밍 모델은 다수의 한계를 갖는다. 첫째, 단일 제어 흐름은 간단한 설계 및 구현을 허용하는 반면에, 실시간 병렬 처리 개발과 같은 최적화를 허용하기에는 너무 융통성이 없다. 또한, 구조가 고정된 위치 종속성을 규정하므로, 요구된 위치가 이용불가능한 경우, 애플리케이션의 실행을 중지해야 한다. 이것은, 프로그래밍 코드의 대부분에 대해 그들이 실행되는 위치가 관련성이 없는 것이 보통이기 때문에 부정적이다. 더욱이, 단순한 'GO' 원시함수는 위치 종속성을 표시하는데 이용가능할 뿐이며, 'GO'가 실행되어야 하는 지점은 컴파일시에 정의되어야 한다.
발명의 목적 및 이점
본 발명의 목적은 네트워크내에서 분산 애플리케이션을 실행시키는 방법 및 시스템을 제공하는 것이다.
본 발명의 다른 목적은 네트워크에 대해 더욱 많은 위치 융통성을 제공하는 것이다.
본 발명의 또 다른 목적은 네트워크내에서 분산 애플리케이션을 실행시킬 수 있는 간단한 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 네트워크내에서 프로세스들을 최적화시키는 것이다.
본 발명의 청구항 1 및 9에 따른, 네트워크내에서 분산 애플리케이션을 실행시키는 방법 및 시스템에 의하면, 애플리케이션의 필요 부분만이 전송되어 관련된 적절한 위치에서 실행되며, 이들은 필요할 때 전송되기만 하면 되므로 더욱 큰 효율이 얻어질 수 있다는 장점을 갖는다. 이에 의해 전송 시간, 접속 시간 및 처리 시간이 최적화되고, 이것은 비용을 감소시킴을 의미한다. 또한, 본 발명의 방법은 실시간 시스템에 대해 더욱 큰 동작의 자유도, 즉, 융통성있고 효율적인 실행을 허용하기에 충분한 융통성을 제공하며, 따라서, 통상의 에이젼트-프로그래밍 또는 이동 코드에 의해 요구되는 융통성 없는 구조에 대한 구제책이다. 이러한 효율성 및 융통성은 클라이언트/서버 또는 전통적인 에이젼트 시스템과 같은 통상의 분산 애플리케이션 프로그래밍 방법들에 의해 성취될 수 없다. 따라서, 본 발명의 목적은 최신 기술의 문제점을 극복하는 것이다.
종속항들에는 본 발명에 따른 분산 애플리케이션 실행 방법에 대한 다양한 변형예 및 개선예들이 포함된다.
어떤 위치에 대해 그 위치에서의 실행을 위해 요구된 기능 또는 그의 한정된 위치를 포함하는 위치 식별자(a location identifier)나, 이용가능한 파라미터로부터 그 위치에서의 실행을 위해 최적으로 선택되어야 하는 파라미터(parameters)를 제공함으로써, 또는 상기 위치 식별자를 발견할 어드레스를 제공함으로써 위치가 식별될 때, 개시된 본 방법이 넓은 범위의 위치 식별 가능성을 허용한다는 장점이 얻어진다. 따라서, 애플리케이션을 실행할 위치의 어드레스는 더 이상 고정된 위치에 제한되지 않고, 위치의 선택도는 그에 따라 더욱 융통성있게 제공된다.
본 발명은, 후속하는 인스트럭션이 식별된 위치에서 실행된다는 사실이 유효한 곳이면 어디든지 사용될 수 있는 송출-커맨드(assert-command)를 포함하는 부가의 인스트럭션을 이용한다. 다른 위치에서의 실행을 위해 필요한 다른 커맨드는 없고, 이것은 간략화, 균일화 및 정확한 실행을 보증한다. 'GO' 커맨드는 불필요하게 되며, 이것은 장래의 개발 및 애플리케이션에 대해 유리하다.
애플리케이션 인스트럭션이 어서트(ASSERT), 인시스트(INSIST) 또는 프레퍼드(PREFERRED)와 같은 다양한 송출-커맨드를 포함할 경우에는, 애플리케이션이 더욱 융통성있게 되고 더욱 큰 동작의 자유도를 얻을 수 있다는 장점이 있다. 애플리케이션 실행을 위한 어떤 위치가 이용불가능한 경우에, 제 1 송출-커맨드 유형(ASSERT)은 임의의 위치와, 그 실행을 일시 보류시키려는 프로그램 의도를 표시한다. 다른 한편, 제 2 송출-커맨드 유형(INSIST)은 이러한 경우에 애플리케이션을 종료시킬 수 있다. 따라서, 애플리케이션 프로세스는 대기하지 않고 오히려 실행을 중단한다. 제 3 송출-커맨드 유형(PREFERRED)은 이전에 이용된 위치에서 후속하는 인스트럭션을 실행시킴으로써 계속하며, 이것은 현재 바람직한 위치가 이용불가능한 경우에도 애플리케이션이 계속되게 하는 장점이 있다. 다수의 송출-커맨드 유형이 생성되어 분산 애플리케이션에 대해 이용가능한데, 이것은 네트워크내의 분산 애플리케이션에 대한 본 발명에 따른 방법의 융통성 및 적응성을 나타낸다.
이들 송출-커맨드 유형은 다양한 위치들중 식별된 위치를 포인팅할 수 있고, 이에 의해 식별된 위치는 '임의로(ad libitum)' 선택가능한데, 이것은 식별된 위치가 어떤 우선권(preferences)없이 선택가능하거나, 다른 경우에 식별된 위치가 사전결정된 우선순위 순서로 배열 및 선택가능함을 의미하며, 애플리케이션을 이동시키기에 큰 여유와 융통성을 제공한다. 그에 따라 네트워크내에서 애플리케이션 및 프로세스의 실행이 최적화되고 적합될 수 있다.
실시간 시스템은 네트워크내에서 애플리케이션을 식별된 위치들로 이동시키고 인스트럭션을 실행시키는데 이용가능하다. 해제-커맨드(release-command)의 경우에는, 애플리케이션이 이동될 위치의 선택은 시스템 조건 및/또는 상태 조건에 의존한다. 이것은 실시간 시스템에 더욱 큰 동작 자유도(freedom of action)를 제공하며, 실시간 시스템은 이제 네트워크의 가용 자원을 이용할 수 있다.
발명의 요약
본 발명은 네트워크내에 분산 애플리케이션을 실행시키기 위한 일반적이고 융통성있는 방법 및 시스템을 제공한다.
네트워크에서 분산 애플리케이션을 실행시키는 본 발명은 위치-종속성, 장치-종속성 또는 서비스-종속성의 임시 송출(assertion)을 허용하는 방법 및 시스템을 개시하는데, 요구된 위치의 동작을 기술하는 애플리케이션에서 추상적으로 및 직관적인 방법으로 이용될 수 있다. 네트워크내의 상이한 위치에서 실행가능한 컴퓨터 프로세스용 인스트럭션은 송출-커맨드 및/또는 해제-커맨드를 포함한다. 송출-커맨드는 다양한 위치들중 식별된 위치를 포인팅하는데, 이것은 그의 후속하는 인스트럭션들이 식별된 위치에서 실행되게 한다. 해제-커맨드는 그의 후속하는 인스트럭션들의 실행이 식별된 위치에 제한되지 않게 한다.
둘 이상의 위치가 하나의 애플리케이션으로부터 사용되어야 하는 현 기술의 문제점은 여전히 존재할 것으로 생각되지만, 이에 의해 위치, 장치 또는 서비스는 할당된 어드레스에 따라 고정되지 않으며, 스왑(swap) 시에도, 즉, 애플리케이션이 다른 위치로 이동할 때조차도 사전결정되지 않는다.
도 1은 본 발명에 따른 애플리케이션의 개략도,
도 2는 상이한 위치들 및 접속물들을 갖는 네트워크의 개략도.
모든 도면은 명료히 하기 위해 실제 크기로 도시되지 않았으며, 구성요소간의 관계도 실제 크기로 도시되지 않았다.
이하에서는 본 발명을 첨부된 도면을 참조하여 다양한 예시적 실시예로서 상세히 설명한다.
본 발명에서는, 위치, 장치 또는 서비스의 가용성 또는 존재를 송출하거나 이전에 행해진 송출을 해제시키는 두 개의 커맨드 원시함수(primitives)가 도입된다. 예시를 목적으로, 이들 원시함수는 본 명세서에서 '어서트(ASSERT)' 및 '릴리즈(RELEASE)'라고 칭해진다. 이들 원시함수는 '포지션(POSITION)' 유형의 위치들, '디바이스(DEVICE)' 유형의 장치들 또는 '서비스(SERVICE)' 유형의 서비스들에 대해 콜(call)될 수 있다. 원시함수의 어의(semantic)는 다음과 같이 요약될 수 있다.
·위치 어서트(ASSERT) : 이 ASSERT 콜에 후속하는 인스트럭션들이 송출된 위치에서 실행되어야 함을 한정한다.
·위치 릴리즈(RELEASE) : 이 RELEASE 콜에 후속하는 인스트럭션들이 어느 위치에서도 실행될 수 있음을 표시한다.
또한, 다음과 같은 다른 원시함수들이 제공될 수 있다.
·위치 프레퍼드(PREFERRED) : 이 PREFERRED 콜에 후속하는 인스트럭션들이 바람직한 위치에서 바람직하게 실행됨을 표시한다.
·위치 프록시미티(PROXIMITY) : 주어진 위치에 대한 물리적 또는 네트워크근접성이 요구됨을 표시한다.
·위치 로드(LOAD) : 최소의 부하가 존재하는 위치가 요구됨을 표시한다.
·위치 스피드(SPEED) : 특수 처리 시간 또는 속도를 갖는 위치가 요구됨을 표시한다.
·위치 시큐리티(SECURITY) : 주어진 위치에 대한 접속이 안전한 방법으로 요구됨을 표시한다.
이들 요건에 따라 더욱 많은 원시함수들이 생성되어 제공될 수 있다. 따라서, 원시함수들의 어의는 자유로이 선택가능하다.
위치는, 그 위치에 대해 그 위치에서의 실행을 위해 요구되는 기능(functionality)이나 그의 한정 위치를 포함하는 위치 식별자, 또는, 가용 파라미터로부터 그 위치에서의 실행을 위해 최적으로 선택되어야 하는 파라미터를 제공하거나, 그 위치 식별자를 발견할 어드레스를 제공함으로써 식별된다. 서버, 장치 또는 서비스에 대한 한정 위치는 알려질 수 있고, 이것은 네트워크내에서 위치의 어드레싱 및 발견을 간단하게 한다.
또한, 기능(functionality)은 사용자에 의해, 시스템에 의해 또는 애플리케이션에 의해 요구될 수 있다. 특수 장치나, 특징(feature) 또는 심지어 프린팅과 같은 서비스를 구비한 장치가 요구될 수 있다. 임의의 플레이어 또는 특수 계산 처리기를 구비한 CD 플레이어가 실행을 위해 요구될 수 있고, 따라서, 네트워크내에서 발견되어야 하는 기능으로 기술될 수 있다.
위치는 또한, 파라미터를 포함하는 위치 식별자, 예컨대, 앞서 언급된 LOAD,SPEED 또는 SECURITY와 같은 파라미터로 식별될 수 있다. 파라미터에 대해 자동적으로, 사전결정된 규칙을 따르는, 예컨대, 바람직한 것으로 가정될 수 있는 동작을 나타내는 실행을 위해 최적의 값 또는 값-범위를 선택할 수 있는 시스템이 설계될 수 있다. 예컨대, 어떤 위치에서의 부하가 낮아야 하는 경우, 실행을 위해 최적이 되도록 파라미터 LOAD가 선택될 수 있다. 당연히, 실시간 시스템이 자동적으로 최적화의 바람직한 지시를 실행할 수 있는 낮은 부하가 바람직하다. 대안적으로, 프로그래머 또는 사용자 등에 의해 바람직한 지시가 주어질 수 있다. 물론, 작업을 신속히 처리할 수 있는 것이 목표이다. 따라서, 애플리케이션의 요건 및 사용자의 요구에 가장 바람직할 수 있는 한 빠른 속도가 선택될 수 있다. 즉, 그 파라미터가 SPEED이며, 실시간 시스템은 자동으로 가장 빠른 처리 속도 값을 갖는 위치를 찾으려고 할 것이다. 예로서,
LOCATION v = LOCATION(SPEED, min 50)
로 주어지면, 파라미터 SPEED가 실시간 시스템에 도입되며, 실시간 시스템은 따라서 최대 처리 속도 또는 최소 처리 속도 값 50을 갖는 위치를 액세스하려고 시도한다. 보안의 경우, 실행을 위해 가장 바람직한 범위내에서 특수 인가증(special certificate) 또는 보안-레벨이 선택될 수 있다. 보안 레벨은 또한 발행 인가서(issuing authority)에 대응할 수 있다. 보안-레벨 '3'을 요구하는 위치에 대한 파라미터 SECURITY의 예는
LOCATION sl = LOCATION(SECURITY, '3')
으로 주어지고, 특수 발행 인가서를 요구하는 위치의 경우,
LOCATION sa = LOCATION(SECURITY, 'VISA')
가 사용될 수 있다.
이하의 예들에서, 사용된 원시함수들은 'ASSERT' 및 'RELEASE'로 칭해진다. 예시를 위해, 이하의 코드 시그먼트내에 간단한 자기-설명 구문이 사용된다.
//Code Block A
[1] LOCATION a = LOCATION(POSITION, 'piot.zurich.ibm.com');
[2] a.ASSERT();
//Code Block B
[3] a.RELEASE();
//Code Block C
위의 예에서, 위치 송출 및 해제는 A, B, C로 명명된 3개의 코드 블록(Code Blocks)내에 포함된다. 이들 콜의 처리는 이하에 가정되는 바와 같이, 컴파일시에 또는 바람직하게는 실행시에 이행될 수 있다.
코드 라인 [1]에서, 특정의 머신 위치가 한정된다. 예컨대, 실시간 시스템은 바람직한 위치의 존재를 검증하거나, 합리적으로 기대될 수 있는 임의의 통신 작업을 위한 준비로 통신 링크를 확립한다. 코드 라인 [2]에서, 이전에 한정된 위치가 ASSERT에 의해 송출된다. 실시간 시스템은 이제 송출된 위치 'piot.zurich.ibm.com'에서 후속하는 인스트럭션 라인(Code Block B)이 실행되어야 한다는 요건을 해석한다. 코드 라인 [3]에서, 위치 제한이 해제되고 있다. 이것은 코드 블록 C가 이전에 송출된 위치에 제한되지 않음을 실시간 시스템에게 표시하는 것이다. 따라서, 실시간 시스템은 이제 자유롭게 애플리케이션을 이동시켜 RELEASE 이후의 인스트럭션을 어떤 다른 위치에 대해서도 실행시킬 수 있다.
마찬가지로, 동일한 원시함수가 이하의 두 번째 예에서처럼 장치 설명을 위해 실행될 수 있으며, 여기서 기능(functionality)은 장치로서 표현된다.
[5] LOCATION d = LOCATION(FUNCTIONALITY, 'mpeg_player');
[6] d.ASSERT();
//Code Block F
[7] d.RELEASE();
이 예는, 기능, 즉, 제각기 위치 식별자 'mpeg_player'를 갖는 코드 라인 [5]내의 장치가 위치 d에서 이용가능해야 함을 표시한다. 코드 라인 [6]에서 이전에 한정된 위치 d가 ASSERT에 의해 송출된다. 이제, 실시간 시스템은 본 예의 경우 Code Block F로 시작하는 이후의 인스트럭션 라인이 위치 식별자 'mpeg_player'로 식별된 송출된 위치 d에서 실행되어야하는 요건을 해석한다. 코드 라인 [7]에서, 위치 제한, 제각기 장치 제한이 해제되고 있다. 이것은 이후의 인스트럭션 라인이 이전에 송출된 위치에 제한되지 않음을 실시간 시스템에게 표시하는 것이다.
이러한 원시함수들에 의해 애플리케이션에 피드백(feedback)을 제공하여 합리적인 중단 모드(abort-mode)를 허용할 수 있다. ASSERT는 이전에 송출된 위치의 RELEASE를 의미할 수 있다.
이제 도 1을 참조하면, 제각기 위치(1, 2, 3)에서 실행되는 애플리케이션(11.1, 11.2, 11.3)의 전반적인 개략도가 도시되며, 더 자세한 것은점선 및 화살표로 도시된 애플리케이션들(11.1, 11.2, 11.3)의 처리에 따라 설명된다. 개략도는 해제 커맨드로써 RELEASE(8)을 갖는 위치(1)의 왼쪽 박스 상부에서 시작된다. 이 해제 커맨드 RELEASE(8)은 블록(9)으로서 도시된 후속하는 인스트럭션(9)의 실행이 식별된 위치에 한정되지 않게 한다. 따라서, 이후 실시간 시스템은 애플리케이션(11.1)을 위치(2) 또는 위치(3)과 같은 다른 위치로 이동시키거나 왼쪽 박스에 도시된 바와 같이 위치(1)상에서 애플리케이션(11.1)을 실행시킴으로써 계속할 수 있다. 수직 점선은 애플리케이션(11.1)의 처리를 나타낸다. 애플리케이션(11.1)에서 블록(9)에 후속하는 송출 커맨드 ASSERT(LOC2)(4)는 애플리케이션(11.1)이 실시간 시스템에 의해 위치(2)로 이동되었어야 하는 가장 늦은 사례를 표시하며, ASSERT(LOC 2)(4) 커맨드에 후속하는 인스트럭션 라인이 위치(2)에서 실행되고 있음을 보여준다. 이 때, 실시간 시스템은 블록(5)의 시작에서 후속하는 인스트럭션들이 더 이상 위치(1)에서가 아니라 송출된 위치(2)에서 실행되어야 한다는 요건을 해석한다. 위치(1)로부터 위치(2)로의 화살표는 실시간 시스템이 애플리케이션(11.1)을 위치(2)로 이동시킬 수 있는 가장 늦은 가능성을 나타낸다. 오른쪽 박스 왼쪽의 수직 점선은 또한 애플리케이션(11.2)의 처리를 나타내며, 이후 애플리케이션(11.2)은 위치(2)에 위치되어 실행된다. 위치(2)의 애플리케이션(11.2)으로부터의 다른 RELEASE 커맨드(8)에 후속하는 블록(9)의 인스트럭션은 위치 종속적이지 않은데, 이것은 애플리케이션(11.2)이 위치(2) 이외의 다른 위치에서도 실행될 수 있음을 의미한다. 후속하는 송출 커맨드 ASSERT(LOC 3)(4)에 의해, 이제 애플리케이션(11.2)은 실시간 시스템에 의해 위치(3)로 이동되는데(위치(2)로부터 위치(3)로의 화살표로 도시됨), 여기서 블록(6)의 인스트럭션에 따라 애플리케이션(11.3)이 실행된다. 블록(6)은 송출된 위치(3)에서 실행되어야 하며, 이것은 ASSERT(LOC 3)(4)로 표시된다. 또한, ASSERT(LOC 1)(4)에 의해 송출된, 블록(7)을 포함하는 애플리케이션(11.3)은 송출된 위치(1)로 이동되어야 하고(위치(3)로부터 위치(1)로의 화살표로 도시됨) 송출된 위치에서 실행되어야 한다. 왼쪽 박스 하부에 도시된, 위치(1)의 후속하는 해제 커맨드 RELEASE(8)에 의해, 블록(1)으로 도시된 후속하는 인스트럭션에 의해 애플리케이션(11.1)의 실행이 해제되며, 식별된 위치에 제한되지 않는다. 여기서, 애플리케이션(11.1)은 다시 위치(1)에서 실행된다. 이상의 설명에서 '이동되어야 한다(has to be moved)'는 표현은 실시간 시스템이 애플리케이션을 이동시켜야 하는 시기에 있어 최후의 가능한 지점을 나타내는 것이다. 미리 이동이 가능하지만, 이전의 RELEASE 커맨드 전에는 안된다.
도 2에는 도 1의 보다 나은 이해를 돕기 위해 상이한 위치와 접속물들을 갖는 네트워크(20)의 개략도가 도시되어 있다. 박스들은 제각기 도 1의 위치들(1, 2, 3)에 대응하는 위치(1), 위치(2) 및 위치(3)을 나타낸다.
위치들(1, 2, 3)은 서로 접속되며, 점선으로 표시된 다른 접속물들을 가질 수 있다.
자기 설명 인스트럭션 코드를 갖는 두가지 특징적인 예가 이후에 다루어진다.
(실시예 1) 원격 DB 액세스
본 실시예, 즉, '원격 DB(데이터베이트) 액세스'는 개선된 코드 효율 및 융통성을 제공하는 실시간 환경의 동적 적응을 보여주며, 원격 데이터베이스 서버와 인터페이스하는 클라이언트 머신상의 애플리케이션과 관련된다. 통상의 클라이언트/서버 시스템에서, 클라이언트측은 로컬 클라이언트 머신상에 사용자 인터페이스를 구현하는 반면에, 서버측은 원격으로 데이터베이스와 함께 상주한다. 클라이언트는 다음과 같이 실행될 수 있다.
Print 'Name?'
Input user_name
Contact Server
Request server to verify user_name with regard to DB
if(server reports that user_name is already entered in DB)
terminate
else
Print 'Address?'
Input address
서버 코드(도시되지 않음)는 별도로 전개된다. 에이젼트 기반의 시스템은 애플리케이션이 단일의 실행 쓰레드(thread)로서 전개될 수 있게 함으로써 이를 개선한다. 이전의 실시예에서처럼 동일 함수를 갖는 에이젼트 구현은 다음과 같이실행될 수 있다.
Print 'Name?'
Input user_name
GO DB_server
Check user_name with regard to now local DB
if(user_name is already entered in DB)
terminate
else
GO client_machine
Print 'Address?'
Input address
클라이언트/서버 방법 및 에이젼트 기반 접근법 모두에서, 데이터베이스에 관련하여 사용자의 명칭 체크가 수행되어야 하는지가 선험적으로 결정되어야 한다. 클라이언트의 네트워킹 환경이 데이터베이스 서버와의 통신이 일시적으로 이용불가능할 수 있는 것과 같은 경우, 검증 프로세스를 생략하거나 및/또는 어드레스 데이터를 2회 입력하는 불편을 감수하는 것이 유리할 수 있다. 동작을 동적으로 조정하기 위해 클라이언트/서버 코드를 만드는 것은 통신 및 네트워킹 서브시스템에 대한 저레벨 액세스를 요구하며, 이것을 애플리케이션 코드에 포함시키는 것이 번거로울 뿐만 아니라, 애플리케이션의 이동성 및 유지보수성을 저해한다. GO 커맨드는 너무 엄격하고 융통성이 없어서 어떤 적응성도 허용하지 않는다.
원시함수 'ASSERT' 및 'RELEASE'를 이용하여, 실시간 시스템이 환경에 적응할 수 있게 함으로써 작업이 해결된다. 예컨대, 다음과 같다.
LOCATION clientloc = new LOCATION('Client machine');
LOCATION dbloc = new LOCATION('DB machine');
clientloc.ASSERT();
Print 'Name?'
Input user_name;
clientloc.RELEASE();
if(dbloc.PREFERRED() = = GRANTED)
Check user_name with regard to DB
dbloc.RELEASE();
IF(user_name is already entered in DB)
terminate
clientloc.ASSERT();
Print 'Address?'
Input address
clientloc.RELEASE();
인스트럭션이 그들의 전체 구문으로 제공되므로, 여기서 코드는 이전의 실시예에서보다 더 길게 나타난다. 그러나, 코드가 클라이언트의 주어진 현 접속성을성취할 수 있는 경우, 실시간 시스템은 자유로이 코드를 클라이언트 머신으로부터 바람직한 데이터베이스 위치로 재위치지정할 수 있다.
(실시예 2) 분산 CD 플레이어
다음 실시예인 '분산 CD 플레이어'는, 약간의 부하만이 있거나 애플리케이션의 작업에 특히 적합한 특수 하드웨어를 갖는 머신에서 복잡한 연산을 계산적으로 수행하면서 요구된 서비스 또는 요구된 위치에 대한 액세스를 허용하도록 단일 애플리케이션의 실행 위치를 동적으로 재할당할 수 있는 실시간 시스템의 능력을 보여준다. 이하의 애플리케이션은 음악-CD 플레이어를 구현한다.
[20] LOCATION cd = new LOCATION(SERVICE, 'CLASSIC CD MOZART');
[21] cd.ASSERT();
//read soundtrack
[22] cd.RELEASE();
//decode soundtrack
[23] LOCATION loc = LOCATION(POSITION 'my machine');
[24] loc.ASSERT();
//play soundtrack
[25] loc.RELEASE();
본 실시예에서, 애플리케이션은 실시간 시스템이 서비스로서 코드 라인 [20]에서 요구된 CD와 같은 특정 CD를 기꺼이 제공하는 가용 서버를 위치지정할 것을요구한다. 한정된 위치는 코드 라인 [21]에서 ASSERT에 의해 송출된다. 일단 실시간 시스템이 제각기의 위치를 액세스하면, CD의 사운드트랙을 판독하는 다음 인스트럭션이 실행된다. 이러한 처리가 완료된 후, 애플리케이션은 서비스가 더 이상 요구되지 않음을 실시간 시스템에게 표시한다. 그리고 나서, 애플리케이션은 사운드트랙 디코딩, 즉, 계산적으로 고가의 작업을 시작한다. 애플리케이션이 요구하지 않았더라도, 실시간 시스템은 이제 자유로이 애플리케이션을 다른 위치(호스트)로 이동시켜, 작업하기로 결정하는 때면 언제든지 거기서 실행을 계속한다. 코드 라인 [22]의 RELEASE 원시함수는 특정 위치가 요구되지 않음을 표시하였으나, 이것이 코드가 이동되어야 하는 때 또는 경우를 표시하지는 않으며, 단지 재할당이 일어날 '수도(may)' 있는 '가장 이른 시기(earliest time)'를 표시한다. 일단 디코딩이 완료되면, 애플리케이션은 코드 라인 [23]에 기술된, 본 실시예의 경우 'my machine'과 같은 특정 머신에서 사운드트랙을 재생시키고자 함을 표시하며, 실시간 시스템은 이러한 요구를 승인해 달라는 요청을 받는다. 코드 라인 [24]의 ASSERT 원시함수는 코드가 표시된 머신에 재할당되어야 하는 때를 표시하지는 않고, 단지 재할당이 행해져'야 하는(must)' '가장 늦은 시기(latest time)'만을 표시한다. 코드 라인 [25]의 RELEASE 원시함수에 의해 위치 제한이 해제되고 있다.

Claims (10)

  1. 네트워크(20)내의 상이한 위치들(1, 2, 3)에서 실행가능한 컴퓨터 프로세스용 인스트럭션으로 이루어지는 분산 애플리케이션(a distributed applicaion)(11.1, 11.2, 11.3)을 상기 네트워크(20)에서 실행시키기 위한 컴퓨터화된 방법(a computerized method)에 있어서,
    상기 인스트럭션은
    ① 상기 상이한 위치들(1, 2, 3)중 식별된 위치(2, 3, 1)를 포인팅하여 후속하는 인스트럭션들(5, 6, 7)이 상기 식별된 위치(2, 3, 1)에서 실행되게 하는 송출-커맨드(an assert-command)(4)- 및/또는,
    ② 후속하는 인스트럭션들(9, 10)이 상기 위치들(1, 2, 3)중 어느것에도 제한되지 않게 하는 해제-커맨드(a release-command)(8)를 포함하는
    네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  2. 제 1 항에 있어서,
    상기 위치(1, 2, 3)는 상기 위치(1, 2, 3)에 대해 그의 한정된 위치나 상기 위치(1, 2, 3)에서의 실행을 위해 요구된 기능(a functionality), 또는, 상기 위치(1, 2, 3)에서의 상기 실행에 가장 바람직하도록 선택된 값을 갖는 파라미터(a parameter)를 포함하는 위치 식별자를 제공하거나 상기 위치 식별자를 발견할 어드레스를 제공함으로써 식별되는 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 송출 커맨드(4)는 그의 후속하는 인스트럭션들(5, 6, 7)이 식별된 위치(2, 3, 1)에서 실행되어야 하는 경우에 사용되는 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  4. 제 1 항 내지 제 3 항중 어느 한 항에 있어서,
    상기 송출 커맨드(4)는, 실행을 위한 위치(1, 2, 3)가 이용불가능한 경우에, 애플리케이션이 계속되지 않고 제 1 송출 커맨드 유형(ASSERT)을 실현하거나, 보류되어 제 2 송출 커맨드 유형(INSIST)을 실현하거나, 이전의 사용된 위치에서 후속하는 인스트럭션을 실행시킴으로써 계속되어 제 3 송출 커맨드 유형(PREFERRED)을 실현하는 것인 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  5. 제 4 항에 있어서,
    상기 다수의 송출 커맨드 유형들은 애플리케이션(11.1, 11.2, 11.3)에서 사용되는 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  6. 제 4 항 또는 제 5 항에 있어서,
    상기 송출 커맨드(4)는 상기 상이한 위치들(1, 2, 3)중 적어도 하나의 다른 식별된 위치(2, 3, 1)를 포인팅하며, 상기 포인팅된 식별된 위치들(2, 3, 1)중 어느 하나는 임의로 선택가능하거나 상기 식별된 위치들(2, 3, 1)은 사전결정된 우선 순위 순서로 배열되는 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  7. 제 1 항 내지 제 6 항중 어느 한 항에 있어서,
    상기 송출 커맨드(4)의 경우에 실시간 시스템은 애플리케이션(11.1, 11.2, 11.3) 또는 그의 일부를 식별된 위치(2, 3, 1)로 이동시키거나 및/또는 해제 커맨드(8)의 경우에 상기 애플리케이션(11.1, 11.2, 11.3)이 이동될 위치(1, 2, 3)의 선정을 적어도 하나의 시스템-종속 및/또는 상태-종속 조건으로 하고, 상기 식별된 위치(2, 3, 1) 또는 선택된 위치(2, 3, 1)에서의 상기 애플리케이션(11.1, 11.2, 11.3)을 가지고 상기 인스트럭션들을 실행시키는 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  8. 제 1 항 내지 제 7 항중 어느 한 항에 있어서,
    상기 인스트럭션들(4∼10)은 자바 기반(Java-based)인 네트워크에서 분산 애플리케이션을 실행시키는 컴퓨터화된 방법.
  9. 네트워크(20)내의 상이한 위치(1, 2, 3)에서 실행가능한 컴퓨터 프로세스용 인스트럭션들을 갖는 분산 애플리케이션(11.1, 11.2, 11.3)을 상기 네트워크(20)에서 실행시키기 위한 시스템에 있어서,
    상기 각 위치는
    ① 상기 인스트럭션을 실행하는 프로세서와,
    ② 상기 프로세서에 결합되어 상기 인스트럭션을 저장하는 메모리 유닛과,
    ③ 상기 프로세서와 상기 네트워크간의 인터페이스와,
    ④ 상기 인스트럭션의 실행을 관리하는 실시간 시스템―상기 인스트럭션은 ㉮ 상기 상이한 위치들(1, 2, 3)중 식별된 위치(2, 3, 1)를 포인팅하여 후속하는 인스트럭션들(5, 6, 7)이 상기 식별된 위치(2, 3, 1)에서 실행되게 하는 송출 커맨드(4) 및/또는 ㉯ 후속하는 인스트럭션들(9, 10)이 상기 위치들(1, 2, 3)중 어느 것에도 제한되지 않게 하는 해제 커맨드(8)를 포함함―을 포함하는
    네트워크에서 분산 애플리케이션을 실행시키는 시스템.
  10. 네트워크(20)내의 상이한 위치(1, 2, 3)에서 실행가능한 컴퓨터 프로세스용 인스트럭션들을 갖는 분산 애플리케이션(11.1, 11.2, 11.3)을 상기 네트워크(20)에서 실행시키는 컴퓨터화된 방법으로 인코딩된 컴퓨터에 의해 판독가능한 매체에 있어서,
    상기 인스트럭션은
    ① 상기 상이한 위치들(1, 2, 3)중 식별된 위치(2, 3, 1)를 포인팅하여 후속하는 인스트럭션들(5, 6, 7)이 상기 식별된 위치(2, 3, 1)에서 실행되게 하는 송출 커맨드(4)와,
    ② 후속하는 인스트럭션들(9, 10)의 실행이 상기 위치들(1, 2, 3)중 어느 것에도 제한되지 않게 하는 해제 커맨드(8)를 포함하는
    컴퓨터에 의해 판독가능한 매체.
KR1020007003507A 1998-08-01 1999-07-29 분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법 KR100331519B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP98114506 1998-08-01
EP98114506.3 1998-08-01
PCT/IB1999/001347 WO2000008557A1 (en) 1998-08-01 1999-07-29 Computerized method and system for implementing distributed applications

Publications (2)

Publication Number Publication Date
KR20010030849A KR20010030849A (ko) 2001-04-16
KR100331519B1 true KR100331519B1 (ko) 2002-04-06

Family

ID=8232393

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007003507A KR100331519B1 (ko) 1998-08-01 1999-07-29 분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법

Country Status (9)

Country Link
US (1) US6694370B1 (ko)
EP (1) EP1019815B1 (ko)
JP (1) JP3777092B2 (ko)
KR (1) KR100331519B1 (ko)
CN (1) CN1115627C (ko)
AT (1) ATE450003T1 (ko)
AU (1) AU4793999A (ko)
DE (1) DE69941670D1 (ko)
WO (1) WO2000008557A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099663B2 (en) 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
US7529822B2 (en) * 2002-05-31 2009-05-05 Symantec Operating Corporation Business continuation policy for server consolidation environment
US7900206B1 (en) 2004-03-31 2011-03-01 Symantec Operating Corporation Information technology process workflow for data centers
US8620259B2 (en) 2005-06-29 2013-12-31 Tti Inventions C Llc Model-driven service creation and management
US8326990B1 (en) 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
CN101589367A (zh) * 2007-09-11 2009-11-25 夏寿民 复合断言和动态系统的系统定义和gui
RU2554509C2 (ru) 2010-10-06 2015-06-27 Александр Яковлевич Богданов Система и способ распределенных вычислений
US9641608B2 (en) * 2014-12-11 2017-05-02 Sap Se Network relocation of software features through data flow analysis

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5062037A (en) * 1988-10-24 1991-10-29 Ibm Corp. Method to provide concurrent execution of distributed application programs by a host computer and an intelligent work station on an sna network
JPH06314262A (ja) * 1993-04-28 1994-11-08 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム
JPH06348666A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd 計算機システムにおけるプログラム実行負荷分散方法
JPH08249290A (ja) * 1995-03-10 1996-09-27 Hitachi Ltd 分散システム
JPH1027093A (ja) * 1996-07-12 1998-01-27 Oki Electric Ind Co Ltd ネットワークを介したプログラム配布方法
JPH10207724A (ja) * 1997-01-17 1998-08-07 Digital Vision Lab:Kk 分散アプリケーション実行システム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US6148327A (en) * 1996-11-05 2000-11-14 Lockheed Martin Corp. Mobile agent docking arrangement for enhancing agent capabilities
US6065039A (en) * 1996-11-14 2000-05-16 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Dynamic synchronous collaboration framework for mobile agents
EP0938798A4 (en) * 1996-11-14 2003-02-12 Mitsubishi Electric Corp DYNAMIC, SYNCHRONOUS COOPERATION FRAMEWORK FOR MOBILE AGENTS
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US6172986B1 (en) * 1997-05-13 2001-01-09 Hitachi, Ltd. Mobile node, mobile agent and network system
US6009456A (en) * 1997-07-30 1999-12-28 Lockheed Martin Corp. Information exchange by intelligent mobile agents in a network
US6219696B1 (en) * 1997-08-01 2001-04-17 Siemens Corporate Research, Inc. System for providing targeted internet information to mobile agents
JP3606355B2 (ja) * 1998-04-13 2005-01-05 オムロン株式会社 エージェントシステム及び通信方法
US6460070B1 (en) * 1998-06-03 2002-10-01 International Business Machines Corporation Mobile agents for fault diagnosis and correction in a distributed computer environment
US6144989A (en) * 1998-06-15 2000-11-07 Dejima, Inc. Adaptive agent-oriented software architecture

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5062037A (en) * 1988-10-24 1991-10-29 Ibm Corp. Method to provide concurrent execution of distributed application programs by a host computer and an intelligent work station on an sna network
JPH06314262A (ja) * 1993-04-28 1994-11-08 Nippon Telegr & Teleph Corp <Ntt> 分散処理システム
JPH06348666A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd 計算機システムにおけるプログラム実行負荷分散方法
JPH08249290A (ja) * 1995-03-10 1996-09-27 Hitachi Ltd 分散システム
JPH1027093A (ja) * 1996-07-12 1998-01-27 Oki Electric Ind Co Ltd ネットワークを介したプログラム配布方法
JPH10207724A (ja) * 1997-01-17 1998-08-07 Digital Vision Lab:Kk 分散アプリケーション実行システム

Also Published As

Publication number Publication date
WO2000008557A1 (en) 2000-02-17
JP2002522823A (ja) 2002-07-23
EP1019815B1 (en) 2009-11-25
ATE450003T1 (de) 2009-12-15
US6694370B1 (en) 2004-02-17
EP1019815A1 (en) 2000-07-19
AU4793999A (en) 2000-02-28
DE69941670D1 (de) 2010-01-07
JP3777092B2 (ja) 2006-05-24
CN1274442A (zh) 2000-11-22
WO2000008557A8 (en) 2000-05-04
CN1115627C (zh) 2003-07-23
KR20010030849A (ko) 2001-04-16

Similar Documents

Publication Publication Date Title
JP4690437B2 (ja) ネットワークアプリケーションにおける通信方法、通信装置及びそのためのプログラム
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
US6026404A (en) Method and system for executing and operation in a distributed environment
WO1993023811A2 (en) Open architecture interface storage controller
US7421707B2 (en) System and method for inducing asynchronous behavioral changes in a managed application process
KR100331519B1 (ko) 분산 애플리케이션을 실행시키는 시스템 및 컴퓨터화된 방법
JP2002358167A5 (ko)
KR20010080469A (ko) 작업-병렬 프로세서
KR100834977B1 (ko) 임베디드 에이전트 프레임워크 및 이를 이용한 유비쿼터스서비스 제공 방법
US6314462B1 (en) Sub-entry point interface architecture for change management in a computer network
CN115827285A (zh) 一种跨平台通信方法、系统、装置、设备及介质
JPH06348512A (ja) 資源管理コンピュータ・システム
JP3169624B2 (ja) プロセッサ間通信方法およびそのための並列プロセッサ
EP0509946A2 (en) Apparatus and method for implementing a distributed program stack
JP2001067325A (ja) 分散オブジェクト管理方法およびシステム
CA2001298C (en) Input and output processing system for a virtual computer
KR19980086588A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
JP3517574B2 (ja) プリンタおよびプリントシステムおよびジョブ処理方法およびコンピュータが読取り可能なプログラムを格納した記憶媒体
KR20000061658A (ko) 스레드를 이용한 부모 프로세스와 자식 프로세스의 통합 방법
Meumann et al. MINIX for a Distributed Database System
JPH11237996A (ja) 計算機間のデータ連携方法
JP2001236334A (ja) プロセッサ間通信方法およびそのための並列プロセッサ
JPH02195462A (ja) 情報処理端末器
KR19980086589A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
KR19980086587A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴

Legal Events

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

Payment date: 20120229

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee