KR20010041297A - Method and apparatus for the suspension and continuation of remote processes - Google Patents

Method and apparatus for the suspension and continuation of remote processes Download PDF

Info

Publication number
KR20010041297A
KR20010041297A KR1020007009397A KR20007009397A KR20010041297A KR 20010041297 A KR20010041297 A KR 20010041297A KR 1020007009397 A KR1020007009397 A KR 1020007009397A KR 20007009397 A KR20007009397 A KR 20007009397A KR 20010041297 A KR20010041297 A KR 20010041297A
Authority
KR
South Korea
Prior art keywords
remote method
remote
resources
server system
client
Prior art date
Application number
KR1020007009397A
Other languages
Korean (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 US09/044,917 external-priority patent/US6237024B1/en
Application filed by 케네쓰 올센, 선 마이크로시스템즈, 인코포레이티드 filed Critical 케네쓰 올센
Publication of KR20010041297A publication Critical patent/KR20010041297A/en

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/465Distributed object oriented systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/433Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
    • 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/468Specific access rights for resources, e.g. using capability register
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

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

Abstract

블럭화된 원격 메소드를 인에이블시켜 스레드 및 다른 자원을 서버 시스템 상의 원격 메소드에 양도하기 위한 방법 및 장치가 제공된다. 분산 컴퓨팅 환경에서, 원격 메소드는 수많은 네트워크 자원이지만, 다른 프로세스로부터의 대기 동작과 같은 동작을 대기하면서 차단되어 있다. 충분한 원격 메소드가 차단되면, 스레드 및 다른 네트워크 자원이 고갈될 수 있다. 서버 서비스를 요구하는 클라이언트 시스템은 보다 느린 응답 시간을 겪을 수 있다. 이 방법 및 시스템은 원격 메소드가 메소드들이 차단되어 있는 동안 다른 메소드들이 사용할 수 있도록, 스레드와 같은 네트워크 자원을 양도하는 기술을 제공한다. 일단 원격 메소드가 차단되게 하는 조건이 해제되면, 원격 메소드는 실행을 계속한다. 이 기술은 큰 용량의 클라이언트-서버 트랜잭션 시스템이 분산 컴퓨팅 환경에서 보다 효율적으로 스레드 및 다른 자원을 이용하는 것을 가능하게 한다.A method and apparatus are provided for enabling blocked remote methods to transfer threads and other resources to remote methods on a server system. In a distributed computing environment, remote methods are numerous network resources, but are blocked while waiting for operations such as waiting from other processes. If enough remote methods are blocked, threads and other network resources can be exhausted. Client systems that require server services may experience slower response times. This method and system provides a technique for relinquishing network resources such as threads so that remote methods can use other methods while the methods are blocked. Once the condition that causes the remote method to be blocked is released, the remote method continues executing. This technology enables large client-server transaction systems to utilize threads and other resources more efficiently in a distributed computing environment.

Description

원격 프로세스의 중단과 연속 방법 및 장치{METHOD AND APPARATUS FOR THE SUSPENSION AND CONTINUATION OF REMOTE PROCESSES}METHODE AND APPARATUS FOR THE SUSPENSION AND CONTINUATION OF REMOTE PROCESSES

분산 컴퓨팅 페러다임이 점차 많이 사용됨에 따라, 서버 시스템 상의 자원이 클라이언트 시스템에 의한 요청을 충족시키는데 이용가능하게 되는 것이 점차 중요해지고 있다. 클라이언트로부터의 각각의 요청은 일반적으로, 하나 이상의 스레드를 포함하는 자원을 처리하는 서버 프로세스가 이 요청을 처리하게 한다. 종종 라이트웨이트(lightweight) 프로세스라고 하는 스레드는 개별적인 제어 흐름을 갖는 프로세스 내의 별도의 명령어 시퀀스이다. 스레드는 특정 요청을 충족시키는데 필요함에 따라 시스템으로터의 자원을 수행하여야만 한다. 만일 메모리와 데이터와 같은 자원이 이용가능하면, 다수의 작업을 충족시키기 위해 다수의 스레드가 병렬로 실행될 수 있다.As the distributed computing paradigm is increasingly used, it is becoming increasingly important that resources on server systems become available to satisfy requests by client systems. Each request from a client typically causes a server process that handles a resource that includes one or more threads to process this request. A thread, often called a lightweight process, is a separate sequence of instructions within a process with separate control flows. A thread must run resources from the system as needed to satisfy a particular request. If resources such as memory and data are available, multiple threads can run in parallel to satisfy multiple tasks.

스레드들이 스레드의 우선순위, 실행 상태(즉, 슬리프(sleep), 얼라이브(alive), 데드(dead), 런닝) 및 다양한 스레드 간의 종속관계에 기초하여, 스레드의 병렬 실행을 조화시키는 프로세스에 의해 스레드 스케쥴러가 사용될 수 있다. 단일 프로세스 시스템 상의 스레드 스케쥴러는, 스레드가 실제로 병렬로 실행하는 환영을 제공하기 위해, 많은 스레드들 간에 프로세서의 컴퓨팅 파워를 분산시킨다. 선입 선서비스(first-come-first-served), 가장 짤은 스레드가 우선(shortest-thread-first), 우선순위 스케쥴링, 및 라운드 로빈과 같은 선점 스케쥴링 기법을 포함하는, 사용될 수 있는 서로 다른 많은 스케쥴링 기법이 존재한다. 특정 구현에 의해 필요에 따라, 이들 기법을 결합하는 하이브리드 스케쥴링 기법이 또한 사용될 수 있다. 다중프로세서 시스템에서서 스케쥴러는 서로 다른 스레드를 서로 다른 프로세스와 연관하여, 스레드를 병렬로 실행하고, 부가된 컴퓨팅 파워를 이용한다.By a process that coordinates the parallel execution of threads based on the thread's priority, execution state (ie sleep, alive, dead, running) and dependencies between the various threads Thread schedulers can be used. The thread scheduler on a single process system distributes the processor's computing power among many threads to provide the illusion that threads actually execute in parallel. Many different scheduling methods that can be used, including first-come-first-served, shortest-thread-first, priority scheduling, and preemptive scheduling techniques such as round robin. Techniques exist. Hybrid scheduling techniques may also be used that combine these techniques as needed by a particular implementation. In a multiprocessor system, the scheduler associates different threads with different processes, executes the threads in parallel, and uses the added computing power.

불행하게도, 만일 이들 자원을 바로 이용할 수 었으면, 스레드는 실행을 계속할 수 없고, 추가적인 처리로부터 차단된다. 실행의 이와 같이 차단된 스레드는 자신의 스레드에 연관된 데이터 및 제어 구조는 물론 메모리와 같은 서버 자원상에 보유되어 있다. 궁극적으로, 서버는 스레드가 고갈되어, 들어오는 클라이언트 요청을 할당할 수 있다. 들어오는 클라이언트 요청은 재사용될 수 있고, 서버는 분산 컴퓨팅 환경으로부터 효과적으로 제거될 것이다. 이 차단 시나리오는 또한 들어오는 호출을 거절하는 서비스에 연관된 오버헤드로 인해 기존의 요청을 서비스하는 서버 능력을 감소시킬 수 있다.Unfortunately, if these resources were immediately available, the thread could not continue execution and would be blocked from further processing. This blocked thread of execution is held on server resources such as memory as well as the data and control structures associated with its thread. Ultimately, the server can run out of threads and allocate incoming client requests. Incoming client requests can be reused and the server will be effectively removed from the distributed computing environment. This blocking scenario can also reduce the server's ability to service existing requests due to the overhead associated with the service rejecting incoming calls.

현존의 분산 컴퓨팅 시스템은, 스레드를 할당하는 이와 같은 문제점을 시정하도록 의도되어 있지 않다. 이들 시스템은, 원격 서버 프로세스가 자원 또는 특정 이벤트를 대기하면서 차단될 때 스레드 및 연관된 자원을 해제하지 못한다. 결국, 트랜잭션이 중점을 두고있는 분산 컴퓨팅 환경은 상술한 차단 시나리오 문제가 있을 수 있다. 예를 들어, 서버 프로세스가 인터넷을 통해 다수의 클라이언트로부터 파일을 다운로드하는 다수의 요청을 수신한다고 가정한다. 서버 프로세스는 서버 운영 체제로부터 다수의 스레드를 수신하여, 병렬로 요청을 처리하지만, 요청된 파일은 다른 프로세서에 의해 록(locked)되어 이용할 수 없다. 종래의 시스템은, 각각의 스레드에 대한 부수적인 처리를 차단하고, 록되지 않을 파일을 대기할 것이다. 서버 상의 스레드는 다른 프로세스가 스레드 자원을 이용하여 다른 작업을 처리할 수 있을 지라도 아이들로 남게 될 것이다. 서버 시스템 상의 다수의 스레드가 고갈되면, 서버 프로세스는 부수적인 클라이언트에 대한 서비스를 부인할 것이다. 궁극적으로, 서버 시스템은 일반적인 작을 처리하는 어려움을 가지게 될 것이다.Existing distributed computing systems are not intended to correct this problem of allocating threads. These systems do not release threads and associated resources when the remote server process is blocked waiting for resources or specific events. As a result, a distributed computing environment in which transactions are the focus may have the blocking scenario problem described above. For example, suppose a server process receives a number of requests to download a file from a number of clients over the Internet. The server process receives multiple threads from the server operating system and processes the requests in parallel, but the requested file is locked by another processor and cannot be used. The conventional system would block the secondary processing for each thread and wait for the file to not be locked. Threads on the server will remain idle even if other processes can use the thread resources to handle other tasks. If a large number of threads on the server system are exhausted, the server process will deny service to incidental clients. Ultimately, server systems will have difficulty handling common tasks.

많은 분산 컴퓨팅 시스템 상에서, 스레드 및 다른 자원을 할당하지 못하는 무능력은 전체적인 프로세싱 수율에 부정적인 영향을 미칠 것이다. 스레드 및 다른 자원이 서버 시스템 상에 효율적으로 위치되어 있지 않지만 분산 컴퓨팅 네트워크에서 이용가능한 고속 대역조차도 사용되지 않을 것이다.On many distributed computing systems, the inability to allocate threads and other resources will negatively impact overall processing yield. Although threads and other resources are not efficiently located on server systems, even the high speed bands available in distributed computing networks will not be used.

종래의 시스템에서 발견되는 상기 문제점에 기초하여, 분산 컴퓨팅 환경에 사용되는 스레드 및 다른 자원의 할당을 개선하는 것이 바람직하다.Based on the above problems found in conventional systems, it is desirable to improve the allocation of threads and other resources used in a distributed computing environment.

본 발명은 전형적인 분산 컴퓨팅 시스템은, 서버 및 많은 서버의 컴퓨팅 파워가 네트워크를 통해 서로 다른 많은 클라이언트에 이용가능하게 한다. 전형적으로, 클라이언트 머신은 원격 프로시져 호출(RPC) 시스템을 사용하여, 서버 머신 상의 프로세싱 자격을 액세스한다. RPC 시스템은 원격 머신에 대한 요청을 처리하고, 소정의 결과를 요청하는 클라이언트에 반환한다. 요청을 송신하고 그 결과를 반환하는데 사용되는 네트워크는 근거리 네트워크(LAN), 광대역 네트워크(WAN)일 수 있으며, 또한 인터넷을 포함할 수 있다. 인터넷 상의 첨단 분산 컴퓨팅 어플리케이션은 이 클라이언트-서버 구성을 이용하여 전세계에 걸쳐 커머스(e-commerce), 텔레컴퓨팅, 및 인터렉티브 엔터테인먼트 서비스를 제공한다.The present invention provides a typical distributed computing system in which the computing power of a server and many servers is made available to many different clients over a network. Typically, a client machine uses a remote procedure call (RPC) system to access processing credentials on a server machine. The RPC system processes the request for the remote machine and returns the desired result to the requesting client. The network used to send the request and return the results may be a local area network (LAN), a broadband network (WAN), and may also include the Internet. Advanced distributed computing applications on the Internet use this client-server configuration to provide e-commerce, telecomputing, and interactive entertainment services around the world.

본 발명에 일체화되고 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명에 따른 몇몇 실시예를 예시하며, 상세한 설명과 함께 본 발명의 주체를 설명하는데 도움이 된다.The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate some embodiments in accordance with the invention, and together with the description serve to explain the subject matter of the invention.

도 1은 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 네트워크도.1 is a network diagram suitable for use in the method and system according to the present invention.

도 2는 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 컴퓨터 시스템의 블럭도.2 is a block diagram of a computer system suitable for use in the method and system according to the present invention.

도 3은 본 발명에 따른 방법 및 시스템에 사용하는데 적합한 클라이언트-서버 네트워킹 환경의 블럭도.3 is a block diagram of a client-server networking environment suitable for use in the method and system according to the present invention.

도 4는 본 발명의 방법과 시스템에 따른 원격 메소드 호출 처리를 중단하고 계속하는데 사용되는 서브시스템의 블럭도.4 is a block diagram of a subsystem used to abort and continue remote method call processing in accordance with the method and system of the present invention.

도 5는 본 발명의 방법과 시스템에 따른 원격 메소드 호출 처리를 중단하는데 수행되는 단계들의 순서도.5 is a flow chart of the steps performed to abort the remote method call processing in accordance with the method and system of the present invention.

도 6은 본 발명의 방법과 시스템에 따른 원격 메소드 호출을 중단시키는데 수행되는 단계들의 순서도.6 is a flow chart of the steps performed to abort a remote method call in accordance with the method and system of the present invention.

도 7은 본 발명의 방법과 시스템에 따른 원격 메소드 호출을 계속하는데 수행되는 단계들의 순서도.7 is a flow chart of the steps performed to continue a remote method call in accordance with the method and system of the present invention.

본 발명에 따르면, 본 발명에 예시되고 광범위하게 설명된 바와 같이, 원격 메소드를 인에이블시켜 프로세싱을 중단하고 자원을 서버 시스템에 양도하기 위한 방법 및 장치는 클라이언트 시스템 상의 원격 메소드 호출로부터의 요청을 수신하는 것을 포함한다. 한 시스템 레벨 종류의 자원은 스레드이다. 이 방법은, 원격 메소드를 처리하는데 필요한 임의의 일반적인 자원이 현재 이용가능하지 않는지의 여부를 판정한다. 일반적인 자원은 메모리, 디스크 기억공간, 데이터 또는 시스템 자원이 의존할 수 있는 임의의 자원일 수 있다. 원격 메소드가 이용가능하지 않은 일반적인 자원에 의존할 때, 원격 메소드는 부수적인 프로세싱으로부터 중단되고, 시스템 자원이 서버 시스템에 양도된다.According to the present invention, as illustrated and broadly described herein, a method and apparatus for enabling a remote method to stop processing and transfer resources to a server system receives a request from a remote method call on a client system. It involves doing. One system-level kind of resource is a thread. This method determines whether any general resources needed to process the remote method are currently not available. A general resource can be any resource on which memory, disk storage, data or system resources may depend. When a remote method relies on general resources that are not available, the remote method is suspended from incidental processing and system resources are transferred to the server system.

본 발명에 따른 방법은, 이전에 중단된 원격 메소드를 인에이블시켜, 서버 시스템에 대한 처리를 계속하게 하며, 클라이언트 어플리케이션에 대한 결과를 발생하게 한다. 이 방법은, 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하는 것을 포함한다. 시스템 자원 및 일반적인 자원은, 원격 메소드를 계속 처리하도록 준비된 원격 메소드에 할당된다. 원격 메소드는 결합된 할당된 자원을 이용하여, 실행을 계속하고 결과를 발생한다. 이들 결과는, 원격 메소드 호출(RMI)과 같은 원격 프로시져 호출(RPC) 시스템을 사용하여, 서버 시스템으로부터 클라이언트 시스템 상의 클라이언트 어플리케이션으로 송신된다.The method according to the invention enables previously interrupted remote methods to continue processing for the server system and to generate results for the client application. The method includes receiving an indication that a continuation event associated with a suspended remote method has occurred. System resources and general resources are allocated to remote methods that are prepared to continue processing remote methods. The remote method uses the allocated allocated resources to continue execution and produce the result. These results are sent from the server system to the client application on the client system using a remote procedure call (RPC) system such as remote method call (RMI).

지금부터 본 발명의 실시예를 첨부 도면을 참조하여 상세히 설명할 것이다. 도면 및 상세한 설명 전반에 걸쳐 동일하거나 또는 유사한 부분을 지칭하기 위해 동일한 참조번호를 사용할 것이다.Embodiments of the present invention will now be described in detail with reference to the accompanying drawings. Like reference numerals will be used throughout the drawings and the description to refer to the same or like parts.

본 발명에 따른 시스템은 컴퓨터 시스템이 클라이언트 또는 서버 기능을 주관할 수 있다고 가정한다. 컴퓨터 시스템에서 각각의 컴퓨터가 가정하는 이들 역할은 클라이언트와 서버 간에 이루어지는 특정 호출에 따른다. 예를 들어, 클라이언트 프로세스는 전형적으로 원격 머신에 위치한 서버 프로세스에 의해 발생된 서비스를 요청한다. 역으로, 서버 프로세스는 클라이언트 요청을 수신하고 이를 서비스하는 머신에 위치된다. 따라서, 동일한 컴퓨터 시스템은 서비스를 요청할 때에는 클라이언트로서의 역할을 하고, 서비스에 대한 요청을 충족시킬 때에는 서버로서의 역할을 할 수 있다.The system according to the invention assumes that a computer system can manage client or server functions. These roles assumed by each computer in the computer system depend on the particular call made between the client and server. For example, client processes typically request services generated by server processes located on remote machines. Conversely, the server process is located on the machine that receives the client request and services it. Thus, the same computer system can act as a client when requesting a service and as a server when satisfying a request for a service.

본 발명에 따른 시스템은, 종래 기술의 단점을 시정하고, 원격 프로세스의 중단과 연속을 위한 방법 및 장치를 제공한다. 과거에, 원격 프로시져 호출(RPC) 시스템은, 원격 프로세스가 발생할 이벤트 또는 해제될 자원을 대기하면서 차단되어 있는 동안에는 원격 프로세스가 자원을 해제하도록 인에이블시키지 않았다. 이 기술은 클라이언트 프로세스와 서버 프로세스 간의 접속이 활성으로 유지되게 하지만, 스레드, 메모리 및 보조기억 장치와 같은 중요한 자원을 아이들로 유지하였다. 대조적으로, 본 발명에 따른 시스템은 부수적인 처리로부터 차단된 원격 서버 프로세스가 클라이언트 및 서버 시스템 간의 접속을 드롭하지 않으면서 스레드 및 다른 자원을 양도하는 것을 가능하게 한다. 이와 같은 신규한 기술은, 원격 프로세스가 차단되어 있을 때에도 다른 프로세스가 서버 자원을 이용하는 것을 허용한다. 특히, 이는 원격 서버 프로세스가 클라이언트가 시스템에 액세스하는 것을 부인하는 것을 방지한다. 결국, 본 발명의 실시예는 스레드 및 다른 자원을 보다 효율적으로 사용함으로써, 분산 컴퓨팅 시스템의 효과적인 수율을 증가시킨다.The system according to the invention corrects the disadvantages of the prior art and provides a method and apparatus for interruption and continuation of a remote process. In the past, remote procedure call (RPC) systems did not enable remote processes to release resources while they were blocked waiting for events to occur or resources to be released. This technique keeps the connection between the client process and the server process active, but keeps critical resources such as threads, memory, and auxiliary memory idle. In contrast, the system according to the present invention enables a remote server process that is blocked from incidental processing to transfer threads and other resources without dropping the connection between the client and the server system. This new technology allows other processes to use server resources even when the remote process is blocked. In particular, this prevents remote server processes from denying clients access to the system. As a result, embodiments of the present invention increase the effective yield of distributed computing systems by using threads and other resources more efficiently.

부수적으로, 본 발명에 따른 시스템은 또한 기존의 클라이언트-서버 시스템 상의 클라이언트와 호환할 수 있다는 점에서 장점이 된다. 이는 특히 인터넷과 같은 이질적인 네트워크 컴퓨팅 환경에서 중요하다. 서버가 자원을 보다 효율적으로 할당하고 회수하도로 수정되기 때문에, 본 발명은 클라이언트 시스템의 설계와 동작에 영향을 미치지 않는다. 따라서, 클라이언트는 본 발명에 따라 설계된 시스템과 작동하게 하는 수정을 필요로 하지 않을 것이다.Incidentally, the system according to the invention is also advantageous in that it is compatible with clients on existing client-server systems. This is particularly important in heterogeneous network computing environments such as the Internet. Since the server is modified to allocate and retrieve resources more efficiently, the present invention does not affect the design and operation of the client system. Thus, the client will not need modifications to work with the system designed according to the present invention.

분산 시스템의 개요Overview of Distributed Systems

본 발명에 따른 방법 및 시스템은 하드웨어와 소프트웨어 모두를 포함하는 다양한 구성요소를 갖는 분산 시스템("예시적인 분산 시스템")에서 동작한다. 예시적인 분산 시스템은 (1) 시스템의 사용자가 많은 장치의 네트워크를 통해 서비스와 자원을 공유할 수 있게 하며, (2) 신뢰성있고 안전한 분산 시스템의 개발을 가능하게 하는 툴(tools)과 프로그래밍 패턴을 프로그래머에게 제공하며, 그리고 (3) 분산 시스템을 관리하는 작업을 간단하게 한다. 이와 같은 목표를 달성하기 위해, 예시적인 분산 시스템은 일관성있는 방식으로 장치에서 장치로 코드 및 데이타 모두가 이동될 수 있게 하는 JavaTM프로그래밍 환경을 이용한다. 따라서, 예시적인 분산 시스템은 자바 프로그래밍 환경의 상부 상에 계층화되어 있고, 그것에 의해 제공된 보안과 그것에 의해 제공된 강력한 타이핑을 포함한 환경의 특성을 이용한다. 자바 프로그래밍 환경은 본 발명의 참조로서 일체화되어 있는 Jaworski, Java 1.1 Developer's Guide, Sams.net(1997)에 보다 명확히 설명되어 있다.The method and system according to the present invention operate in a distributed system ("exemplary distributed system") having various components including both hardware and software. An example distributed system includes (1) tools and programming patterns that enable users of the system to share services and resources across a network of devices, and (2) to enable the development of reliable and secure distributed systems. Programmers, and (3) simplify the task of managing distributed systems. To achieve this goal, an exemplary distributed system utilizes a Java programming environment that allows both code and data to be moved from device to device in a consistent manner. Thus, an exemplary distributed system is layered on top of a Java programming environment and exploits the characteristics of the environment, including the security provided by it and the strong typing provided by it. The Java programming environment is described more clearly in Jaworski, Java 1.1 Developer's Guide, Sams.net (1997), incorporated herein by reference.

예시적인 분산 시스템에서, 서로 다른 컴퓨터 및 장치들이 사용자에게 단일 시스템으로 보이는 것에 통합된다. 단일 시스템으로 보이게 함으로써, 예시적인 분산 시스템은 퍼스널 컴퓨터 또는 워크스테이션의 유연성 및 전용화 응답을 포기하지 않고 단일 시스템에 의해 제공될 수 있는 액세스의 간편성과 공유력을 제공한다. 예시적인 분산 시스템은 그래픽하게 분산되어 있지만, 신탁, 관리 및 폴리시의 기본적인 주석을 충족하는 사용자에 의해 운영되는 수많은 장치를 포함할 수 있다.In an example distributed system, different computers and devices are integrated into what appears to the user as a single system. By making it appear to be a single system, the example distributed system provides the simplicity and sharing of access that can be provided by a single system without giving up the flexibility and customization response of a personal computer or workstation. The example distributed system is graphically distributed, but may include a number of devices operated by users that meet basic annotations of trust, administration, and policy.

예시적인 분산 시스템 내에는 하나의 이상의 장치에 의해 제공되는 서비스의 다양한 논리적 그룹핑이 존재하고, 각각의 이와 같은 논리적 그룹핑은 Djinn으로 알려져 있다. "서비스"는 사용자, 프로그램, 장치 또는 다른 서비스에 의해 액세스될 수 있으며, 연산, 기억 관련, 통신 관련 또는 다른 사용자에의 액세스를 제공하는 것에 관련될 수 있는 자원, 데이타, 또는 기능을 가리킨다. Djinn의 일부로서 제공된 서비스의 예는 프린터, 디스플레이, 및 디스크와 같은 장치; 및 프로그램 또는 유틸리티와 같은 소프트웨어; 데이타베이스 및 파일과 같은 정보; 및 시스템의 사용자를 포함한다.Within the exemplary distributed system there are various logical groupings of services provided by one or more devices, each such logical grouping known as Djinn. A "service" refers to a resource, data, or function that may be accessed by a user, program, device, or other service and that may be related to computing, storage, communication, or providing access to another user. Examples of services provided as part of Djinn include devices such as printers, displays, and disks; And software such as programs or utilities; Information such as databases and files; And a user of the system.

사용자 및 장치 모두는 Djinn일 수 있다. Djinn을 결합하면, 사용자 또는 장치는 Djinn에 제로 이상의 서비스를 부가하며, 보안 제한에 따라 포함하고 있는서비스중 임의의 서비스를 액세스할 수 있다. 따라서, 장치 및 사용자는 그 서비스에의 액세스를 위해 Djinn에 통합된다. Djinn의 서비스는, 프로그래밍적으로, 다른 오브젝트, 서로 다른 프로그래밍 언어로 작성된 소프트웨어 구성요소 또는 하드웨어 장치를 포함할 수 있는 자바 프로그래밍 환경의 오브젝트로서 보인다. 서비스는 해당 서비스를 요청할 수 있는 연산을 정의하는 인터페이스를 가지고 있으며, 서비스의 종류는 서비스를 구성하는 인터페이스를 결정한다.Both the user and the device can be Djinn. Combining Djinn, a user or device adds zero or more services to Djinn, and can access any of the services included under security restrictions. Thus, the device and the user are integrated into Djinn for access to the service. Djinn's services appear programmatically as objects in the Java programming environment that may include other objects, software components or hardware devices written in different programming languages. The service has an interface that defines the operations that can request the service, and the type of service determines the interface that composes the service.

도 1는 네트워크(108)에 의해 상호연결된 컴퓨터(102), 컴퓨터(104), 및 장치(106)를 포함하는 예시적은 분산 시스템(100)을 도시한다. 장치(106)는 프린터, 팩스밀리기, 기억장치, 컴퓨터 또는 다른 장치와 같은 많은 장치중 임의의 장치일 수 있다. 네트워크(108)는 국부 영역 네트워크, 광대역 네트워크 또는 인터넷일 수 있다. 비록 두개의 컴퓨터와 하나의 장치만이 예시적인 분산 시스템(100)을 구성하는 것으로 도시되어 있지만, 기술분야의 숙련자는 예시적인 분산 시스템(100)은 부수적인 컴퓨터 또는 장치를 포함할 수 있다는 것을 알 것이다.1 illustrates an example distributed system 100 that includes a computer 102, a computer 104, and an apparatus 106 interconnected by a network 108. Device 106 may be any of many devices, such as a printer, fax machine, storage device, computer, or other device. The network 108 may be a local area network, a broadband network or the internet. Although only two computers and one device are shown to constitute the exemplary distributed system 100, those skilled in the art will appreciate that the exemplary distributed system 100 may include additional computers or devices. will be.

도 2는 예시적인 분산 시스템(100)의 많은 소프트웨어 구성요소를 상세히 도시하는 컴퓨터(102)를 도시한다. 기술분야의 숙련자는 컴퓨터(104) 또는 장치(106)가 유사하게 구성될 수 있다는 것을 알 것이다. 컴퓨터(102)는 메모리(202), 보조 기억장치(204), 중앙 처리 장치(CPU)(206), 입력 장치(208), 및 비디오 디스플레이(210)를 포함한다. 메모리(202)는 룩업 서비스(212), 디스커버리 서버(214), 및 JavaTM런타임 시스템(216)을 포함한다. 자바 런타임 시스템(216)은 JavaTM원격 메소드 호출(RMI) 시스템(218) 및 JavaTM버츄얼 머신(220)을 포함한다. 보조 기억장치(204)는 JavaSpaceTM(222)를 포함한다.2 depicts a computer 102 detailing many of the software components of the example distributed system 100. Those skilled in the art will appreciate that computer 104 or device 106 may be similarly configured. Computer 102 includes memory 202, auxiliary storage 204, central processing unit (CPU) 206, input device 208, and video display 210. Memory 202 includes lookup service 212, discovery server 214, and Java runtime system 216. The Java runtime system 216 includes a Java TM remote method call (RMI) system 218 and a Java TM virtual machine 220. The secondary storage 204 includes a JavaSpace TM 222.

상술한 바와 같이, 예시적인 분산 시스템(100)은 Java 프로그래밍 환경에 기초하며, 따라서 Java 런타임 시스템(216)을 이용한다. Java 런타임 시스템(216)은 Java 런타임 시스템의 상부 상에서 실행하는 프로그램들이 플랫폼에 독립하는 방식으로, 호스트 운영체제의 윈도우잉 능력 및 네트워킹 능력을 포함한 다양한 시스템 기능에 액세스하는 것을 가능하게 하는 JavaTMAPI를 포함한다. Java API가 Java 런타임 시스템(216)이 포트되어 있는 모든 운영체제에 걸쳐 단일의 공통 API를 제공하기 때문에, Java 런타임 시스템의 상부 상에서 실행하는 프로그램들은 호스트 플랫폼의 운영 체제 또는 하드웨어 구성에 무관하게 플랫폼에 독립적으로 실행한다. Java 런타임 시스템(216)은 캘리포니아주, 마운틴 뷰에 위치한 Sun Microsystems, Inc.로부터 입수할 수 있는 Java 소프트웨어 개발 킷의 일부로서 제공된다.As noted above, the example distributed system 100 is based on a Java programming environment and thus uses the Java runtime system 216. Java runtime system 216 includes a Java TM API that enables programs running on top of the Java runtime system to access various system functions, including the windowing and networking capabilities of the host operating system, in a platform-independent manner. do. Because the Java API provides a single common API across all operating systems on which the Java runtime system 216 is ported, programs running on top of the Java runtime system are platform independent regardless of the operating system or hardware configuration of the host platform. Run Java runtime system 216 is provided as part of a Java software development kit available from Sun Microsystems, Inc., Mountain View, California.

Java 버츄얼 머신(220)은 또한 플랫폼 독립을 용이하게 한다. Java 버츄얼 머신(2200)은 바이트코드 형태로 프로그램으로부터 명령을 수신하고, 이들 바이트코드를 오브젝트 코드와 같은 실행 형태로 동적으로 변환하여 이를 실행함으로써 해석하는 추상 컴퓨팅 머신과 같이 행동한다. RMI(218)는 하나의 컴퓨터 또는 장치 상에서 실행하는 오브젝트가 다른 컴퓨터 또는 장치 상에서 실행하는 오브젝트의 메소드를 호출하게 함으로써, 원격 메소드 호출을 용이하게 한다. RMI 및 Java 버츄얼 머신 모두는 Java 소프트웨어 개발 킷의 일부로서 제공된다.Java virtual machine 220 also facilitates platform independence. The Java virtual machine 2200 behaves like an abstract computing machine that receives instructions from a program in the form of bytecodes, dynamically converts these bytecodes into execution forms such as object code, and interprets them by executing them. RMI 218 facilitates remote method invocation by having an object running on one computer or device invoke a method of an object running on another computer or device. Both RMI and the Java Virtual Machine are provided as part of the Java Software Development Kit.

룩업 서비스(212)는 특정 Djinn에 이용가능한 서비스를 정의한다. 즉, 하나 이상의 Djinn, 결국 예시적인 분산 시스템(100) 내에 하나 이상의 룩업 서비스가 존재할 수 있다. 룩업 서비스(212)는 Djinn 내에 각각의 서비스를 위한 하나의 오브젝트를 포함하고, 각각의 오브젝트는 대응하는 서비스에의 액세스를 용이하게 하는 다양한 메소드를 포함한다. 룩업 서비스(212)는 본 발명의 참조로서 일체화되어 있는 "Method and System for Facilitating Access to a Lookup Service"라는 제목의 현재 계류중인 미국특허출원 제 09/044,826호에 상세히 설명되어 있다.Lookup service 212 defines the services available to a particular Djinn. That is, there may be one or more lookup services in one or more Djinn, eventually exemplary distribution systems 100. Lookup service 212 includes one object for each service in Djinn, and each object includes various methods that facilitate access to the corresponding service. Lookup service 212 is described in detail in currently pending US patent application Ser. No. 09 / 044,826 entitled "Method and System for Facilitating Access to a Lookup Service", which is incorporated herein by reference.

디스커버리 서버(214)는 부트와 결합 또는 디스커버리(discovery)라고 하는 프로세스 동안 새로운 장치가 분산 시스템(100)에 부가된 때를 검출하고, 이와 같은 새로운 장치가 검출되면, 디스커버리 서버는 새로운 장치로 룩업 서비스(212)에 대한 참조를 전달함으로써, 새로운 장치가 룩업 서비스에 그 서비스를 등록하여, Djinn의 멤버가 될 수 있게 한다. 등록후에, 새로운 장치는 Djinn의 멤버가 되며, 결국, 룩업 서비스(212)에 포함된 모든 서비스를 액세스할 수 있다. 부트 및 결합의 프로세스는 본 발명의 참조로서 일체화되어 있는 "Apparatus and Method for providing Downlodable Code for Use in Communicating with a Device in a Distributed System"이라는 제목의 미국특허출원 제09/044,939호에 설명되어 있다.The discovery server 214 detects when a new device is added to the distributed system 100 during a process called associating or discovery with the boot, and when such a new device is detected, the discovery server can service the lookup service to the new device. By passing a reference to 212, the new device registers the service with the lookup service, allowing it to become a member of Djinn. After registration, the new device becomes a member of Djinn and, in turn, can access all services included in lookup service 212. The process of booting and combining is described in US patent application Ser. No. 09 / 044,939 entitled "Apparatus and Method for providing Downlodable Code for Use in Communicating with a Device in a Distributed System", which is incorporated herein by reference.

JavaSpace(222)는 오브젝트를 저장하는 예시적인 분산 시스템(100) 내의 프로그램에 의해 사용되는 오브젝트 저장고이다. 프로그램들이 예시적인 분산 시스템 내의 다른 장치에 액세스가능하게 하는 것은 물론 오브젝트를 지속적으로 저장하기 위해 JavaSpace(222)을 사용한다. JavaSpace는 본 발명의 양수인에게 양도되고 본 발명의 참조로서 일체화되어 있는 "Database System Employing Polymorphic Entry and Entry Matching"(1997년 11월 17일 출원)이라는 제목의 현재 계류중인 미국특허출원 제08/971,529호에 상세히 설명되어 있다. 기술분야의 숙련자는 예시적인 분산 시스템(100)은 룩업 서비스, 디스커버리 서버 및 JavaSpace를 포함할 수 있다는 것을 할 것이다.JavaSpace 222 is an object store used by a program in an example distributed system 100 that stores objects. Programs use JavaSpace 222 to persistently store objects as well as make them accessible to other devices in the example distributed system. JavaSpace is currently pending US patent application Ser. No. 08 / 971,529 entitled "Database System Employing Polymorphic Entry and Entry Matching" (filed Nov. 17, 1997), assigned to the assignee of the present invention and incorporated herein by reference. It is explained in detail in. Those skilled in the art will appreciate that the exemplary distributed system 100 can include a lookup service, discovery server, and JavaSpace.

본 발명에 따른 시스템 및 방법이 예시적인 분산 시스템 및 Java 프로그래밍 환경에서 동작하는 것으로 설명되었지만, 기술분야의 숙련자는 본 발명이 다른 시스템 및 다른 프로그래밍 환경에서 실시될 수 있다는 것을 알 것이다. 부수적으로, 비록 본 발명의 특징이 메모리에 저장되는 것으로 설명되었지만, 기술분야의 숙련자는 이와 같은 특징은 또한 하드 디스크, 플로피 디스크 또는 CD-ROM과 같이 보조 기억 장치와 같은 다양한 종류의 컴퓨터 판독 가능 매체; 인터넷으로부터의 반송파; 또는 다른 형태의 RAM 또는 ROM 상에 기억되거나 또는 그로부터 판독될 수 있다는 것을 알 것이다. Sun, Sun Microsystems, Inc., Sun Logo, Java 및 Java에 기초한 상표는 미국 및 다른 국가에 있는 Sun Microsystems, Inc.의 상표 또는 등록 상표이다.Although the systems and methods according to the present invention have been described as operating in an exemplary distributed system and Java programming environment, those skilled in the art will appreciate that the present invention may be practiced in other systems and other programming environments. Incidentally, although the features of the present invention have been described as being stored in a memory, those skilled in the art will also appreciate that such features may also be used in various types of computer readable media such as auxiliary storage devices such as hard disks, floppy disks or CD-ROMs. ; Carrier from the Internet; Or it may be stored on or read from other forms of RAM or ROM. Sun, Sun Microsystems, Inc., Sun Logo, Java, and trademarks based on Java are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.

예시적인 클라이언트-서버 시스템Example Client-Server System

도 3은 본 발명에 따른 클라이언트-서버 시스템 및 예시적인 분산 시스템(100)을 도시한다. 따라서, 클라이언트-서버 시스템(300)은 클라이언트(302)라고 하는 클라이언트 컴퓨터(302), 서버(312)라고 하는 서버 컴퓨터(312), 및 클라이언트(302)과 서버(312) 간에 결합된 네트워크(310)로 구성된다. 이 특정 클라이언트-서버 시스템은 JavaTM오브젝트 지향 언어를 사용하여 구현될 수 있다. 그러나, 기술분야의 숙련자는 범용 원격 프로시져 호출(RPC) 시스템 및 다른 오브젝트 및 비-오브젝트 지향 언어를 사용하여 실시될 수 있다는 것을 알 것이다.3 illustrates a client-server system and an exemplary distributed system 100 in accordance with the present invention. Accordingly, the client-server system 300 may include a client computer 302 called client 302, a server computer 312 referred to as server 312, and a network 310 coupled between client 302 and server 312. It is composed of This particular client-server system can be implemented using the Java TM object oriented language. However, those skilled in the art will appreciate that they may be practiced using general purpose remote procedure call (RPC) systems and other object and non-object oriented languages.

클라이언트(302)는 원격 메소드 호출(306), 원격 스터브(308), 및 원격 메소드 런타임(309)를 갖는 클라이언트 어플리케이션(304)를 구비한다. 클라이언트 어플리케이션(304)은 전형적으로 사용자에 의해 개발된 소프트웨어이고, 서버(312)에 대한 프로세스를 호출하기 위한 원격 메소드 호출(306)를 구비한다. 예를 들어, 클라이언트 어플리케이션(304)은 JavaTM프로그래밍 언어로 작성된 JavaTM어플리케이션일 수 있다. 원격 메소드 호출(306)은 RMI와 같은 RPC 메커니즘을 사용하여 실시될 수 있다.Client 302 has a client application 304 having a remote method call 306, a remote stub 308, and a remote method runtime 309. The client application 304 is typically software developed by the user and has a remote method call 306 to call a process for the server 312. For example, client application 304 may be a Java application written in the Java programming language. Remote method call 306 may be implemented using an RPC mechanism such as RMI.

원격 메소드 스터브(308)는 원격 메소드 호출(306)에 의해 제공된 데이타 및 파라메타를 마셀(marshals)한다. 데이터 및 파라메타는 서버(312) 상의 원격 메소드 스켈턴(315)에 의해 언마셀(unmarshalled)될 수 있는 선정된 포맷으로 정렬된다. 원격 메소드 런타임(309)은 서버(312)에 대해 처리됨에 따라 원격 메소드 호출(306)에 연관된 프로세스의 상태를 추적한다. 원격 메소드 런타임(309)은 또한 클라이언트 어플리케이션(304) 및 서버(312) 간의 통신 링크가 연결되어어 있는 지 또는 단락되어 있는 지의 여부를 판정한다. 원격 메소드 런타임(309)은 링크의 상태에 대해 서버(312)를 질의할 수 있다. 만일 적절한 시간 기간내에 어떠한 응답도 이루어지지 않거나 또는 서버(312)가 링크가 단락되어 있다고 가리키면, 원격 메소드 런타임(309)은 원격 메소드 호출이 종료되었다는 것을 클라이언트 어플리케이션에 통지한다.The remote method stub 308 marshals data and parameters provided by the remote method call 306. The data and parameters are arranged in a predetermined format that can be unmarshalled by the remote method skeleton 315 on the server 312. The remote method runtime 309 tracks the state of the process associated with the remote method call 306 as it is processed for the server 312. The remote method runtime 309 also determines whether the communication link between the client application 304 and the server 312 is connected or shorted. The remote method runtime 309 can query the server 312 for the status of the link. If no response is made within the appropriate time period, or if server 312 indicates that the link is short, remote method runtime 309 notifies the client application that the remote method call has ended.

네트워크(310)는 클라이언트(3020와 서버(312) 간의 통신 링크를 제공한다. 네트워크(312)는 인터넷 또는 회사 또는 학교의 인트라넷일 수 있다. 네트워크(310)는 TCP/IP, 또는 Novell Netware, AppleTalk, X,25 또는 RMI와 같은 RPC 시스템을 지원할 수 있는 임의의 다른 네트워크를 포함하는 임의의 다른 네트워크 프로토콜을 사용할 수 있다.The network 310 provides a communication link between the client 3020 and the server 312. The network 312 may be the Internet or an intranet of a company or school.The network 310 may be TCP / IP, or Novell Netware, AppleTalk. Any other network protocol may be used, including any other network capable of supporting an RPC system such as X, 25 or RMI.

서버(312)는 대응하는 원격 메소드 런타임(314) 및 원격 메소드 스켈턴(315)를 포함한다. 클라이언트(302)에 대조적으로, 서버(312)는 또한 범용 자원 관리자(316), 이벤트 핸들러(317), 원격 메소드 자원 관리자(322), 원격 이벤트 핸들러(323), 및 많은 원격 메소드 자원(324)를 포함한다. 서버(312)는 또한, 원격 오브젝트 A(318) 및 원격 오브젝트 B(320)를 포함한다. 각각의 원격 오브젝트는, 클라이언트 어플리케이션(304)이 원격 메소드 호출(306)을 사용하여 호출할 수 있는 많은 메소드(도시않됨)에 연관되어 있다. 서버(312)의 대체 구성은 특정 시스템에 의해 필요하다면, 원격 메소드를 수행하기 위한 임의의 많은 원격 메소드를 포함할 수 있다.Server 312 includes corresponding remote method runtime 314 and remote method skeleton 315. In contrast to the client 302, the server 312 also includes a general purpose resource manager 316, an event handler 317, a remote method resource manager 322, a remote event handler 323, and many remote method resources 324. It includes. Server 312 also includes a remote object A 318 and a remote object B 320. Each remote object is associated with a number of methods (not shown) that the client application 304 can call using the remote method call 306. Alternate configurations of server 312 may include any number of remote methods for performing remote methods, if desired by a particular system.

원격 메소드 런타임(314)은 클라이언트(302)에게 원격 메소드 실행 상태를 계속 통지하는 것을 담당하고 있다. 원격 메소드 런타임(314)은 클라이언트(314)에게, 원격 메소드가 데이타를 처리하고 있다고 가리키는 정보를 제공한다. 본 발명에 따르면, 원격 메소드가 중단될 때에도 처리 상태가 중단되지 않는다. 그 대신에, 원격 메소드 런타임(314)은 원격 메소드가 요청된 작업의 처리를 완료할 때까지 클라이언트(302)와의 접속을 유지한다. 원격 메소드 런타임(314)은 또한 원격 메소드가 비정상적으로 종료되거나 또는 에러일 때에도 클라이언트(302)를 가리킨다.The remote method runtime 314 is responsible for continuously notifying the client 302 of the remote method execution status. The remote method runtime 314 provides the client 314 with information indicating that the remote method is processing data. According to the present invention, the processing state is not interrupted even when the remote method is interrupted. Instead, the remote method runtime 314 maintains a connection with the client 302 until the remote method completes processing the requested task. The remote method runtime 314 also points to the client 302 even when the remote method ends abnormally or is an error.

메소드는, 원격 메소드를 처리하는데 필요한 임의의 일반적인 자원이 현재 이용가능하지 않는지의 여부를 판정한다. 일반적인 자원은 메모리, 디스크 기억공간, 데이터 또는 시스템 자원이 의존할 수 있는 임의의 자원일 수 있다.The method determines whether any general resources needed to process the remote method are not currently available. A general resource can be any resource on which memory, disk storage, data or system resources may depend.

원격 메소드 스켈턴(315)은 네트워크(310)를 통해 전송된 데이터 및 파라메타를 언마셀하는 것을 담당한다. 파라메타 및 데이타는 서버(312) 상의 원격 메소드를 실행하기 위한 인수로서 사용된다.The remote method Skelton 315 is responsible for unmarshalling data and parameters transmitted over the network 310. Parameters and data are used as arguments for executing remote methods on the server 312.

범용 자원 관리자(316) 및 이벤트 핸들러(317)는 국부적인 프로세스에 의해사용된 자원, 및 서버(312) 상에서 실행된 메소드를 관리한다. 서버(312) 상에서 실행된 국부적인 메소드는 일반적인 자원의 할당과 회수를 조화시키기 위해, 범용 자원 관리자(316)와 이벤트 핸들러(317)를 참조한다. 이들 일반적인 자원은 메모리와 같은 주 기억장치 또는 디스크 및 테이프 드라이브와 같은 보조 기억장치를 포함할 수 있다. 이하에 설명하는 시스템 자원과는 달리, 일반적인 자원은 전형적으로 원격 메소드 요청을 충족시키는데 사용되지 않는다. 이벤트 핸들러(317)는 국부적인 프로세스에 연관된 이벤트를 검출하고, 따라서 이벤트 핸들러(317)의 세부사항은 본 명세서에 포함되어 있지 않다. 반드시, 범용 자원 관리자(316) 및 이벤트 핸들러(317)는 클라이언트(302)와 같은 클라이언트로부터 원격으로 호출되지 않는 프로세스 및 메소드에 연관된 자원을 관리하는데 전적으로 사용된다.The general purpose resource manager 316 and the event handler 317 manage resources used by local processes and methods executed on the server 312. Local methods executed on server 312 refer to general resource manager 316 and event handler 317 to coordinate the allocation and retrieval of generic resources. These common resources may include main storage, such as memory, or auxiliary storage, such as disk and tape drives. Unlike the system resources described below, generic resources are typically not used to satisfy remote method requests. The event handler 317 detects an event associated with the local process, so the details of the event handler 317 are not included herein. Essentially, general purpose resource manager 316 and event handler 317 are used solely to manage resources associated with processes and methods that are not invoked remotely from a client, such as client 302.

이와 대조적으로, 원격 메소드 자원 관리자(322) 및 원격 이벤트 핸들러(323)는 원격 메소드에 의해 필요하다면 원격 메소드 자원(324)를 할당하기 회수하는 것을 담당한다. 원격 메소드 자원(324)은 네트워킹과 같은 시스템 레벨 자원을 이용하도록 메소드를 인에이블시키기 때문에 시스템 자원인 것으로 간주될 수 있다. 흔히, 시스템 자원은 상술한 일반적인 자원에 종속성을 가질 것이다.In contrast, remote method resource manager 322 and remote event handler 323 are responsible for allocating and retrieving remote method resource 324 if needed by the remote method. The remote method resource 324 may be considered to be a system resource because it enables the method to use system level resources such as networking. Often, system resources will have dependencies on the general resources described above.

원격 메소드 자원 관리자(322)는 원격 메소드(318), 원격 오브젝트(320), 및 다른 오브젝트(도시않됨)에 연관된 원격 메소드 간에 원격 메소드 자원(324)를 전달한다. 원격 이벤트 핸들러(323)는, 언제 자원이 해제되어 원격 메소드가 특정 작업을 처리할 필요가 있다는 지를 검출한다. 이들 원격 메소드 자원을 전달하는 것은, 이하에 설명하는 바와 같이 본 발명의 실시예를 이용하여 용이하게 된다.The remote method resource manager 322 transfers the remote method resource 324 between the remote method 318, the remote object 320, and the remote method associated with another object (not shown). The remote event handler 323 detects when the resource is released so that the remote method needs to handle a particular task. Passing these remote method resources is facilitated using embodiments of the present invention as described below.

원격 메소드의 중단 및 계속Stopping and continuing the remote method

원격 메소드가 차단되려 할 때 중단(suspend) 메소드가 호출된다. 이는 전형적으로 이용가능하게 될 자원을 대기하는 원격 메소드가 차단되기 직전에 발생한다. 중단 메소드는 원격 메소드를 중단된 것으로 마크하고, 원격 메소드 자원 관리자는 다시 서버 시스템에 스레드 및 다른 자원을 반환한다. 자원이 이용가능하게 되면, 원격 메소드 자원 관리자 및 연속(continue) 메소드가 함께 동작하여 중단된 원격 메소드에 스레드 및 다른 원격 메소드 자원을 할당한다. 궁극적으로, 원격 메소드 런타임은 계속 처리할 수 있도록 중단된 원격 메소드를 호출한다. 예를 들어, 기록 동작을 대기하는 원격 메소드는 차단 상태 준비로 진입하고, 중단된 동작을 호출함으로써 스레드 및 다른 자원을 양도한다. 중단된 동작은 원격 메소드를 중단된 것으로 마크하고, 원격 메소드 자원 관리자는 서버 시스템에 연관된 스레드 풀에 스레드를 반환한다. 일단 기록 동작이 발생하면, 연속 메소드는 중단된 원격 메소드를 실행가능한 것으로 마크하고, 원격 메소드 자원 관리자는 스레드를 할당하고, 다시 중단된 원격 프로세스에 다른 자원을 할당한다. 원격 메소드 런타임은 원격 메소드를 인에이블시켜 데이타를 판독하게 하는 이전에 중단된 원격 메소드를 호출한다.The suspend method is called when the remote method is about to be blocked. This typically occurs just before the remote method is blocked waiting for a resource to become available. The abort method marks the remote method as suspended, and the remote method resource manager returns threads and other resources back to the server system. Once the resource is available, the remote method resource manager and the continuous method work together to allocate threads and other remote method resources to the suspended remote method. Ultimately, the remote method runtime calls the suspended remote method so that it can continue processing. For example, a remote method waiting for a write operation enters a blocking state preparation and transfers threads and other resources by invoking the interrupted operation. The aborted operation marks the remote method as aborted, and the remote method resource manager returns the thread to the thread pool associated with the server system. Once the write operation occurs, the continuous method marks the suspended remote method as executable, the remote method resource manager allocates a thread, and then allocates another resource to the suspended remote process. The remote method runtime invokes a previously suspended remote method that enables the remote method to read data.

도 4는 원격 메소드 처리를 중단하고 계속하는데 사용되는 필수적인 소프트웨어 서브시스템을 도시하는 블럭도이다. 이 소프트웨어 서브시스템은 원격 메소드 자원(324), 원격 메소드 자원 관리자(322), 및 원격 메소드(416)와 실행 상태(418)를 갖는 예시적인 자원 오브젝트 A(318)를 구비한다.4 is a block diagram illustrating the essential software subsystem used to abort and continue remote method processing. This software subsystem has a remote method resource 324, a remote method resource manager 322, and an example resource object A 318 having a remote method 416 and an execution state 418.

도 4의 원격 메소드 자원(324)는 사용중인 스레드(404), 이용가능한 스레드(406), 및 RPC 상태(408)를 갖는 스레드 풀(402)를 포함한다. 사용중인 스레드(404)는, 이용가능한 스레드(406)가 원격 메소드에 의해 사용하기 위해 현재 이용가능한 스레드를 포함하는 동안 원격 메소드에 으해 현재 사용되고 있는 스레드에 대한 참조를 포함한다. RPC 상태(408)는, 원격 메소드가 중단될 때 RMI와 같이 RPC 시스템에 의해 사용되는 정보를 저장하기 위해 원격 메소드 자원(324)에 유지된다. 이 정보는 중단된 원격 메소드 처리를 계속하고 그 결과를 클라이언트에 반환하기 위해 RPC 시스템에 대한 정보를 포함한다. 대체 실시예에서, 원격 메소드 자원(324)가 또한 스레드 이외의 다른 자원을 포함할 수 있다. 이들 다른 네트워크 자원은 주 기억장치, 보조 기억장치, 및 원격 메소드를 처리하는 것과 결합하는데 사용되는 임의의 다른 자원을 포함할 수 있다.The remote method resource 324 of FIG. 4 includes a thread pool 402 having a thread 404 in use, a thread 406 available, and an RPC state 408. The thread in use 404 contains a reference to the thread currently being used by the remote method while the available thread 406 includes the thread currently available for use by the remote method. The RPC state 408 is maintained at the remote method resource 324 to store information used by the RPC system, such as RMI, when the remote method is interrupted. This information includes information about the RPC system to continue processing aborted remote methods and return the results to the client. In alternative embodiments, remote method resource 324 may also include resources other than threads. These other network resources may include main storage, auxiliary storage, and any other resources used to combine with processing remote methods.

원격 메소드 자원 관리자(322)는 중단 메소드(410), 연속 메스드(412) 및 상태 저장부(414)을 포함한다. 중단 메소드(410)는 원격 메소드(416)로부터의 실행 상태(418), 및 원격 메소드 자원(324)으로부터의 RPC 상태(408)를 포함한다. 이 상태 정보는 원격 메소드(416)가 중단되기 전에 상태 저장부(414)에 저장된다. 전형적으로, 중단 메소드(410)는, 원격 메소드(416)가 차단되려 한다는 것과 스레드 및 다른 자원을 가지고 있다고 표시할 때, 원격 메소드(406)를 중단된 것으로 마크한다. 궁극적으로, 원격 메소드 자원 관리자(322)는 스레드 및 다른 자원을 서버(312)에 반환하고, 원격 메소드(416)는 추가적인 처리가 중단된다. 예를 들어, 원격 메소드(416)가 일시적으로 비어있는 큐로부터 데이타를 판독하려고 시도한다고 가정한다. 원격 메소드(416)가 큐가 비어있다는 것을 검출하면, 원격 메소드(416)는 중단 프로세스를 초기화시키기 위해 중단 메소드(410)를 호출할 것이다.The remote method resource manager 322 includes an abort method 410, a continuous method 412 and a state store 414. The abort method 410 includes an execution state 418 from the remote method 416, and an RPC state 408 from the remote method resource 324. This state information is stored in the state store 414 before the remote method 416 is stopped. Typically, the abort method 410 marks the remote method 406 as suspended when it indicates that the remote method 416 is about to be blocked and that it has threads and other resources. Ultimately, remote method resource manager 322 returns threads and other resources to server 312, and remote method 416 stops further processing. For example, assume that remote method 416 attempts to read data from a temporarily empty queue. If the remote method 416 detects that the queue is empty, the remote method 416 will call the abort method 410 to initiate the abort process.

연속 메소드(412)는 중단 메소드(410)의 동료이다. 전형적으로, 자원이 이용가능하거나 또는 특정 이벤트가 발생하였을 때에 연속 메소드(412)가 호출된다. 예를 들어, 특정 큐에 데이타를 기록함으로써, 연속 메소드(412)를 호출할 수 있는 연속 이벤트를 트리커시킬 수 있다. 연속 메소드(412)는 자원을 대기하고 있는 중단된 원격 메소드를 찾고, 이를 실행가능한 것으로 마크한다. 궁극적으로, 원격 메소드 자원 관리자(322)는 이전에 중단된 원격 메소드에 스레드 및 다른 자원을 할당한다. 상테 저장부(414)에 기억된 실행 상태(418) 및 RPC 상태는, 원격 메소드(416)가 중단되기 전에 적당한 시점에서 처리를 계속하는 것을 보장하는데 사용된다.Continuous method 412 is a companion to abort method 410. Typically, continuous method 412 is called when resources are available or when a particular event occurs. For example, by writing data to a specific queue, one can trigger a continuous event that can call the continuous method 412. Continuous method 412 finds the suspended remote method waiting for the resource and marks it as executable. Ultimately, remote method resource manager 322 allocates threads and other resources to previously interrupted remote methods. The execution state 418 and the RPC state stored in the storage 414 are used to ensure that processing continues at a suitable point in time before the remote method 416 is interrupted.

동작에서, 중단 및 연속 메소드는 함께 서버 시스템(312) 상의 스레드 및 다른 자원을 관리하는데 사용된다. 도 5는 본 발명의 방법 및 시스템에 따른 원격 호출을 중단하고 연속시키는데 수행되는 단계들을 가리키는 순서도이다.In operation, the abort and contiguous methods are used together to manage threads and other resources on the server system 312. 5 is a flow chart illustrating the steps performed to abort and continue a remote call in accordance with the method and system of the present invention.

초기에, 서버(312)는 원격 메소드(416)를 처리하기 위해 클라이언트(312) 상의 원격 메소드 호출(306)로부터 요청을 수신한다. 따라서, 원격 메소드 스켈턴(315)는 요청에 전송된 데이타 및 파라메타를 언마셀한다(단계 506). 데이타 및 파라메타가 원격 메소드 스켈턴(315)에 의해 디코드된 후에, 이는 원격 메소드(416)로 전달된다.Initially, server 312 receives a request from remote method call 306 on client 312 to process remote method 416. Thus, the remote method skeleton 315 unmarshals the data and parameters sent in the request (step 506). After the data and parameters are decoded by the remote method skeleton 315, it is passed to the remote method 416.

서버(312) 상의 원격 메소드 런타임(314)은, 서버(312)가 원격 메소드(416)를 호출하는 요청을 수신하였고 요청을 처리하고 있다는 것을 클라이언트(302) 상의 원격 메소드 런타임(309)에 가리킨다(단계 507). 클라이언트 어플리케이션(304)은, 원격 메소드(416)가 중단되었고 스레드 및 다른 자원이 양도되었을 때에도 서버가 요청을 처리하고 있다는 표시를 계속 수신한다.The remote method runtime 314 on the server 312 indicates to the remote method runtime 309 on the client 302 that the server 312 has received a request to call the remote method 416 and is processing the request ( Step 507). The client application 304 continues to receive an indication that the server is processing the request even when the remote method 416 has stopped and the thread and other resources have been transferred.

원격 메소드 자원 관리자(322)는 스레드 및 다른 자원을 호출되려고 하는 원격 메소드(416)에 할당한다(단계 508). 원격 메소드(416)에 할당된 스레드는 스레드 풀(402) 내의 이용가능한 스레드(406)로부터 꺼내어 진다. 다수의 스레드가 몇개의 원격 메소드 또는 작업을 병렬로 처리하는데 이용할 수 있다. 스레드 및 다른 자원이 이용가능하다고 가정하면, 원격 메소드 런타임(314)은 클라이언트 어플리케이션(304) 대신에 원격 메소드(416)를 호출한다(단계 510). 만일 원격 메소드 자원 관리자가 원격 메소드(416)에 스레드 또는 다른 자원을 할당할 수 없으면, 다른 프로세스로부터 다른 자원 또는 스레드의 해제를 계류시키는 실행 큐 상에 놓여진다.The remote method resource manager 322 assigns threads and other resources to the remote method 416 that is about to be called (step 508). The thread assigned to the remote method 416 is retrieved from the available thread 406 in the thread pool 402. Multiple threads can be used to process several remote methods or tasks in parallel. Assuming threads and other resources are available, the remote method runtime 314 calls the remote method 416 instead of the client application 304 (step 510). If the remote method resource manager cannot allocate a thread or other resource to the remote method 416, it is placed on a run queue that queues the release of another resource or thread from another process.

원격 메소드(416)는 중단 상태가 존재하는 지의 여부를 판정하기 위한 명령어를 포함한다(단계 512). 이들 명령어는 또한 연속 상태가 존재하는 지의 여부를 판정하는 정보를 포함한다. 원격 메소드(416)가 이용가능하지 않은 자원 또는 아직 발생하지 않은 이벤트에 의존할 때에 종단 상태가 발생한다. 이와 대조적으로, 연속 상태는 자원이 이용가능하거나 또는 이벤트가 발생할 때 발생한다. 중단 상태 예로서, 원격 메소드(416)가 데이타 포인트를 샘플링하고, 각각의 샘플링 간의 긴 시간 기간을 중지한다고 가정한다. 이와 같은 긴 중단 동안, 원격 메소드(416)는 다음 시간 기간의 종료를 가리키는 타이머 이벤트를 대기하면서 차단할 수 있다.The remote method 416 includes instructions for determining whether a break state exists (step 512). These instructions also include information to determine whether a continuous state exists. Termination status occurs when the remote method 416 relies on resources that are not available or events that have not yet occurred. In contrast, a continuous state occurs when a resource is available or when an event occurs. As an interruption state example, assume that the remote method 416 samples the data points and stops the long time period between each sampling. During this long interruption, the remote method 416 may block waiting for a timer event indicating the end of the next time period.

중단 상태가 검출되면, 원격 메소드(416)는 자원을 양도하고, 원격 이벤트 핸들러(323)에 연속 명령어를 등록하여, 임의의 자원 및 이벤트를 모니터한다(단계 516). 다음에, 원격 메소드(416)는 추가적인 처리로부터 중단되고, 처리를 계속하기 위해 특정 연속 이벤트를 대기한다(단계 518).If a stall condition is detected, remote method 416 transfers resources and registers a continuous instruction with remote event handler 323 to monitor for any resources and events (step 516). Next, the remote method 416 stops from further processing and waits for a particular continuous event to continue processing (step 518).

연속 이벤트가 발생하면, 자원이 원격 메소드에 할당되고, 원격 메소드는 처리를 재개한다(단계 520). 연속 이벤트는, 자원이 이용가능하게 되었을 때 또는 중단된 원격 메소드가 추가적인 처리에 따를 때 이벤트가 발생할 때 발생된 이벤트이다. 원격 이벤트 핸들러(323)는 중단된 원격 메소드(416)에 의해 등록된 연속 명령을 처리한다. 원격 메소드는 작업을 완료하고, 그 결과를 다시 클라이언트 어플리케이션(304)에 반환한다(단계 514). 원격 메소드는 작업을 완료하고 클라이언트에 결과를 반환하기 전에 중단 및 연속될 수 있다는 것을 알아야 한다.If a continuation event occurs, resources are allocated to the remote method, and the remote method resumes processing (step 520). A continuous event is an event that is raised when an event occurs when a resource becomes available or when a suspended remote method follows additional processing. The remote event handler 323 processes subsequent commands registered by the aborted remote method 416. The remote method completes the task and returns the result back to the client application 304 (step 514). It should be noted that remote methods can be aborted and contiguous before completing work and returning results to the client.

원격 메소드의 중단Break of remote method

도 6은 본 발명의 방법 및 시스템에 따른 원격 호출을 중단시키는데 수행되는 단계들의 순서도이다. 초기에, 원격 메소드(416)는 중단 이벤트가 발생하였다는 것을 검출하고, 스레드 및 다른 자원을 양도하기로 선택한다(단계 602). 원격 메소드가 중단 메소드(410)에 의해 중단된 것으로 마크된다. 중단되기 전에, 원격 메소드(416)는 원격 메소드 자원 관리자(322)에 실행 상태(418), RPC 상태(408)를 제공하고, 스레드 및 다른 자원을 양도한다(단계 604). 원격 메소드 자원 관리자(322)는 이들 스레드를 다시 이용가능한 스레드(406)에 다시 위치시킨다. 선택적으로, 원격 메소드(416)는 임의의 스레드 또는 자원을 양도하지 않고, 처리를 중단하기를 선택할 수 있다.6 is a flowchart of steps performed to abort a remote call in accordance with the method and system of the present invention. Initially, the remote method 416 detects that a break event has occurred and chooses to relinquish the thread and other resources (step 602). The remote method is marked as aborted by abort method 410. Before being aborted, the remote method 416 provides the remote method resource manager 322 with an execution state 418, an RPC state 408, and relinquishes threads and other resources (step 604). The remote method resource manager 322 relocates these threads back to the available thread 406. Optionally, the remote method 416 may choose to abort processing without transferring any threads or resources.

실행 상태(418)는 중단될 때에, 원격 메소드(416)에 관련된 국부적인 변수, 프로그램 카운터, 및 임의 다른 정보를 포함한, 원격 메소드(418)에 관련된 상태 정보를 레코드한다. 상술한 바와 같이, RPC 상태(408)는 원격 메소드(416)가 중단될 때에 RMI와 같이 RPC 시스템에 연관된 상태 정보를 레코드한다. RPC 상태(408)는 클라이언트와 통신하고 원격 메소드(416)가 실행을 계속할 때 결과를 반환하도록 RPC 시스템을 인에이블시킨다.Execution state 418 records state information related to remote method 418, including local variables related to remote method 416, program counters, and any other information when interrupted. As discussed above, the RPC state 408 records state information associated with the RPC system, such as RMI, when the remote method 416 is interrupted. RPC state 408 enables the RPC system to communicate with the client and return a result when the remote method 416 continues executing.

다음에, 원겨 메소드 자원 관리자(322)는 RPC 상태(408) 및 실행 상태(418)를 저장한다(단계 608). 원격 메소드 자원 관리자(322)는 장래의 일정 시점에 중단된 원격 메소드를 계속 처리하기 위해 이 상태 정보를 저장한다. 원격 메소드(416)는 또한 임의이 자원 및 이벤트를 모니터하는 원격 이벤트 핸들러(323)에 연속 명령을 등록한다. 일반적으로, 연속 명령은 데이타를 미리 처리하고 적당한 중단된 프로세스를 접촉하는데 사용된다. 마지막으로, 원격 메소드(416)는 추가적인 처리로부터 차단되고, 연속 이벤트가 발생하기를 대기한다(단계 610).Next, origin method resource manager 322 stores RPC state 408 and execution state 418 (step 608). The remote method resource manager 322 stores this state information in order to continue processing the remote method that was interrupted at some point in the future. The remote method 416 also registers a serial command with the remote event handler 323, which optionally monitors resources and events. In general, continuous instructions are used to preprocess the data and to contact the appropriate interrupted process. Finally, the remote method 416 blocks from further processing and waits for a continuous event to occur (step 610).

원격 메소드의 연속Sequence of remote methods

도 7은 본 발명에 따른 방법 및 시스템에 따라, 원격 메소드(41)와 같은 이전에 중단된 원격 메소드를 계속하는데 수행되는 단계들의 순서도이다. 전형적으로, 이 프로세스의 각각의 단계는 특정 조건이 충족됨에 비동기적으로 발생한다.7 is a flowchart of the steps performed to continue a previously interrupted remote method, such as remote method 41, in accordance with the method and system according to the present invention. Typically, each step of this process occurs asynchronously as certain conditions are met.

초기에, 원격 이벤트 핸들러(323)는 특정 상태 이벤트가 발생하였다는 표시를 수신한다. 원격 이벤트 핸들러(323)는 특정 원격 메소드와 연속 이벤트를 연관시키고(단계 702), 대응하는 연속 명령을 호출한다. 연속 이벤트는 자원이 이용가능하게 되거나 또는 중단된 원격 메소드가 추가적인 처리를 위해 따르는 이벤트가 발생할 때 발생된 이벤트이다. 예를 들어, 연속 이벤트는, 정보가 중단된 원격 메소드가 판독하기를 대기하는 큐에 기록될 때 발생한다.Initially, the remote event handler 323 receives an indication that a particular status event has occurred. The remote event handler 323 associates the continuous event with a particular remote method (step 702) and invokes the corresponding continuous command. A continuous event is an event that is generated when a resource is available or when an event that follows a remote method that has been suspended for further processing occurs. For example, a continuation event occurs when information is written to a queue waiting for the remote method to stop reading.

연속 명령은 중단된 원격 메소드(416)를 실행가능한 프로세스로서 마크하는 연속 메소드(412)를 호출한다. 궁극적으로, 원격 메소드 자원 관리자(322)는 이제 원격 메소드가 실행가능하다는 것을 가리키는 중단된 메소드(416)의 상태를 발견하고, 처리를 계속할 수 있다(단계 704). 단계(704)는 전형적으로 원격 메소드 자원 관리자가 중단된 프로세스에 대한 상태를 점검할 때 발생하고, 원격 프로세스의 상태가 실행가능하지 않을 때에 반드시 발생하지 않는 비동기 프로세스이다. 원격 메소드 자원 관리자(322)는 스레드와 같은 자원을 원격 메소드(416)에 할당한다(단계 706).The continuation instruction calls the continuation method 412 which marks the interrupted remote method 416 as an executable process. Ultimately, the remote method resource manager 322 can now detect the status of the aborted method 416 indicating that the remote method is executable and continue processing (step 704). Step 704 is typically an asynchronous process that occurs when the remote method resource manager checks the state for a stopped process and does not necessarily occur when the state of the remote process is not executable. Remote method resource manager 322 assigns a resource, such as a thread, to remote method 416 (step 706).

원격 메소드 런타임(314)은 상태 저장부(414)로부터 실행 상태(418) 및 RPC 상태(408)를 로드한다. 실행 상태(418)는 중단되기 전에 남겨진 지점에서 처리를 계속하기 위해 원격 메소드(416)를 준비한다(단계 708). 이를 소프트웨어로 구현하기 위해, 원격 메소드(416)는, 중단되기 전에 이전의 코드 부분이 정지된 곳에서 각각 시작하는 인터레이스된 코드의 몇몇 조각일 수 있다. 선택적으로, 원격 메소드(416)는 코드 세그먼트 내의 서로 다른 지점에서 시작하는 실행으로 단일 코드 세그먼트로서 실시될 수 있다. 상술한 바와 같이, RPC 상태(408)는 RMI(218)과 같은 RPC 시스템을 인에이블시켜, 처리를 계속하고, 그 결과를 적당한 원격 메소드 호출(306)에 반환한다.The remote method runtime 314 loads the execution state 418 and the RPC state 408 from the state store 414. Execution state 418 prepares the remote method 416 to continue processing at the point left before abort (step 708). To implement this in software, the remote method 416 can be several pieces of interlaced code, each starting where the previous portion of code stopped before being interrupted. Optionally, the remote method 416 may be implemented as a single code segment with execution starting at different points in the code segment. As discussed above, RPC state 408 enables an RPC system such as RMI 218 to continue processing and return the result to the appropriate remote method call 306.

원격 메소드 런타임(314)은 원격 메소드(416)를 인에이블시켜 실행을 계속하게 한다. 다음에 원격 메소드(416)는 할당된 스레드 및 다른 자원을 사용하여 서버에 대한 처리를 계속한다(단계 710). 궁극적으로, 결과가 원격 메소드(416)에 의해 발생되어 인코딩 및 패키지를 위해 원격 메소드 스켈턴(315)에 제공된다(단계 712). 이들 코드 결과는 네트워크(310)를 통해, 디코드되어 원격 메소드 호출(306)에 제공되는 원격 메소드 스터브(308)에 전달된다(단계 714).The remote method runtime 314 enables the remote method 416 to continue execution. The remote method 416 then continues processing for the server using the allocated threads and other resources (step 710). Ultimately, the result is generated by the remote method 416 and provided to the remote method skeleton 315 for encoding and packaging (step 712). These code results are passed through the network 310 to the remote method stub 308 which is decoded and provided to the remote method call 306 (step 714).

비록 특정 실시예가 예시적으로 설명되었지만, 본 발명의 정신과 범위를 벗어나지 않고 다양한 수정이 있을 수 있다. 따라서, 본 발명은 상기 실시예에 국한되지 않으며, 그 대신에 등가물의 완전한 범위에 비추어 첨부하는 특허청구범위에 의해 한정된다.Although specific embodiments have been described by way of example, various modifications may be made without departing from the spirit and scope of the invention. Accordingly, the invention is not limited to the above embodiments, but instead is defined by the appended claims in light of the full scope of equivalents.

Claims (39)

네트워크를 통해 클라이언트 시스템에 동작가능하게 결합된 자원을 갖는 서버 시스템에 대해 수행되며, 원격 메소드(remote methods)를 인에이블시켜 처리를 중단시키고 상기 서버 시스템에 대응하는 자원을 양도하게 하는 방법에 있어서,A method performed on a server system having resources operatively coupled to a client system over a network, the method comprising: enabling remote methods to interrupt processing and transfer resources corresponding to the server system, the method comprising: 원격 프로시져 호출(RPC) 시스템을 사용하여 송신된 원격 메소드 호출을 갖는 요청을 클라이언트 시스템으로부터 수신하는 단계Receiving a request from a client system with a remote method call sent using a remote procedure call (RPC) system 를 포함하고, 상기 수신 단계가,Including, the receiving step, 상기 서버 시스템이 원격 메소드를 호출하는 상기 요청을 수신하였다는 것을 상기 클라이언트 시스템에 가리키는 단계,Indicating to the client system that the server system has received the request to invoke a remote method, 상기 원격 메소드에 자원을 할당하는 단계,Allocating resources to the remote method, 상기 원격 메소드를 호출하는 단계,Invoking the remote method, 상기 원격 메소드가 이용가능하지 않는 임의의 자원 또는 아직 발생하지 않은 이벤트에 의존하는지의 여부를 판정하는 단계, 및Determining whether the remote method depends on any resources that are not available or events that have not yet occurred, and 상기 원격 메소드가 이용가능하지 않은 자원 또는 아직 발생하지 않은 이벤트에 의존할 때 상기 원격 메소드의 추가적인 처리를 중단하고, 상기 원격 메소드로부터의 자원을 양도하는 단계Discontinuing further processing of the remote method and relinquishing resources from the remote method when the remote method relies on unavailable resources or events that have not yet occurred 를 포함하되, 상기 양도 단계가,Including, but the transfer step, 상기 서버 시스템 상의 다른 프로세스 및 메소드에 의해 사용하기 위해 상기 원격 메소드 시스템에 이전에 할당된 자원을 양도하는 단계,Transferring resources previously allocated to the remote method system for use by other processes and methods on the server system, 상기 원격 메소드에 연관된 실행 상태, 및 상기 원격 메소드 호출에 연관된 원격 프로시져 호출(RPC) 상태를 제공하여, 적절한 시간 기간에 상기 원격 메소드를 계속 처리하게 하는 단계, 및Providing an execution state associated with the remote method, and a remote procedure call (RPC) state associated with the remote method call to continue processing the remote method in an appropriate time period; and 이용가능하지 않은 상기 자원이 해제되어, 상기 원격 메소드 또는 상기 원격 메소드의 중단을 초래한 이벤트에 이용가능하게 될 때까지, 상기 원격 메소드의 추가적인 처리를 차단하는 단계를 포함하는 방법.Blocking further processing of the remote method until the resource that is not available is released and becomes available to the remote method or the event that caused the remote method to cease. 네트워크를 통해 클라이언트 시스템에 동작가능하게 결합된 복수의 자원들을 갖는 서버 시스템에 대해 수행되며, 이전에 중단된 원격 메소드를 인에이블시켜 상기 서버 시스템에 대한 처리를 계속하게 하는 수행되는 방법에 있어서,A method performed on a server system having a plurality of resources operatively coupled to a client system over a network, the method being performed to enable processing of the server system by continuing to enable a previously interrupted remote method. 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하는 단계 - 상기 연속 이벤트는 상기 원격 메소드에 대한 필요한 자원이 이용가능하게 되거나 또는 상기 원격 메소드의 중단을 이전에 초래한 이벤트가 발생할 때 발생됨-;Receiving an indication that a continuation event associated with a suspended remote method has occurred, wherein the continuation event is generated when a required resource for the remote method becomes available or an event has occurred that previously caused the abort of the remote method -; 처리를 계속하기 위해 준비된 상기 원격 메소드에 자원을 할당하는 단계 - 상기 할당 단계는 상기 원격 메소드가 처리를 계속할 수 있다는 것을 원격 메소드 자원 관리자에게 표시하는 단계, 및 원격 메소드 자원 관리자에 의해 제어되는 자원을 상기 원격 메소드에 배분하는 단계를 포함함-;Allocating a resource to the remote method prepared to continue processing, wherein the allocating step indicates to the remote method resource manager that the remote method can continue processing, and the resource controlled by the remote method resource manager. Distributing to the remote method; 상기 할당된 자원을 이용하여 상기 원격 메소드의 실행을 계속하는 단계 - - 상기 계속 단계는 실행 상태를 갖는 상기 원격 메소드 및 RPC 상태를 갖는 원격 프로시져 호출(RPC) 시스템 - 상기 실행 상태는 중단되기 전에 상기 원격 메소드에 연관된 정보를 포함하고, 상기 RPC 상태는 상기 원격 메소드 호출에 연관된 정보를 포함함 - 을 초기화시키는 단계, 및 상기 원격 메소드로부터의 결과를 생성하는 단계를 가짐-; 및Continuing execution of the remote method using the allocated resource;-the continuing step comprises the remote method having an execution state and a remote procedure call (RPC) system having an RPC state; Including information associated with a remote method, wherein the RPC state includes information associated with the remote method invocation; and generating a result from the remote method; And 상기 서버 시스템으로부터의 결과를 상기 클라이언트 시스템 상의 클라이언트 어플리케이션에 전송하는 단계를 포함하는 방법.Sending the results from the server system to a client application on the client system. 서버 시스템에 대해 수행되며, 원격 메소드를 인에이블신켜, 처리를 계속하며 네트워크를 통해 클라이언트 시스템에 동작가능하게 결합된 상기 서버 시스템에 자원을 양도하게 하는 방법에 있어서,A method performed on a server system and enabling a remote method to continue processing and handing resources over to the server system operatively coupled to the client system over a network, the method comprising: 클라이언트 시스템에 대한 원격 메소드 호출로부터의 요청을 수신하는 단계;Receiving a request from a remote method call to a client system; 상기 서버 시스템에 연관된 상기 원격 메소드에 시스템 자원을 할당하는 단계;Allocating system resources to the remote method associated with the server system; 상기 서버 시스템에 연관된 상기 원격 메소드를 호출하는 단계;Invoking the remote method associated with the server system; 상기 원격 메소드를 처리하는데 필요한 일반적인 자원의 이용가능성을 판정하는 단계; 및Determining availability of general resources needed to process the remote method; And 상기 원격 메소드가 이용가능하지 않은 일반적인 자원에 의존할 때 상기 원격 메소드의 추가적인 처리를 중단시키는 단계를 포함하는 방법.Stopping further processing of the remote method when the remote method relies on a general resource that is not available. 제3항에 있어서, 상기 서버 시스템은 프로세서, 주 기억장치, 보조 기억장치, 디스플레이 장치, 및 입력/출력 메커니즘을 포함하는 방법.4. The method of claim 3, wherein the server system includes a processor, main storage, auxiliary storage, display, and an input / output mechanism. 제3항에 있어서, 상기 시스템은 스레드를 포함하는 방법.4. The method of claim 3, wherein the system comprises a thread. 제3항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 방법.4. The method of claim 3, wherein said general resource comprises data. 제3항에 있어서, 상기 요청은 원격 메소드 호출(RMI) 시스템을 이용하여 송신되는 방법.4. The method of claim 3, wherein the request is sent using a remote method call (RMI) system. 제3항에 있어서, 상기 중단 단계는,The method of claim 3, wherein the stopping step, 상기 서버 시스템에 시스템 자원 및 일반적인 자원을 양도하는 단계, 및Transferring system resources and general resources to the server system, and 이용가능하지 않은 상기 자원이 해제되어 상기 원격 메소드에 이용가능하게 될 때까지 상기 원격 메소드의 추가적인 처리를 차단하는 단계를 더 포함하는 방법.Blocking further processing of the remote method until the resource that is not available is released and made available to the remote method. 제8항에 있어서, 상기 중단 단계는 상기 원격 메소드에 연관된 실행 상태, 및 상기 원격 메소드에 연관된 원격 프로시져 호출(RPC) 상태를 제공하여, 적당한 시간 기간에 상기 원격 메소드에 대한 처리를 계속하는 단계를 더 포함하는 방법.9. The method of claim 8, wherein the abort step provides a running state associated with the remote method, and a remote procedure call (RPC) state associated with the remote method to continue processing for the remote method in a suitable time period. How to include more. 서버 시스템에 대해 수행되며, 이전에 중단된 원격 메소드를 인에이블시켜 상기 서버 시스템에 대한 처리를 계속하게 하며 네트워크를 통해 상기 서버 시스템에 동작가능하게 결합된 클라이언트 시스템 상의 클라이언트 어플리케이션에 대한 결과를 발생하게 하는 방법에 있어서,Runs on the server system and enables previously interrupted remote methods to continue processing for the server system and to generate results for client applications on the client system operably coupled to the server system over a network. In the way, 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하는 단계;Receiving an indication that a continuation event associated with the aborted remote method has occurred; 처리를 계속하기 위해, 시스템 자원 및 일반적인 자원을 준비된 상기 원격 메소드에 할당하는 단계;Allocating system resources and general resources to the prepared remote method to continue processing; 상기 할당된 자원을 이용하여 상기 원격 메소드의 실행을 계속하는 단계; 및Continuing execution of the remote method using the allocated resource; And 상기 원격 메소드로부터의 결과를 생성하는 단계; 및Generating a result from the remote method; And 상기 결과를 상기 서버 시스템으로부터 상기 클라이언트 시스템 상의 클라이언트 어플리케이션에 송신하는 단계를 포함하는 방법.Sending the result from the server system to a client application on the client system. 제10항에 있어서, 상기 서버 시스템은 프로세서, 주 기억장치, 보조 기억장치, 디스플레이 장치, 및 입력/출력 메커니즘을 포함하는 방법.11. The method of claim 10, wherein the server system comprises a processor, main storage, auxiliary storage, display, and an input / output mechanism. 제10항에 있어서, 상기 시스템은 스레드를 포함하는 방법.The method of claim 10, wherein the system comprises a thread. 제10항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 방법.11. The method of claim 10, wherein said general resource comprises data. 제10항에 있어서, 상기 원격 메소드의 실행을 계속하는 단계는,The method of claim 10, wherein continuing execution of the remote method comprises: 실행 상태를 갖는 상기 원격 메소드 및 RPC 상태를 갖는 원격 프로시져 호출(RPC) 시스템 - 상기 실행 상태는 중단되기 전에 상기 원격 메소드에 연관된 정보를 포함하고, 상기 RPC 상태는 상기 원격 메소드 호출에 연관된 정보를 포함함 - 을 초기화시키는 단계, 및The remote method having an execution state and a remote procedure call (RPC) system having an RPC state, the execution state including information associated with the remote method before being interrupted, the RPC state containing information associated with the remote method call Initializing, and 상기 원격 메소드로부터의 결과를 발생하는 단계를 더 포함하는 방법.Generating a result from the remote method. 제10항에 있어서, 상기 송신 단계는 원격 메소드 호출(RMI) 시스템을 이용하는 방법.The method of claim 10, wherein said transmitting step uses a remote method call (RMI) system. 컴퓨터 서버 시스템에 대해 실행되는 원격 메소드를 인에이블시켜, 상기 컴퓨터 서버 시스템에 대한 처리를 계속하게 하며 이에 자원을 양도하게 하는 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,A computer readable medium comprising instructions for enabling a remote method executed on a computer server system to continue processing for the computer server system and to transfer resources thereto. 클라이언트 시스템에 대한 원격 메소드 호출으로부터의 요청을 수신하는 단계;Receiving a request from a remote method call to a client system; 시스템 자원을 상기 서버 시스템에 연관된 상기 원격 메소드에 할당하는 단계;Allocating system resources to the remote method associated with the server system; 상기 서버 시스템에 연관된 상기 원격 메소드를 호출하는 단계;Invoking the remote method associated with the server system; 상기 원격 메소드를 처리하는데 필요한 일반적인 자원의 이용가능성을 판정하는 단계; 및Determining availability of general resources needed to process the remote method; And 상기 원격 메소드가 이용가능하지 않은 일반적인 자원에 의존할 때, 상기 원격 메소드의 추가적인 처리를 중단시키는 단계를 포함하는 컴퓨터 판독가능 매체.Stopping the further processing of the remote method when the remote method relies on a general resource that is not available. 제16항에 있어서, 상기 시스템은 스레드를 포함하는 컴퓨터 판독가능 매체.17. The computer readable medium of claim 16, wherein the system comprises a thread. 제16항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 컴퓨터 판독가능 매체.17. The computer readable medium of claim 16, wherein the general resource comprises data. 제16항에 있어서, 상기 요청은 원격 메소드 호출(RMI) 시스템을 이용하여 송신되는 컴퓨터 판독가능 매체.17. The computer readable medium of claim 16, wherein the request is transmitted using a remote method call (RMI) system. 제16항에 있어서, 상기 중단은The method of claim 16, wherein the interruption is 시스템 자원 및 일반적인 자원을 상기 서버 시스템에 양도하도록 구성된 양도 모듈, 및 이용가능하지 않은 상기 자원이 해제되어 상기 원격 메소드에 이용가능하게 될 때까지 상기 원격 메소드의 추가적인 처리를 차단하도록 구성된 차단 모듈에 의해 더 수행되는 컴퓨터 판독가능 매체.A transfer module configured to transfer system resources and general resources to the server system, and a blocking module configured to block further processing of the remote method until the unavailable resource is released and made available to the remote method. Computer readable medium further performed. 이전에 중단된 원격 메소드를 인에이블시켜 서버 시스템에 대한 처리를 계속하게 하며, 클라이언트 시스템 상의 클라이언트 어플리케이션에 대한 결과를 발생하게 하는 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,A computer readable medium comprising instructions for enabling a previously interrupted remote method to continue processing for a server system and for generating a result for a client application on the client system. 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하는 단계;Receiving an indication that a continuation event associated with the aborted remote method has occurred; 처리를 계속하기 위해, 시스템 자원 및 일반적인 자원을 준비된 상기 원격 메소드에 할당하는 단계;Allocating system resources and general resources to the prepared remote method to continue processing; 상기 할당된 자원을 이용하여 상기 원격 메소드의 실행을 계속하는 단계; 및Continuing execution of the remote method using the allocated resource; And 상기 원격 메소드로부터의 결과를 생성하는 단계; 및Generating a result from the remote method; And 상기 결과를 상기 서버 시스템으로부터 상기 클라이언트 시스템 상의 클라이언트 어플리케이션에 송신하는 단계를 포함하는 컴퓨터 판독가능 매체.And transmitting the result from the server system to a client application on the client system. 제21항에 있어서, 상기 시스템은 스레드를 포함하는 컴퓨터 판독가능 매체.The computer readable medium of claim 21, wherein the system comprises a thread. 제21항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 컴퓨터 판독가능 매체.23. The computer readable medium of claim 21, wherein the general resource comprises data. 제21항에 있어서, 상기 송신 단계는 원격 메소드 호출(RMI) 시스템을 이용하는 컴퓨터 판독가능 매체.22. The computer readable medium of claim 21, wherein the transmitting step uses a remote method call (RMI) system. 원격 메소드를 인에이블시켜, 처리를 계속하게 하며, 네트워크를 통해 클라이언트 시스템에 동작가능하게 결합된 서버 시스템에 자원을 양도하게 하는 장치에 있어서,An apparatus for enabling a remote method to continue processing and for transferring resources over a network to a server system operatively coupled to the client system, 클라이언트 시스템에 대한 원격 메소드 호출으로부터의 요청을 수신하도록 구성된 수신기 모듈;A receiver module configured to receive a request from a remote method call to a client system; 시스템 자원을 상기 서버 시스템에 연관된 상기 원격 메소드에 할당하도록 구성된 할당 모듈;An allocation module configured to allocate system resources to the remote method associated with the server system; 상기 서버 시스템에 연관된 상기 원격 메소드를 호출하도록 구성된 호출 모듈;A calling module configured to call the remote method associated with the server system; 상기 원격 메소드를 처리하는데 필요한 일반적인 자원이 이용가능하지 않는지의 여부를 판정하도록 구성된 판정 모듈; 및A determining module, configured to determine whether general resources required to process the remote method are not available; And 상기 원격 메소드가 이용가능하지 않은 일반적인 자원에 의존할 때, 상기 원격 메소드의 추가적인 처리를 중단시키도록 구성된 중단 모듈을 구비하는 장치.And an abort module configured to abort further processing of the remote method when the remote method relies on general resources that are not available. 제25항에 있어서, 상기 서버 시스템은 프로세서, 주 기억장치, 보조 기억장치, 디스플레이 장치, 및 입력/출력 메커니즘을 포함하는 장치.27. The apparatus of claim 25, wherein the server system comprises a processor, main storage, auxiliary storage, display, and input / output mechanism. 제25항에 있어서, 상기 시스템은 스레드를 포함하는 장치.27. The apparatus of claim 25, wherein the system comprises a thread. 제25항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 장치.27. The apparatus of claim 25, wherein the general resource comprises data. 제25항에 있어서, 상기 요청은 원격 메소드 호출(RMI) 시스템을 이용하여 전송되는 장치.27. The apparatus of claim 25, wherein the request is sent using a remote method call (RMI) system. 제25항에 있어서, 상기 중단 모듈은,The method of claim 25, wherein the stop module, 시스템 자원 및 일반적인 자원을 상기 서버 시스템에 양도하도록 구성된 양도 모듈, 및A transfer module configured to transfer system resources and general resources to the server system, and 이용가능하지 않은 상기 자원이 해제되어 상기 원격 메소드에 이용가능하게 될 때까지, 상기 원격 메소드의 추가적인 처리를 차단하도록 구성된 차단 모듈을 더 구비하는 장치.And a blocking module configured to block further processing of the remote method until the resource that is not available is released and made available to the remote method. 이전에 중단된 원격 메소드를 인에이블시켜, 서버 시스템에 대한 처리를 계속하게 하며, 네트워크를 통해 상기 서버 시스템에 동작가능하게 결합된 클라이언트 시스템에 대한 클라이언트 어플리케이션에 대한 결과를 발생하게 하는 장치에 있어서,An apparatus for enabling a previously aborted remote method to continue processing for a server system and to generate a result for a client application for a client system operatively coupled to the server system over a network, the method comprising: 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하도록 구성된 수신기 모듈;A receiver module configured to receive an indication that a continuation event associated with an aborted remote method has occurred; 처리를 계속하기 위해, 시스템 자원 및 일반적인 자원을 준비된 상기 원격 메소드에 할당하도록 구성된 할당 모듈;An allocation module, configured to allocate system resources and general resources to the prepared remote method to continue processing; 상기 할당된 자원을 이용하여 상기 원격 메소드의 실행을 계속하도록 구성된 연속 모듈;A continuous module configured to continue execution of the remote method using the allocated resource; 상기 원격 메소드로부터의 결과를 생성하도록 구성된 발생 모듈; 및A generation module configured to generate a result from the remote method; And 상기 결과를 상기 서버 시스템으로부터 상기 클라이언트 시스템 상의 상기 클라이언트 어플리케이션에 송신하도록 구성된 송신 모듈을 포함하는 장치.And a sending module, configured to send the result from the server system to the client application on the client system. 제31항에 있어서, 상기 서버 시스템은 프로세서, 주 기억장치, 보조 기억장치, 디스플레이 장치, 및 입력/출력 메커니즘을 포함하는 장치.32. The apparatus of claim 31, wherein the server system comprises a processor, main storage, auxiliary storage, display, and input / output mechanism. 제31항에 있어서, 상기 시스템은 스레드를 포함하는 장치.32. The apparatus of claim 31 wherein the system comprises a thread. 제31항에 있어서, 상기 일반적인 자원은 데이터를 포함하는 장치.32. The apparatus of claim 31 wherein the general resource comprises data. 제31항에 있어서, 상기 송신 모듈은 원격 메소드 호출(RMI) 시스템을 이용하는 장치.32. The apparatus of claim 31, wherein the transmitting module uses a remote method call (RMI) system. 서버 시스템에 결합되어 있으며, 원격 메소드를 인에이블시켜, 네트워크를 통해 클라이언트 시스템에 동작가능하게 결합된 상기 서버 시스템에 자원을 양도하기 위한 장치에 있어서,17. An apparatus for coupling resources to a server system coupled to a server system and enabling remote methods to be operatively coupled to a client system over a network, the apparatus comprising: 클라이언트 시스템에 대한 원격 메소드 호출으로부터의 요청을 수신하기 위한 수단;Means for receiving a request from a remote method call to a client system; 시스템 자원을 상기 서버 시스템에 연관된 상기 원격 메소드에 할당하기 위한 수단;Means for assigning system resources to the remote method associated with the server system; 상기 서버 시스템에 연관된 상기 원격 메소드를 호출하기 위한 수단;Means for invoking the remote method associated with the server system; 상기 원격 메소드를 처리하는데 필요한 일반적인 자원의 이용가능성을 판정하기 위한 수단; 및Means for determining the availability of general resources needed to process the remote method; And 상기 원격 메소드가 이용가능하지 않은 일반적인 자원에 의존할 때, 상기 원격 메소드의 추가적인 처리를 중단시키기 위한 수단을 구비하는 장치.Means for stopping further processing of the remote method when the remote method relies on a general resource that is not available. 제36항에 있어서, 상기 서버 시스템에 동작가능하게 결합된 클라이언트 시스템을 더 구비하는 장치.37. The apparatus of claim 36, further comprising a client system operatively coupled to the server system. 서버 시스템에 결합되어 있으며, 이전에 중단된 원격 메소드를 인에이블시켜, 상기 서버 시스템에 대한 처리를 계속하게 하며, 네트워크를 통해 상기 서버 시스템에 동작가능하게 결합된 클라이언트 시스템에 대한 클라이언트 어플리케이션에 대한 결과를 발생하기 위한 장치에 있어서,Results for the client application for the client system coupled to the server system, enabling the remote method that was previously interrupted, to continue processing for the server system, and operably coupled to the server system over the network. In the apparatus for generating a, 중단된 원격 메소드에 연관된 연속 이벤트가 발생하였다는 표시를 수신하기 위한 수단;Means for receiving an indication that a continuation event associated with an aborted remote method has occurred; 처리를 계속하기 위해, 시스템 자원 및 일반적인 자원을 준비된 상기 원격 메소드에 할당하기 위한 수단;Means for allocating system resources and general resources to the prepared remote method to continue processing; 상기 할당된 자원을 이용하여 상기 원격 메소드의 실행을 계속하기 위한 수단;Means for continuing execution of the remote method using the allocated resource; 상기 원격 메소드로부터의 결과를 생성하기 위한 수단; 및Means for generating a result from the remote method; And 상기 결과를 상기 서버 시스템으로부터 상기 클라이언트 시스템 상의 상기 클라이언트 어플리케이션에 송신하기 위한 수단을 구비하는 장치.Means for sending the result from the server system to the client application on the client system. 제38항에 있어서, 상기 서버 시스템에 동작가능하게 결합된 클라이언트 시스템을 더 구비하는 장치.39. The apparatus of claim 38, further comprising a client system operatively coupled to the server system.
KR1020007009397A 1998-02-26 1999-02-18 Method and apparatus for the suspension and continuation of remote processes KR20010041297A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US7604898P 1998-02-26 1998-02-26
US60/076,048 1998-02-26
US09/044,917 US6237024B1 (en) 1998-03-20 1998-03-20 Method and apparatus for the suspension and continuation of remote processes
US09/044,917 1998-03-20
PCT/US1999/003520 WO1999044131A1 (en) 1998-02-26 1999-02-18 Method and apparatus for the suspension and continuation of remote processes

Publications (1)

Publication Number Publication Date
KR20010041297A true KR20010041297A (en) 2001-05-15

Family

ID=26722150

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007009397A KR20010041297A (en) 1998-02-26 1999-02-18 Method and apparatus for the suspension and continuation of remote processes

Country Status (6)

Country Link
EP (1) EP1057108A1 (en)
JP (1) JP2002505471A (en)
KR (1) KR20010041297A (en)
CN (1) CN1298502A (en)
AU (1) AU3300499A (en)
WO (1) WO1999044131A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101357975B1 (en) * 2011-10-17 2014-02-03 엔에이치엔엔터테인먼트 주식회사 Method and apparatus for providing remote procedure call service using coroutine

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1128266A3 (en) * 2000-02-22 2004-02-25 Orsus Solutions Limited Cooperative software application architecture
US7076551B2 (en) 2000-04-03 2006-07-11 Texas Instruments Incorporated Using remote procedure calls to manage co-processor resources
US7493391B2 (en) * 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
EP1249758B1 (en) 2001-04-11 2012-03-07 Texas Instruments Incorporated Using remote procedure calls to manage co-processor resources
US7168612B2 (en) * 2001-12-24 2007-01-30 Axalto Inc Method and apparatus for processing transactions in a data processing system
US20030182426A1 (en) * 2002-03-21 2003-09-25 Sun Microsystems, Inc. Apparatus and method of lazy connection transaction enlistment
US7496494B2 (en) 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US9043194B2 (en) 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7953588B2 (en) 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US8108843B2 (en) 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
CN1306403C (en) * 2003-12-30 2007-03-21 北京金山数字娱乐科技有限公司 Network servicer sustem used in recreation
JP2007108804A (en) * 2004-01-27 2007-04-26 Matsushita Electric Ind Co Ltd Application start arbitration system
US9323571B2 (en) * 2004-02-06 2016-04-26 Intel Corporation Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor
US20050179936A1 (en) * 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
JP4208783B2 (en) * 2004-07-28 2009-01-14 キヤノン株式会社 Image processing apparatus, set time adjustment method and program
JP4126702B2 (en) * 2004-12-01 2008-07-30 インターナショナル・ビジネス・マシーンズ・コーポレーション Control device, information processing system, control method, and program
US20070174655A1 (en) * 2006-01-18 2007-07-26 Brown Kyle G System and method of implementing automatic resource outage handling
CN101414340B (en) * 2007-10-15 2015-12-02 北京瑞星信息技术有限公司 A kind of method preventing remote thread from starting
WO2012008016A1 (en) * 2010-07-13 2012-01-19 富士通株式会社 Multithread processing device, multithread processing system, multithread processing program, and multithread processing method
US8473957B2 (en) * 2010-12-13 2013-06-25 Microsoft Corporation Architecture for providing on-demand and background processing
US20150341445A1 (en) * 2014-05-23 2015-11-26 Radoslav Nikolov Hybrid applications operating between on-premise and cloud platforms
CN107092532B (en) * 2017-03-22 2020-08-04 武汉斗鱼网络科技有限公司 Remote calling method and remote calling device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE116456T1 (en) * 1990-10-19 1995-01-15 Cray Research Inc SCALABLE PARALLEL VECTOR COMPUTER SYSTEM.
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
GB9414951D0 (en) * 1994-07-25 1994-09-14 British Telecomm Computer system having client-server architecture
JPH0962526A (en) * 1995-08-28 1997-03-07 Fujitsu Ltd Fault resistant rpc system and method therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101357975B1 (en) * 2011-10-17 2014-02-03 엔에이치엔엔터테인먼트 주식회사 Method and apparatus for providing remote procedure call service using coroutine

Also Published As

Publication number Publication date
AU3300499A (en) 1999-09-15
JP2002505471A (en) 2002-02-19
CN1298502A (en) 2001-06-06
WO1999044131A1 (en) 1999-09-02
EP1057108A1 (en) 2000-12-06

Similar Documents

Publication Publication Date Title
US6237024B1 (en) Method and apparatus for the suspension and continuation of remote processes
KR20010041297A (en) Method and apparatus for the suspension and continuation of remote processes
US7246167B2 (en) Communication multiplexor using listener process to detect newly active client connections and passes to dispatcher processes for handling the connections
JP4690437B2 (en) Communication method, communication apparatus and program for network application
US6209018B1 (en) Service framework for a distributed object network system
KR100898315B1 (en) Enhanced runtime hosting
US7051330B1 (en) Generic application server and method of operation therefor
EP1442372B1 (en) Providing isolation through process attachable virtual machines
JP4287276B2 (en) System for application server messaging using multiple shipping pools
US8180973B1 (en) Servicing interrupts and scheduling code thread execution in a multi-CPU network file server
US8209701B1 (en) Task management using multiple processing threads
US9411636B1 (en) Multi-tasking real-time kernel threads used in multi-threaded network processing
US6625638B1 (en) Management of a logical partition that supports different types of processors
EP0783150A2 (en) System and method for space efficient object locking
US20150154056A1 (en) Migrating a running, preempted workload in a grid computing system
US20170277787A1 (en) Systems and methods for remote access to db2 databases
EP1564635A2 (en) Scalable print spooler
GB2302966A (en) Transaction processing with a reduced-kernel operating system
US6470346B2 (en) Remote computation framework
US6587955B1 (en) Real time synchronization in multi-threaded computer systems
EP0695993A2 (en) System and method for interprocess communication
US20080065838A1 (en) Data processing system with memory access
Barton-Davis et al. Adding Scheduler Activations to Mach 3.0.
Sarwar Operating System
Veerappan et al. Mach micro kernel–A case study

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination