KR20050003430A - Cooperation of concurrent, distributed networks of resources - Google Patents

Cooperation of concurrent, distributed networks of resources Download PDF

Info

Publication number
KR20050003430A
KR20050003430A KR10-2004-7018145A KR20047018145A KR20050003430A KR 20050003430 A KR20050003430 A KR 20050003430A KR 20047018145 A KR20047018145 A KR 20047018145A KR 20050003430 A KR20050003430 A KR 20050003430A
Authority
KR
South Korea
Prior art keywords
query
expression
processes
queue
constraint
Prior art date
Application number
KR10-2004-7018145A
Other languages
Korean (ko)
Other versions
KR101187486B1 (en
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 US10/303,379 external-priority patent/US7117487B2/en
Priority claimed from US10/303,407 external-priority patent/US20030212761A1/en
Priority claimed from US10/303,445 external-priority patent/US7055142B2/en
Priority claimed from US10/303,343 external-priority patent/US7216335B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050003430A publication Critical patent/KR20050003430A/en
Application granted granted Critical
Publication of KR101187486B1 publication Critical patent/KR101187486B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

프로토콜 기반 애플리케이션을 프로세스로서 표현하기 위해 프로세스 기반 언어로 작성된 표현식을 포함하는 프로그램(324, 320)이 개시되어 있다. 프로세스 커널(320C, 306C, 304C, 308C)은 프로그램 내의 표현식을 실행한다. 이 표현식은 커스터마이즈가능한 태그 기반 언어(302, 304, 306, 308)로 작성된 이름있는 데이터 구성 방식(named organizational scheme of data)이 이 이름있는 데이터 구성 방식을 전송 및 수신하는 프로세스들 간에 프로세스로서 교환될 수 있도록 함으로써 프로세스들의 상호작용을 지정한다.Programs (324, 320) are disclosed that include expressions written in a process based language to represent a protocol based application as a process. Process kernels 320C, 306C, 304C, and 308C execute expressions in the program. This expression is exchanged as a process between processes in which a named organizational scheme of data written in customizable tag-based languages 302, 304, 306, and 308 sends and receives this named data organization. By specifying the interaction of processes.

Description

병행 분산 자원 네트워크의 협동{COOPERATION OF CONCURRENT, DISTRIBUTED NETWORKS OF RESOURCES}Collaboration of Parallel Distributed Resource Networks {COOPERATION OF CONCURRENT, DISTRIBUTED NETWORKS OF RESOURCES}

자연어는 프로그래밍 언어 또는 기계어와는 달리, 사람이 말하고 쓰는 언어이다. 프로그래밍 언어는 궁극적으로 컴퓨터에 의해 처리되고 실행될 수 있는 일련의 명령어를 정의하는 데 사용될 수 있는 임의의 인공 언어이다. 무엇이 프로그래밍 언어이고 무엇이 아닌지를 정의하는 것은 까다로울 수 있지만, 일반적인 사용은 프로그래밍 언어를 사용하여 표현된 소스 코드로부터 컴퓨터가 동작하는 데 사용할 필요가 있는 코드인 기계 코드로의 번역 프로세스가 컴파일러 등의 또하나의 프로그램에 의해 자동화되어 있음을 의미한다. 자연어 및 프로그래밍 언어는 둘다 사람 대 사람 또는 사람 대 기계 등의 한 개체로부터 또하나의 개체로 정보 및 명령어를 전달하는 체계적인 수단이다. 그러나, 종래의 프로그래밍 언어는 사람으로부터 기계로 정보 및 명령어를 전달하는 불완전한 방식이었다.Natural language, unlike programming or machine language, is a language spoken and written by humans. A programming language is any artificial language that can be used to define a series of instructions that can ultimately be processed and executed by a computer. Defining what is a programming language and what is not can be tricky, but a common use is that the process of translating from source code expressed using a programming language into machine code, which is the code that the computer needs to use to operate, is another such as a compiler. Means that it is automated by the program. Both natural and programming languages are systematic means of conveying information and instructions from one entity, such as person to person or person to machine, to another. However, conventional programming languages have been an incomplete way of conveying information and instructions from humans to machines.

예를 들어, 컴퓨터 시대의 초기에, 어셈블리어가 저레벨 프로그래밍 언어를 형성하는 데 사용되었다. 어셈블리어는 각각의 서술문(statement)이 하나의 기계 명령어에 대응하는 약어 또는 니모닉(mnemonic) 코드를 사용한다. 시스템 하드웨어 및 자원과의 직접적인 프로그래머 상호작용으로 인한 높은 효율성의 이점과 함께, 어셈블리어 프로그램에 사소한 변화라도 있은 경우 데이터 구조 등의 임시적 구성 방식을 수동으로 갱신해야만 하는 바람직하지 않은 결과가 있었다. 기반이 되는 기계어 상부에 추상화 레벨을 제공하는 오늘날의 고레벨 언어는 어셈블리어에서 진화하였다. 고레벨 언어 서술문은 일반적으로 2개 이상의 기계어 명령어로 번역되는 (보통 영어로 된) 키워드를 사용한다. 고레벨 언어는 데이터 구조에 대한 지원을 내장하고 있으며 언어의 구조를 정의하는 일련의 구문적 및 의미론적 규칙을 정의한다. 고레벨 언어로 작성된 프로그램에 작은 변경이 행해지면, 미리 정해진 일련의 구문적 및 의미론적 규칙을 따름으로써 그 프로그램을 오브젝트 코드로 변환하는 컴파일러는 그 프로그램에 행해진 변경과 일치하도록 필요에 따라 오브젝트 코드를 리플로우(reflow)하거나 오히려 프로그래머에게 명백한 프로그래밍 에러를 통지한다.For example, in the early days of the computer age, assembly language was used to form low-level programming languages. Assembly language uses abbreviations or mnemonic codes where each statement corresponds to a machine instruction. In addition to the high efficiency benefits of direct programmer interaction with system hardware and resources, there are undesirable consequences of manually updating temporary constructs such as data structures when minor changes are made to assembly language programs. Today's high-level languages, which provide a level of abstraction on top of the underlying machine language, have evolved from assembly language. High-level language statements usually use keywords (usually in English) that are translated into two or more machine instructions. High-level languages have built-in support for data structures and define a set of syntactic and semantic rules that define the structure of the language. When small changes are made to a program written in a high-level language, a compiler that converts the program into object code by following a predetermined set of syntactic and semantic rules will ripple the object code as needed to match the changes made to the program. Reflow or rather notify the programmer of an obvious programming error.

프로그래머는 호출측 애플리케이션 프로그래밍 인터페이스(API)의 서명을 정의된 API의 대응하는 서명에 대조해 검사함으로써 API의 호출에서의 에러를 검출하기 위해 컴파일러의 기능을 이용한다. API는 프로그램이 원하는 태스크를 수행하기 위해 받아들이게 되는 입력의 종류 및 프로그램이 원하는 태스크의 수행 후에 반환하게 되는 출력의 종류를 정의하는 프로그램의 인터페이스이다. API에 의해 프로그램들은 각각이 독자적으로 제공할 수 있는 것보다 많은 기능을 제공하기 위해 서로 협력할 수 있게 된다.The programmer uses the compiler's functionality to detect errors in invocations of the API by checking the signature of the calling application programming interface (API) against the corresponding signature of the defined API. An API is an interface for a program that defines the type of input that the program will accept to perform the desired task and the type of output that the program will return after performing the desired task. APIs allow programs to collaborate with each other to provide more functionality than each can provide on its own.

API는 API의 기초를 이루는 프로그램의 거동이 아니라, API에 무엇이 제공되어야만 하는지 및 API로부터 무엇이 반환되는지를 지정할 뿐이다. 예를 들어, 적절히 협력하기 위해, "초기화(initialization)" 프로그램은 "작업 실행(do work)" 프로그램이 호출되기 이전에 호출되어야만 하고, 이에 대응하여 "작업 실행" 프로그램은 "클린업(clean up)" 프로그램이 호출되기 전에 호출되어야만 한다. API는 이러한 순서 개념 또는 프로그램이 어떻게 협력해야 하는지를 표현하는 임의의 다른 개념을 포착하지 않는다. 그 결과, 예전의 어셈블리 프로그램을 유지하는 고된 작업과 같이, 프로그래머들은 프로그램들이 올바르게 협력하도록 보장하기 위해 현재의 고레벨 언어의 표현력의 한계 내에서 작업함으로써 다시 한번 고된 일을 해야만 한다.The API does not specify the behavior of the program that underlies the API, but merely specifies what must be provided to the API and what is returned from the API. For example, in order to cooperate properly, the "initialization" program must be called before the "do work" program is called, and in response, the "work execution" program is called "clean up". "It must be called before the program is called. The API does not capture this ordering concept or any other concept that expresses how the program should cooperate. As a result, like the hard work of maintaining old assembly programs, programmers have to work hard once again by working within the limits of expressiveness of current high-level languages to ensure that programs work correctly.

상기한 문제점은 웹 서비스의 급증으로 악화되었으며, 이 웹 서비스는 기본적으로 인터넷에 의해 상호 연결된 임의의 수의 컴퓨팅 장치들 상에 존재하는 프로그램이다. 반면에, 비록 고되기는 하지만 하나의 컴퓨팅 장치 내의 프로그램들의 협력의 지정 및 고된 검증은 착수될 수 있지만, (다수의 컴퓨팅 장치로부터 다수의 메시지를 전송하는) 다수의 웹 서비스의 협력과 관련된 복잡한 발레(ballet)를 검증하는 작업은 현재의 고레벨 언어의 표현력의 부족으로 인해 이겨내기 어려운 문제이다. 그 중에서도 특히 순서 및 타이밍 등의 프로그램 또는 서비스의 협력적 차원이 프로그램적으로 검증될 수 있도록 이러한 협력적 차원을 표현할 수 있는 프로그래밍 언어가 필요하다.The problem is exacerbated by the proliferation of web services, which are basically programs on any number of computing devices interconnected by the Internet. On the other hand, although painstaking designation and intensive validation of the collaboration of programs within one computing device can be undertaken, the complex ballet associated with the collaboration of multiple web services (sending multiple messages from multiple computing devices) can be undertaken. Ballet verification is a difficult problem to overcome due to the lack of expressiveness of current high-level languages. Among them, a programming language that can express such a cooperative dimension is needed so that the cooperative dimension of a program or service such as order and timing can be programmatically verified.

한가지 부분적인 해결책은 도 1에 도시한 시스템(100)과 같은 상호작용하는 병행 시스템에서의 프로세스를 기술하기 위한 수학적 언어인 π-연산구조(π-calculus)의 사용이다. 시스템(100)은 근거리 통신망 또는 인터넷(104) 등의 원거리 통신망 상의 서버(106) 등의 또하나의 컴퓨터에 의해 제공되는 공유 네트워크 자원에 액세스하는 컴퓨터인 클라이언트(102)를 포함한다. 다수의 웹 서비스(108, 116)는 클라이언트(102) 및 서버(106) 상에 프로그램으로서 정적으로 저장되어 있다.One partial solution is the use of π-calculus, a mathematical language for describing processes in interactive parallel systems, such as the system 100 shown in FIG. System 100 includes a client 102, which is a computer that accesses shared network resources provided by another computer, such as server 106 on a local area network or a telecommunications network, such as the Internet 104. A number of web services 108, 116 are stored statically as programs on the client 102 and the server 106.

초기의 오퍼레이팅 시스템은 사용자로 하여금 한번에 하나의 프로그래만을 실행할 수 있게 해주었다. 사용자는 프로그램을 실행시키고 그 프로그램이 완료되기를 기다린 다음에 또다른 프로그램을 실행시켰다. 현대의 오퍼레이팅 시스템은 사용자로 하여금 한번에 2개 이상의 프로그램 또는 심지어 동일한 프로그램의 다수의 복사본을 동시에 실행(작동)시킬 수 있게 해준다. 쓰레드는 프로세서 시간을 프로그램에 할당하기 위해 오퍼레이팅 시스템에 의해 사용되는 기본 단위이다. 쓰레드는 또하나의 쓰레드에 의해 현재 실행되고 있는 부분을 포함한, 프로그래밍 코드의 임의의 부분을 포함할 수 있다. 프로세서는 한번에 하나의 쓰레드만을 실행할 수 있다. 그렇지만, 멀티태스킹 오퍼레이팅 시스템, 즉 사용자로 하여금 다수의 프로그램을 실행시킬 수 있게 해주는 오퍼레이팅 시스템은 다수의 프로그램을 동시에 실행시키는 것처럼 보인다. 실제로는, 멀티태스킹 오퍼레이팅 시스템은 프로그램들 간을 계속하여 왔다갔다하면서 한 프로그램으로부터의 쓰레드를 실행한 다음에 다른 프로그램으로부터의 쓰레드를 실행하는 등을 한다. 각각의 쓰레드가 그의 서브 태스크를 완료할 때, 프로세서는 실행할 또하나의 쓰레드를 받는다. 프로세서의 엄청난 속도가 모든 쓰레드가 동시에 실행되는 착각을 일으킨다.Early operating systems allowed users to run only one program at a time. The user ran the program, waited for it to complete, and then ran another program. Modern operating systems allow a user to simultaneously run (run) two or more programs or even multiple copies of the same program at a time. Threads are the basic units used by the operating system to allocate processor time to programs. A thread can contain any part of programming code, including the part currently being executed by another thread. The processor can only run one thread at a time. However, a multitasking operating system, ie an operating system that allows a user to execute multiple programs, appears to run multiple programs simultaneously. In practice, a multitasking operating system can run back and forth between programs, running threads from one program, then threads from another program, and so on. When each thread completes its subtasks, the processor receives another thread to execute. The tremendous speed of the processor creates the illusion that all threads are running at the same time.

용어 멀티-태스킹 및 멀티-프로세싱은 때로는 서로 교환하여 사용될 수 있지만, 이들은 서로 다른 의미를 갖는다. 멀티-프로세싱은 멀티 프로세서를 필요로 한다. 머신이 하나의 프로세서만을 가지고 있는 경우, 오퍼레이팅 시스템은 멀티-태스킹을 할 수 있지만 멀티-프로세싱은 할 수 없다. 단일 머신이 다수의 프로세서를 가지고 있거나 각각이 프로세서를 가지고 있는 다수의 머신(클라이언트(102) 및 서버(106))이 있는 경우, 단일 머신의 오퍼레이팅 시스템 또는 다수의 머신의 오퍼레이팅 시스템은 멀티-태스킹 및 멀티-프로세싱 둘다를 행할 수 있다. 다수의 프로세서를 갖는 단일 머신 및 각각이 프로세서를 갖는 다수의 머신 양쪽 모두는 병행 시스템(concurrent system)을 정의한다. 이것이 π-연산구조의 관심 대상이다.The terms multi-tasking and multi-processing can sometimes be used interchangeably, but they have different meanings. Multi-processing requires multiple processors. If the machine has only one processor, the operating system can multi-task but not multi-processing. If a single machine has multiple processors or there are multiple machines each with a processor (client 102 and server 106), the operating system of a single machine or the operating system of multiple machines may be multi-tasking and Both multi-processing can be done. Both a single machine with multiple processors and multiple machines each with processors define a concurrent system. This is of interest for the π-operation structure.

π-연산구조의 핵심은 링크(링크(124) 등)를 통해 통신하는 독립적인 병렬 프로세스들(웹 서비스(108, 116) 등)의 시스템으로 이루어져 있다. 링크는 이하의 것, 즉 원격 프로시저 호출로서 되는 API, 생성되어 전달되고 제거될 수 있는 하이퍼텍스트 링크, 및 객체 지향 시스템에서 메소드 호출의 인수로서 전달되는 객체 참조(예를 들어, "장미(rose)") 중 임의의 것일 수 있다. 프로세스의 다른 프로세스들과의 통신 가능성은 여러가지 다른 링크에 대해 알고 있는지에 달려있다. 링크는 어떤 프로세스들만이 그를 통해 통신할 수 있도록 제한될 수 있다. π-연산구조를 다른 프로세스 언어와 구별시켜 주는 것은 제한의 범위(링크가 사용될 수 있는 콘텍스트)가 실행 동안 변할 수 있다는 것이다. 예를 들어, 웹 서비스(116)가 웹 서비스(116)만이 미리 알고 있는 API 등의 제한된 이름을, 제한의 범위 밖에 있는 웹 서비스(108)에 메시지로서 전송할 때, 그 범위는 확장된다(또는 π-연산구조의 수학적 관점(mathematic idiom)에서 돌출됨). 이것은 API를 수신하는 웹 서비스(108)를 포괄하기 위해 API의 범위가 확대됨을 의미한다. 환언하면, 웹 서비스(108)는 이제 API에 의해 표현된 함수를 호출할 수 있지만, 이전에는 웹 서비스(108)는 API에 대해 알지 못하였고 따라서 API를 호출할 수 없었다. 이 절차에 의해 프로세스의 통신 가능성이 π-연산구조의 프레임워크 내에서 시간에 따라 변할 수 있게 된다. 프로세스는 범위 돌출(scope extrusion)을 통해 새로운 링크들의 이름을 알 수 있다. 따라서, 링크는 통신을 향상시키기 위한 전송가능량(transferable quantity)을 나타낸다.The core of the π-operation structure consists of a system of independent parallel processes (web services 108, 116, etc.) that communicate over a link (such as link 124). Links are the following: APIs that act as remote procedure calls, hypertext links that can be created, passed, and removed, and object references passed as arguments of method calls in an object-oriented system (eg, "rose" ) "). The possibility of communicating with other processes in the process depends on the knowledge of the different links. The link can be restricted so that only certain processes can communicate through it. What distinguishes the [pi] -operation from other process languages is that the scope of the restriction (the context in which the link can be used) can change during execution. For example, when the web service 116 sends a restricted name, such as an API, that the web service 116 only knows in advance, as a message to the web service 108 that is outside the limits, the range is extended (or π Protruding from the mathematical idiom of the computational structure). This means that the scope of the API is expanded to encompass the web service 108 that receives the API. In other words, the web service 108 can now call the function represented by the API, but previously the web service 108 did not know about the API and thus could not call the API. This procedure allows the communication possibilities of the process to change over time within the framework of the π-operation structure. The process can know the names of the new links through scope extrusion. Thus, the link represents a transferable quantity for improving communication.

π-연산구조에 관하여 중심을 이루고 기초적이며 변하지 않는 것은 "장미" 등의 이름에 대한 그의 강한 집중 및 이름을 링크를 통해 메시지로서 전달하는 것이다. 특히, π-연산구조는 순수 이름(pure name)을 크게 강조하며, 그 이름 각각은 단지 비트 패턴인 것으로 정의된다. 순수 이름의 한 예는 COM 컴포넌트 모델에서의 인터페이스 또는 구현을 일의적으로 식별하는 128-비트의 공간 GUID(Globally Unique Identifier)이다. 순수 이름의 다른 예는 전술한 바와 같은 함수 서명 또는 API이다. 추가로 강조하기 위해, 이러한 측면에서 상기한 문제를 생각해보자. 웹 서비스(116)로부터 웹 서비스(108)로 전송되는 3개의 API("초기화", "작업 실행", 및 "클린업")가 있지만 웹 서비스(116)가 이들 3개의 API를 특정의 순서로만(예를 들어, "초기화" 다음에 "작업 실행", 이어서 "클린업") 호출해야 하는 것으로 가정하자. 기존의 π-연산구조 및 그의 변형은 3개의 API가 웹 서비스(116)로부터 웹 서비스(108)에 도달하기 위해 링크(124)를 통해 전송될 수 있게 해주지만, 기존의 π-연산구조 및 그의 변형에서는 웹 서비스(116)가 웹 서비스(108)에 대해 3개의 API가 호출되어지는 특정의 순서를 표현해줄 방법이 없다. 이 점에서, 기존의 π-연산구조 및 그의 변형은 그 중에서도 특히 순서 및 타이밍 등의 프로그램 또는 서비스의 협력적 차원이 프로그램적으로 검증될 수 있도록 이러한 협력적 차원을 완전히 표현하지는 못한다.Central, basic and unchanging with respect to the π-operational structure is the conveying of its strong concentration and name for names such as "roses" as messages via links. In particular, the π-operation structure places great emphasis on pure names, each of which is defined as just a bit pattern. One example of a pure name is a 128-bit spatial Globally Unique Identifier (GUID) that uniquely identifies an interface or implementation in the COM component model. Another example of a pure name is a function signature or API as described above. To further emphasize, consider the above problem in this respect. There are three APIs sent from web service 116 to web service 108 ("initialization", "task execution", and "cleanup"), but web service 116 only needs to see these three APIs in a specific order ( For example, suppose that you need to call "Initialize" followed by "Execute Task" followed by "Cleanup". The existing π-operation structure and variations thereof allow three APIs to be transmitted over the link 124 to reach the web service 108 from the web service 116, but the existing π-operation structure and its In a variation, there is no way for the web service 116 to express the specific order in which three APIs are called for the web service 108. In this respect, the existing [pi] -operation structure and its variations do not fully express such cooperative dimensions such that, in particular, the cooperative dimensions of programs or services such as order and timing can be programmatically verified.

한명의 엘리자베스 여왕 시대의 시인은 형태에 있어서 은유적이지만 시대를 초월한 관찰을 구체화한 다음과 같은 격언을 간결하게 제공하였다. "이름에는 무엇이 있는가? 우리가 장미를 어떤 다른 이름으로 부르면 사탕같은 냄새가 날 것이다." 오래 전에 행해진 이러한 관찰은 π-연산구조 및 그의 변형의 현재의 문제점-이름있는 링크(링크(124) 등)를 통한 구조화된 데이터의 전달에 대한 허용오차의 결여-을 정확하게 지적한다. 실제로, π-연산구조는 안타깝게도 구조화된 데이터를 부정적인 언어 구조인 "불순한 이름(impure name)"이라고 부른다. 순수함은 바람직하지만 불순함은 싫어한다. 따라서, π-연산구조와 관련하여 불순한 이름은 확장가능 마크업 언어(XML) 문서 등의 어떤 종류의 인식가능한 구조를 갖는 데이터이다. 실제, 하나의 프로세스가 구조화된 데이터를 다른 프로세스로 전달하는 것이 유용하다(때로는 필요하다).A Queen Elizabeth's poet succinctly provided the following proverb, embodying a metaphorical but timeless observation in form. "What's in the name? If we call the rose any other name, it will smell like candy." This observation, made long ago, pinpoints the current problem of π-operational structures and their modifications—the lack of tolerance for the transfer of structured data over named links (such as link 124). In practice, the π-operations unfortunately call structured data "negative names", which are negative linguistic structures. Purity is desirable but hates impurity. Thus, an impure name in the context of a π-operation structure is data having some sort of recognizable structure, such as an extensible markup language (XML) document. In fact, it is useful (sometimes necessary) for one process to pass structured data to another process.

데이터의 흐름이 없다면, 프로세스들 간의 이동성 또는 역동성을 나타내기 위해 (아주 간접적인 방법을 제외하고는) 프로세스들간의 통신을 용이하게 하는 것이 어렵다. 이 문제를 해결하기 위해, 컴퓨터 과학자들은 프로세스가 링크를 통해 통신중에 이동될 수 있게 하는 가능성을 조사하였다. 예를 들어, 프로세스(110)는제3 프로세스(도시 생략)를 나타내는 메시지를 프로세스(118)에 전송할 수 있다. 이것은 고차 π-연산구조(higher-order π-calculus)라고 한다. π-연산구조가 순수 이름을 처리함에 있어서의 엄격성으로 인해, 링크를 통해 프로세스를 전송하지 않고, 고차 π-연산구조 변형조차도 프로세스 그 자체를 전송하지 않고 원하는 프로세스에 대한 액세스를 제공하는 이름을 전송한다.Without the flow of data, it is difficult to facilitate communication between processes (except in very indirect ways) to indicate mobility or dynamics between processes. To solve this problem, computer scientists explored the possibility of allowing a process to be moved during communication over a link. For example, process 110 may send a message to process 118 indicating a third process (not shown). This is called higher-order π-calculus. Due to the strictness of the π-operational structure in handling pure names, no names are sent over the link, and even higher order π-operational variants do not transmit the process itself, but instead provide a name that provides access to the desired process. send.

프로세스 대신에 이름을 전송하는 것은 파라미터의 값을 검색 또는 수정하기 위해 파라미터의 주소를 사용하는 참조에 의한 전달 기법, 즉 파라미터의 주소를 호출측 루틴에서 피호출 루틴으로 전달하는 종래의 프로그래밍 기법에 비유될 수 있다. 고차 π-연산구조 변형에서 참조에 의한 전달 기법을 사용함에 있어서의 주된 문제는 그 기법이 병행 시스템을 분산형으로 되지 못하도록 할 수 있다는 것이다. π-연산구조의 많은 구현, 즉 그 중에서도 특히 PICT, 노마딕(Nomadic) PICT, TyCO, Oz 및 Join이 있다. 그렇지만, 이들 다른 구현은 분산형 π-연산구조도 아니고(PICT) 고차형 π-연산구조도 아니다(노마딕 PICT, TyCO, Oz 및 Join).Sending a name instead of a process is analogous to a conventional technique of passing by parameter using the address of a parameter to retrieve or modify the value of the parameter, that is, the address of the parameter from the calling routine to the called routine. Can be. The main problem with using the reference transfer technique in higher order π-operational structures is that the technique can prevent parallel systems from becoming decentralized. There are many implementations of the π-operational structure, among others, in particular PICT, Nomadic PICT, TyCO, Oz and Join. However, these other implementations are neither distributed π-operated structures (PICTs) nor high-order π-operated structures (nomadic PICT, TyCO, Oz and Join).

따라서, 기존의 π-연산구조 및 그의 변형과 관련된 상기의 문제 및 다른 문제를 피하거나 감소시키면서 병행 분산 컴퓨팅 네트워크에서의 프로세스들이 상호작용할 수 있게 해주는 보다 나은 방법 및 시스템이 필요하다.Accordingly, there is a need for a better method and system that allows processes in a parallel distributed computing network to interact while avoiding or reducing the above and other problems associated with existing [pi] -operation structures and variations thereof.

관련 출원의 상호 참조Cross Reference of Related Application

본 출원은 여기에 인용함으로써 본 명세서에 명백히 포함되는, 2002년 5월 10일자로 출원된 발명의 명칭이 "프로세스 프로그래밍 언어(Process Programming Language)"인 미국 가특허출원 제60/379,864호, 여기에 인용함으로써 본 명세서에 명백히 포함되는, 2002년 11월 22일자로 출원된 발명의 명칭이 "프로세스 커널(Process Kernel)"인 미국 특허출원 제10/303,407호, 여기에 인용함으로써 본 명세서에 명백히 포함되는, 2002년 11월 22일자로 출원된 발명의 명칭이 "큐에서의 프로세스로서의 쿼리와 프로세스의 통합의 순열 뉘앙스(Permutation Nuances of the Integration of Processes and Queries as Processes at Queues)"인 미국 특허출원 제10/303,445호, 여기에 인용함으로써 본 명세서에 명백히 포함되는, 2002년 11월 22일자로 출원된 발명의 명칭이 "프로세스 및 쿼리를 포함하는 표현식의 구조적 등가(Structural Equivalence of Expressions Containing Processes and Queries)"인 미국 특허 출원 제10/303,379호, 및 여기에 인용함으로써 본 명세서에 명백히 포함되는, 2002년 11월 22일자로 출원된 발명의 명칭이 "프로세서로서의 쿼리와 프로세스의 진화를 규율하는 동작적 의미론 규칙(Operational Semantics Rules GoverningEvolution of Processes and Queries as Processes)"인 미국 특허 출원 제10/303,343호를 우선권 주장한다.This application is incorporated herein by reference in U.S. Provisional Application No. 60 / 379,864, entitled "Process Programming Language," filed May 10, 2002, which is expressly incorporated herein by reference. US Patent Application No. 10 / 303,407, entitled "Process Kernel", filed November 22, 2002, which is expressly incorporated herein by reference, which is expressly incorporated herein by reference. No. 10, filed November 22, 2002, entitled " Permutation Nuances of the Integration of Processes and Queries as Processes at Queues. &Quot; / 303,445, filed November 22, 2002, which is expressly incorporated herein by reference, is entitled "Structural Equivalence of Expressions Including Processes and Queries (St ructural Equivalence of Expressions Containing Processes and Queries, and U.S. Patent Application No. 10 / 303,379, and the name of the invention filed November 22, 2002, which is expressly incorporated herein by reference, refers to "a query as a processor." Priority is claimed in US Patent Application No. 10 / 303,343, "Operational Semantics Rules Governing Evolution of Processes and Queries as Processes".

본 발명은 일반적으로 네트워크화된 컴퓨터에 관한 것으로서, 보다 구체적으로는 컴퓨팅 자원의 병행 분산 네트워크(concurrent, distributed network)의 협동을 야기하는 방법에 관한 것이다.TECHNICAL FIELD The present invention relates generally to networked computers and, more particularly, to a method of causing collaboration of a parallel, distributed network of computing resources.

본 발명의 상기 측면 및 부수 이점의 대부분은 첨부 도면과 관련하여 기재된 이하의 상세한 설명을 참조하면 본 발명이 보다 잘 이해되는 것처럼 보다 용이하게 알게 될 것이다.Most of the above aspects and ancillary advantages of the present invention will become more readily apparent as the present invention is better understood with reference to the following detailed description set forth in connection with the accompanying drawings.

도 1은 π-연산구조를 사용하여 API 등의 이름을 2개의 웹 서비스 사이의 링크를 통해 전달하는 종래의 병행 시스템을 나타낸 블록도.1 is a block diagram illustrating a conventional parallel system for transmitting a name of an API or the like through a link between two web services using a π-operation structure.

도 2는 예시적인 컴퓨팅 장치를 나타내는 블록도.2 is a block diagram illustrating an exemplary computing device.

도 3a 내지 도 3c는 다수의 프로세스 사이에서 구조화된 메시지를 전달하기 위한, 본 발명에 따라 형성된 예시적인 병행 분산 시스템을 나타낸 블록도.3A-3C are block diagrams illustrating an exemplary parallel distribution system formed in accordance with the present invention for transferring structured messages between multiple processes.

도 4는 궁극적으로 컴퓨팅 자원의 병행 분산 네트워크 내의 예시적인 컴퓨팅 장치에 의해 처리되고 실행될 수 있는 일련의 명령어를 정의하는 데 사용될 수 있는 인공 언어인 예시적인 프로그래밍 언어의 주요 구문 카테고리를 나타낸 블록도.4 is a block diagram illustrating the main syntax categories of an exemplary programming language, which is an artificial language that can ultimately be used to define a set of instructions that can be processed and executed by an exemplary computing device within a parallel distributed network of computing resources.

도 5는 프로세스를 2개의 프로세스 사이에서 전달하기 위한 메시지로서 저장하기 위한, 본 발명에 따라 형성된 예시적인 큐를 보다 상세히 나타낸 블록도.5 is a block diagram illustrating in more detail an exemplary queue formed in accordance with the present invention for storing a process as a message for transfer between two processes.

도 6a 및 도 6b는 본 발명에 따라 형성된 2개의 프로그램적 문서 사이의 구조적 등가를 결정하는 기술을 나타낸 블록도.6A and 6B are block diagrams illustrating techniques for determining structural equivalence between two programmatic documents formed in accordance with the present invention.

도 7a 및 도 7b는 본 발명에 따라 형성된 병행 분산 시스템에서 2개의 프로세스 사이에서의 통신을 향상시키기 위해 2개의 큐를 융합시키는 기술을 나타낸 블록도.7A and 7B are block diagrams illustrating a technique for fusing two queues to enhance communication between two processes in a parallel distributed system formed in accordance with the present invention.

도 8은 본 발명에 따라 형성된 병행 분산 시스템에서 2개의 큐를 융합시켜프로세스들 사이의 통신을 향상시키기 위한, 본 발명에 따라 형성된 예시적인 시스템을 나타낸 블록도.8 is a block diagram illustrating an exemplary system formed in accordance with the present invention for fusing two queues in a parallel distributed system formed in accordance with the present invention to enhance communication between processes.

도 9a 및 도 9b는 2개의 데이터베이스 형태를 축약시켜 본 발명에 따라 형성된 병행 분산 시스템에서 2개의 별개의 프로세스가 통신할 수 있게 해주는 예시적인 시스템을 나타낸 블록도.9A and 9B are block diagrams illustrating an exemplary system that allows two separate processes to communicate in a parallel distributed system formed in accordance with the present invention by shortening two database types.

도 10a 내지 도 10c는 본 발명에 따라 형성된 병행 분산 시스템에서 프로세스가 다수의 데이터베이스에 액세스하는 데 사용될 수 있는 이름을 발견하기 위한, 본 발명에 따라 형성된 예시적인 시스템을 나타낸 블록도.10A-10C are block diagrams illustrating exemplary systems formed in accordance with the present invention for discovering names by which processes may be used to access multiple databases in a parallel distributed system formed in accordance with the present invention.

도 11a 내지 도 11v는 컴파일러에 의해 프로그램을 컴파일하거나 프로세스 커널을 통해 프로세스를 실행하기 위한, 본 발명에 따라 형성된 예시적인 방법을 나타낸 방법 다이어그램.11A-11V are method diagrams illustrating an exemplary method formed in accordance with the present invention for compiling a program by a compiler or executing a process through a process kernel.

본 발명에 따르면, 프로세스 기반 언어로 작성된 프로그램을 처리하는 시스템, 방법 및 컴퓨터 판독가능 매체가 제공된다. 시스템 형태의 본 발명은 프로그램을 저장하는 컴퓨터 판독가능 수단을 포함한다. 상기 프로그램은 프로토콜 기반애플리케이션을 프로세스로서 표현하기 위해 프로세스 기반 언어로 작성된 표현식을 포함한다. 상기 시스템은 또한 상기 프로그램 내의 상기 표현식을 실행하는 프로세스 커널을 포함한다. 상기 표현식은 커스터마이즈가능한 태그 기반 언어로 작성된 이름있는 데이터 구성 방식이 프로세스들 간에 프로세스로서 교환될 수 있도록 해줌으로써 프로세스들의 상호작용을 지정한다. 상기 이름있는 데이터 구성 방식은 상기 이름있는 데이터 구성 방식을 전송 및 수신하는 프로세스들의 범위에 바인딩되어 있다.According to the present invention, a system, method and computer readable medium for processing a program written in a process based language are provided. The present invention in the form of a system includes computer readable means for storing a program. The program includes expressions written in a process based language to represent protocol based applications as processes. The system also includes a process kernel that executes the expression in the program. The expression specifies the interaction of processes by allowing named data organizational schemes written in a customizable tag-based language to be exchanged as processes between processes. The named data organization method is bound to the scope of processes for transmitting and receiving the named data organization method.

본 발명의 다른 측면에 따르면, 방법 형태의 본 발명은 컴퓨터 시스템에서 구현가능하다. 본 방법은 프로세스 기반 언어로 작성된 프로그램 내의 프로세스 표현식이 실행될 때 프로토콜 기반 애플리케이션을 프로세스로서 표현하는 단계를 포함한다. 본 방법은 또한 쿼리 표현식이 실행될 때 커스터마이즈가능한 태그 기반 언어로 작성된 이름있는 데이터 구성 방식을 프로세스로서 표현하는 단계를 포함한다. 본 방법은 프로세스들이 상기 이름있는 데이터 구성 방식을 쿼리로서 큐로 전송하거나 큐로부터 수신할 때 프로세스들로 하여금 통신하게 하는 단계를 포함한다. 상기 이름있는 데이터 구성 방식은 상기 이름있는 데이터 구성 방식을 전송 또는 수신하는 프로세스들의 범위에 바인딩되어 있다.According to another aspect of the invention, the invention in the form of a method is embodied in a computer system. The method includes presenting a protocol based application as a process when a process expression in a program written in a process based language is executed. The method also includes expressing, as a process, a method of constructing named data written in a customizable tag-based language when a query expression is executed. The method includes causing processes to communicate when processes send or receive from the queue as a query the named data organization. The named data organization method is bound to the scope of processes for transmitting or receiving the named data organization method.

본 발명의 다른 측면에 따르면, 또하나의 시스템 형태의 본 발명은 프로세스 기반 언어로 작성된 프로그램에서 쿼리를 정의하고 쿼리와 큐 사이의 상호작용을 규율하는 쿼리 가상 머신을 포함한다. 본 시스템은 또한 상기 프로그램에서 프로토콜 기반 애플리케이션을 포함하는 프로세스를 정의하고 프로세스들 간의 상호작용을 규율하는 프로세스 가상 머신을 포함한다. 본 시스템은 쿼리, 큐 및 프로세스 간의 유효한 상호작용을 정의하고 또한 쿼리를 프로세스로서 해석함으로써 쿼리, 큐 및 프로세스 간의 상호작용을 규율하는 반응 가상 머신을 더 포함한다.According to another aspect of the invention, another system form of the invention includes a query virtual machine that defines a query in a program written in a process based language and governs the interaction between the query and the queue. The system also includes a process virtual machine that defines a process comprising protocol based applications in the program and governs the interaction between the processes. The system further includes a reactive virtual machine that defines valid interactions between queries, queues, and processes, and also governs interactions between queries, queues, and processes by interpreting queries as processes.

본 발명에 따르면, 프로세스 기반 언어로 작성된 프로그램을 처리하는 방법 및 컴퓨터 판독가능 매체가 제공된다. 본 발명에 따르면, 방법 형태의 본 발명은 큐, 큐 구분자(queue delimiter) 세트, 쿼리, 시퀀스 구분자(sequence delimiter), 및 다른 동작을 표현하는 구문 요소를 획득하기 위해 상기 표현식을 파싱하는 단계를 포함한다. 본 방법은 상기 표현식을, 첫번째 동작이 상기 쿼리를 상기 큐에 또하나의 프로세스로서 전송하는 것이고 그 후에 다른 동작을 계속하는 프로세스로서 해석하는 단계를 포함한다. 상기 쿼리는 데이터를 포함하고 또 데이터를 기술하는 커스터마이즈가능한 태그 기반 언어로부터 형성된 구성 방식을 포함한다.According to the present invention, a method and a computer readable medium for processing a program written in a process based language are provided. According to the present invention, the present invention in the form of a method comprises parsing the expression to obtain a syntax element representing a queue, a set of queue delimiters, a query, a sequence delimiter, and other actions. do. The method includes interpreting the expression as a process in which the first action sends the query to the queue as another process and then continues with another action. The query includes a configuration scheme formed from a customizable tag-based language that contains data and describes the data.

본 발명의 한 측면에 따르면, 프로세스 기반 언어로 작성된 표현식의 구조적 등가(structural equivalence)를 규율하는 일련의 등식 법칙을 실행하는 방법 형태의 본 발명이 제공된다. 본 방법은 제1 표현식을 파싱한다. 상기 제1 표현식은 쿼리가 프로세스와 병렬로 실행되고 있음을 기술한다. 상기 쿼리는 비어 있는 헤드와, 제2 이름에 바인딩되어 있는 제1 이름을 포함하는 보디를 갖는다. 본 방법은 상기 제1 표현식을 제2 표현식에 구조적 등가인 것으로 해석한다. 상기 제2 표현식은 상기 쿼리가 표준형(canonical form)으로 되어 있는 경우 상기 쿼리가 상기 프로세스와 병렬로 실행되고 있음을 기술한다. 상기 프로세스에서의 상기 제1 이름의 각각의 발생은 상기 제2 이름으로 대체가능하다.According to one aspect of the invention, the invention is provided in the form of a method of executing a set of equation laws that govern the structural equivalence of an expression written in a process based language. The method parses the first expression. The first expression describes that the query is running in parallel with the process. The query has a body that includes an empty head and a first name bound to a second name. The method interprets the first expression as being structurally equivalent to the second expression. The second expression describes that the query is executed in parallel with the process when the query is in canonical form. Each occurrence of the first name in the process is replaceable with the second name.

본 발명에 따르면, 프로세스 기반 언어로 작성된 프로그램을 처리하는 방법 및 컴퓨터 판독가능 매체가 제공된다. 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙(operational semantics rule)을 실행하는 방법 형태의 본 발명이 제공된다. 본 방법은 제1 표현식을 파싱하는 단계를 포함한다. 상기 제1 표현식은 프로세스가 2개의 프로세스 중의 선택임을 기술한다. 상기 2개의 프로세스 중 제1 프로세스는 제1 쿼리가 큐로 전송되고 그 후에 상기 제1 프로세스가 제1의 일련의 동작을 계속함을 표현한다. 상기 2개의 프로세스 중 제2 프로세스는 제2 쿼리가 상기 큐로 전송되고 그 후에 상기 제2 프로세스가 제2의 일련의 동작을 계속함을 표현한다. 본 방법은 상기 제1 표현식을 제2 표현식으로 축약(reduce)시키는 단계를 더 포함한다. 상기 제2 표현식은 제3 쿼리가 표준형으로 되어 있는 경우에 상기 제3 쿼리가 상기 큐로 전송되고 그 후에 상기 제1 프로세스가 상기 제2 프로세스와 병렬로 실행됨을 기술한다.According to the present invention, a method and a computer readable medium for processing a program written in a process based language are provided. The present invention is provided in the form of a method of executing a series of operational semantics rules that govern the meaning of expressions written in a process based language. The method includes parsing the first expression. The first expression describes that the process is a choice of two processes. The first of the two processes expresses that a first query is sent to a queue, after which the first process continues a first series of operations. The second of the two processes expresses that a second query is sent to the queue, after which the second process continues a second series of operations. The method further includes reducing the first expression to a second expression. The second expression describes that the third query is sent to the queue when a third query is in standard form, after which the first process is executed in parallel with the second process.

본 발명의 다른 측면에 따르면, 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙을 실행하는 또다른 방법이 제공된다. 본 방법은 제1 표현식을 파싱하는 단계를 포함한다. 상기 제1 표현식은 제1 프로세스를 기술하고 이 제1 프로세스의 제1 동작은 쿼리를 큐로 전송하는 것으로서 그 후에 상기 제1 프로세스는 제2 프로세스를 계속한다. 본 방법은 상기 제1 표현식을 제2 표현식으로 축약시키는 단계를 더 포함한다. 상기 제2 표현식은 상기 제1 쿼리가 표준형으로 되어 있는 경우에 리프트된 쿼리(lifted query)가 상기 제2 프로세스와 병렬로 실행됨을 기술한다.According to another aspect of the present invention, another method is provided for executing a set of operational semantic rules that govern the meaning of expressions written in a process based language. The method includes parsing the first expression. The first expression describes a first process and the first operation of the first process is to send a query to the queue, after which the first process continues the second process. The method further includes the step of abbreviating the first expression to a second expression. The second expression describes that the lifted query is executed in parallel with the second process when the first query is in standard form.

도 2는 본 발명에 따라 발생된 쿼리, 큐, 및 프로세스를 처리하는 것 및/또는 이후에 기술되는 프로세스 커널을 실행하는 것 등의, 본 발명의 어떤 측면을 실시하기 위한 적당한 컴퓨팅 시스템 환경(200)의 예를 나타낸 것이다. 컴퓨팅 시스템 환경(200)은 적당한 컴퓨팅 환경의 한 예에 불과하며 본 발명의 사용 또는 기능의 범위에 관한 어떤 제한을 암시하려고 하는 것이 아니다. 컴퓨팅 환경(200)은 도시되고 설명된 컴포넌트의 임의의 하나 또는 그의 조합에 관하여 어떤 의존 관계 또는 요구 조건을 갖는 것으로 해석되어서도 안된다.2 illustrates a suitable computing system environment 200 for implementing certain aspects of the present invention, such as processing queries, queues, and processes generated in accordance with the present invention, and / or executing a process kernel described later. ) Shows an example. The computing system environment 200 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Computing environment 200 should not be construed as having any dependency or requirement with respect to any one or combination of components shown and described.

본 발명은 많은 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작한다. 본 발명과 함께 사용하기에 적합할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등이 있지만 이에 한정되는 것은 아니다.The present invention operates in many other general purpose or special purpose computing system environments or configurations. Examples of known computing systems, environments and / or configurations that may be suitable for use with the present invention include personal computers, server computers, handheld or laptop devices, multiprocessor systems, microprocessor based systems, set top boxes, programmable Home appliances, network PCs, minicomputers, mainframe computers, distributed computing environments including any of the above systems or devices, and the like.

본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술된다. 일반적으로, 프로그램 모듈로는 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등이 있다.The invention is described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.

본 발명은 또한 태스크들이 통신 네트워크를 통해 연결되어 있는 원격 프로세싱 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.

도 2에 도시된 컴퓨팅 시스템 환경은 컴퓨터(210) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(210)의 컴포넌트들로는 프로세싱 유닛(220), 시스템 메모리(230), 및 시스템 메모리를 포함한 여러가지 시스템 컴포넌트를 프로세싱 유닛(220)에 연결시키는 시스템 버스(221)가 있을 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(221)는 메모리 버스나 메모리 콘트롤러, 주변 버스, 및 각종의 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함한 몇가지 유형의 버스구조 중 임의의 것일 수 있다. 제한이 아닌 예로서, 이러한 버스 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌 버스라고도 하는 PCI(Peripheral Component Interconnect) 버스가 있다.The computing system environment shown in FIG. 2 includes a general purpose computing device in the form of a computer 210. Components of the computer 210 may include, but are not limited to, a system bus 221 that couples various system components, including the processing unit 220, the system memory 230, and the system memory to the processing unit 220. no. The system bus 221 can be any of several types of bus structures, including a memory bus or a memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such bus architectures may also be referred to as an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a mezzanine bus. There is a Peripheral Component Interconnect (PCI) bus.

컴퓨터(210)는 일반적으로 각종의 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(210)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 둘다를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체 둘다를 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 임의의 다른 컴퓨터 저장 매체가 있지만, 이에 한정되는 것은 아니다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를, 반송파 또는 임의의 정보 전달 매체를 포함하는 다른 전송 메카니즘 등의 변조된 데이터 신호에 구현한다. 용어 "변조된 데이터 신호"는 그의 특성 중 하나 이상이 정보를 그 신호에 인코딩하기 위해 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체로는유선 네트워크 또는 직접 유선 연결 등의 유선 매체, 및 음향, RF, 적외선, 및 기타 무선 매체 등의 무선 매체가 있다. 상기한 것 중 임의의 것의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.Computer 210 generally includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 210 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk storage device, magnetic cassette, magnetic tape, magnetic disk storage device or other magnetic storage device, or any other Computer storage media include, but are not limited to. Communication media generally embody computer readable instructions, data structures, program modules or other data in modulated data signals, such as carrier waves or other transmission mechanisms including any information transfer media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as wired networks or direct wired connections, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.

시스템 메모리(230)는 판독 전용 메모리(ROM)(231) 및 랜덤 액세스 메모리(RAM)(232) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(210) 내의 구성요소들 사이에서의 정보의 전달을 돕는 기본적인 루틴을 포함하는 기본 입출력 시스템(233)(BIOS)은 일반적으로 ROM(231)에 저장된다. RAM(232)은 일반적으로 프로세싱 유닛(220)에 의해 직접 액세스 가능하고 및/또는 현재 그에 의해 처리되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한이 아닌 예로서, 도 2는 오퍼레이팅 시스템(234), 애플리케이션 프로그램(235), 기타 프로그램 모듈(236), 및 프로그램 데이터(237)를 도시하고 있다.System memory 230 includes computer storage media in the form of volatile and / or nonvolatile memory, such as read only memory (ROM) 231 and random access memory (RAM) 232. Basic input / output system 233 (BIOS), which includes basic routines to assist in the transfer of information between components within computer 210, such as during startup, is generally stored in ROM 231. RAM 232 generally includes data and / or program modules that are directly accessible by and / or presently being processed by processing unit 220. As a non-limiting example, FIG. 2 illustrates operating system 234, application program 235, other program module 236, and program data 237.

컴퓨터(210)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 2는 비분리형, 비휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(241), 분리형, 비휘발성 자기 디스크(252)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(251), 및 CD-ROM 또는 다른 광학 매체 등의 분리형, 비휘발성 광학 디스크(256)로부터 판독하거나 그에 기록하는 광학 디스크 드라이브(255)를 도시하고 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체상태 RAM, 고체 상태 ROM 등을 포함하지만 이에 한정되는 것은 아니다. 하드 디스크 드라이브(241)는 일반적으로 인터페이스(240) 등의 비분리형 메모리 인터페이스를 통해 시스템 버스(221)에 연결되고, 자기 디스크 드라이브(251) 및 광학 디스크 드라이브(255)는 일반적으로 인터페이스(250) 등의 분리형 메모리 인터페이스에 의해 시스템 버스(221)에 연결된다.Computer 210 may also include other removable / non-removable, volatile / nonvolatile computer storage media. By way of example only, FIG. 2 illustrates a hard disk drive 241 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 251 that reads from or writes to a removable, nonvolatile magnetic disk 252, and An optical disc drive 255 is shown for reading from or writing to a removable, nonvolatile optical disc 256, such as a CD-ROM or other optical medium. Other removable / non-removable, volatile / nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, DVDs, digital video tapes, solid state RAM, solid state ROM, and the like. It is not. Hard disk drive 241 is generally connected to system bus 221 via a non-separable memory interface, such as interface 240, and magnetic disk drive 251 and optical disk drive 255 are generally interface 250. It is connected to the system bus 221 by a separate memory interface, such as.

전술하고 도 2에 도시한 드라이브 및 그의 관련된 컴퓨터 저장 매체는 컴퓨터(210)의 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 및 기타 데이터의 저장을 제공한다. 도 2에서, 예를 들어 하드 디스크 드라이브(241)는 오퍼레이팅 시스템(244), 애플리케이션 프로그램(245), 기타 프로그램 모듈(246), 및 프로그램 데이터(247)를 저장하는 것으로 도시되어 있다. 유의할 것은 이들 컴포넌트가 오퍼레이팅 시스템(234), 애플리케이션 프로그램(235), 기타 프로그램 모듈(236), 및 프로그램 데이터(237)과 동일하거나 그와 다를 수 있다는 것이다. 오퍼레이팅 시스템(244), 애플리케이션 프로그램(245), 기타 프로그램 모듈(246), 및 프로그램 데이터(247)에는 최소한 이들이 서로 다른 복사본임을 나타내기 위해 본 명세서에서 서로 다른 번호가 부여되어 있다. 사용자는 키보드(262) 및 포인팅 장치(261) 등의 입력 장치를 통해 컴퓨터(210)에 명령 및 정보를 입력할 수 있으며, 포인팅 장치는 통상 마우스, 트랙볼, 또는 터치 패드라고 한다. 다른 입력 장치(도시 생략)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 연결된 사용자 입력 인터페이스(260)를 통해 프로세싱 유닛(220)에 연결되지만, 병렬 포트, 게임 포트, 또는 유니버설 직렬 버스(USB) 등의 다른 인터페이스 및 버스 구조에 의해 연결될 수 있다. 모니터(291) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(290) 등의 인터페이스를 통해 시스템 버스(221)에 연결된다. 모니터 이외에, 컴퓨터는 또한 입/출력 주변 인터페이스(295)를 통해 연결될 수 있는 스피커(297) 및 프린터(296) 등의 다른 주변 출력 장치를 포함할 수 있다.The drive described above and shown in FIG. 2 and its associated computer storage media provide storage of computer readable instructions, data structures, program modules, and other data of computer 210. In FIG. 2, for example, hard disk drive 241 is shown to store operating system 244, application program 245, other program modules 246, and program data 247. Note that these components may be the same as or different from operating system 234, application program 235, other program module 236, and program data 237. The operating system 244, the application program 245, the other program module 246, and the program data 247 are assigned different numbers at least to indicate that they are different copies. A user may enter commands and information into the computer 210 through input devices such as a keyboard 262 and a pointing device 261, which is commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 220 via a user input interface 260 connected to the system bus, but by other interfaces and bus structures, such as parallel ports, game ports, or Universal Serial Bus (USB). Can be connected. The monitor 291 or other type of display device is also connected to the system bus 221 via an interface such as a video interface 290. In addition to the monitor, the computer may also include other peripheral output devices, such as a speaker 297 and a printer 296, which may be connected via the input / output peripheral interface 295.

컴퓨터(210)는 원격 컴퓨터(280) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(280)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치, 또는 기타 통상의 네트워크 노드일 수 있으며, 비록 메모리 저장 장치(281)만이 도 2에 도시되어 있지만, 일반적으로 컴퓨터(210)와 관련하여 상기한 구성요소들의 대부분 또는 그 전부를 포함한다. 도 2에 도시된 논리적 연결은 근거리 통신망(LAN)(271) 및 원거리 통신망(WAN)(273)을 포함하지만, 다른 네트워크도 포함할 수 있다. 이러한 네트워크 환경은 사무실, 전사적인 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.Computer 210 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer 280. Remote computer 280 may be a personal computer, server, router, network PC, peer device, or other conventional network node, although computer memory generally is shown in Figure 2, although only memory storage 281 is shown in FIG. In connection with most or all of the above components. The logical connection shown in FIG. 2 includes a local area network (LAN) 271 and a wide area network (WAN) 273, but may also include other networks. Such network environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(210)는 네트워크 인터페이스 또는 어댑터(270)를 통해 LAN에 연결된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(210)는 일반적으로 모뎀(272) 또는 인터넷 등의 WAN(273)을 통해 통신을 설정하기 위한 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(272)은 입/출력 주변 인터페이스(295) 또는 기타의 적당한 메카니즘을 통해 시스템 버스(221)에 연결될 수 있다. 네트워크화된 환경에서, 컴퓨터(210) 또는 그의 일부분과 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 2는 원격 애플리케이션 프로그램(285)을 메모리 장치(281) 상에 존재하는 것으로 도시하고 있다. 도시된 네트워크 연결은 단지 예시적인 것으로서 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단이 사용될 수 있음을 잘 알 것이다.When used in a LAN networking environment, the computer 210 is connected to the LAN via a network interface or adapter 270. When used in a WAN networking environment, computer 210 generally includes a modem 272 or other means for establishing communications over WAN 273, such as the Internet. The modem 272, which may be internal or external, may be coupled to the system bus 221 via an input / output peripheral interface 295 or other suitable mechanism. In a networked environment, program modules described in connection with the computer 210 or portions thereof may be stored in a remote memory storage device. As a non-limiting example, FIG. 2 illustrates remote application program 285 as present on memory device 281. It will be appreciated that the network connections shown are merely exemplary and that other means for establishing a communication link between the computers can be used.

하나 이상의 컴퓨팅 태스크를 수행하기 위해 함께 동작하는 컴포넌트 구성요소들의 집합체인 시스템(300)이 도 3a에 도시되어 있다. 한 예는 각각이 마이크로프로세서, 그의 관련 칩 및 회로, 입력 및 출력 장치, 및 주변 장치(도시 생략)를 포함하는 개인 휴대 단말기(PDA)(302), 셀룰러 전화(334), 및 데스크톱 컴퓨터(336) 등의 다수의 컴퓨팅 장치를 포함할 수 있는 하드웨어 시스템(344)이다. 설명의 편의상, 후속 도면에 유일하게 도시된 컴퓨팅 장치는 개인 휴대 단말기(PDA)이다.System 300, which is a collection of component components that work together to perform one or more computing tasks, is shown in FIG. 3A. One example is a personal digital assistant (PDA) 302, cellular telephone 334, and desktop computer 336, each of which includes a microprocessor, its associated chips and circuits, input and output devices, and peripherals (not shown). Hardware system 344, which may include a number of computing devices, such as < RTI ID = 0.0 > For convenience of explanation, the only computing device shown in the following figures is a personal digital assistant (PDA).

시스템(300)은 오퍼레이팅 시스템 커널(303A) 등의 일련의 프로그램 및 데이터 파일을 포함하는 오퍼레이팅 시스템(342), 하나 이상의 장치 드라이버(303B), 및 프로세스 커널(302C)을 포함한다. 오퍼레이팅 시스템(342) 하부에는 하드웨어 추상화 계층(hardware abstraction layer)(301)이 연결되어 있다. 하드웨어 추상화 계층(301)은 하드웨어 시스템(344)의 장치들(컴퓨팅 장치(302), 셀룰러 전화(334), 및 데스크톱 컴퓨터(336) 등)에 액세스하기 위해 프로그래머가 사용하기 위한 애플리케이션 프로그래밍 인터페이스이다. 오퍼레이팅 시스템 커널(303A)은 오퍼레이팅 시스템(342)의 코어이며, (하드웨어 추상화 계층(301)을 통해) 메모리,파일, 및 주변 장치를 관리하고, 시간 및 날짜를 유지하며, 웹 서비스(302A) 등의 애플리케이션을 기동시키고 또 시스템 자원을 할당하도록 설계되어 있다. 장치 드라이버(303B)는 웹 서비스(302A)가 컴퓨팅 장치(302) 등의 장치와 통신할 수 있게 해주는 별도의 컴포넌트이다. 프로세스 커널(302C)은 웹 서비스(302A)를 프로세스(302B)로서 나타내고, 프로세스(302B)를 관리하며, 프로세스(302B)의 다른 프로세스와의 통신을 용이하게 해준다(이하에 기술됨). 오퍼레이팅 시스템 커널(303A), 장치 드라이버(303B), 및 프로세스 커널(303C)은 오퍼레이팅 시스템(342)의 커널 모드 부분에 존재하는 반면, 웹 서비스(302A) 및 프로세스(302B)는 오퍼레이팅 시스템(342)의 사용자 모드 부분(346)에 존재한다. 다른 대안에서, 프로세스 커널(303C)이 COM(Component Object Model, 컴포넌트 객체 모델) 등의 다른 시스템 소프트웨어 컴포넌트(305,307)(도 3b)의 하부에 연결되는 경우, 프로세스 커널(303C)은 사용자 모드 부분(346)에 존재할 수 있다.System 300 includes an operating system 342 that includes a series of program and data files, such as operating system kernel 303A, one or more device drivers 303B, and a process kernel 302C. A hardware abstraction layer 301 is connected below the operating system 342. Hardware abstraction layer 301 is an application programming interface for use by a programmer to access devices of hardware system 344 (such as computing device 302, cellular telephone 334, and desktop computer 336). Operating system kernel 303A is the core of operating system 342 and manages memory, files, and peripherals (via hardware abstraction layer 301), maintains time and date, web services 302A, and the like. It is designed to launch applications and allocate system resources. Device driver 303B is a separate component that enables web service 302A to communicate with a device, such as computing device 302. Process kernel 302C represents web service 302A as process 302B, manages process 302B, and facilitates communication with other processes in process 302B (described below). Operating system kernel 303A, device driver 303B, and process kernel 303C reside in the kernel mode portion of operating system 342, while web service 302A and process 302B operate on operating system 342. In the user mode portion 346 of the. In another alternative, when process kernel 303C is connected to the bottom of other system software components 305 and 307 (FIG. 3B), such as Component Object Model (COM), process kernel 303C may be a user mode portion ( 346).

본 발명에 따라 사용되는 용어 "프로세스"는 동작을 수행함으로써 진화하는 기능을 갖거나 다른 프로세스가 진화할 수 있게 해주는 하나 이상의 계산 엔티티(computation entity)의 동적 표현을 의미한다. 환언하면, 용어 "프로세스"는 계산 엔티티의 이중적 특성 중 하나를 나타낸다. 계산 엔티티가 쉬고 있는 경우, 그 엔티티는 프로그램 보기 등에 의해 검사될 수 있다. 계산 엔티티가 (프로세스로서) 동작하고 있는 경우, 그 엔티티를 볼 수는 없지만 그의 거동은 본 발명에 따라 형성된 프로그래밍 언어(400)에 의해 표현되고 검증될 수 있다(이하에 기술함).The term "process" as used in accordance with the present invention refers to a dynamic representation of one or more computational entities that have the ability to evolve by performing an action or enable other processes to evolve. In other words, the term "process" refers to one of the dual characteristics of a computing entity. If the computing entity is resting, that entity can be checked by program view or the like. If a computing entity is operating (as a process), it cannot see the entity but its behavior can be represented and verified by a programming language 400 formed in accordance with the present invention (described below).

웹 서비스(302A)는 어떤 서비스를 전담하도록 설계된다. 더 많은 기능을 달성하기 위해, 웹 서비스(302A)는 웹 서비스(302A)의 범위 내에 있지 않은 서비스를 제공할 수 있는 다른 웹 서비스들의 도움을 얻을 수 있다. 다른 웹 서비스들을 찾아내기 위해, 웹 서비스(302A)는 디렉토리 프레임워크(326)와 통신할 수 있다. 디렉토리 프레임워크(326)는 인터넷 상의 웹 서비스들을 찾아내어 등록하는 방법을 제공하는 플랫폼-독립적인 소프트웨어(디렉토리 프레임워크)이다. 디렉토리 프레임워크(326)는 다수의 등록된 웹 서비스를 포함하고 이들 웹 서비스에 대한 상세한 기술적 정보를 포함하는 저장소(330)를 포함한다. 디렉토리 프레임워크(326)의 발견 컴포넌트(328)는 원하는 웹 서비스를 찾아내기 위해 프로세스(302B)와 저장소(330) 사이의 중개자로서 역할한다.Web service 302A is designed to be dedicated to any service. To achieve more functionality, web service 302A may benefit from other web services that may provide services that are not within the scope of web service 302A. To find other web services, the web service 302A may communicate with the directory framework 326. Directory framework 326 is platform-independent software (directory framework) that provides a method for finding and registering web services on the Internet. Directory framework 326 includes a repository 330 that includes a number of registered web services and contains detailed technical information about these web services. The discovery component 328 of the directory framework 326 serves as an intermediary between the process 302B and the repository 330 to find the desired web service.

디렉토리 프레임워크(326)가 웹 서비스(302A)에 의해 요청된 적당한 웹 서비스를 발견하면, 웹 서비스(302A)는 원하는 태스크를 달성하기 위해 발견된 웹 서비스와 상호 작용하기 시작할 수 있다. 도 3b는 발견된 웹 서비스(304A)를 나타낸 것이다. 프로세스 커널(304C)은 웹 서비스(302A, 304A)의 태스크를 달성하기 위해 웹 서비스(304A)를, 큐(310) 등의 통신 수단을 거쳐 프로세스(302B)와 상호작용하는 프로세스(304B)로서 나타낸다.Once the directory framework 326 finds the appropriate web service requested by the web service 302A, the web service 302A may begin interacting with the found web service to achieve the desired task. 3B shows the discovered web service 304A. Process kernel 304C represents web service 304A as a process 304B that interacts with process 302B via communication means such as queue 310 to accomplish the tasks of web services 302A, 304A. .

프로세스들이 그를 통해 통신하는 큐(310)는 데이터베이스, 채널, 또는 다른 적당한 구조화된 저장소 등의 여러가지 형태를 취할 수 있다. 컴퓨팅 장치(302, 304)가 서로 멀리 떨어진 지리적 장소에 위치될 수 있기 때문에, 프로세스(302B, 304B)는 공유 메모리를 통해 통신할 수 없다. 큐(310) 등의 적당한 통신 수단은 프로세스(302B, 304B)로 하여금 서로 다른 시간에 실행되고 있는 동안에 일시적으로 오프라인일 수 있는 이기종 네트워크 및 시스템을 거쳐 통신할 수 있게 해주는 기술을 포함한다. 프로세스(302B, 304B)는 통신 수단으로 메시지를 전송하고 통신 수단으로부터 메시지를 판독한다. 통신 수단은 보장된 메시지 전달, 효율적인 라우팅, 보안 및 우선순위 기반 메시징을 제공할 수 있다. 게다가, 통신 수단은 고성능을 필요로 하는 비동기 시나리오 및 동기 시나리오 둘다에 대한 해결책을 구현하는 데 사용될 수 있다. 전술한 바와 같이, 적당한 통신 수단의 구체적인 예로는 다른 구조화된 저장소 중에서도 특히 채널, 큐, 또는 데이터베이스가 있다. 큐(310-316)가 데이터베이스인 경우, 이들은 레코드로 이루어진 파일이며, 각각의 레코드는 다수의 테이블로 구성된, 검색, 소트, 재결합 및 다른 처리 기능을 위한 일련의 동작과 함께 필드를 포함하고, 각각의 테이블은 행과 열로 구성되는 데이터 구조이고, 데이터는 행-열 교차점으로 형성되는 각각의 셀을 차지하거나 아마도 차지하게 된다.The queue 310 through which the processes communicate there may take many forms, such as a database, channel, or other suitable structured repository. Since computing devices 302 and 304 may be located in geographical locations remote from each other, processes 302B and 304B may not communicate through shared memory. Suitable communication means, such as queue 310, include techniques that enable processes 302B and 304B to communicate over heterogeneous networks and systems that may be temporarily offline while running at different times. Processes 302B and 304B send messages to and read messages from the communication means. The communication means may provide guaranteed message delivery, efficient routing, security, and priority based messaging. In addition, communication means can be used to implement solutions for both asynchronous and synchronous scenarios that require high performance. As mentioned above, specific examples of suitable means of communication include channels, queues, or databases, among other structured repositories. If the queues 310-316 are databases, they are files of records, each record containing fields with a series of actions for search, sort, recombine, and other processing functions, each consisting of multiple tables, The table of is a data structure consisting of rows and columns, with the data occupying or perhaps occupying each cell formed by a row-column intersection.

프로세스 커널(302C, 304C)의 내부 아키텍처는 프로세스를 정의하고 프로세스들 간의 상호작용을 규율하는 소프트웨어 컴포넌트를 포함하는 프로세스 가상 머신(302C1, 304C1), 쿼리를 정의하고 쿼리와 큐 사이의 상호작용을 규율하는 소프트웨어 컴포넌트를 포함하는 쿼리 가상 머신(302C3, 304C3), 쿼리, 큐, 및 프로세스 간의 상호작용을 규율하는 소프트웨어 컴포넌트를 포함하는 반응 가상 머신(302C2, 304C2), 및 프로세스 커널(302C, 304C)을 컴퓨팅 장치(302, 304) 상의 시스템 소프트웨어 컴포넌트(305, 307)(그 중에서도 특히, COM 및 오퍼레이팅 시스템 등)의 상세로부터 분리시키는 소프트웨어 컴포넌트를 포함하는 전이 가상 머신(302C4,304C4)을 포함한다.The internal architecture of process kernels 302C and 304C defines process virtual machines 302C1 and 304C1, which contain software components that define processes and govern interactions between processes, define queries and govern interactions between queries and queues. Query virtual machines 302C3 and 304C3, which include software components, and reactive virtual machines 302C2 and 304C2, which include software components that govern the interaction between queries, queues, and processes, and process kernels 302C and 304C. Transition virtual machines 302C4, 304C4 that include software components that separate from the details of system software components 305, 307 (especially COM and operating systems, etc.) on computing devices 302, 304.

컴퓨팅 장치(302, 304)는 근거리 통신망, 원거리 통신망 또는 무선 네트워크(338)를 통해 상호작용하고 통신하며 정보를 교환한다. 프로세스(302B, 304B)는 메시지(318) 등의 메시지를 교환하기 위해 큐(310)를 거쳐 통신한다. π-연산구조 및 그의 변형을 구현하는 종래 시스템과는 달리, 본 발명에 따라 형성된 시스템(300)은 메시지(318) 등의 메시지가 프로세스(302B, 304B) 사이의 교환에서 프로세스 커널(302C, 304C)에 의해 프로세스로서 표현될 수 있게 해준다. 이것에 의해 많은 다른 것 중에 특히 API의 호출 순서 등의 프로그램 또는 웹 서비스의 협력적 차원이 프로세스(302B, 304B) 사이에 표현될 수 있게 된다.Computing devices 302 and 304 interact, communicate, and exchange information over local area network, telecommunication network, or wireless network 338. Processes 302B and 304B communicate via queue 310 to exchange messages, such as message 318. Unlike conventional systems that implement the π-operation structure and variations thereof, system 300 formed in accordance with the present invention is a process kernel 302C, 304C in which messages such as message 318 are exchanged between processes 302B, 304B. To be represented as a process. This allows, among other things, a cooperative dimension of a program or web service, especially the calling order of APIs, to be expressed between processes 302B and 304B.

도 3c는 시스템(300)을, 서로와 통신할 수 있고 또 사용자에게 공유 하드웨어, 소프트웨어 및 데이터의 하나의 대규모 액세스가능한 "저장소(storehouse)"로서 보이는 다수의 컴퓨팅 장치(302, 304, 306, 308)를 포함하는 비집중식 네트워크로서 나타내고 있다. 시스템(300)은 컴퓨터 과학자의 관점에서 볼 때 개념적으로 덤 클라이언트(dumb client)가 메인프레임 등의 단일의 스마트 중앙 컴퓨터에 연결되어 있는 것인 집중식 또는 모놀리딕 시스템의 반대인 분산 시스템이다. 시스템(300)은, 고도로 분산된 병행 프로세스(302B, 304B, 306B, 308B)가 컴퓨팅 장치(302-308) 상에서 병렬로 상호작용하는 동적 네트워크 토폴로지이다.3C illustrates a number of computing devices 302, 304, 306, 308 that can communicate the system 300 with one another and appear to the user as one large accessible " storehouse " of shared hardware, software, and data. It is shown as a non-central network that includes). System 300 is a distributed system that is conceptually the opposite of a centralized or monolithic system in which a dumb client is conceptually connected to a single smart central computer such as a mainframe from the perspective of a computer scientist. System 300 is a dynamic network topology in which highly distributed parallel processes 302B, 304B, 306B, and 308B interact in parallel on computing devices 302-308.

프로세스(302B-308B)는 메시지 또는 쿼리로서 큐(310-314)로 전송된 정보를 서로에게 표현하기 위해 협력한다. 통신 수단을 거쳐 전송된 여러 정보로는 실행의 순서, 데이터의 타이밍, 서비스의 품질, 및 데이터의 해석 또는 데이터에 대한연산의 수행을 용이하게 하는 방식으로 데이터를 포함하고 데이터를 기술하는, 프로세스(302B-308B) 사이의 커스터마이즈가능한 태그 기반 언어로부터 형성된 구성 방식의 전달이 있다. 하나의 적당한 커스터마이즈가능한 태그 기반 언어가 확장가능 마크업 언어(XML)이지만, 본 발명은 이 언어에 한정되지 않는다. 다른 커스터마이즈가능한 태그 기반 언어가 사용될 수 있다.Processes 302B-308B cooperate to represent the information sent to queues 310-314 as messages or queries to each other. The various information transmitted via the communication means includes the process of describing the data and describing the data in a manner that facilitates the order of execution, the timing of the data, the quality of service, and the interpretation or operation of the data ( There is a delivery of configuration schemes formed from customizable tag based languages between 302B-308B). One suitable customizable tag-based language is Extensible Markup Language (XML), but the invention is not limited to this language. Other customizable tag based languages can be used.

본 발명에 따라 형성된 프로그래밍 언어(400)(도 4)에 의해 프로세스(302B-308B) 사이의 협력적 통신이 제공된다. 언어(400)는 π-연산구조의 고차 변형(high-order variant)이다. 환언하면, 언어(400)는 프로세스 기반 언어이다. 보다 구체적으로는, 이하에 기술하는 다른 특성 이외에, 언어(400)는 프로그램적으로 "라이브니스(liveness)"를 검출할 수 있는 기능을 가지고 있다. 라이브니스는 프로세스가 활성 상태(alive)에 있음을 나타내는 표지이다. 프로그램이 신뢰를 얻어 그 프로그램이 하도록 설계된 일을 하기 위해서는 이 특성이 프로그램적으로 검증될 필요가 있다. 언어(400)로 작성된 웹 서비스(302A) 등의 프로그램은 프로그램적으로 "라이브니스"에 대한 검증을 받을 수 있다. 다른 특성으로는 프로세스(302B-308B) 및 자원 액세스 런타임 에러의 보안을 분석할 수 있는 기능이 있다. 보안 문제로는 컴퓨팅 장치(302-308) 및 그의 데이터를 유해 또는 손실로부터 보호하는 것이 있다. 특히 다수의 큐(310, 312, 314, 316)를 통해 많은 사람에 의해 액세스되는 시스템(300) 등의 비집중식 네트워크에 대한 보안의 한가지 주된 촛점은 비인가 개인에 의한 액세스의 방지이다. 언어(400)로 작성된 웹 서비스(302A)는 신뢰할 수 없는 웹 프로그램 또는 신뢰할 수 없는 컴퓨팅 장치에 의해 야기되는보안 문제를 검지하기 위해 검증될 수 있다.Cooperative communication between processes 302B-308B is provided by programming language 400 (FIG. 4) formed in accordance with the present invention. Language 400 is a high-order variant of the π-operation structure. In other words, language 400 is a process based language. More specifically, in addition to the other features described below, the language 400 has the ability to detect "liveness" programmatically. Liveness is an indicator that a process is in an active state. In order for a program to be trusted to do what the program is designed to do, this property needs to be verified programmatically. Programs such as web service 302A written in language 400 may be programmatically verified for "liveness." Other features include the ability to analyze the security of processes 302B-308B and resource access runtime errors. Security concerns include protecting computing devices 302-308 and its data from harm or loss. In particular, one main focus of security for non-centralized networks, such as system 300, accessed by many people through multiple queues 310, 312, 314, 316 is the prevention of access by unauthorized individuals. Web services 302A written in language 400 may be verified to detect security problems caused by untrusted web programs or untrusted computing devices.

언어(400)의 형식적인 수학적 정의는 부록에 주어져 있다. 언어(400)는 문법, 구조적 등가의 규칙, 및 동작적 의미론의 규칙을 포함한다. 언어(400)의 문법은 쿼리 및 프로세스의 구문적 요소가 허용가능한 프로그래밍 서술문을 형성하기 위해 합성되는 방식을 정의하는 규칙의 체계이다. 환언하면, 언어(400)의 문법으로 정확하게 표현할 수 없는 경우, 한 프로세스에서 다른 프로세스로 API의 호출 등의 개념을 전달할 수 없다. 표현식이 정확하게 형성되면, 의미론의 규칙은 표현식을 의미와 연결시킨다. 프로세스가 동적이기 때문에, 언어(400)는 동작적 의미론을 사용하여 의미를 프로세스와 결합시킨다. 환언하면, 프로세스는 다른 프로세스와 함께 동작하거나 그와 상호 작용함으로써 진화한다. 언어(400)의 표현식의 의미를 이해하는 것은 그의 동작을 이해하는 것과 직접 관련되어 있다. 구조적 등가의 규칙에 의해 언어(400)의 동작적 의미론은 표현식이 다른 표현식에 비유될 수 있다는 점에서 단순화될 수 있다. 따라서, 동작적 의미론의 규칙의 수는 적게 유지될 수 있는데, 그 이유는 이들 규칙이 표현식의 순열에 적용될 수 있기 때문이다.The formal mathematical definition of language 400 is given in the appendix. Language 400 includes grammar, structural equivalent rules, and rules of operational semantics. The grammar of language 400 is a system of rules that defines how syntactic elements of queries and processes are synthesized to form acceptable programming statements. In other words, when it is not possible to accurately express in the grammar of the language 400, it is not possible to convey the concept of calling an API from one process to another. When expressions are formed correctly, semantic rules link expressions to meanings. Since the process is dynamic, the language 400 uses operational semantics to combine meaning with the process. In other words, processes evolve by working with or interacting with other processes. Understanding the meaning of expressions in language 400 is directly related to understanding its operation. By the rules of structural equivalence, the operational semantics of language 400 can be simplified in that an expression can be compared to other expressions. Thus, the number of rules of operational semantics can be kept small because these rules can be applied to a permutation of expressions.

언어(400)는 몇가지 주요 구문 카테고리, 즉 서로 다른 시간에 또는 동시에 실행되는 프로세스가 메시지를 통해 통신할 수 있게 해주는 것인 큐, 데이터베이스, 통신 채널 또는 임의의 구조화된 저장소를 표현하는 큐 구문(402), 메시지를 어셈블(assemble) 및 디스어셈블(disassemble)하고 큐 구문(402)에 의해 표현된 구조화된 저장소를 처리하며 또 메시지 패턴을 검출하기 위해 데이터 처리 언어로 작성된 명령어를 표현하는 쿼리 구문(404), 및 API 등의 이름 뿐만 아니라 메시지 등의 프로세스를 큐 구문(402)에 의해 표현된 구조화된 저장소를 거쳐 교환할 수 있는 계산 엔티티의 동적 측면을 표현하는 프로세스 구문(406)을 갖는다. 큐 구문(402), 쿼리 구문(404), 및 프로세스 구문(406)은 함께 언어(400)의 주요 구문적 요소를 형성한다. 언어(400)의 구문적 요소(402-406)는 단독으로 사용되거나 프로세스(302B-308B) 등의 프로세스들 간의 협력적 뉘앙스를 표현하기 위해 순열 형태로 결합될 수 있다. 구문적 규칙(도 11c 내지 도 11f 및 부록의 섹션 1.1을 참조하여 상세히 기술됨), 구조적 등가 규칙(도 11j 및 부록의 섹션 2.1을 참조하여 이하에 보다 상세히 기술됨), 및 동작적 의미론 규칙(도 11o 내지 도 11r 및 부록의 섹션 3.1을 참조하여 이하에 보다 상세히 기술됨)은 쿼리와 연계하여 쿼리 가상 머신(302C3, 304C3)에 배치되어 있다. 구문적 규칙(도 11g 내지 도 11i 및 부록의 섹션 1.2를 참조하여 상세히 기술됨), 구조적 등가 규칙(도 11k 내지 도 11n 및 부록의 섹션 2.2를 참조하여 이하에 보다 상세히 기술됨), 및 동작적 의미론 규칙(도 11s 내지 도 11v 및 부록의 섹션 3.2를 참조하여 이하에 보다 상세히 기술됨)은 프로세스와 연계하여 프로세스 가상 머신(302C1, 304C1)에 배치되어 있다. 반응 가상 머신(302C2, 304C2)은 큐, 쿼리, 및 프로세스가 서로에 반응하는 방법을 정의하는 동작적 의미론 규칙을 포함하고 있다.Language 400 is a queue syntax 402 that represents several major syntax categories: a queue, a database, a communication channel, or any structured repository, which allows processes that run at different times or concurrently to communicate via messages. Query syntax (404) for expressing instructions written in a data processing language to assemble and disassemble messages, to process the structured storage represented by queue syntax 402, and to detect message patterns. ), And process syntax 406 that represents the dynamic aspects of the computing entity that can exchange processes such as messages, as well as names such as APIs, through the structured repository represented by queue syntax 402. The queue syntax 402, query syntax 404, and process syntax 406 together form the main syntactic element of the language 400. Syntactic elements 402-406 of language 400 may be used alone or combined in a permutation form to express cooperative nuances between processes, such as processes 302B-308B. Syntactic rules (described in detail with reference to FIGS. 11C-11F and section 1.1 of the appendix), structural equivalent rules (described in more detail below with reference to section 2.1 of FIGS. 11J and appendix), and operational semantic rules ( 11O-11R and described in more detail below with reference to section 3.1 of the appendix) are located in query virtual machines 302C3 and 304C3 in conjunction with queries. Syntactic rules (described in detail with reference to FIGS. 11G-11I and section 1.2 of the appendix), structural equivalent rules (described in more detail below with reference to FIGS. 11K-11N and section 2.2 of the appendix), and operational Semantic rules (described in more detail below with reference to sections 3.2 of FIGS. 11S-11V and the appendix) are located in process virtual machines 302C1 and 304C1 in conjunction with processes. Responsive virtual machines 302C2 and 304C2 include operational semantic rules that define how queues, queries, and processes respond to each other.

프로그래밍 언어(400)는 병렬로 실행되고 큐(310-314) 등의 통신 수단을 거쳐 상호작용하는 프로세스(302B-308B) 등의 프로세스를 기술하기 위한 표현식이 형성될 수 있게 해준다. 수학적으로, T와 P가 프로세스인 경우, 표현식 T|P는 프로세스 T, P가 병렬로 실행되고 있으며 아마도 통신 수단을 통해 서로 또는 외부 세계와 통신하고 있음을 기술한다.The programming language 400 allows expressions to be formed to describe processes such as processes 302B-308B that run in parallel and interact via communication means such as queues 310-314. Mathematically, where T and P are processes, the expression T | P describes that processes T and P are running in parallel and are probably communicating with each other or the outside world via communication means.

큐(310-314)는 이름(그에 대응하여 "X", "Y", "Z" 및 "W"임)에 의해 표현된다. 프로그래밍 언어(400)는 그 중에서도 특히 프로세스(318-324) 등의 어떤 부류의 프로세스의 전달이 큐(310-314) 상의 메시지로서 표현될 수 있게 해준다. 프로세스(318-324)는 데이터의 해석 또는 데이터에 대한 연산의 수행을 용이하게 해주는 방식으로 데이터를 포함하고 또 데이터를 기술하는 커스터마이즈가능한 태그 기반 언어로부터 형성된 구성 방식을 구현한다. 한가지 예시적인 구성 방식으로는 쿼리가 있다. 다른 예시적인 구성 방식으로는 메시지가 있다. 또다른 예시적인 구성 방식으로는 XML 문서가 있다.Queues 310-314 are represented by names (corresponding to "X", "Y", "Z" and "W" correspondingly). Programming language 400 enables the delivery of certain classes of processes, among others, processes 318-324, among others, to be represented as messages on queues 310-314. Processes 318-324 implement a configuration scheme formed from a customizable tag-based language that contains data and describes the data in a manner that facilitates interpretation of the data or performance of operations on the data. One example configuration is a query. Another exemplary configuration is a message. Another example construct is an XML document.

쿼리는 데이터 및 데이터를 처리하기 위한 정보를 포함한다. 이 예를 생각해보자. 컴퓨팅 장치(302)는 출판사에 있는 컴퓨터를 나타내고 컴퓨팅 장치(304)는 서점에 있는 컴퓨터를 나타낸다. 출판사 및 서점 둘다는 책의 저자, 제목, 및 출판일에 관한 정보를 위한 그 자신의 태그를 XML로 정의할 수 있는 독립적인 기능을 가지고 있다. 이러한 책 정보는 적절한 태그를 갖는 XML 문서로 구성될 수 있다. 이 정보는 출판사에 있는 컴퓨팅 장치(302) 또는 서점에 있는 컴퓨팅 장치(304)에 의해 교환되며, 이들 컴퓨팅 장치는 XML 문서를, 프로세스 커널(302C-30C)에 의해 프로세스(302B)와 프로세스(304B) 사이에서 큐(310)를 거쳐 전달되는 프로세스(318) 등의 프로세스로서 표현되는 쿼리로 변환한다.The query includes data and information for processing the data. Consider this example. Computing device 302 represents a computer at a publisher and computing device 304 represents a computer at a bookstore. Both publishers and bookstores have the independent ability to define their own tags in XML for information about the author, title, and publication date of a book. This book information may consist of XML documents with appropriate tags. This information is exchanged by the computing device 302 at the publisher or the computing device 304 at the bookstore, and these computing devices convert the XML document into a process 302B and a process 304B by the process kernel 302C-30C. ) Into a query expressed as a process, such as a process 318 that is passed through the queue 310.

이전의 π-연산구조 변형은 XML 문서 등의 구조화된 정보가 큐(310) 등의 통신 수단을 거쳐 전달될 수 있게 해주지 못한다. 그렇지만, 애플리케이션의 실제 수행은 때때로 구조화된 정보의 어떤 교환을 필요로 한다. 적절한 경우로는 API의 호출 순서를 표현하는 구조화된 정보가 있다. 다른 적절한 경우로는 출판사와 서점 간의 상기한 예이다. 프로그래밍 언어(400)는 다차원 데이터(데이터 구조)가 프로세스(318-324) 등의 프로세스에 구현될 수 있게, 즉 프로세스(302B-308B) 사이에 전달되는 메시지로서 전달될 수 있게 해준다. 언어(400)는 병행 분산형 비집중식 네트워크에서 큐를 거쳐 프로세스 간에 (데이터의 해석 또는 데이터에 대한 연산의 수행을 용이하게 해주는 방식으로 데이터를 포함하고 데이터를 기술하는 커스터마이즈가능한 태그 기반 언어로 표현되는) 구성 방식의 교환을 용이하게 해주기 위한 환경의 생성을 가능하게 해준다.Previous π-operational structure modifications do not allow structured information, such as XML documents, to be conveyed via communication means, such as queue 310. However, the actual execution of the application sometimes requires some exchange of structured information. Where appropriate, there is structured information that expresses the calling order of the API. Another suitable case is the above example between a publisher and a bookstore. Programming language 400 allows multidimensional data (data structures) to be implemented in processes such as processes 318-324, that is, as messages passed between processes 302B-308B. The language 400 is represented in a customizable tag-based language that includes data and describes the data in a manner that facilitates the interpretation of the data or the operation of the data between the processes via a queue in a parallel distributed decentralized network. Allows the creation of an environment to facilitate the exchange of configuration methods.

도 5는 큐(310)(X), 쿼리(504, 506)(Q0, Q1), 및 프로세스(302B, 304B)(T, P)를 관련시키는 구문 표현식을 시각적으로 나타낸 것이다. 큐(310-316)에는 하나 이상의 쿼리(502)가 저장되어 있으며, 이 쿼리는 명백한 구조를 갖지 않는 구조화된 데이터 또는 이름을 구현하는 프로세스이다. XML 문서(500A) 등의 구조화된 데이터 파일을 큐(310)를 거쳐 프로세스(302B)로부터 프로세스(304B)로 전달하기 위해, 프로세스(302B)는 XML 문서(500A)를 쿼리(500B)로 변환한 다음에 쿼리(500B)를 큐(310)에 기록한다. 쿼리(500B)는 프로세스 커널(302C-308C)에 의해 프로세스로서 취급된다. π-연산구조의 이전의 변형과는 달리, 프로그래밍 언어(400)는 쿼리(500B) 등의 프로세스가 큐(310) 등의 통신 수단을 통과할 수 있도록 해준다. 쿼리(500B)는 쿼리(500B)가 또한 XML 문서(500A)의 구조화된 콘텐츠를 포함한다는 점에서 순수 이름 그 이상을 포함한다. 쿼리(500B)를 획득하기 위해, 프로세스(304B)는 큐(310)를 읽는다.5 is a visual representation of syntax expressions relating queue 310 (X), queries 504, 506 (Q 0 , Q 1 ), and processes 302B, 304B (T, P). One or more queries 502 are stored in queues 310-316, which are processes that implement structured data or names that do not have an explicit structure. In order to pass a structured data file, such as XML document 500A, through queue 310 to process 304B, process 302B converts XML document 500A into query 500B. Next, the query 500B is written to the queue 310. Query 500B is treated as a process by process kernels 302C-308C. Unlike previous variations of the π-operation structure, programming language 400 allows a process such as query 500B to pass through a communication means such as queue 310. Query 500B includes more than pure names in that query 500B also includes the structured content of XML document 500A. To obtain query 500B, process 304B reads queue 310.

프로그래밍 언어(400)는 쿼리를 어셈블 및 디스어셈블하고 큐를 처리하며 또 쿼리에서 패턴을 검출하는 데 사용되는 일련의 쿼리 동작을 제공한다. 다른 쿼리 동작은 메시지를 큐에 집어 넣고, 큐로부터 메시지를 가져오며 또 기존의 메시지로부터 새 메시지를 작성하는 데 사용된다. 쿼리는 2 부분, 즉 헤드와 보디로 이루어져 있다. 쿼리의 헤드는 일련의 파라미터와 그의 대응하는 유형을 정의한다. 보디는 일련의 바인딩이다. 쿼리는 그의 파라미터를 인수에 바인딩하고 그의 일련의 바인딩을 활성화시킴으로써 호출된다. 바인딩은 2개의 항 사이의 관계를 정의한다. 모든 항이 서로 바인딩될 수 있는 것은 아니다. 바인딩이 어떤 유형의 항을 그의 상보적 유형의 항에 바인딩할 때 유효 바인딩이 존재한다. 쿼리는 종래의 프로시저에 비유될 수 있다. 쿼리의 헤드는 프로시저의 서명과 같고, 쿼리의 보디는 프로시저의 일련의 프로그래밍 서술문과 같으며, 각각의 바인딩은 프로시저의 서명의 파라미터에 저장된 데이터를 사용하거나 프로시저의 서명의 파라미터에 데이터를 배치하는 프로그래밍 서술문이다.Programming language 400 provides a set of query operations used to assemble and disassemble a query, process a queue, and detect patterns in the query. Another query operation is used to put a message on a queue, get a message from a queue, and create a new message from an existing message. The query consists of two parts: the head and the body. The head of the query defines a series of parameters and their corresponding types. The body is a series of bindings. The query is called by binding its parameters to the arguments and activating its set of bindings. The binding defines a relationship between two terms. Not all terms can be bound to each other. An effective binding exists when a binding binds a term of a type to a term of its complementary type. Queries can be likened to conventional procedures. The head of the query is the same as the signature of the procedure, the body of the query is the same as a series of programming statements in the procedure, and each binding uses data stored in the parameters of the procedure's signature or data in the parameters of the procedure's signature. Programming statement that places a.

수학적으로, 큐(310), 쿼리(500B) 및 프로세스(304B) 사이의 관계는 구문적으로 X[Q0].P로 표현될수 있으며, 여기서 X는 큐(310)이고, Q0는 쿼리(500B)이며, P는 쿼리(Q0)가 큐(X)에 기록된 후의 계속점인 프로세스(304B)이다. 따라서, 언어학적으로, 수학적 표현 X[Q0].P는 쿼리(500B)를 큐(310)에 배치하는 프로세스를 기술하며, 그 후에 이 프로세스는 프로세스(304B)의 실행으로 계속된다. 프로그래밍 언어(400)의 프레임워크에서, Q0및 P 둘다는 수학적 표기 X[Q0].P에서의 프로세스이다. 프로그래밍 언어(400)는 큐(X)를 거쳐 메시지로서 전달될 수 있는 프로세스의 서브셋(또는 어떤 부류의 프로세스)을 식별한다. 이 서브셋은 쿼리를 포함하며, 그 각각은 XML 문서에 포함된 것 등의 커스터마이즈가능한 태그 기반의 데이터 구조에 상관되어 있다.Mathematically, the relationship between queue 310, query 500B and process 304B can be syntactically represented as X [Q 0 ] .P, where X is queue 310 and Q 0 is query ( 500B), and P is a process 304B which is a continuing point after the query Q 0 is written to the queue X. Thus, linguistically, the mathematical expression X [Q 0 ] .P describes the process of placing query 500B in queue 310, after which the process continues with execution of process 304B. In the framework of programming language 400, both Q 0 and P are processes in mathematical notation X [Q 0 ] .P. Programming language 400 identifies a subset of processes (or some class of processes) that can be delivered as messages over queue (X). This subset contains queries, each of which correlates to customizable tag-based data structures such as those contained in XML documents.

언어(400)의 한가지 주된 측면은 쿼리 및 프로세스 사이의 구조적 등가를 결정하기 위한 등식 규칙의 집합체이다. 언어(400)의 이들 등식 규칙을 사용하여 구조적 등가를 결정하는 프로세스는 2개의 프로그램 또는 2개의 소프트웨어 사양 등의 2개의 프로그램적 문서가 모든 관련 사항에서 부합하는지 여부를 확인하기 위해 그 문서들 사이의 사소한 차이에 구애되지 않는다. 이러한 구조적 등가 규칙들은 언어(400)의 동작적 의미론이 상기한 바와 같이 단순화될 수 있게 해준다.One major aspect of language 400 is a collection of equation rules for determining structural equivalence between queries and processes. The process of determining structural equivalence using these equation rules of language 400 is performed between two documents, such as two programs or two software specifications, to ensure that all relevant matters are met. You are not bound by minor differences. These structural equivalence rules allow the operational semantics of language 400 to be simplified as described above.

도 6a는 이 설명에 적합한 언어로 작성된 프로그램(602)이다. 프로그램(602)은 C 또는 C++ 등의 어떤 언어의 실행의 시작점인 main() 함수를 포함한다. 제1 대괄호 세트 사이에는 테스트 조건(A==7)을 포함하는 if문이 들어 있다. 테스트 조건은 변수 A가 값 7과 같은지 여부를 결정한다. 테스트 조건이 참인 경우, 제2 대괄호 세트 내에 포함된 프로그래밍 서술문(programming statement)이 실행된다. 제1 프로그래밍 서술문은 인수로서 변수 P0를 취하는 fork() 함수를 호출한다. 어떤 언어에서의 fork() 함수는 부모 프로세스가 시작된 후에 병행 시스템 내의 자식 프로세스를 기동시킨다. 이 경우, 자식 프로세스는 인수 P0에 의해 표현된다. 이와 같이 fork() 함수의 호출 후에, 자식 프로세스 P0는 프로그램(602)을 실행하는 부모 프로세스와 병렬로 실행된다. 제2 프로그래밍 서술문도 fork() 함수의 호출을 포함하지만, 변수 P0를 인수로서 취하지 않고, fork() 함수의 제2 호출은 변수 P1을 인수로서 취한다. 인수 P1에 의해 표현된 또하나의 자식 프로세스가 제2 fork() 함수의 호출로 기동된다. 자식 프로세스(P0, P1)는 제2 대괄호 세트의 닫기 대괄호로부터의 프로그램 흐름의 출구에서 서로 병렬로 실행된다.6A is a program 602 written in a language suitable for this description. Program 602 includes a main () function that is the starting point of execution of any language, such as C or C ++. Between the first set of brackets is an if statement containing the test condition (A == 7). The test condition determines whether variable A is equal to the value 7. If the test condition is true, a programming statement included in the second set of brackets is executed. The first programming statement calls the fork () function which takes the variable P0 as an argument. In some languages, the fork () function starts a child process in a parallel system after the parent process has started. In this case, the child process is represented by the argument P0. As such, after the fork () function is called, the child process P0 is executed in parallel with the parent process executing the program 602. The second programming statement also includes a call to the fork () function, but takes no variable P0 as an argument, and the second call of the fork () function takes a variable P1 as an argument. Another child process represented by the argument P1 is started by a call to the second fork () function. The child processes P0, P1 execute in parallel with each other at the exit of the program flow from the closing bracket of the second set of brackets.

또하나의 프로그램(604)은 여러가지 점에서 프로그램(602)과 유사하지만, 몇가지 다른 점이 있다. 한가지 차이점은 변수 A 대신에 변수 B를 포함하는, 프로그램(604)의 IF 문의 테스트 조건이다. 또하나의 차이점은 자식 프로세스 P1이 자식 프로세스 P0의 호출 이전에 fork() 함수의 첫번째 호출로 기동된다는 것이다. 이들 차이점에도 불구하고, 양쪽 프로그램(602, 604)의 논리적 흐름은 궁극적으로 양쪽 IF 문의 테스트 조건이 참인 경우 양쪽 프로그램(602, 604)의 fork() 문에 도달한다. 따라서 변수 A, B의 이름에 있어서의 차이는 무시될 수 있으며, 프로그램(602, 604)의 논리적 구조에 영향을 주지 않는다. 게다가, 자식 프로세스(P0, P1)가 병렬로 실행되기 때문에, 그의 호출의 순서도 무시될 수 있다.Another program 604 is similar to program 602 in many respects, but there are some differences. One difference is the test condition of the IF statement of the program 604, which includes the variable B instead of the variable A. Another difference is that child process P1 is started with the first call of the fork () function before calling child process P0. Despite these differences, the logical flow of both programs 602 and 604 ultimately reaches the fork () statement of both programs 602 and 604 if the test condition of both IF statements is true. Thus differences in the names of variables A and B can be ignored and do not affect the logical structure of programs 602 and 604. In addition, since the child processes P0 and P1 are executed in parallel, the order of their invocations can also be ignored.

전술한 바와 같이, 프로그램(602)은 구조적 등가 분석을 방해하는 여러가지 다양한 문법적 구조를 포함하는 많은 다른 프로그래밍 언어에 의해 작성될 수 있다. 언어(400)를 사용하여, 프로그램(602)은 프로그램(602)의 문법적 상세와 별도인 특성에 의해 표현될 수 있다. 예를 들어, 프로그램(602)의 핵심은 자식 프로세스(P0, P1)를 병렬로 실행하는 것이다. 이 핵심은 프로그램(602)을 사양(602A)으로 변환함으로써 언어(400)에 의해 표현될 수 있다. 프로세스(P0, P1)의 병렬 실행은 프로그램(602A)에서 "P0|P1"으로서 표현된다. 서술문 "P0|P1"은 태그 <I_DO>와 그의 대응하는 종료 태그 </I_DO> 사이에 들어 있다.As noted above, program 602 can be written by many different programming languages, including various different grammatical structures that interfere with structural equivalence analysis. Using language 400, program 602 may be represented by properties separate from the grammatical details of program 602. For example, the core of the program 602 is to execute the child processes P0 and P1 in parallel. This key point can be represented by language 400 by converting program 602 to specification 602A. Parallel execution of processes P0 and P1 is represented as "P0 | P1" in program 602A. The statement "P0 | P1" is contained between the tag <I_DO> and its corresponding end tag </ I_DO>.

자식 프로세스(P0)가 또하나의 자식 프로세스(P2)와 병렬로 실행되도록 요망되는 서비스를 프로세스(302B)가 필요로 하는 것으로 가정하자. 이러한 요건은 언어(400)으로 작성된 사양(302D)에 나타낸 바와 같은 서술문 "P0|P2"에 의해 포착된다. 서술문 "P0|P2"은 태그 <I_NEED>와 그의 대응하는 종료 태그 </I_NEED> 사이에 있다. 추가로 프로그램(602)이 프로세스(302B)가 달성하고자 하는 태스크에 적합한지를 결정하기 위해 프로세스(302B)가 발견 컴포넌트(328)로부터 사양(602A)을 획득하는 것으로 가정하자. 구조적 등가 분석을 사용하여, 프로세스(302B)는 프로그램(602A)이 사양(302D)에 의해 지정된 바와 같은 요청 서비스를 제공할 수 없을 것임을 신속하게 결정할 수 있다. 이러한 이유는 프로그램(602)이 자식 프로세스(P0, P1)를 병렬로 실행하는 반면 프로세스(302B)는 그 대신에 자식 프로세스(P0, P2)가 병렬로 실행될 것을 요구하기 때문이다.Suppose that process 302B needs a service in which child process P0 is desired to run in parallel with another child process P2. This requirement is captured by the statement "P0 | P2" as shown in the specification 302D written in the language 400. The statement "P0 | P2" is between the tag <I_NEED> and its corresponding end tag </ I_NEED>. Further assume that process 302B obtains specification 602A from discovery component 328 to determine whether program 602 is suitable for the task that process 302B is trying to achieve. Using structural equivalence analysis, process 302B can quickly determine that program 602A will not be able to provide the requested service as specified by specification 302D. This is because the program 602 executes the child processes P0 and P1 in parallel while the process 302B instead requires the child processes P0 and P2 to run in parallel.

언어(400)의 일련의 등식 법칙 중의 한가지 등식 법칙은 하나의 큐가 동작 중에 있는 다른 큐를 대신할 수 있도록 겉보기에 별개인 큐들이 융합될 수 있게 해준다. 이것을 부록의 섹션 2.2에서 치환 등가(substitution equivalence)라고 부른다. 도 7a에 도시한 바와 같이, 프로세스(302B)는 메시지를 전송하고 수신하기위해 (또는 쿼리를 기록하고 판독하기 위해) 큐(310)(큐 X)를 사용한다. 큐(310)를 사용하지 않고, 프로세스(304B)는 메시지를 전송하고 수신하기 위해 (또는 쿼리를 기록하고 판독하기 위해) 큐(702)(큐 X')와 통신한다. 쿼리가 이름 X가 이름 X'에 바인딩되어 있는 것(이름 X:=:이름 X')인 큐(702)에 배치되는 것으로 가정하자(단, 연산자 :=:는 언어(400)에서 바인딩 연산자임). 이것은 큐(310)가 큐(702)와 기본적으로 융합되어 있으며 따라서 프로세스(302B-304B)가 큐(310) 등의 동일한 큐 상에서 동작하거나 통신할 수 있게 됨을 나타낸다. 도 7b를 참조하기 바란다. 언어(400)의 등식 법칙을 사용하여, 프로세스(302B, 304B)는 큐(또는 다른 구조화된 저장소 중에서도 특히, 데이터베이스 또는 채널)에 액세스하는 새 방법을 발견할 수 있다.One of the set of equation laws of language 400 allows for apparently distinct cues to be fused so that one queue can replace another in operation. This is called substitution equivalence in section 2.2 of the Annex. As shown in FIG. 7A, process 302B uses queue 310 (Queue X) to send and receive messages (or to record and read queries). Without using queue 310, process 304B communicates with queue 702 (Queue X ′) to send and receive messages (or to record and read queries). Suppose a query is placed on queue 702, where name X is bound to name X '(name X: =: name X'), except that operator: =: is a binding operator in language (400). ). This indicates that queue 310 is essentially fused with queue 702 so that processes 302B-304B can operate or communicate on the same queue, such as queue 310. See FIG. 7B. Using the equation law of language 400, processes 302B and 304B may discover new ways to access queues (or, among other structured repositories, in particular databases or channels).

π-연산구조의 종래의 변형의 입력/출력 메카니즘(I/O)는 비대칭이다. 이하의 수학적 일례를 생각해보자., 여기서및 U는 동일한 링크를 말하지만,는 그 링크가 X 등의 무언가를 출력하고 있음을 나타내며, U는 그링크가 Y 등의 무언가를 입력하고 있음을 나타내고, X는 출력 데이터이며, Y는 입력 데이터이고, P, Q는 표현식가 실행된 후에 계속되는 프로세스이다. 출력 데이터인 X가 채널 U에 바인딩되어 있지 않은 반면 입력 데이터인 Y가 채널 U에 바인딩되어 있다는 사실로부터 비대칭이 발생한다. "바인딩되어 있다"는 용어는 Y의 동작 범위가 Y가 바인딩되어 있는 링크로 제한되어 있음을 의미한다. 환언하면, 웹 서비스(116)()가 웹 서비스(108)로 웹 서비스(108)을 호출하는 데 사용되는 API를 전달한 후에, 웹 서비스(116)는 그 API에 대해 잊어버리게 된다. 비대칭 I/O는 시스템(300) 등의 분산 네트워크 토폴로지의 형성을 방해한다. 본 발명은 대칭적 I/O를 제공함으로써 상기한 문제를 극복하거나 감소시킨다.The input / output mechanism (I / O) of the conventional variant of the π-operation structure is asymmetric. Consider the following mathematical example. , here And u say the same link, Indicates that the link is outputting something, such as X, U indicates that the link is inputting something, such as Y, X is output data, Y is input data, and P and Q are expressions. Wow It is a process that continues after it is executed. Asymmetry arises from the fact that output data X is not bound to channel U while input data Y is bound to channel U. The term "bound" means that the operating range of Y is limited to the link to which Y is bound. In other words, web service 116 ( ) Passes the API used to call the web service 108 to the web service 108, the web service 116 forgets about that API. Asymmetric I / O prevents the formation of distributed network topologies such as system 300. The present invention overcomes or reduces the above problems by providing symmetrical I / O.

도 8은 본 발명에 따라 형성되는 시스템(300)의 대칭적 I/O 측면을 나타낸 것이다. 프로세스(302B)가 수학적으로으로 정의되고, 여기서 T는 프로세스(302B)를 말하고는 무언가를 출력하고 있는 동안의 큐(310)를 말하며,는 무언가를 출력하고 있는 동안의 큐(312)를 말하고,는 무언가를 출력하고 있는 동안의 큐(316)를 말하며, S는 프로세스(306B)를 말하는 것으로 가정하자. 또한 프로세스(304B)가 수학적으로 다음과 같이, 즉로 정의되고, 여기서 P는 프로세스(304B)이고, X는 무언가를 입력하고 있는 동안의 큐(310)를 말하며, Y는 무언가를 입력하고 있는 동안의 큐(312)를 말하고, Z는 무언가를 입력하고 있는 동안의 큐(314)를 말하며, R은 프로세스(308B)를 말하는 것으로 가정하자. 프로세스 T가 프로세스 P와 병렬로 실행되는 것으로, 즉 수학적으로인 것으로 가정하자. 실행에 있어서, 프로세스는 큐(310)(X)로 배포되고, 프로세스도 큐(310)로 배포된다. 이들 2개의 프로세스가 큐(310)에서 반응한 후에, 프로세스는 큐(312)(Y)로 배포된다. 이 때, 큐(312)에서, 실행 중인 프로세스와 병렬로 큐(316)를 큐(314)에 바인딩하는 쿼리가 발행되는 것으로, 즉 수학적으로인 것으로 가정하자. 이러한 쿼리의 발행으로, 큐(316)(W)는 큐(314)(Z)와 융합된다. W에서의 임의의 입력 또는 출력은 Z로 전달되고, 그에 따라 Z에서의 임의의 입력 또는 출력은 W로 전달되며, 따라서 분산 네트워크 토폴로지를 형성한다. 채널(312)로부터, 또하나의 서브프로세스가 큐(316)(W)로 배포되고, 또하나의 서브프로세스이 큐(314)(Z)로 배포된다. 큐(316)로부터, 프로세스(306B)(프로세스 S)는 계속점으로서 배포되고 실행된다. 큐(314)로부터, 프로세스(308B)(프로세스 R)도 또하나의 계속점으로서 배포되고 실행된다.8 illustrates a symmetrical I / O aspect of a system 300 formed in accordance with the present invention. Process 302B is mathematically Where T is the process 302B Refers to the cue 310 while outputting something, Refers to the cue 312 while outputting something, Assume that queue refers to queue 316 while outputting something, and S refers to process 306B. Process 304B is also mathematically as follows, i.e. Where P is the process 304B, X refers to the queue 310 while typing something, Y refers to the queue 312 while typing something, and Z inputs something. Suppose that queue 314 is while R is referring to process 308B. Process T runs in parallel with process P, i.e. mathematically Assume that is In execution, the process Is distributed to queue 310 (X), and the process It is also distributed to queue 310. These two processes And After reacting in queue 310, the process Is distributed to queue 312 (Y). At this time, in queue 312, a query is issued that binds queue 316 to queue 314 in parallel with a running process, that is, mathematically Assume that is Upon issuing such a query, queue 316 (W) is fused with queue 314 (Z). Any input or output at W is passed to Z, so any input or output at Z is passed to W, thus forming a distributed network topology. From channel 312, another subprocess Is distributed to queue 316 (W), and another subprocess It is distributed to this queue 314 (Z). From queue 316, process 306B (process S) is distributed and executed as a continuous point. From queue 314, process 308B (process R) is also distributed and executed as another continuation point.

언어(400)는 그의 구문 이외에, 프로세스의 진화를 기술하기 위한 일련의 규칙을 갖는다. 환언하면, 이들 규칙은 언어(400)의 동작적 의미론을 정의한다. 언어(400)의 동작적 의미론은 구문 요소(402-406)와 그의 의도된 의미 사이의 관계를 기술한다. 따라서, 언어(400)로 작성된 프로그램 서술문은 구문적으로 정확할 수 있지만, 의미론적으로는 부정확할 수 있다. 환언하면, 언어(400)로 작성된 서술문은 타당한 형태로 되어 있을 수 있지만 여전히 잘못된 의미를 전달할 수 있다. 언어(400)의 동작적 의미론의 한 예는 도 9a 및 도 9b에 도식적으로 나타내어져 있는 통신 감축 규칙(반응 가상 머신(302C2, 304C2)에 구현되어 있음)이다. 쿼리(902A)(Q0)는 프로세스(302B)(T)에 의해 데이터베이스(904)(V)로 전송될 준비가 되어 있다.Language 400 has, in addition to its syntax, a set of rules for describing the evolution of a process. In other words, these rules define the operational semantics of language 400. The operational semantics of language 400 describe the relationship between syntax elements 402-406 and their intended meanings. Thus, a program statement written in language 400 may be syntactically correct but semantically incorrect. In other words, statements written in language 400 may be in a reasonable form but still convey a false meaning. One example of the operational semantics of language 400 is the communication reduction rule (implemented in reactive virtual machines 302C2 and 304C2) shown schematically in FIGS. 9A and 9B. Query 902A (Q 0 ) is ready to be sent to database 904 (V) by process 302B (T).

설명의 편의상, 쿼리(902A)는 데이터베이스 폼(database form)으로 도시되어 있다. 이 폼은 데이터는 물론 데이터베이스(904)에 의해 데이터가 계산될 때 아마도 채워질 수 있는 "홀"(hole)도 포함한다. 예를 들어, 쿼리는 답변될 질문에 대한 정보를 갖는 질문에 비유될 수 있다. 따라서, 정보는 폼 내의 데이터이고 답변은 폼 내의 홀을 채울 데이터이다. 다른 예로서, 폼은 충분한 정보가 이용가능한 경우 대수적으로 해를 구할 수 있는 선형 연립 방정식에 비유될 수 있다. 쿼리(902A)의 데이터베이스(904)로의 전송 후에, 프로세스는 프로세스(306B)(S)의 실행을 계속한다. 수학적으로, 폼(902A)을 데이터베이스(904)로 전송하고 프로세스(306B)를 계속하는 프로세스는 다음과 같이 기술될 수 있다., 여기서 V는 데이터베이스(904)를 나타내고, Q0는 폼(902A)을 나타내며, S는 프로세스(306B)를 나타낸다.For convenience of explanation, the query 902A is shown in a database form. This form includes data as well as “holes” that may be filled when the data is calculated by the database 904. For example, a query can be likened to a question with information about the question to be answered. Thus, the information is the data in the form and the answer is the data that will fill the holes in the form. As another example, a form can be likened to a linear simultaneous equation that can be algebraically solved if sufficient information is available. After the transfer of query 902A to database 904, the process continues execution of process 306B (S). Mathematically, the process of sending form 902A to database 904 and continuing process 306B can be described as follows. , Where V represents database 904, Q 0 represents form 902A, and S represents process 306B.

폼(902A)을 데이터베이스(904)로 전송하고 프로세스(306B)를 계속하지 않고 프로세스는 폼(902C)을 데이터베이스(904)로 전송하고 그 후에 프로세스(308B)를 계속하는 것으로 가정하자. 수학적으로, 이것은 다음과 같이 기술될 수 있다., 여기서 V는 데이터베이스(904)를 나타내고, Q1은 폼(902C)을 나타내며, T는 프로세스(308B)를 나타낸다.Assume that the process sends form 902C to database 904 and then continues process 308B without transferring form 902A to database 904 and continuing with process 306B. Mathematically, this can be described as follows. , Where V represents database 904, Q 1 represents form 902C, and T represents process 308B.

프로세스를 실행하는 것과 프로세스를 실행하는 것 사이의 이러한 선택의 존재 시에, 이러한 선택은 데이터베이스(904)로 전송되는 폼(906A)(Q)으로 축약될 수 있고 그 후에 프로세스(306B, 308B) 둘다가 병렬로 실행된다. 도 9b를 참조하기 바란다. 수학적으로, 이 결과는로 표현된다. 폼(906A)의 형성은 쿼리(906A)가 표준형(이하에 기술됨)으로 되도록 폼(902A,904A)을 결합함으로써 일어난다. 반면에 2개의 서로 다른 별개의 폼(902A, 902C)으로부터의 쿼리(906A)의 형성으로 2개의 대안(또는) 사이에 단지 하나의 선택만이 행해질 수 있기 전에, 하나의 폼(906A)이 데이터베이스(904)로 전송될 수 있고 프로세스(306B, 308B) 둘다가 활성 상태로 되고 병렬로 실행된다. 이것을 이해하는 한가지 방법은 폼(902A)을 3개의 항을 갖는 제1 선형 연립 방정식에 비유하고 폼(902C)을 3개의 항을 갖는 제2 선형 연립 방정식에 비유하는 것이다. 선형 대수의 수학으로부터, 2개의 선형 연립 방정식에 대한 해가 아직 없지만 부가의 데이터(또하나의 선형 연립 방정식)가 주어진 경우, 모든 항의 해가 구해질 수 있도록 2개의 선형 연립 방정식이 폼으로 계산될 수 있음을 결론지을 수 있다. 폼(906A)은 더 이상 데이터가 없는 경우 추가의 계산이 수행될 수 없는 것인 2개의 폼(902A, 902C)의 계산을 나타낸다.process Running and the process In the presence of this choice between executing, this choice may be abbreviated to form 906A (Q), which is sent to database 904, after which both processes 306B and 308B are executed in parallel. See FIG. 9B. Mathematically, this result is It is expressed as Formation of form 906A occurs by joining forms 902A and 904A such that query 906A becomes standard (described below). On the other hand, the formation of the query 906A from two different separate forms 902A, 902C results in two alternatives ( or One form 906A may be sent to database 904 and both processes 306B and 308B may be active and run in parallel before only one selection may be made between the two. One way to understand this is to liken form 902A to a first linear simultaneous equation with three terms and form 902C to a second linear simultaneous equation with three terms. From linear algebra, there are no solutions to the two linear simultaneous equations, but given additional data (another linear simultaneous equation), two linear simultaneous equations can be calculated in form so that all the solutions can be found. Can be concluded. Form 906A illustrates the calculation of two forms 902A, 902C, where no further calculation can be performed when there is no more data.

도 10a 내지 도 10c는 프로세스의 진화를 위한 또하나의 동작적 의미론 규칙, 리프트 규칙(lift rule)(도 11u 및 부록의 섹션 3.2를 참조하여 보다 상세히 기술됨)을 도식적으로 나타낸 것이다. 도 10a에 도시한 바와 같이, 프로세스(302B)는 메시지(또는 쿼리)를 전송하고 수신하기 위해 데이터베이스(1006, 904)와 개별적으로 통신한다. 데이터베이스(1006)는 "U"라고 명명되고, 데이터베이스(904)는 "V"라고 명명되어 있다. 프로세스(306B)가 데이터베이스(904)에 이름 "U"와 이름 "V" 사이의 관계를 표현하는 바인딩을 포함하는 쿼리(1002A)를 전송하는 것으로 가정하자. 쿼리(1002A)의 전송으로, 프로세스(302B)는 이름 "U", "V"가 동일한 데이터베이스를 말하는 것임을 알게 된다. 환언하면, 프로세스(302B)에 의해데이터베이스(1006)에 배치된 메시지가 데이터베이스(904)로 포워딩되고, 그에 대응하여 프로세스(302B)에 의해 데이터베이스(904)에 배치된 메시지가 데이터베이스(1006)로 포워딩된다. 프로세스(302B)가 쿼리(1002A)로부터 이름 "U", "V"가 동일한 데이터베이스를 지칭하거나 또는 프로세스(302B)에 의해 전송된 메시지를 서로에게 포워딩하는 2개의 별도의 데이터베이스가 있음을 해석할 수 있기 전에 만족되어야만 하는 어떤 조건(도 11u를 참조하여 이하에 상세히 기술됨)이 있다.10A-10C diagrammatically illustrate another operational semantic rule, a lift rule (described in more detail with reference to FIG. 11U and section 3.2 of the appendix) for the evolution of the process. As shown in FIG. 10A, process 302B individually communicates with databases 1006 and 904 to send and receive messages (or queries). Database 1006 is named "U" and database 904 is named "V". Assume that process 306B sends query 1002A to database 904 that includes a binding that represents the relationship between name "U" and name "V". By sending query 1002A, process 302B finds that the names "U" and "V" refer to the same database. In other words, a message placed in database 1006 by process 302B is forwarded to database 904, and a message placed in database 904 by process 302B is correspondingly forwarded to database 1006. do. Process 302B can either interpret from query 1002A to refer to a database with the same name "U", "V", or to have two separate databases forwarding messages sent by process 302B to each other. There are certain conditions (described in detail below with reference to FIG. 11U) that must be met before they are present.

도 10c에는 다수의 지역에 걸쳐 분산되어 있는 다수의 컴퓨팅 장치를 보여주는 시스템(1010)이 도시되어 있다. 프로세스(302B)는 샌프란시스코 지역(1012)에 있는 컴퓨팅 장치(302) 상에서 실행된다. 프로세스(304B)는 시애틀 지역(1016)에 있는 컴퓨팅 장치(304) 상에서 실행되고, 프로세스(308B)는 포틀랜드 지역(1014)에 있는 컴퓨팅 장치(308) 상에서 실행된다. 프로세스(302B)는 어떤 태스크를 수행하기 위해 프로세스(304B)의 도움을 받았다. 프로세스(302B)에 눈치채이지 않고, 프로세스(304B)는 프로세스(302B)에 의해 지정된 모든 태스크를 달성할 수 없다. 따라서, 프로세스(304B)는 프로세스(304B)의 범위 내에 있지 않은 태스크를 수행하기 위해 프로세스(308B)의 도움을 받았다. 쿼리(1002A) 등의 쿼리를 데이터베이스(1006)에 발행함으로써, 메시지(1020) 등의 프로세스(302B)로부터 데이터베이스(1006)로 오는 메시지는 프로세스(308B)가 요청된 태스크를 수행할 수 있도록 자동적으로 데이터베이스(904)로 포워딩된다. 다른 대안에서, 프로세스(302B)는 메시지를 교환하기 위해 직접 데이터베이스(904)와 통신할 수 있다. 그렇지만, 프로세스(302B)는 그렇게 할 필요가 없으며 데이터베이스(1006)와 계속 통신할 수 있다.10C is shown a system 1010 showing a number of computing devices distributed across multiple regions. Process 302B runs on computing device 302 in San Francisco area 1012. Process 304B runs on computing device 304 in Seattle area 1016, and process 308B runs on computing device 308 in Portland area 1014. Process 302B was assisted by process 304B to perform some task. Without noticing process 302B, process 304B may not be able to accomplish all of the tasks specified by process 302B. Thus, process 304B was assisted by process 308B to perform a task that is not within the scope of process 304B. By issuing a query, such as query 1002A, to database 1006, a message coming from process 302B, such as message 1020, to database 1006, automatically causes process 308B to perform the requested task. Forwarded to database 904. In another alternative, process 302B may communicate with database 904 directly to exchange messages. However, process 302B need not do so and can continue to communicate with database 1006.

도 11a 내지 도 11v는 프로세스 커널(302C) 등의 프로세스 커널에 의해 웹 서비스(302A)(이후부터는 "프로그램(302A)"라고 함) 등의 프로그램을 컴파일 또는 실행하는 방법(1100)을 나타낸 것이다. 프로그램(302A)은 언어(400)로 작성된다. 프로그램의 분석에 있어서, 방법(1100)은 쿼리 표현식 및 프로세스 표현식의 구조 및 내용을 규율하는 일련의 구문적 규칙을 실행한다. 쿼리 표현식 및 프로세스 포현식의 구조적 등가를 규율하는 일련의 등식 법칙도 커널 프로세스(302C)에 의해 실행된다. 언어(400)는 또한 언어(400)의 일련의 구문적 규칙에 따라 정확하게 형성되는 쿼리 표현식 및 프로세스 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙을 포함한다. 이들 일련의 동작적 의미론 규칙은 프로세스 커널(302C)에 의해 실행된다. 간명함을 위해, 방법(1100)의 이하의 설명은 도 3a 내지 도 3c에 도시한 시스템(300)과 연계하여 도시된 여러가지 구성요소를 참조한다.11A-11V illustrate a method 1100 for compiling or executing a program, such as a web service 302A (hereinafter referred to as "program 302A"), by a process kernel, such as process kernel 302C. Program 302A is written in language 400. In analyzing the program, the method 1100 executes a set of syntactic rules that govern the structure and content of query expressions and process expressions. A set of equation laws that govern the structural equivalence of query expressions and process expressions is also executed by the kernel process 302C. The language 400 also includes a set of operational semantic rules that govern the meaning of the query expressions and process expressions that are correctly formed according to the set of syntactic rules of the language 400. These series of operational semantic rules are executed by process kernel 302C. For simplicity, the following description of method 1100 refers to various components shown in connection with the system 300 shown in FIGS. 3A-3C.

시작 블록으로부터, 방법(1100)은 계속 터미널(continuation terminal)("터미널 A")과 종료 터미널(exit terminal)("터미널 B") 사이에 정의된 일련의 방법 단계(1102)로 진행한다. 일련의 방법 단계(1102)는 큐 구문(402)으로부터 형성된 쿼리 서술문의 구조 및 내용을 규율하는 구문적 규칙에 대해 프로그램을 실행시킨다. 터미널 A로부터(도 11c), 방법(1100)은 블록(1114)으로 진행하여 프로세스 커널(302C)은 프로그램(302A)으로부터 쿼리 표현식(Q)을 얻는다. 그 다음에, 결정 블록(1116)에서, 프로세스 커널(302C)은 쿼리(Q) 표현식이 구문 형태(syntactical form)을 갖는지 여부를 결정한다.From the start block, the method 1100 proceeds to a series of method steps 1102 defined between a continuation terminal ("terminal A") and an exit terminal ("terminal B"). A series of method steps 1102 executes the program against syntactic rules that govern the structure and content of query statements formed from queue syntax 402. From terminal A (FIG. 11C), the method 1100 proceeds to block 1114 where the process kernel 302C obtains the query expression Q from the program 302A. Next, in decision block 1116, the process kernel 302C determines that the query (Q) expression is in syntactical form. Determine whether or not

언어(400)로 작성된 각각의 쿼리는 구문 형태를 가지며, 구문 요소는 쿼리의 헤드를 나타내고 구문 요소는 쿼리의 보디를 나타낸다. 언어(400)로 작성된 각각의 쿼리는 헤드와 보디를 갖는다. 헤드는 파라미터의 수와 그 각각의 타입을 선언한다. 보디는 일련의 바인딩을 포함한다. 쿼리가 보통 하나의 태스크를 수행하는, 관련 상수, 데이터 타입, 및 변수를 갖는 이름있는 일련의 서술문(a named sequence of statements)(이름없는 쿼리(unnamed query)는 언어(400)를 사용하여 표현될 수 있음)이라는 점에서 쿼리는 종래의 프로그래밍 프로시저에 비유될 수 있다. 예를 들어, 쿼리의 헤드는 프로시저의 서명과 유사한 반면, 쿼리의 보디는 프로시저 내부에 포함된 일련의 서술문과 유사하다. 헤드 구분자 <> 내에는 0개 이상의 쿼리 항(이하에 정의됨)을 나타내는 심볼 T*이 들어 있다. 보디 구분자 () 내에는 0개 이상의 제약(이하에 기술됨)을 나타내는 심볼 C*이 들어 있다.Each query written in language 400 is in the form of a syntax. Has a syntax element Represents the head of the query and the syntax element Represents the body of the query. Each query written in language 400 has a head and a body. The head declares the number of parameters and their respective types. The body contains a series of bindings. A named sequence of statements (unnamed queries), with associated constants, data types, and variables, in which a query typically performs a task, can be expressed using the language 400. Queries can be likened to conventional programming procedures. For example, the head of a query is similar to the signature of a procedure, while the body of the query is similar to a series of statements contained within a procedure. The head delimiter <> contains the symbol T *, which represents zero or more query terms (defined below). Within the body delimiter () is a symbol C * representing zero or more constraints (described below).

결정 블록(1116)에서의 테스트에 대한 대답이 '아니오'이어서, 쿼리 Q가 언어(400)에 의해 인식되는 구문 형태로 작성되지 않음을 의미하는 경우, 방법(1100)은 실행을 완료하고 종료된다. 대답이 '예'인 경우, 방법(1100)은 또하나의 결정 블록(1118)으로 진행하여 프로세스 커널(302C)은 쿼리의 보디 내의 각각의 제약(C)이 구문 형태 T:=:T를 갖는지 여부를 결정하며, 여기서 T는 전술하고 또 이하에 추가로 기술되는 바와 같이 쿼리 항이고, 심볼 :=:은 2개의 쿼리 항 사이의 관계를 정의하는 바인딩을 나타낸다. 대답이 '아니오'이어서, 쿼리의 보디의 한 제약이언어(400)에 타당한 형태로 작성되지 않았음을 의미하는 경우, 방법(1100)은 실행을 완료하고 종료된다. 그렇지 않은 경우, 결정 블록(1118)에서의 대답은 '예'이고, 방법은 또하나의 결정 블록(1120)으로 진행한다.If the answer to the test at decision block 1116 is no, meaning that the query Q is not written in syntax form recognized by the language 400, the method 1100 completes execution and ends. . If the answer is yes, the method 1100 proceeds to another decision block 1118 where the process kernel 302C determines whether each constraint C in the body of the query has the syntax form T: =: T. Wherein T is a query term as described above and further described below, and the symbol: =: indicates a binding that defines a relationship between two query terms. If the answer is no, meaning that one constraint of the body of the query was not written in a form that is appropriate for language 400, the method 1100 completes execution and ends. Otherwise, the answer at decision block 1118 is yes, and the method proceeds to another decision block 1120.

결정 블록(1120)에서, 프로세스 커널(302C)은 쿼리 항 T가 리터럴(이후부터, "TOP"라고 함)인지 여부를 결정한다. 리터럴이란 변수나 표현식의 결과로서가 아닌 그 자신으로서 표현되는, 프로그램에서 사용되는 값이다. 리터럴의 예로는 숫자 25 및 32.1, 문자 a, 스트링 Hello, 및 부울값 TRUE가 있다. 결정 블록(1120)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 A5")로 진행한다. 터미널 A5로부터, 방법(1100)은 결정 블록(1146)으로 진행하여 프로세스 커널(302C)은 분석할 또하나의 쿼리 표현식이 있는지 여부를 결정한다. 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 B")로 진행한다. 그렇지 않은 경우, 결정 블록(1146)에서의 대답은 '예'이고, 방법(1100)은 블록(1114)로 루프백하여 분석을 위해 프로그램(302A)로부터 또하나의 쿼리 표현식을 획득한다.At decision block 1120, process kernel 302C determines whether the query term T is a literal (hereinafter referred to as "TOP"). A literal is a value used in a program that is expressed as it is not as a result of a variable or expression. Examples of literals are the numbers 25 and 32.1, the letter a, the string Hello, and the boolean TRUE. If the answer to decision block 1120 is yes, the method 1100 proceeds to another continuing terminal ("terminal A5"). From terminal A5, the method 1100 proceeds to decision block 1146 and the process kernel 302C determines whether there is another query expression to analyze. If the answer is no, the method 1100 proceeds to another continuing terminal ("Terminal B"). If not, the answer at decision block 1146 is yes, and the method 1100 loops back to block 1114 to obtain another query expression from the program 302A for analysis.

결정 블록(1120)에서, 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1122)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 상보적 리터럴(complimentary literal)(이후부터, "BOTTOM"이라 함)인지 여부를 결정한다. 상보적 리터럴은 리터럴의 역(inversion)이다. 결정 블록(1122)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 A5(상기함)로 진행한다. 그 대신에 결정 블록(1122)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1124)으로 진행한다. 여기에서, 프로세스 커널(302C)은 쿼리 항 T가 디스카더(discarder)(심볼 "_"로 구분됨)인지 여부를 결정한다. 디스카더는 입력 파라미터만을 가지고 있고 출력 파라미터를 제공하지 않는 쿼리이다. 결정 블록(1124)에서의 대답이 '예'인 경우, 방법(1100)은 전술한 터미널 A5로 진행한다. 결정 블록(1124)에서, 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 A1")로 진행한다.In decision block 1120, if the answer is no, the method 1100 proceeds to another decision block 1122, where the process kernel 302C determines that the query term T is complementary literal (hereinafter From, it is called "BOTTOM". Complementary literals are inversions of literals. If the answer at decision block 1122 is yes, the method 1100 proceeds to terminal A5 (described above). If instead the answer at decision block 1122 is no, the method 1100 proceeds to another decision block 1124. Here, process kernel 302C determines whether query term T is a discarder (separated by symbol "_"). The discarder is a query that has only input parameters and no output parameters. If the answer to decision block 1124 is yes, the method 1100 proceeds to terminal A5 described above. At decision block 1124, if the answer is no, the method 1100 proceeds to another continuing terminal ("terminal A1").

터미널 A1(도 11d)으로부터, 대답이 '아니오'인 경우, 방법(1100)은 결정 블록(1126)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 이름(또는 "hello" 등의 리터럴 스트링)인지 여부를 검증한다. 양호하게는, 알파벳 문자는 구문적으로 언어(400)에 의해, 프로그램 실행 동안에 수정될 수 있는 데이터를 포함할 수 있는 이름있는 저장 장소(named storage location)인 변수로서 취급된다. 언어(400)에서 알파벳 문자 앞에 "이름"이 오는 경우, 알파벳 문자는 언어(400)에 의해 변수가 아닌 리터럴 스트링으로 취급된다. 결정 블록(1126)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 진행한다. 결정 블록(1126)에서, 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1128)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 (X 등의) 변수인지 여부를 결정한다. 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 진행한다.From terminal A1 (FIG. 11D), if the answer is no, the method 1100 proceeds to decision block 1126 where the process kernel 302C indicates that the query term T is a name (or a literal string such as “hello”). Verify that it is. Preferably, alphabetic characters are syntactically treated by language 400 as a variable that is a named storage location that can contain data that can be modified during program execution. If a letter is preceded by an alphabetic character in the language 400, the alphabetic character is treated by the language 400 as a literal string rather than a variable. If the answer to decision block 1126 is yes, the method 1100 proceeds to terminal A5 (described above). At decision block 1126, if the answer is no, the method 1100 proceeds to another decision block 1128 where the process kernel 302C determines whether the query term T is a variable (such as X). Decide If the answer is yes, the method 1100 proceeds to terminal A5 (described above).

결정 블록(1128)에서, 대답이 '아니오'인 경우, 방법은 결정 블록(1159)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 형태 ""를 갖는 지역 변수인지 여부를 결정한다. 형태는 언어(400)로 작성된 프로그램에서 변수를 나타내는 항X를 포함하며, 일반적으로 마이크로컴퓨터 키보드의 최상위 행의 6번키 상에 있는 작은 위로 향하는 심볼(^)인 캐럿(caret)은 변수 X가 지역 변수(컴퓨터 과학과 관련하여, 지역 변수는 범위가 주어진 코드 블록, 보통 서브루틴으로 제한되어 있는 변수를 의미하지만, 본 발명에서는 지역 변수의 범위는 프로세스로 제한됨)임을 나타내며, 항는 프로세스에서 계속 프로세스에서 사용될 정보를 익스포트(export)할 수 있는 지역 변수 X의 생성을 나타낸다. 결정 블록(1159)에서 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 진행한다.In decision block 1128, if the answer is no, the method proceeds to decision block 1159 and the process kernel 302C determines that the query term T is of the form ". Determines whether it is a local variable with ". Contains the term X, which represents a variable in a program written in language 400. Caret, which is a small upward symbol (^) on the sixth key of the top row of the microcomputer keyboard, usually contains a variable X (In the context of computer science, a local variable means a variable that is limited to a given block of code, usually a subroutine, but in the present invention the scope of the local variable is limited to processes). Indicates the creation of a local variable, X, that can be used to export information that will continue to be used in the process. If the answer is yes in decision block 1159, the method 1100 proceeds to terminal A5 (described above).

결정 블록(1159)에서, 대답이 '아니오'인 경우, 방법은 결정 블록(1157)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 형태 ""를 갖는 지역 변수인지 여부를 결정한다. 형태는 변수를 나타내는 항 X를 포함하며, 항 ^는 캐럿이고, 항는 프로세스에서 프로세스가 진화하는 컴퓨팅 환경으로부터 (사용될) 정보를 임포트(import)할 수 있는 지역 변수 X를 나타낸다. 결정 블록(1157)에서 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 진행한다. 그렇지 않은 경우, 결정은 '아니오'이고, 방법(1100)은 또하나의 계속 터미널("터미널 A2")로 진행한다.In decision block 1159, if the answer is no, the method proceeds to decision block 1157 and the process kernel 302C determines that the query term T is of the form ". Determines whether it is a local variable with ". Contains the term X representing the variable, the term ^ is a caret, and the term Represents a local variable X in which a process can import information (to be used) from the evolving computing environment. If the answer is yes in decision block 1157, the method 1100 proceeds to terminal A5 (described above). If not, the decision is no and the method 1100 proceeds to another continuing terminal ("terminal A2").

터미널 A2로부터, 방법 흐름은 결정 블록(1130)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 (~ 심볼로 구분된) 역인지를 알아보기 위해 쿼리 항 T를 검사한다. 결정이 '예'인 경우, 방법 흐름은 터미널 A5(전술함)로 진행한다. 그렇지 않은 경우, 결정은 '아니오'이며, 방법(1100)은 결정 블록(1132)으로 들어간다. 결정 블록(1132)에서, 프로세스 커널(302C)은 쿼리 항 T가 순서화된 요소 세트인튜플인지 여부를 결정한다. 언어(400)에는 튜플을 나타내기 위한 2개의 심볼, 즉 구문적 심볼 "" 및 구문적 심볼 "#"이 있다. 결정 블록(1132)에서의 대답이 '예'인 경우, 방법 흐름은 터미널 A5(전술함)로 진행한다. 그렇지 않고 결정이 '아니오'인 경우, 방법(1100)은 결정 블록(1134)으로 진행한다. 여기에서, 프로세스 커널(302C)은 쿼리 항 T가 형태를 갖는지를 알아보기 위해 검사를 행하며, 여기서 X*은 하나 이상의 변수를 나타내고 Q는 쿼리를 나타낸다. 따라서, 프로세스 표현식은 쿼리의 헤드 내의 0개 이상의 변수 및 콤마로 분리된 쿼리의 보디 내의 2개의 다른 쿼리를 나타낸다. 결정 블록(1134)에서 결정이 '예'인 경우, 방법 흐름은 터미널 A5(전술함)로 진행한다. 결정이 '아니오'인 경우, 방법(1100)은 결정 블록(1136)으로 진행한다. 여기서, 프로세스 커널(302C)은 쿼리 항 T가 좌측 인젝션(INR(X))인지 여부를 검사한다. 종래에, 좌측 인젝션 연산자 "inl()"은 2개의 집합의 합집합 내의 요소의 소스를 나타내는 데 사용된다. 예를 들어, 집합 A가 집합 B와 합산(A+B로 표시됨)되는 것으로 가정하자. 집합 A+B의 각 요소는 실제로 그 요소가 집합 A에서 온 것임을 나타내기 위해 라벨 inl로 태깅된다(시각적으로 알파벳 문자 A가 집합 A+B의 좌측에 있기 때문임). 본 발명에서, 생성자 inl은 양호하게는 쿼리 표현식의 보디의 좌측 Q에 대한 연산(이하에 기술됨)을 나타내기 위해 사용된다. 결정 블록(1136)에 대한 대답이 '예'인 경우, 방법 흐름은 터미널 A5(전술함)로 진행한다. 그렇지 않은 경우, 방법(1100)은 또다른 계속 터미널("터미널 A3")로 들어간다.From terminal A2, the method flow proceeds to decision block 1130 where the process kernel 302C checks the query term T to see if the query term T is inverse (separated by ~ symbols). If the decision is yes, the method flow proceeds to terminal A5 (described above). Otherwise, the decision is no and the method 1100 enters a decision block 1132. At decision block 1132, process kernel 302C determines whether query term T is a tuple that is an ordered set of elements. Language 400 has two symbols for representing tuples, syntactic symbols " And the syntactic symbol "#". If the answer at decision block 1132 is yes, the method flow proceeds to terminal A5 (described above); otherwise, if the decision is no, then the method. 1100 proceeds to decision block 1134. Here, process kernel 302C has a query term T form. A check is made to see if X is found, where X * represents one or more variables and Q represents a query. Thus, the process expression Represents two or more variables in the body of the query, separated by commas and zero or more variables in the head of the query. If the decision is yes at decision block 1134, the method flow proceeds to terminal A5 (described above). If the decision is no, the method 1100 proceeds to decision block 1136. Here, the process kernel 302C checks whether the query term T is a left injection INR (X). Conventionally, the left injection operator "inl ()" is used to indicate the source of an element in the union of two sets. For example, assume that set A is summed with set B (denoted A + B). Each element of the set A + B is actually tagged with the label inl to indicate that the element is from the set A (because the alphabet letter A is left of the set A + B visually). In the present invention, the constructor inl is preferably a query expression It is used to represent the operation (described below) for the left Q of the body of. If the answer to decision block 1136 is yes, the method flow proceeds to terminal A5 (described above). Otherwise, the method 1100 enters another continuation terminal ("terminal A3").

터미널 A3로부터, 방법(1100)은 결정 블록(1138)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 우측 인젝션(INR(X))인지 여부를 결정한다. 위에서 간략히 기술한 바와 같이, 형태의 쿼리의 존재 시에, 좌측 인젝션 생성자 (INL(X))는 변수 X가 제약 QL에 바인딩되게 할 수 있고, 우측 인젝션 생성자 (INR(X))는 변수 X가 제약 QR에 바인딩되게 할 수 있다. 결정 블록(1138)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 진행한다. 그렇지 않은 경우, 방법 흐름은 결정 블록(1140)으로 진행하여 프로세스 커널(302C)은 쿼리 항 T가 형태를 갖는지 여부를 결정한다. 결정 블록(1140)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 A5로 진행한다. 그렇지 않은 경우, 방법 흐름은 또하나의 결정 블록(1142)으로 들어간다. 여기서, 프로세스 커널(302C)은 쿼리 항 T가 형태 ?T를 갖는지 여부를 결정한다. 결정 블록(1142)을 참조하기 바란다. 연산자 "?"는 항 T를 쿼리의 보디 내에 포함되어 있는 쿼리 Q 내의 첫번째 항에 바인딩시키는 판독 연산자로 생각될 수 있다. 결정 블록(1142)에서의 대답이 '예'인 경우, 방법 흐름은 터미널 A5(전술함)로 진행한다. 대답이 '아니오'인 경우, 방법은 쿼리 항이 복사 동작(예를 들어, "T@T")인지 여부를 결정한다. 결정 블록(1144)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 A5(전술함)로 들어간다. 그 대신에 대답이 '아니오'이어서, 쿼리 Q가 언어(400)에 의해 인식가능한 구문 형태로 작성되지 않았음을 의미하는 경우, 방법(1100)은 실행을 완료하고 종료된다.From terminal A3, the method 1100 proceeds to decision block 1138 and the process kernel 302C determines whether the query term T is a right injection INR (X). As outlined above, the form In the presence of a query of, the left injection constructor (INL (X)) can cause the variable X to be bound to the constraint Q L , and the right injection constructor (INR (X)) can cause the variable X to be bound to the constraint Q R. Can be. If the answer to decision block 1138 is yes, the method 1100 proceeds to terminal A5 (described above). Otherwise, the method flow proceeds to decision block 1140 where the process kernel 302C assumes that the query term T is of the form. Determine whether or not If the answer to decision block 1140 is yes, the method 1100 proceeds to terminal A5. Otherwise, the method flow enters another decision block 1142. Here, process kernel 302C determines whether query term T has type? T. See decision block 1142. Operator "?" Query term T It can be thought of as a read operator that binds to the first term in the query Q contained in the body of. If the answer to decision block 1142 is yes, the method flow proceeds to terminal A5 (described above). If the answer is no, the method determines whether the query term is a copy operation (eg, "T @ T"). If the answer at decision block 1144 is yes, the method 1100 enters terminal A5 (described above). If instead the answer is no, meaning that the query Q was not written in syntax form recognizable by the language 400, the method 1100 completes execution and ends.

터미널 B(도 11a)로부터, 방법(1100)은 계속 터미널("터미널 C")과 종료 터미널("터미널 D") 사이에 정의된 일련의 처리 단계(1104)로 진행한다. 이 일련의 처리 단계(1104)는 프로세스 서술문의 구조 및 내용을 규율하는 구문적 규칙에 대해 프로그램(302A)을 실행한다. 터미널 C(도 11g)로부터, 프로세스 커널(302C)은 프로그램(302A)로부터 프로세스 표현식()을 획득한다. 블록(1148)을 참조하기 바란다. 다음에, 결정 블록(150)에서, 프로세스 커널(302C)은 프로세스 표현식이 프로세스 정지 또는 프로세스의 비활성을 나타내는 "0"인지 여부를 결정한다. 대답이 '예'인 경우, 방법 흐름은 또하나의 계속 터미널("터미널 C3")로 진행한다. 그렇지 않은 경우, 방법 흐름은 또하나의 결정 블록(1152)으로 진행한다. 프로세스 커널(302C)은 프로세스 표현식이 형태를 갖는지 여부를 결정하며, 여기서 X는 채널, 큐, 데이터베이스, 또는 다른 구조화된 저장소를 나타내는 변수이고, Q는 전술하고 도 11c 내지 도 11f에 도시한 쿼리를 나타내며,는 쿼리 Q가 X로 전송되거나 X에 배치되어 있음을 나타내고, 마침표 "."는 프로세스로부터 또하나의 프로세스 P로의 시퀀스를 나타내거나 프로세스의 일부분으로부터 동일한 프로세스의 또다른 부분 P로의 시퀀스를 나타낸다. 결정 블록(1152)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 C3로 진행한다. 그렇지 않고, 대답이 '아니오'인 경우, 방법(1100)은 결정 블록(1154)으로 진행한다. 프로세스 커널(302C)은 프로세스 표현식등의 다수의의 합산인지 여부를 결정한다. 합산은 프로세스 표현식에 의해 표현된 프로세스가 많은 대안 중 하나를 실행할 수 있음을 나타낸다. 예를 들어,의 합산으로,에 의해 표현된 프로세스는또는를 실행할 수 있다. 결정 블록(1154)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 C3로 진행한다. 그렇지 않고 대답이 '아니오'인 경우, 방법 흐름은 또하나의 계속 터미널("터미널 C1")로 진행한다.From terminal B (FIG. 11A), the method 1100 continues with a series of processing steps 1104 defined between terminal ("terminal C") and terminating terminal ("terminal D"). This series of processing steps 1104 executes the program 302A against syntactic rules that govern the structure and content of the process statement. From terminal C (FIG. 11G), process kernel 302C receives process expression (from program 302A). ). See block 1148. Next, at decision block 150, the process kernel 302C is assigned a process expression. It is determined whether this is "0" indicating the process stop or inactivity of the process. If the answer is yes, the method flow proceeds to another continuing terminal ("terminal C3"). Otherwise, the method flow proceeds to another decision block 1152. Process Kernel 302C is a process expression This form Wherein X is a variable representing a channel, queue, database, or other structured repository, Q represents the query described above and illustrated in FIGS. 11C-11F, Indicates that query Q is sent to X or placed in X, and the period "." Represents a sequence from one process P to another Represents a sequence from a portion of to another portion P of the same process. If the answer at decision block 1152 is yes, the method 1100 proceeds to terminal C3. Otherwise, if the answer is no, the method 1100 proceeds to decision block 1154. Process Kernel 302C is a process expression this Numerous Determine whether the sum of Sum is a process expression Indicates that the process represented by can implement one of many alternatives. E.g, As the sum of The process represented by or You can run If the answer to decision block 1154 is yes, the method 1100 proceeds to terminal C3. Otherwise, if the answer is no, the method flow proceeds to another continuing terminal ("terminal C1").

터미널 C1(도 11h)로부터, 방법(1100)은 결정 블록(1156)으로 진행하여 프로세스 커널(302C)은 프로세스 표현식이 형태를 갖는지 여부를 결정하며, 여기서 NEW는 어떤 프로세스와 바인딩되어 있는 새 이름을 생성하기 위한 언어(400)에서의 연산자를 나타내고, (NEW X)는 어떤 프로세스에서의 새 이름 X의 생성을 나타내며, (NEW X)P는 새 변수 X가 생성되어 프로세스 P와 바인딩되어 있음을 나타낸다. 결정 블록(1156)에서의 결정이 '예'인 경우, 방법(1100)은 터미널 C3로 계속된다. 대답이 '아니오'인 경우, 방법(1100)은 결정 블록(1158)으로 들어간다. 여기서, 프로세스 커널(302C)은 프로세스 표현식이 형태 P|P를 갖는지 여부를 결정하여, 여기서 P|P는 한 프로세스가 또하나의 프로세스와 병렬로 실행됨을 나타낸다. 결정 블록(1158)에서 대답이 '예'인 경우, 방법 흐름은 터미널 C3로 진행한다. 그렇지 않은 경우, 방법(1100)은 결정 블록(160)으로 진행한다. 프로세스 커널(302C)은 결정 블록(1160)에서 프로세스 표현식이 형태 !P를 갖는지 여부를 결정하고, 여기서 느낌표 "!"는 복제 연산자를 나타내고 !P는 무한 합성(infinitecomposition) P|P|...을 나타낸다. 복제 연산자 !는 개발자로 하여금 언어(400)를 사용하여 프로세스의 무한 거동을 표현할 수 있게 해준다. 결정 블록(1160)에서 결정이 '예'인 경우, 방법(1100)은 터미널 C3로 진행한다. 그렇지 않은 경우, 방법(1100)은 또하나의 계속 터미널("터미널 C2")로 들어간다.From terminal C1 (FIG. 11H), the method 1100 proceeds to decision block 1156 so that the process kernel 302C is a process expression. This form Where NEW represents an operator in the language 400 for generating a new name that is bound to a process, and (NEW X) represents the creation of a new name X in a process, NEW X) P indicates that a new variable X is created and bound to process P. If the determination at decision block 1156 is YES, the method 1100 continues to terminal C3. If the answer is no, the method 1100 enters a decision block 1158. Here, process kernel 302C is a process expression Determine whether or not this form P | P, where P | P indicates that one process runs in parallel with another process. If the answer is yes in decision block 1158, the method flow proceeds to terminal C3. Otherwise, the method 1100 proceeds to decision block 160. Process kernel 302C may process the expression at decision block 1160. Determine whether or not this form! P, where the exclamation point "!" Represents the replication operator and! P represents infinite composition P | P | ... The replication operator! Allows developers to express the infinite behavior of a process using language 400. If the decision is yes at decision block 1160, the method 1100 proceeds to terminal C3. Otherwise, the method 1100 enters another continuation terminal ("terminal C2").

터미널 C2(도 11i)로부터, 방법(1100)은 결정 블록(1162)으로 진행하여 프로세스 커널(302C)은 프로세스 표현식이 형태 X[P]를 갖는지 여부를 결정한다.구문적 형태 X[P]는 언어(400)를 사용하는 개발자가 프로세스 P를 X에 배치하거나 전송할 수 있음을 나타내며, X는 전술한 바와 같이 다른 구조화된 저장소 중에서도 특히 채널, 큐, 및 데이터베이스를 포함한다. 결정 블록(1162)에서의 대답이 '예'인 경우, 방법(1100)은 터미널 C3로 진행한다. 그렇지 않은 경우, 대답이 '아니오'이며, 방법 흐름은 결정 블록(1164)으로 진행한다. 프로세스 커널(302C)은 프로세스 표현식이 리프트된 쿼리(lifted query)(이하에 보다 상세히 기술함)인 형태 <Q>를 갖는지 여부를 결정한다. 결정 블록(1164)에서 결정이 '예'인 경우, 방법(1100)은 터미널 C3로 들어간다. 그렇지 않은 경우, 대답은 '아니오'이며, 방법(1100)은 실행을 완료하고 종료된다. 이 지점에서 방법(1100)을 종료하는 이유는 프로세스 표현식이 언어(400)이 문법에 부합하지 않는 방식으로 형성되었기 때문이다.From terminal C2 (FIG. 11I), the method 1100 proceeds to decision block 1162 so that the process kernel 302C is a process expression. Determine whether or not this form X [P]. Syntactic form X [P] indicates that a developer using language 400 can place or transfer process P to X, where X is different as described above. Among the structured repositories include channels, queues, and databases in particular. If the answer to decision block 1162 is yes, the method 1100 proceeds to terminal C3. Otherwise, the answer is no, and the method flow proceeds to decision block 1164. Process Kernel 302C is a process expression It is determined whether or not this form has a form <Q> which is a lifted query (described in more detail below). If the decision is yes at decision block 1164, the method 1100 enters terminal C3. Otherwise, the answer is no, and the method 1100 completes execution and ends. The reason for ending method 1100 at this point is that the process expression This is because the language 400 is formed in a way that does not conform to grammar.

터미널 C3(도 11i)로부터, 방법(1100)은 결정 블록(1166)으로 진행하여 프로세스 커널(302C)은 프로그램(302A)이 검사할 다른 프로세스 표현식을 포함하고 있는지 여부를 결정한다. 대답이 '아니오'인 경우, 방법 흐름은 또하나의 계속 터미널("터미널 D")로 진행한다. 그렇지 않은 경우, 대답은 '예'이고, 방법(1100)은 또하나의 계속 터미널("터미널 C4")로 진행하고, 이 C4는 블록(1148)으로 루프백하여 상기한 방법 단계들이 반복된다.From terminal C3 (FIG. 11I), the method 1100 proceeds to decision block 1166 and the process kernel 302C determines whether the program 302A contains other process expressions to check. If the answer is no, the method flow proceeds to another continuing terminal ("Terminal D"). Otherwise, the answer is yes, and the method 1100 proceeds to another continuation terminal ("terminal C4"), which C4 loops back to block 1148 so that the method steps described above are repeated.

터미널 D(도 11a)로부터, 방법(1100)은 일군의 프로세싱 단계(1106)로 진행하여 방법은 쿼리 표현식의 구조적 등가를 규율하는 일련의 등식 법칙을 사용하여 프로그램을 실행한다(도 11j 참조). 프로세싱 단계(1106)는 계속 터미널("터미널 E")와 종료 터미널("터미널 F") 사이에 정의된다.From terminal D (FIG. 11A), the method 1100 proceeds to a group of processing steps 1106 where the method executes the program using a set of equation laws that govern the structural equivalence of the query expression (see FIG. 11J). Processing step 1106 continues between the terminal ("terminal E") and the terminating terminal ("terminal F").

터미널 E(도 11j)로부터, 방법(1100)은 블록(1168)으로 진행하여, 프로세스 커널(302C)은 구조적 등가 비교를 위한 2개 이상의 쿼리 표현식을 획득한다. 그 다음에, 방법은 쿼리 콘텍스트(K)가 형태 K[T:=:U]를 갖는지 여부를 결정한다. 쿼리 콘텍스트 K는 하나 이상의 제약에 의해 채워지도록 구성될 수 있는 홀을 갖는 다수의 쿼리를 나타낸다. 결정 블록(1178)에서의 대답이 '예'인 경우, 쿼리 콘텍스트 K는 또하나의 쿼리 콘텍스트 K[U:=:T]와 구조적으로 등가이다. 블록(1170B)을 참조하기 바란다. 이어서, 방법 흐름은 또하나의 계속 터미널("터미널 E1")로 진행한다. 그렇지 않고, 결정 블록(1170A)에서의 결정이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1172A)으로 들어간다. 여기서, 프로세스 커널(302C)은 쿼리 콘텍스트 K가 형태 K[T0:=:U0, T1:=:U1]을 갖는지를 결정한다. 결정 블록(1172A)에서의 대답이 '예'인 경우, 쿼리 콘텍스트 K는 또하나의 쿼리 콘텍스트K[T1:=:U1, T0:=:U0]와 구조적으로 등가이다. 블록(1172B)을 참조하기 바란다. 그 다음에, 방법 흐름은 터미널 E1으로 진행한다. 그 대신에 결정 블록(1172A)에서 대답이 '아니오'인 경우, 방법(1100)은 터미널 E1으로 진행하고, 터미널 E1은 또하나의 결정 블록(1174)으로 진행한다. 프로세스 커널(302C)은 구조적 등가에 대해 분석할 프로그램 내의 쿼리 표현식이 더 있는지 여부를 결정한다. 블록(1174)을 참조하기 바란다. 대답이 '아니오'인 경우, 방법(1100)은 종료 터미널 F로 진행한다. 그렇지 않은 경우, 대답은 '예'이고, 방법(1100)은 블록(1168)으로 진행하여 상기한 방법 단계들이 반복된다.From terminal E (FIG. 11J), the method 1100 proceeds to block 1168, where the process kernel 302C obtains two or more query expressions for structural equivalence comparison. The method then determines whether the query context K has the form K [T: =: U]. Query context K represents a number of queries with holes that can be configured to be filled by one or more constraints. If the answer to decision block 1178 is yes, then query context K is structurally equivalent to another query context K [U: =: T]. See block 1170B. The method flow then proceeds to another continuing terminal ("terminal E1"). Otherwise, if the decision at decision block 1170A is no, the method 1100 enters another decision block 1172A. Here, process kernel 302C determines whether query context K has the form K [T 0 : =: U 0 , T 1 : =: U 1 ]. If the answer in decision block 1172A is yes, then query context K is structurally equivalent to another query context K [T 1 : =: U 1 , T 0 : =: U 0 ]. See block 1172B. The method flow then proceeds to terminal E1. Instead, if the answer is no in decision block 1172A, the method 1100 proceeds to terminal E1 and terminal E1 proceeds to another decision block 1174. Process kernel 302C determines whether there are more query expressions in the program to analyze for structural equivalence. See block 1174. If the answer is no, the method 1100 proceeds to end terminal F. If not, the answer is yes, and the method 1100 proceeds to block 1168 where the method steps described above are repeated.

터미널 F(도 11a)로부터, 방법(1100)은 또하나의 계속 터미널("터미널 G")로 진행한다. 터미널 G(도 11b)로부터, 방법(1100)은 계속 터미널("터미널 H")과 종료 터미널("터미널 I") 사이에 정의된 일련의 프로세싱 단계들(1108)로 진행한다. 이들 프로세싱 단계들(1108) 중에, 방법은 처리된 서술문의 구조적 등가를 규율하는 일련의 등식 법칙을 사용하여 프로그램을 실행한다.From terminal F (FIG. 11A), the method 1100 proceeds to another continuing terminal ("terminal G"). From terminal G (FIG. 11B), the method 1100 continues with a series of processing steps 1108 defined between the terminal ("terminal H") and the terminating terminal ("terminal I"). During these processing steps 1108, the method executes the program using a set of equation laws that govern the structural equivalence of the processed statement.

터미널 H(도 11k)로부터, 방법(1100)은 블록(1176)으로 진행하여, 프로세스 커널(302C)은 구조적 등가 분석을 위해 프로그램(302A)으로부터 몇개의 프로세스 표현식(1 및2)을 획득한다. 그 다음에, 방법은 프로세스 표현식1이 형태 P0|P1을 갖는지 여부를 결정한다. 결정 블록(1178A)을 참조하기 바란다. 결정이 '예'인 경우, 프로세스 표현식1은2가 형태 P0|P1을 갖는 경우 프로세스 표현식2와 구조적으로 등가이다. 블록(1178B)을 참조하기 바란다. 그 다음에, 방법(1100)은 또하나의 계속 터미널("터미널 H7")로 진행한다. 결정 블록(1178A)에서 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1180A)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식1이 형태 P|0을 갖는지 여부를 결정한다. 결정 블록(1180A)에서 대답이 '예'인 경우, 프로세스 표현식1은 프로세스 표현식2가 형태 P를 갖는 경우 프로세스 표현식2와 구조적으로 등가이다. 블록(1180B)를 참조하기 바란다. 그 다음에, 방법 흐름은 터미널 H7로 진행한다. 결정 블록(1180A)에서 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1182A)로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식1이 형태 !P를 갖는지 여부를 결정한다. 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 H2")로 진행한다. 결정 블록(1182A)에서 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 H1")으로 진행한다.From terminal H (FIG. 11K), the method 1100 proceeds to block 1176, where the process kernel 302C receives several process expressions from the program 302A for structural equivalence analysis. 1 and 2) to obtain. Then, the method is a process expression Determine whether 1 has the form P 0 | P 1 . See decision block 1178A. If the decision is yes, the process expression 1 Process expression when 2 has the form P 0 | P 1 It is structurally equivalent to 2. See block 1178B. The method 1100 then proceeds to another continuing terminal ("terminal H7"). If the answer to decision block 1178A is no, the method 1100 proceeds to another decision block 1180A, so that the process kernel 302C returns a process expression. Determine whether 1 has the form P | 0. If the answer is yes in decision block 1180A, the process expression 1 is the process expression Process expression when 2 has form P It is structurally equivalent to 2. See block 1180B. The method flow then proceeds to terminal H7. If the answer to decision block 1180A is no, then the method 1100 proceeds to another decision block 1182A. Here, process kernel 302C is a process expression Determines whether 1 has the form! P. If the answer is no, the method 1100 proceeds to another continuing terminal ("terminal H2"). If the answer is yes in decision block 1182A, the method 1100 proceeds to another continuing terminal ("terminal H1").

터미널 H1(도 11l)으로부터, 방법(1100)은 블록(1182B)으로 진행하여, 프로세스 표현식1은 프로세스 표현식2가 형태 P|!P를 갖는 경우 프로세스 표현식2와 구조적으로 등가인 것으로 결정된다. 그 다음에, 방법(1100)은 터미널 H7로 진행한다.From terminal H1 (FIG. 11L), the method 1100 proceeds to block 1182B, where the process expression 1 is the process expression Process expression if 2 has the form P |! P It is determined to be structurally equivalent to 2. The method 1100 then proceeds to terminal H7.

터미널 H2(도 11l)로부터, 방법(1100)은 결정 블록(1184A)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식1이 형태 P0+P1을 갖는지 여부를 결정한다. 결정 블록(1184A)에 대한 대답이 '예'인 경우, 프로세스 커널(302C)은 프로세스 표현식2가 형태 P1+P0을 갖는 경우 프로세스 표현식1이 프로세스 표현식2와구조적으로 등가인 것으로 결정한다. 블록(1184B)을 참조하기 바란다. 그 다음에, 방법 흐름은 터미널 H7로 진행한다. 그 대신에 결정 블록(1184A)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1186A)으로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식1이 형태 P0+0을 갖는지 여부를 결정한다. 대답이 '예'인 경우, 방법(1100)은 블록(1186B)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식2가 형태 P를 갖는 경우 프로세스 표현식1이 프로세스 표현식2와 구조적으로 등가인 것으로 결정한다. 그 다음에, 방법(1100)은 터미널 H7로 진행한다. 대답이 '아니오'인 경우, 방법 흐름은 또하나의 결정 블록(1188A)으로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식1이 형태 (NEW X)(NEW Y)P를 갖는지 여부를 결정한다. 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 H3")로 진행한다. 그렇지 않고 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 H4")로 진행한다.From terminal H2 (FIG. 11L), method 1100 proceeds to decision block 1184A, where process kernel 302C is a process expression. Determines whether 1 has the form P 0 + P 1 . If the answer to decision block 1184A is YES, then the process kernel 302C returns a process expression. Process expression when 2 has the form P 1 + P 0 1 process expression We decide to be structurally equivalent to 2. See block 1184B. The method flow then proceeds to terminal H7. If instead the answer at decision block 1184A is no, the method 1100 proceeds to another decision block 1186A. Here, process kernel 302C is a process expression Determines whether 1 has the form P 0 +0. If the answer is yes, the method 1100 proceeds to block 1186B, where the process kernel 302C selects a process expression. Process expression when 2 has form P 1 process expression Determined to be structurally equivalent to 2. The method 1100 then proceeds to terminal H7. If the answer is no, the method flow proceeds to another decision block 1188A. Here, process kernel 302C is a process expression Determines whether 1 has type (NEW X) (NEW Y) P. If the answer is yes, the method 1100 proceeds to another continuing terminal ("terminal H3"). Otherwise, if the answer is no, the method 1100 proceeds to another continuing terminal ("terminal H4").

터미널 H3(도 11m)로부터, 방법(1100)은 블록(1188B)으로 진행하여, 프로세스 표현식1은 프로세스 표현식2가 형태 (NEW Y)(NEW X)P를 갖는 경우 프로세스 표현식2와 구조적으로 등가인 것으로 결정된다. 터미널 H4(도 11m)로부터, 방법(1100)은 또하나의 블록(1190A)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식1이 형태 (NEW X)(NEW X)P를 갖는지 여부를 결정한다. 결정 블록(1190A)에 대한 대답이 '예'인 경우, 프로세스 표현식1은 프로세스 표현식2가 형태 (NEW X)P를 갖는 경우 프로세스 표현식2와 구조적으로 등가이다. 블록(1190B)를 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 H7으로 진행한다. 결정 블록(1190A)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1192A)으로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식1이 형태 (NEW X)P|Q를 갖는지 여부를 결정한다. 결정 블록(1192A)에서의 대답이 '아니오'인 경우, 프로세스는 블록(1192B)로 진행하여, 프로세스 커널(302C)은 프로세스 표현식2가 형태 (NEW X)(P|Q)를 갖는 경우 프로세스 표현식1이 프로세스 표현식2와 구조적으로 등가인 것으로 결정한다. 이름 X는 양호하게는 프로세스 Q 내의 자유 이름(free name)이다. 환언하면, 이름 X는 프로세스 Q에 바인딩되어 있지 않다. 그 다음에, 방법(1100)은 터미널 H7로 진행한다.From terminal H3 (FIG. 11M), the method 1100 proceeds to block 1188B, where the process expression 1 is the process expression Process expression when bivalent has the form (NEW Y) (NEW X) P It is determined to be structurally equivalent to 2. From terminal H4 (FIG. 11M), method 1100 proceeds to another block 1190A, where process kernel 302C is a process expression. Determines whether 1 has type (NEW X) (NEW X) P. If the answer to decision block 1190A is yes, then the process expression 1 is the process expression Process expression when bi has form (NEW X) P It is structurally equivalent to 2. See block 1190B. The method 1100 then proceeds to terminal H7. If the answer to decision block 1190A is no, the method 1100 proceeds to another decision block 1192A. Here, process kernel 302C is a process expression Determines whether 1 has the form (NEW X) P | Q. If the answer at decision block 1192A is no, the process proceeds to block 1192B, where the process kernel 302C expresses a process expression. Process expression when bivalent form (NEW X) (P | Q) 1 process expression Determined to be structurally equivalent to 2. Name X is preferably a free name in process Q. In other words, the name X is not bound to process Q. The method 1100 then proceeds to terminal H7.

결정 블록(1192A)에서의 대답이 '아니오'인 경우, 방법(1100)은 결정 블록(1194A)으로 들어간다. 여기서, 프로세스 커널(302C)은 프로세스 표현식1이 형태를 갖는지 여부를 결정하며, 여기서 <>는 아무것도 포함하지 않는 쿼리의 헤드를 나타내고,는 일련의 제약 또는 일련의 바인딩을 나타내며,는 리터럴 X가 리터럴 X'에 바인딩되어 있거나 리터럴 X가 리터럴 X'와 등가 관계를 가짐을 나타내고,는 쿼리의 헤드가 프로세스 P와 병렬로 실행되고 있는 쿼리임을 나타낸다. 결정 블록(1194A)에서의 테스트에 대한 대답이 '아니오'인 경우, 방법(1100)은 터미널 H7로 진행한다. 그 대신에 결정 블록(1194A)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 H6")로 진행한다.If the answer to decision block 1192A is no, the method 1100 enters decision block 1194A. Here, process kernel 302C is a process expression 1 this form Determines whether or not, where <> represents the head of a query that contains nothing, Represents a set of constraints or a set of bindings, Indicates that literal X is bound to literal X 'or that literal X has an equivalent relationship to literal X', Query Indicates that the head of is a query running in parallel with process P. If the answer to the test at decision block 1194A is no, then the method 1100 proceeds to terminal H7. Instead, if the answer in decision block 1194A is YES, the method 1100 proceeds to another continuing terminal ("terminal H6").

터미널 H5(도 11n)로부터, 방법(1100)은 또하나의 결정 블록(1194B)으로 진행한다. 결정 블록(1194B)에서, 프로세스 커널(302C)은 쿼리가 표준형(canonical)인지 여부를 결정한다. 쿼리는 그의 제약(쿼리의 보디 내의 바인딩)의 전부가 축약불가(irreducible)이고 또 쿼리가 실패가 아닌 경우에만 표준형이거나 그 대신 표준형으로 되어 있다고 말해진다. 제약은 쿼리가 제2 쿼리로 매핑되거나 축약되도록 제2 쿼리가 존재하는 경우에만 쿼리에서 축약불가이고, 제약은 제2 쿼리의 요소이다. 쿼리가 또하나의 쿼리로 매핑되거나 축약되고 그 다른 쿼리가 실패를 포함하는 경우에만 쿼리는 실패한 것으로 말해진다. 형태 L0:=:L1의 제약은 L0가 L1의 보수와 등가가 아닌 경우에 실패이다(단, L0, L1은 리터럴임).From terminal H5 (FIG. 11N), method 1100 proceeds to another decision block 1194B. At decision block 1194B, process kernel 302C queries Determines whether is canonical. The query is said to be standard or instead standard only if all of its constraints (binding in the body of the query) are irreducible and the query is not a failure. Constraints are non-abbreviated in a query only if a second query exists such that the query is mapped or shortened to the second query, and the constraint is an element of the second query. A query is said to fail only if the query is mapped or abbreviated to another query and that other query contains a failure. Type L 0: =: (Im-stage, L 0, L 1 is a literal), the constraints of L 1 is the failure in the case where L 0 non-conservative equivalent of L 1.

결정 블록(1194B)에서의 대답이 '예'인 경우, 방법(1100)은 블록(1194C)으로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식2가 형태를 갖는 경우 프로세스 표현식1이 프로세스 표현식2와 구조적으로 등가인 것으로 결정한다. 프로세스 표현식은 프로세스 P에서 이름 X가 발생될 때마다 이러한 발생은 이름 X'으로 대체될 수 있음을 나타낸다. 이 점에서, 프로세싱 단계(1194A-1194C)가 프로그램적으로 치환 등가(substitution equivalent)(도 7a 및 도 7b와 연계하여 전술함)를 기술함을 상기할 수 있어야만 한다. 그 다음에, 방법(1100)은 터미널 H7으로 진행한다.If the answer to decision block 1194B is yes, the method 1100 proceeds to block 1194C. Here, process kernel 302C is a process expression Bivalent form Expressions if you have 1 process expression Determined to be structurally equivalent to 2. Process expression Indicates that whenever a name X occurs in process P, this occurrence can be replaced by the name X '. In this regard, it should be recalled that processing steps 1194A-1194C describe a substitution equivalent (described above in connection with FIGS. 7A and 7B). The method 1100 then proceeds to terminal H7.

결정 블록(1194B)에서의 대답이 '아니오'인 경우, 방법(1100)은 터미널 H7로 진행한다. 터미널 H7로부터, 방법(1100)은 또하나의 결정 블록(1196)으로 진행하여, 프로세스 커널(302C)은 구조적 등가 분석을 위한 프로세스 표현식이 더 있는지를 알아보기 위한 검사를 한다. 결정 블록(1196)에서 대답이 '아니오'인 경우, 방법 흐름은 종료 터미널 I로 진행한다. 그렇지 않은 경우, 방법(1100)은 계속 터미널("터미널 H8")로 진행한다. 터미널 H8(도 11k)로부터, 방법(1100)은 블록(1176)으로 루프백하고, 상기한 방법 단계들이 반복된다.If the answer at decision block 1194B is no, the method 1100 proceeds to terminal H7. From terminal H7, the method 1100 proceeds to another decision block 1196, where the process kernel 302C checks to see if there are more process expressions for structural equivalence analysis. If the answer to decision block 1196 is no, then the method flow proceeds to end terminal I. Otherwise, the method 1100 continues to the terminal ("terminal H8"). From terminal H8 (FIG. 11K), method 1100 loops back to block 1176, and the method steps described above are repeated.

종료 터미널 I(도 11b)로부터, 방법(1100)은 일련의 프로세싱 단계들(1110)로 진행하여, 방법은 프로그램(302A) 내의 쿼리 서술문의 의미를 규율하는 동작적 의미론 규칙에 대해 프로그램(302A)을 실행한다. 일련의 프로세싱 단계들(1110)은 계속 터미널("터미널 J")과 종료 터미널("터미널 K") 사이에 정의된다. 언어(400)에서, 동작적 의미론 규칙은 기본적으로 일련의 진화하는 프로세스 관계이다. 프로세스는 그 특성상 동적이며 따라서 한 시점으로부터 다른 시점으로 프로세스는 계속하여 변하거나 진화한다. 언어(400)의 동작적 의미론 규칙은 언어(400)로 표현된 프로세스의 주의깊게 안내된 진화를 제공한다. 도 11c 내지 도 11i에서 전술한 구문적 규칙을 통해 개발자는 프로세스가 언어(400)의 동작적 의미론을 통해 진화하는 뉘앙스를 표현할 수 있다.From terminating terminal I (FIG. 11B), the method 1100 proceeds to a series of processing steps 1110, where the method proceeds to the program 302A for operational semantic rules that govern the meaning of the query statement within the program 302A. Run A series of processing steps 1110 continue to be defined between the terminal ("terminal J") and the terminating terminal ("terminal K"). In language 400, operational semantic rules are basically a series of evolving process relationships. Processes are dynamic in nature and therefore the process continues to change or evolve from one point to another. The operational semantic rules of language 400 provide a carefully guided evolution of the process represented by language 400. The syntactic rules described above in FIGS. 11C-11I allow a developer to express the nuances that process evolves through the operational semantics of language 400.

터미널 J(도 11o)로부터, 방법(1100)은 블록(1198)으로 진행하여, 프로세스 커널(302C)은 프로그램 내의 쿼리 표현식으로부터 바인딩을 획득한다. 그 다음에,결정 블록(1199A)에서, 프로세스 커널(302C)은 바인딩 B가 바인딩 TOP:=:BOTTOM을 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를 무(nothing)로 축약한다. 블록(1199B)을 참조하기 바란다. 그 다음에, 방법 흐름은 계속 터미널("터미널 J4")로 진행한다. 그 대신에, 대답이 '아니오'인 경우, 방법 흐름은 결정 블록(1197A)으로 진행하여, 프로세스 커널(302C)은 바인딩 B가 바인딩 X:=:T, U:=:X을 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를 바인딩 T:=:U로 축약시킨다. 블록(1197B)을 참조하기 바란다. 그 다음에, 방법 흐름은 터미널 J4로 진행한다. 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 J1")로 진행한다.From terminal J (FIG. 11O), the method 1100 proceeds to block 1 198, where the process kernel 302C obtains the binding from the query expression in the program. Next, at decision block 1199A, process kernel 302C determines whether binding B includes binding TOP: =: BOTTOM. If the answer is yes, then process kernel 302C shortens binding B to nothing. See block 1199B. The method flow then continues to the terminal ("terminal J4"). Instead, if the answer is no, the method flow proceeds to decision block 1197A, where the process kernel 302C determines whether binding B includes bindings X: =: T, U: =: X. Decide If the answer is yes, then process kernel 302C shortens binding B to binding T: =: U. See block 1197B. The method flow then proceeds to terminal J4. If the answer is no, the method 1100 proceeds to another continuing terminal ("terminal J1").

터미널 J1(도 11p)으로부터, 방법(1100)은 또하나의 결정 블록(1193A)으로 진행하여, 프로세스 커널(302C)은 바인딩 B가를 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를으로 축약시킨다. 블록(1193B)을 참조하기 바란다. 그 다음에, 방법 흐름은 터미널 J4로 진행한다. 결정 블록(1193A)에서 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1191A)으로 진행한다. 프로세스 커널(302C)은 바인딩 B가 바인딩을 포함하는지 여부를 결정한다. 결정 블록(1191A)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를로 축약시킨다. 블록(1191B)을 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 J4로 진행한다. 결정 블록(1191A)에 대한 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1189A)으로 진행한다.From terminal J1 (FIG. 11P), the method 1100 proceeds to another decision block 1 193A, where the process kernel 302C is bound to B. Determine whether to include. If the answer is yes, then process kernel 302C binds B. Abbreviate See block 1193B. The method flow then proceeds to terminal J4. If the answer to decision block 1193A is no, then the method 1100 proceeds to another decision block 1191A. Process Kernel 302C is bound by B binding Determine whether to include. If the answer in decision block 1191A is yes, then the process kernel 302C will bind binding B. Abbreviate See block 1191B. The method 1100 then proceeds to terminal J4. If the answer to decision block 1191A is no, the method 1100 proceeds to another decision block 1149A.

결정 블록(1191A)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1189A)으로 진행한다. 프로세스 커널(302C)은 바인딩 B가를 포함하는지 여부를 결정한다. 결정 블록(1189A)에서의 대답이 '예'인 경우, 방법(1100)은 블록(1189B)으로 진행하여, 프로세스 커널(302C)은 바인딩 B를로 축약시킨다. 그 다음에, 방법 흐름은 터미널 J4로 진행한다. 결정 블록(1189A)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 J2")로 진행한다.If the answer to decision block 1191A is no, the method 1100 proceeds to another decision block 1149A. Process kernel 302C is bound to Determine whether to include. If the answer to decision block 1189A is YES, the method 1100 proceeds to block 1189B, where the process kernel 302C removes binding B. Abbreviate The method flow then proceeds to terminal J4. If the answer to decision block 1189A is no, the method 1100 proceeds to another continuing terminal ("terminal J2").

터미널 J2로부터, 방법(1100)은 또하나의 결정 블록(1187A)으로 진행한다. 여기서, 프로세스 커널(302C)은 바인딩 B가를 포함하고 있는지 여부를 결정한다. 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를로 축약시킨다. 블록(1187B)을 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 J4로 진행한다. 결정 블록(1187A)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1185A)으로 진행한다. 프로세스 커널(302C)은 바인딩 B가를 포함하는지 여부를 결정한다. 결정 블록(1185A)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를로 축약시킨다. 블록(1185B)을 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 J4로 진행한다.결정 블록(1185A)에 대한 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1183A)으로 진행한다. 프로세스 커널(302C)은 바인딩 B가를 포함하는지 여부를 결정한다. 환언하면, 쿼리는 디스카더 연산자와 바인딩되어 있다. 결정 블록(1183A)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 바인딩 B를 이하의 바인딩,으로 축약시킨다. 환언하면, 쿼리의 헤드 내의 리스트 X의 각 항은 디스카더 연산자에 바인딩되어 있다. 그 다음에, 방법(1100)은 터미널 J4로 진행한다. 결정 블록(1183A)에서의 대답이 '아니오'인 경우, 방법 흐름은 또하나의 계속 터미널("터미널 J3")로 들어간다.From terminal J2, the method 1100 proceeds to another decision block 1187A. Here, process kernel 302C has binding B Determine whether it contains. If the answer is yes, then process kernel 302C binds B. Abbreviate See block 1187B. The method 1100 then proceeds to terminal J4. If the answer to decision block 1187A is no, the method 1100 proceeds to another decision block 1185A. Process kernel 302C is bound to Determine whether to include. If the answer in decision block 1185A is YES, then the process kernel 302C attaches binding B. Abbreviate See block 1185B. The method 1100 then proceeds to terminal J4. If the answer to decision block 1185A is no, the method 1100 proceeds to another decision block 1183A. Process kernel 302C is bound to Determine whether to include. In other words, a query Is bound to the divider operator. If the answer in decision block 1183A is yes, then process kernel 302C binds binding B as follows: Abbreviate In other words, a query Each term in list X in the head of is bound to the divider operator. The method 1100 then proceeds to terminal J4. If the answer at decision block 1183A is no, the method flow enters another continuing terminal ("terminal J3").

터미널 J3(도 11r)로부터, 방법(1100)은 또하나의 결정 블록(1181A)으로 진행하여, 프로세스 커널(302C)은 바인딩 B가 형태를 갖는지 여부를 결정한다. 환언하면, 프로세스 커널(302C)은 바인딩 B가 헤드 내에 리스트를 가지고 또를 포함하는 보디 내에 3개의 제약 리스트를 갖는 쿼리의 형태로 되어 있는지 여부를 결정한다. 결정 블록(1181A)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 또한 리스트으로 축약될 수 있는지 여부를 결정한다. 결정 블록(1181B)을 참조하기 바란다. 결정 블록(1181B)에 대한 대답이 '예'인경우, 바인딩 B은 쿼리로 축약된다. 블록(1181C)을 참조하기바란다. 방법 흐름은 터미널 J4로 진행한다.From terminal J3 (FIG. 11R), the method 1100 proceeds to another decision block 1181A, where the process kernel 302C is bound B in form. Determine whether or not In other words, process kernel 302C lists binding B in the head. Have another It is determined whether or not in the form of a query having three constraint lists in the body including a. If the answer in decision block 1181A is yes, then the process kernel 302C is also listed. end Determine whether it can be abbreviated as See decision block 1181B. If the answer to decision block 1181B is yes, then binding B queries Is abbreviated as See block 1181C. The method flow proceeds to terminal J4.

결정 블록(1181A, 1181B)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1179A)으로 진행한다. 프로세스 커널(302C)은 바인딩 B가 이하의 쿼리를 포함하는지 여부를 결정한다. 결정 블록(1179A)에서의 대답이 '예'인 경우, 바인딩 B는 쿼리로 축약된다. 블록(1179B)을 참조하기 바란다. 환언하면, 이름 U가 쿼리의 보디 내의 이름 X에 바인딩되어 있는 경우, 이름 X가 있는 리스트내의 모든 곳에서 이름 X는 이름 U로 대체될 수 있다. 그 다음에, 방법 흐름은 터미널 J4로 진행한다. 그렇지 않은 경우, 결정 블록(1179A)에서의 대답은 '아니오'이고, 방법 흐름은 터미널 J4로 진행하며, 터미널 J4는 또하나의 결정 블록(1177)으로 진행한다. 여기서, 프로세스 커널(302C)은 언어(400)의 의미론적 규칙을 적용할 또하나의 쿼리 표현식이 있는지 여부를 결정한다. 대답이 '아니오'인 경우, 방법(1100)은 종료 터미널 K로 진행한다. 결정 블록(1177)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 J5")로 진행한다. 터미널 J5로부터, 방법(1100)은 블록(1198)으로 루프백하고 상기한 방법 단계들이 반복된다.If the answer at decision blocks 1181A, 1181B is no, the method 1100 proceeds to another decision block 1179A. Process kernel 302C queries that binding B is below Determine whether to include. If the answer in decision block 1179A is yes, then binding B queries Is abbreviated as See block 1179B. In other words, a list with name X if name U is bound to name X in the body of the query. Everywhere in the name X can be replaced by the name U. The method flow then proceeds to terminal J4. Otherwise, the answer at decision block 1179A is no, the method flow proceeds to terminal J4, and terminal J4 proceeds to another decision block 1177. Here, process kernel 302C determines whether there is another query expression to apply the semantic rules of language 400. If the answer is no, the method 1100 proceeds to end terminal K. If the answer to decision block 1177 is yes, the method 1100 proceeds to another continuing terminal ("terminal J5"). From terminal J5, the method 1100 loops back to block 1 198 and the method steps described above are repeated.

종료 터미널 K(도 11b)로부터, 방법(1100)은 일련의 프로세싱 단계들(1112)로 진행하여, 방법은 프로세스 표현식의 의미를 규율하는 동작적 의미론 규칙에 대해 프로그램(302A)을 실행한다. 일련의 프로세싱 단계들(1112)은 계속 터미널("터미널 L")과 종료 터미널("터미널 M") 사이에 정의된다.From terminating terminal K (FIG. 11B), the method 1100 proceeds to a series of processing steps 1112, where the method executes the program 302A against operational semantic rules that govern the meaning of the process expression. A series of processing steps 1112 are defined between the terminal ("terminal L") and the terminating terminal ("terminal M").

터미널 L(도 11s)로부터, 방법(1100)은 블록(1175)으로진행하여, 프로세스 커널(302C)은 프로그램(302A) 내의 프로세스 표현식()을 획득한다. 그 다음에, 결정 블록(1173A)에서, 프로세스 커널(302C)은 프로세스 표현식이 합산을 포함하는지 여부를 결정한다. 결정 블록(1173A)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 결정 블록(1173B)으로 진행한다. 여기서, 프로세스 커널(302C)은 표준형적으로 또하나의 쿼리 Q로 축약될 수 있는 형태의 바인딩이 있는지 여부를 결정한다.둘다는 항을 매핑하거나 축약시키는 순열을 정의한다(부록의 섹션 3.2의 정의 3.2.1 참조).둘다는 양호하게는 데이터베이스 결합(database join)으로 해석된다. 결정 블록(1173B)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 프로세스 표현식을, 축약된 쿼리 Q가 구조화된 저장소 X로 전송되고 그 후에 프로세스 P0, P1둘다 병렬로 실행됨을 나타내는 프로세스으로 축약시킨다. 블록(1173C)을 참조하기 바란다. 프로세싱 단계들(1173A-1173C)은 도 9a 및 도 9b와 연계하여 전술하였다. 그 다음에, 블록(1173C)으로부터, 방법(1100)은 또하나의 계속 터미널("터미널 L6")로 진행한다.From terminal L (FIG. 11S), the method 1100 proceeds to block 1175, where the process kernel 302C writes the process expression in the program 302A. ). Next, at decision block 1173A, process kernel 302C is a process expression. Sum this Determine whether to include. If the answer to decision block 1173A is yes, the method 1100 proceeds to another decision block 1173B. Here, the process kernel 302C is in a form that can be abbreviated to another query Q in standard form. Determines whether there is a binding of. Both define permutations that map or abbreviate terms (see definition 3.2.1 in section 3.2 of the appendix). Both are preferably interpreted as database joins. If the answer in decision block 1173B is YES, then the process kernel 302C may process the process expression. Is a process indicating that the abbreviated query Q is sent to structured repository X, and then both processes P 0 and P 1 run in parallel Abbreviate See block 1173C. Processing steps 1173A-1173C have been described above in connection with FIGS. 9A and 9B. Then, from block 1173C, the method 1100 proceeds to another continuation terminal ("terminal L6").

결정 블록(1173A, 1173B)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1171A)으로 진행한다. 프로세스 커널(302C)은 프로세스 표현식를 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 방법(1100)은 또하나의 결정 블록(1171B)으로 진행하여, 프로세스 커널(302C)은 프로세스 P가 프로세스 P'으로 축약될 수 있는지 여부를 결정한다. 결정 블록(1171B)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 L1")로 진행한다. 결정 블록(1171A, 1171B)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 L2")로 진행한다.If the answer at decision blocks 1173A and 1173B is no, the method 1100 proceeds to another decision block 1171A. Process Kernel 302C is a process expression this Determine whether to include. If the answer is yes, the method 1100 proceeds to another decision block 1171B, where the process kernel 302C determines whether process P can be abbreviated to process P '. If the answer to decision block 1171B is yes, the method 1100 proceeds to another continuing terminal ("terminal L1"). If the answer at decision blocks 1171A, 1171B is no, the method 1100 proceeds to another continuing terminal ("terminal L2").

터미널 L1(도 11t)으로부터, 방법(1100)은 블록(1171C)로 진행하여, 프로세스 커널(302C)은 프로세스 표현식으로 축약시킨다. 그 다음에, 방법 흐름은 터미널 L6으로 진행한다. 터미널 L2(도 11t)로부터, 방법(1100)은 또하나의 결정 블록(1169A)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식이 (NEW X)P를 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 방법 흐름은 결정 블록(1169B)으로 진행하여, 프로세스 커널(302C)은 프로세스 P가 P'으로 축약될 수 있는지 여부를 결정한다. 결정 블록(1169B)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 프로세스 표현식을 (NEW X)P'으로 축약시킨다. 블록(1169C)을 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 L6로 진행한다. 결정 블록(1169A, 1169B)에서의 대답이 '아니오'인 경우, 방법 흐름은 또하나의 결정 블록(1167A)으로 진행한다. 여기서, 프로세스 커널(302C)은 프로세스 표현식이 X[P]를 포함하는지 여부를 결정한다. 대답이 '예'인 경우, 방법(1100)은 또하나의 결정 블록(1167B)으로 진행한다. 프로세스 커널(302C)은 프로세스 P가 또하나의 프로세스 P'으로 축약될 수 있는지 여부를 결정한다. 결정 블록(1167B)을 참조하기 바란다. 결정 블록(1167B)에서의 대답이 '예'인 경우, 방법 흐름은 또하나의 계속 터미널("터미널 L3")로 진행한다. 결정 블록(1167A, 1167B)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 L4")로 진행한다.From terminal L1 (FIG. 11T), the method 1100 proceeds to block 1171C, where the process kernel 302C is a process expression. of Abbreviate The method flow then proceeds to terminal L6. From terminal L2 (FIG. 11T), the method 1100 proceeds to another decision block 1 169A, whereby the process kernel 302C expresses a process expression. Determines whether this contains (NEW X) P. If the answer is yes, the method flow proceeds to decision block 1169B, where the process kernel 302C determines whether process P can be abbreviated to P '. If the answer in decision block 1169B is YES, then the process kernel 302C returns a process expression. Is reduced to (NEW X) P '. See block 1169C. The method 1100 then proceeds to terminal L6. If the answer at decision blocks 1169A and 1169B is no, then the method flow proceeds to another decision block 1167A. Here, process kernel 302C is a process expression It is determined whether or not to include X [P]. If the answer is yes, the method 1100 proceeds to another decision block 1167B. Process kernel 302C determines whether process P can be reduced to another process P '. See decision block 1167B. If the answer to decision block 1167B is yes, the method flow proceeds to another continuing terminal ("terminal L3"). If the answer at decision blocks 1167A, 1167B is no, the method 1100 proceeds to another continuing terminal ("terminal L4").

터미널 L3로부터, 방법(1100)은 블록(1167C)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식을 X[P']으로 축약시킨다. 그 다음에, 방법 흐름은 터미널 L6로 진행한다. 터미널 L4(도 11u)로부터, 방법 흐름은 또하나의 결정 블록(1165A)으로 진행하여, 프로세스 커널(302C)은 프로세스 표현식이 프로세스 X[Q].P를 포함하는지 여부를 결정한다. 결정 블록(1165A)에서의 대답이 '예'인 경우, 프로세스 커널(302C)은 결정 블록(1165B)에서 쿼리 Q가 형태의 또하나의 쿼리와 등가 관계를 갖는지 여부를 결정한다. 항는 그의 헤드에 아무것도 갖지 않는 쿼리를 의미한다(쿼리의 헤드에 아무 항도 포함되어 있지 않음). 그의 보디는 제약 또는 바인딩 관계(포트를 포트에 바인딩하는 조건 등)의 리스트를 나타내는 것인 항 C 또는 지역 변수의 리스트 중에서 지역 변수의 리스트와 관련된 값의 리스트에 대한 바인딩 관계를 나타내는 것인 항를 포함한다.From terminal L3, method 1100 proceeds to block 1167C, where process kernel 302C is a process expression. Is abbreviated to X [P ']. The method flow then proceeds to terminal L6. From terminal L4 (FIG. 11u), the method flow proceeds to another decision block 1165A, where the process kernel 302C is a process expression. Determine whether this process contains X [Q] .P. If the answer to decision block 1165A is yes, then process kernel 302C may query query Q in decision block 1165B. Determines whether it has an equivalent relationship with another query in. term Means a query that has nothing at its head (the query's head contains no terms). Its body is a term that represents a list of constraints or binding relationships (such as conditions that bind a port to a port), or a term that represents a binding relationship to a list of values associated with a list of local variables from a list of local variables. It includes.

결정 블록(1165B)에 대한 대답이 '예'인 경우, 프로세스 커널(302C)은 또한 쿼리 Q가 표준형으로 되어 있는지 여부를 결정한다. 결정 블록(1165C)을 참조하기 바란다. 결정 블록(1165C)에서의 테스트가 '예'인 경우, 프로세스 커널(302C)은 프로세스 표현식을 형태의 프로세스로 축약시킨다. 블록(1165D)을 참조하기 바란다. 항와 등가인 리프트된 쿼리이며, 도10a 내지 도 10c에서 이미 전술하였다. 리프트된 쿼리는 그의 헤드 항을 포함하지 않는 쿼리이며, 그의 보디는 전역적으로 알려져 있는 제약의 리스트에 기술되어 있는 바인딩 관계를 포함한다. 항은 제약의 리스트 내의 제약 항이 리프트되는 동안에 지역 변수의 리스트 내의 각각의 지역 변수를 값의 리스트 내의 대응하는 값으로 대체시키는 프로세스이다. 요약하면, 프로세스내의 쿼리 Q가에 등가이고 게다가 쿼리 Q가 표준형으로 되어 있는 경우, 프로세스는 형태의 프로세스로 진화될 수 있다. 그 다음에, 방법(1100)은 터미널 L6로 진행한다.If the answer to decision block 1165B is yes, then process kernel 302C also determines whether query Q is in standard form. See decision block 1165C. If the test at decision block 1165C is YES, then the process kernel 302C returns the process expression. Form To the process of See block 1165D. term silver This is a lifted query equivalent to, as described above in FIGS. 10A-10C. Lifted query Is a query that does not include his head term, and his body is a globally known constraint. Contains the binding relationships described in the list. term Silver pharmaceutical Local variable while the constraint term in the list of The value of each local variable in the list of The process of substituting the corresponding values in the list of. In summary, the process My query is Q Process is equal to and query Q is in standard form Form Can be evolved into the process of. The method 1100 then proceeds to terminal L6.

결정 블록(1165A-1165C)에서의 대답이 '아니오'인 경우, 방법(1100)은 또하나의 결정 블록(1163A)로 들어간다. 프로세스 커널(302C)은 프로세스 표현식이 P0'에 등가 관계를 갖는 것인 P0를 포함하고 있는지 여부를 결정한다. 결정 블록(1163A)을 참조하기 바란다. 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 L5")로 진행한다. 결정 블록(1163A)에 대한 대답이 '아니오'인 경우, 방법(1100)은 터미널 L6로 진행한다.If the answer at decision blocks 1165A-1165C is no, then the method 1100 enters another decision block 1163A. Process Kernel 302C is a process expression It is determined whether or not P 0 ′ includes P 0 having an equivalent relationship. See decision block 1163A. If the answer is yes, the method 1100 proceeds to another continuing terminal ("terminal L5"). If the answer to decision block 1163A is no, the method 1100 proceeds to terminal L6.

터미널 L5(도 11v)로부터, 방법(1100)은 결정 블록(1163B)으로 진행하여, 프로세스 커널(302C)은 P0'이 P1'으로 축약될 수 있는지 여부를 결정한다. 대답이 '예'인 경우, 프로세스 커널(302C)은 프로세스 P1'이 프로세스 P1과 등가 관계를 갖는지 여부를 결정한다. 결정 블록(1163C)을 참조하기 바란다. 결정 블록(1163C)에서의 테스트가 '예'인경우, 프로세스 커널(302C)은 프로세스 P0를 프로세스 P1으로 축약시킨다. 블록(1163D)을 참조하기 바란다. 그 다음에, 방법(1100)은 터미널 L6로 진행한다. 결정 블록(1163B, 1163C)에서의 대답이 '아니오'인 경우에, 방법(1100)은 또한 터미널 L6로 진행한다.From terminal L5 (FIG. 11V), the method 1100 proceeds to decision block 1163B, where the process kernel 302C determines whether P 0 ′ can be reduced to P 1 ′. If the answer is yes, the process kernel (302C) determines whether the process P 1 'is it has the equivalent related to the process P 1. See decision block 1163C. If the test at decision block 1163C is YES, process kernel 302C shortens process P 0 to process P 1 . See block 1163D. The method 1100 then proceeds to terminal L6. If the answer at decision blocks 1163B, 1163C is no, the method 1100 also proceeds to terminal L6.

터미널 L6(도 11v)로부터, 방법(1100)은 또하나의 결정 블록(1161)으로 진행하여, 프로세스 커널(302C)은 언어(400)의 동작적 의미론 규칙 하에서 분석될 프로세스 표현식이 더 있는지 여부를 알아보기 위해 검사를 한다. 대답이 '아니오'인 경우, 방법 흐름은 종료 터미널 M으로 진행한다. 결정 블록(1161)에서의 대답이 '예'인 경우, 방법(1100)은 또하나의 계속 터미널("터미널 L7")로 진행한다. 터미널 L7으로부터, 방법(1100)은 블록(1175)으로 루프백하고 전술한 방법 단계들이 반복된다.From terminal L6 (FIG. 11V), the method 1100 proceeds to another decision block 1161, where the process kernel 302C determines whether there are more process expressions to be analyzed under the operational semantic rules of the language 400. Examine to find out. If the answer is no, the method flow proceeds to termination terminal M. If the answer to decision block 1161 is yes, the method 1100 proceeds to another continuing terminal ("terminal L7"). From terminal L7, the method 1100 loops back to block 1175 and the method steps described above are repeated.

본 발명의 양호한 실시예가 예시되고 설명되었지만, 본 발명의 정신 및 범위를 벗어나지 않고 여러가지 변경이 행해질 수 있음을 잘 알 것이다.While the preferred embodiments of the invention have been illustrated and described, it will be appreciated that various changes may be made without departing from the spirit and scope of the invention.

부록Appendix

의미론semantics

언어의 의미론은 SOS 스타일의 축약 규칙 세트에 제공된다. 간략함을 위해, 종종 연산구조(calculus)라고 하는 보다 콤팩트하고 완전히 중위형(infix) 버전의 구문이 소개된다. 이러한 구문 상에 일련의 등가 규칙이 강요되는 이유는 그 구문이 너무 세밀한 프로세스 간을 구별해주기 때문이다. 축약 규칙은 이 등가 상에서 닫혀 있다.The semantics of the language are provided in a set of SOS-style abbreviations. For simplicity, a more compact and completely infix version of the syntax, often called a calculus, is introduced. The reason why a series of equivalence rules are enforced on these constructs is because they distinguish between processes that are too granular. The abbreviation rule is closed on this equivalence.

연산 구조 스타일 구문Arithmetic structure style syntax

프로그래머가 보는 구문과 중위형 (모델-레벨) 구문 사이의 대응관계는 명백해야만 하지만, 완전함을 위해 이하의 표에 주어진다. 유의할 점은 전위형 구문(prefix syntax)은 블록 형태 같은 구문적 사탕(syntactic sugar)를 제공함으로써 그의 다변성(verbosity)을 피해가려고 한다는 것이다. 이 형태는 프로그래머가 계속 이전에 순차적으로 실행될 몇가지 동작의 전위(prefix)를 지정할 수 있게 해준다. 이하의 표는 이들 형태의 전체적인 편집을 다 기재하기보다는 단지 편집을 추론하기 위한 최소한의 정보를 제공한다. 이러한 선택은 좌측 열이 우측 열의 변환이 되도록 하는 것에 대응한다.The correspondence between the syntax seen by the programmer and the infix (model-level) syntax should be obvious, but is given in the table below for completeness. Note that prefix syntax attempts to circumvent its verbosity by providing syntactic sugar, such as block form. This form allows the programmer to specify the prefix of several actions that will be executed sequentially beforehand. The table below provides only minimal information for inferring edits, rather than listing all of these forms of overall edits. This selection corresponds to causing the left column to be a conversion of the right column.

프로그램-레벨 구문Program-level syntax 모델-레벨 구문Model-level syntax {}{} 00 sequence {block {x[Q];}P}sequence {block {x [Q];} P} x[Q].Px [Q] .P new(x){P}new (x) {P} (new x)P(new x) P select {case x [Qi]: Pi}select {case x [Qi]: Pi} parallel {P P}parallel {P P} P|PP | P schedule S (...){... call S(...);}schedule S (...) {... call S (...);} !P! P

주의할 점: 리프트된 쿼리 형태는 현재 전위형 구문에서는 사용자 레벨에서 이용가능하지 않다. 그렇지만, 차후의 버전에서는 이용가능할 것이다.Note: The lifted query form is not available at the user level in the current prefix syntax. However, it will be available in future versions.

프로그램-레벨 구문Program-level syntax 모델-레벨 구문Model-level syntax T:=: T;T: =: T; T:=:TT: =: T xx xx x^x ^ x^x ^ ^x^ x ^x^ x ~T~ T ~T~ T T*TT * T T*TT * T T#TT # T T#TT # T (x*)[left: Q | right: Q](x *) [left: Q | right: Q] <x*>(Q,Q)<x *> (Q, Q) in(left, x) in(right, x)in (left, x) in (right, x) inl(x) inr(x)inl (x) inr (x) (x*)[Q](x *) [Q] <x*>(Q)<x *> (Q) ?T? T ?T? T T@TT @ T T@TT @ T top / bottom / _ / port ytop / bottom / _ / port y top|bottom|_|nameytop | bottom | _ | name y

구조적 등가Structural equivalence

전술한 바와 같이, 구문은 너무 많은 구별을 짓는다. 구문은 예를 들어, ":=:"의 어느 쪽에 항이 나타나는지에 대해 구별을 하지 않는다. 이러한 불필요한 구별을 없애기 위해 우리는 구조적 등가를 도입한다.As mentioned above, the syntax makes too many distinctions. The syntax makes no distinction about which term appears, for example, in ": =:". To eliminate this unnecessary distinction, we introduce structural equivalence.

쿼리의 경우, 우리는 단지 조건을 삽입하기 위한 장소를 그 안에 갖는 쿼리인 쿼리 컨텍스트를 사용하여 이것을 한다. 프로세스의 경우, 우리는 명시적으로 이것을 한다.In the case of a query, we do this using a query context, which is a query that has a place in it to insert a condition. In the case of a process, we do this explicitly.

프로세스 대수에 익숙한 독자의 경우, 이들 등식은 평범한 것이다. 한가지 흥미있는 경우는 이하의 것이다. 쿼리가 표준형이고 그의 보디에 조건이 있는 경우, 실제는 이들 조건은 포트 사이의 등식 또는 지역 변수와 그의 값 사이의 등식이다. 리프팅 시에, 지역 변수는 그의 값으로 대체되어 계속(continuation)으로 들어간다. 포트 사이의 등식은 리프트된 쿼리에 존재하는 경우 일종의 명시적 치환을 구현하는 프로세스로서 동작한다.For readers who are familiar with logarithmic processes, these equations are commonplace. One interesting case is as follows. If the query is standard and there are conditions in its body, these conditions are actually the equation between ports or the equation between local variables and their values. On lifting, the local variable is replaced by its value and goes into continuation. The equation between ports acts as a process to implement some sort of explicit substitution when present in the lifted query.

표준형의 Standard

축약 규칙Abbreviation rule

설명Explanation

MATCHMATCH

일치 규칙은 실제로 규칙 스키마이다. 리터럴과 그의 듀얼(dual)이 만날 때마다, 이들은 사라진다. 이것은 더 이상의 검사가 필요하지 않기 때문에 성공으로 해석된다.Match rules are actually a rule schema. Every time a literal meets his duel, they disappear. This translates to success because no further checking is required.

CUTCUT

식별자는 직관적으로 와이어로서 생각될 수 있다. 2개의 항이 와이어의 각 단부에 있을 때, 여러분은 와이어를 제거하고 2개의 항을 서로 직접 플러깅한다. 이 때 선형 타입은 타입이 맞는 항(well-typed term)에서 식별자는 정확하게 두번 나타나도록 보증함을 상기할 가치가 있다.Identifiers can be intuitively thought of as wires. When two terms are at each end of the wire, you remove the wire and plug the two terms directly into each other. It is worth recalling that the linear type ensures that the identifier appears exactly twice in the well-typed term.

TENSOR-PARTENSOR-PAR

튜플의 제공이 튜플에 대한 [sic] 요구를 충족시킬 때, 대응하는 위치는 서로 와이어링된다.When the provision of the tuple meets the [sic] requirement for the tuple, the corresponding locations are wired to each other.

WITH-PLUSWITH-PLUS

메뉴(withClaim형태)의 제공이 선택에 대한 요구(injectClaim형태)를 충족시킬 때, 선택이 행해진다. 이것은 선택된 선택 사항이 요구의 제약에 와이어링되게 한다.When the provision of the menu ( withClaim form) satisfies the demand for selection ( injectClaim form), the selection is made. This allows the selected option to be wired to the constraints of the request.

READREAD

레코딩(ofCourseClaim)의 제공이 재생에 대한 요구(whyNotClaim)를 충족시킬 때, 레코딩에 대한 데이터는 요구의 제약에 와이어링된다.When the provision of the recording ofCourseClaim satisfies the need for playback ( whyNotClaim ), the data for the recording is wired to the constraints of the request.

COPYCOPY

레코딩의 제공이 복사에 대한 요구(contractClaim)를 충족시킬 때, 개별적인 복사본이 요구의 개별적인 제약에 와이어링된다.When the provision of the recording satisfies the requirement for copying ( contractClaim ), the individual copies are wired to the individual constraints of the request.

DISCARDDISCARD

레코딩의 제공이 레코딩을 디스카드하라는 요구("_")를 충족시킬 때, 레코딩은 디스카드된다.When the provision of the recording satisfies the request (" _ ") to discard the recording, the recording is discarded.

CONTEXTCONTEXT

조건의 집합체가 어떤 방식으로 진화할 때, 이들은 쿼리의 보디의 관점에서 그 방식으로 진화한다.When a set of conditions evolves in some way, they evolve that way in terms of the query body.

CLEANUPCLEANUP

와이어의 한쪽 단부, 즉 [sic] 식별자의 한 발생이 쿼리의 헤드(내의 어떤 항)에 있고 다른쪽 단부가 보디에 있을 때, 그 식별자가 바인딩되어 있는 항은 헤드 내로 대체될 수 있다.When one end of the wire, that is, one occurrence of the [sic] identifier is at the head of the query (some term in the query) and the other end is at the body, the term to which the identifier is bound can be replaced into the head.

정의 3.2.1. 이 순열이고이 쿼리라고 하면,이 얻어진다. Definition 3.2.1. Is permutation If you say this query, Is obtained.

정의 3.2.2. 이고라면,이 얻어진다. Definition 3.2.2. ego Ramen, Is obtained.

정의 3.2.3.리터럴에 대한 형태의 제약은인 경우에 실패이다. Definition 3.2.3. Literal Form for The constraint of If it is a failure.

정의 3.2.4.쿼리 Q는이고 Q'이 실패를 포함하는 경우에만 실패한다. Definition 3.2.4. Query Q And fail only if Q 'includes a failure.

정의 3.2.5.제약 c는인 경우에만 쿼리 Q에서 축약불가이다. Definition 3.2.5. Constraint c is Is only in short for query Q.

정의 3.2.6.쿼리 Q는 그의 제약 모두가 축약 불가이고 Q가 실패가 아닌 경우에만 표준형이다(달리 말하면, 표준형으로 되어 있다(in canonical form)). Definition 3.2.6. Query Q is in standard form only if all of its constraints are non-abbreviable and Q is not a failure (in other words, in canonical form).

COMMCOMM

2개의 쿼리가 각각 그의 헤드 내의 어떤 위치에서 일치하는 항을 가지며 또 대응하는 CUT 쿼리가 더 이상 진행할 수 없는 쿼리로 진화하지만 실패는 아닌 경우, 이들 쿼리를 동일한 큐에 배치한 2개의 프로세스는 통신하게 된다. 그 각각의 계속(continuation)은 둘다 축약된 쿼리의 완료시에 대기한다.If two queries each have a matching term at some point within their head and the corresponding CUT query evolves into a query that cannot proceed any further, but is not a failure, the two processes that placed these queries in the same queue are allowed to communicate. do. Each continuation waits on completion of the abbreviated query.

PARPAR

프로세스가 자체적으로 진행을 할 수 있는 경우, 그 프로세스는 또하나의 프로세스와 병렬 합성으로 여전히 그 진행을 할 수 있다.If a process can go on its own, it can still go on with another process and parallel synthesis.

NEWNEW

프로세스가 자체적으로 진행을 할 수 있는 경우, 그의 포트 중 하나가 더 이상 외부와의 상호작용을 위해 이용할 수 없는 경우에도 여전히 그 진행을 할 수 있다.If a process can proceed on its own, it can still proceed even if one of its ports is no longer available for interaction with the outside world.

LIFTLIFT

헤드에 항을 갖지 않는 쿼리는 포트를 포트에 바인딩하거나 지역 변수를 값에 바인딩하는 조건만을 갖는다. 이러한 쿼리는 리프트될 수 있다. 리프트 시에, 지역 변수는 계속의 보디 외부에서 대체된다.A query without a term at the head has only the condition of binding a port to a port or a local variable to a value. This query can be lifted. Upon lift, local variables are replaced outside the body of the continuation.

지역 변수가 대체되어 없어진 후에 남아있는 방정식은 포트 사이에 있다. 이러한 쿼리는 이어서 일종의 명시적 치환으로서 동작하는 프로세스 또는 동등시된 포트 사이의 와이어로 된다.The equation remaining after the local variable has been replaced and lost is between the ports. These queries then become wires between processes or equalized ports that act as some sort of explicit substitution.

EQUIVEQUIV

진화는 등가 관계에 대해 닫혀있다.Evolution is closed for equivalence.

Claims (108)

네트워크 연결을 통해 서비스를 제공하기 위해 프로토콜 기반 애플리케이션의 모듈 집합체를 처리하는 컴퓨터 시스템으로서,A computer system that processes a set of modules of protocol-based applications to provide services over a network connection. 프로토콜 기반 애플리케이션을 프로세스로서 표현하기 위해 프로세스 기반 언어로 작성된 표현식을 포함하는 프로그램을 저장하는 컴퓨터 판독가능 수단, 및Computer readable means for storing a program comprising an expression written in a process based language to represent a protocol based application as a process, and 상기 프로그램 내의 상기 표현식을 실행하는 프로세스 커널을 포함하며,A process kernel that executes the expression in the program, 상기 표현식은 커스터마이즈가능한 태그 기반 언어로 작성된 이름있는 데이터 구성 방식이 프로세스들 간에 프로세스로서 교환될 수 있도록 함으로써 프로세스들의 상호작용을 지정하고 또 상기 이름있는 데이터 구성 방식은 상기 이름있는 데이터 구성 방식을 전송 및 수신하는 프로세스들의 범위에 바인딩되어 있는 컴퓨터 시스템.The expression specifies the interaction of processes by allowing named data organizational schemes written in a customizable tag-based language to be exchanged as processes between processes, and the named data organizational schemes transmit and transfer the named data organizational schemes. A computer system that is bound to the scope of receiving processes. 제1항에 있어서,The method of claim 1, 상기 프로세스 커널에 결합된 오퍼레이팅 시스템 커널을 더 포함하며,Further comprising an operating system kernel coupled to the process kernel, 상기 오퍼레이팅 시스템 커널은 메모리, 중앙 처리 장치 시간, 디스크 공간, 및 주변 장치를 포함하는 하드웨어 자원의 할당 및 사용을 제공하는 컴퓨터 시스템.The operating system kernel provides an allocation and use of hardware resources including memory, central processing unit time, disk space, and peripherals. 제1항에 있어서,The method of claim 1, 상기 프로세스 커널에 결합된 장치 드라이버를 더 포함하며,Further comprising a device driver coupled to the process kernel, 상기 장치 드라이버는 상기 컴퓨터 시스템이 하드웨어 장치들과 통신할 수 있게 해주는 소프트웨어 컴포넌트를 제공하는 컴퓨터 시스템.The device driver provides a software component that enables the computer system to communicate with hardware devices. 제1항에 있어서,The method of claim 1, 인터넷 상의 웹 서비스를 찾아내어 등록하는 방법을 제공하는 디렉토리 프레임워크를 더 포함하는 컴퓨터 시스템.And a directory framework that provides a method for finding and registering web services on the Internet. 제4항에 있어서,The method of claim 4, wherein 상기 디렉토리 프레임워크 내의 발견 컴포넌트를 더 포함하며,Further comprising a discovery component within the directory framework, 상기 발견 컴포넌트는 원하는 웹 서비스를 찾아내기 위해 프로세스들 간의 중개인으로서 동작하는 컴퓨터 시스템.And the discovery component acts as an intermediary between processes to find the desired web service. 네트워크 연결을 통해 서비스를 제공하기 위해 프로토콜 기반 애플리케이션의 모듈 집합체를 처리하는 컴퓨터 실행가능 방법으로서,A computer executable method of processing a collection of modules of protocol-based applications to provide services over a network connection, 프로세스 기반 언어로 작성된 프로그램 내의 프로세스 표현식이 실행될 때 프로토콜 기반 애플리케이션을 프로세스로서 표현하는 단계,Representing a protocol-based application as a process when a process expression in a program written in a process-based language is executed, 쿼리 표현식이 실행될 때 커스터마이즈가능한 태그 기반 언어로 작성된 이름있는 데이터 구성 방식을 프로세스로서 표현하는 단계, 및Expressing, as a process, how the named data is constructed in a customizable tag-based language when the query expression is executed, and 프로세스들이 상기 이름있는 데이터 구성 방식을 쿼리로서 큐로 전송하거나큐로부터 수신할 때 프로세스들로 하여금 통신하게 하는 단계를 포함하며,Causing processes to communicate when processes send to or receive from the queue as a query for the named data organization; 상기 이름있는 데이터 구성 방식은 상기 이름있는 데이터 구성 방식을 전송 또는 수신하는 프로세스들의 범위에 바인딩되어 있는 컴퓨터 실행가능 방법.The named data organization method is bound to a range of processes for transmitting or receiving the named data organization method. 제6항에 있어서,The method of claim 6, 오퍼레이팅 시스템 커널과 상호작용하는 단계를 더 포함하며,Further comprising interacting with the operating system kernel, 상기 오퍼레이팅 시스템 커널은 메모리, 중앙 처리 장치 시간, 디스크 공간, 및 주변 장치를 포함하는 하드웨어 자원의 할당 및 사용을 제공하는 컴퓨터 실행가능 방법.The operating system kernel provides for the allocation and use of hardware resources including memory, central processing unit time, disk space, and peripherals. 제6항에 있어서,The method of claim 6, 장치 드라이버와 상호작용하는 단계를 더 포함하며,Further comprising interacting with the device driver, 상기 장치 드라이버는 상기 방법이 구현되는 컴퓨터 시스템이 하드웨어 장치들과 통신할 수 있게 해주는 컴퓨터 실행가능 방법.The device driver is a computer executable method that enables a computer system on which the method is implemented to communicate with hardware devices. 제6항에 있어서,The method of claim 6, 디렉토리 프레임워크를 통해 프로토콜 기반 애플리케이션을 찾아내어 인터넷 상의 웹 서비스로서 등록하는 단계를 더 포함하는 컴퓨터 실행가능 방법.Finding a protocol based application through a directory framework and registering as a web service on the Internet. 제9항에 있어서,The method of claim 9, 상기 디렉토리 프레임워크 내의 발견 컴포넌트에 의해 원하는 웹 서비스를 찾아내기 위해 프로세스들 간에 중개를 하는 단계를 더 포함하는 컴퓨터 실행가능 방법.Mediating between processes to find a desired web service by a discovery component in the directory framework. 네트워크 연결을 통해 서비스를 제공하기 위해 프로토콜 기반 애플리케이션의 모듈 집합체를 처리하는 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체로서,A computer readable medium having computer executable instructions for performing a method of processing a collection of modules of a protocol-based application to provide a service over a network connection, the method comprising: 상기 방법은,The method, 프로세스 기반 언어로 작성된 프로그램 내의 프로세스 표현식이 실행될 때 프로토콜 기반 애플리케이션을 프로세스로서 표현하는 단계,Representing a protocol-based application as a process when a process expression in a program written in a process-based language is executed, 쿼리 표현식이 실행될 때 커스터마이즈가능한 태그 기반 언어로 작성된 이름있는 데이터 구성 방식을 프로세스로서 표현하는 단계, 및Expressing, as a process, how the named data is constructed in a customizable tag-based language when the query expression is executed, and 프로세스들이 상기 이름있는 데이터 구성 방식을 쿼리로서 큐로 전송하거나 큐로부터 수신할 때 프로세스들로 하여금 통신하게 하는 단계를 포함하며,Allowing processes to communicate when processes send to or receive from the queue as a query for the named data organization; 상기 이름있는 데이터 구성 방식은 상기 이름있는 데이터 구성 방식을 전송 또는 수신하는 프로세스들의 범위에 바인딩되어 있는 컴퓨터 판독가능 매체.And the named data organization method is bound to a range of processes for transmitting or receiving the named data organization method. 제11항에 있어서,The method of claim 11, 상기 방법은 오퍼레이팅 시스템 커널과 상호작용하는 단계를 더 포함하며,The method further comprises interacting with an operating system kernel, 상기 오퍼레이팅 시스템 커널은 메모리, 중앙 처리 장치 시간, 디스크 공간,및 주변 장치를 포함하는 하드웨어 자원의 할당 및 사용을 제공하는 컴퓨터 판독가능 매체.And said operating system kernel provides allocation and use of hardware resources including memory, central processing unit time, disk space, and peripherals. 제11항에 있어서,The method of claim 11, 상기 방법은 장치 드라이버와 상호작용하는 단계를 더 포함하며,The method further comprises interacting with a device driver, 상기 장치 드라이버는 상기 방법이 구현되는 컴퓨터 시스템이 하드웨어 장치들과 통신할 수 있게 해주는 컴퓨터 판독가능 매체.The device driver is a computer readable medium that enables a computer system on which the method is implemented to communicate with hardware devices. 제11항에 있어서,The method of claim 11, 상기 방법은 디렉토리 프레임워크를 통해 프로토콜 기반 애플리케이션을 찾아내어 인터넷 상의 웹 서비스로서 등록하는 단계를 더 포함하는 컴퓨터 판독가능 매체.The method further comprises finding and registering a protocol based application through a directory framework as a web service on the Internet. 제14항에 있어서,The method of claim 14, 상기 방법은 상기 디렉토리 프레임워크 내의 발견 컴포넌트에 의해 원하는 웹 서비스를 찾아내기 위해 프로세스들 간에 중개를 하는 단계를 더 포함하는 컴퓨터 판독가능 매체.The method further comprises mediating between processes to find a desired web service by a discovery component in the directory framework. 프로세스 기반 언어로 작성된 프로그램에서 쿼리를 정의하고 쿼리와 큐 사이의 상호작용을 규율하는 쿼리 가상 머신,Query virtual machines that define queries and govern the interaction between queries and queues in programs written in a process-based language, 상기 프로그램에서 프로토콜 기반 애플리케이션을 포함하는 프로세스를 정의하고 프로세스들 간의 상호작용을 규율하는 프로세스 가상 머신, 및A process virtual machine defining a process comprising a protocol based application in said program and governing the interaction between the processes, and 쿼리, 큐 및 프로세스 간의 유효한 상호작용을 정의하고 또한 쿼리를 프로세스로서 해석함으로써 쿼리, 큐 및 프로세스 간의 상호작용을 규율하는 반응 가상 머신을 포함하는 컴퓨터 시스템.A computer system comprising a reactive virtual machine that defines valid interactions between queries, queues, and processes and also governs interactions between queries, queues, and processes by interpreting queries as processes. 제16항에 있어서,The method of claim 16, 상기 쿼리 가상 머신, 상기 프로세스 가상 머신, 및 상기 반응 가상 머신을 상기 컴퓨터 시스템의 기타 시스템 소프트웨어 컴포넌트로부터 분리시키는 전이 가상 머신을 더 포함하는 컴퓨터 시스템.And a transition virtual machine that separates the query virtual machine, the process virtual machine, and the reactive virtual machine from other system software components of the computer system. 제16항에 있어서,The method of claim 16, 큐는 서로 다른 시간에 또는 동시에 실행되는 프로세스들이 일시적으로 오프라인 상태에 있을 수 있는 이기종 네트워크 및 시스템을 거쳐 통신할 수 있게 해주는 데이터베이스, 채널 또는 구조화된 스토어를 포함하는 컴퓨터 시스템.A queue is a computer system that includes a database, channel, or structured store that allows processes running at different times or concurrently to communicate across heterogeneous networks and systems that may be temporarily offline. 제16항에 있어서,The method of claim 16, 쿼리는 다른 쿼리들을 어셈블(assemble) 및 디어셈블(deassemble)하고 큐를 조작하며 쿼리 내의 패턴을 검출하는 데이터 조작 언어(data manipulation language)로 작성된 명령어를 포함하는 컴퓨터 시스템.A query is a computer system that includes instructions written in a data manipulation language that assembles and disassembles other queries, manipulates queues, and detects patterns in the queries. 제16항에 있어서,The method of claim 16, 프로세스는 동작을 수행함으로써 또는 다른 프로세스들이 진화할 수 있도록 해줌으로써 진화하는 능력을 가진 계산 엔티티를 포함하는 컴퓨터 시스템.A process includes a computing entity having the ability to evolve by performing an action or by allowing other processes to evolve. 프로세스 기반 언어로 작성된 표현식을 컴파일하는 컴퓨터 실행가능 방법으로서,A computer executable method of compiling an expression written in a process-based language, 큐, 큐 구분자(queue delimiter) 세트, 쿼리, 시퀀스 구분자(sequence delimiter), 및 다른 동작을 표현하는 구문 요소를 획득하기 위해 상기 표현식을 파싱하는 단계, 및Parsing the expression to obtain syntax elements representing a queue, a set of queue delimiters, a query, a sequence delimiter, and other actions, and 상기 표현식을, 첫번째 동작이 상기 쿼리를 상기 큐에 또하나의 프로세스로서 전송하는 것이고 그 후에 다른 동작을 계속하는 프로세스로서 해석하는 단계를 포함하며,Interpreting the expression as a process in which the first action is to send the query to the queue as another process and then continue with another action, 상기 쿼리는 데이터를 포함하고 또 데이터를 기술하는 커스터마이즈가능한 태그 기반 언어로부터 형성된 구성 방식을 포함하는 컴퓨터 실행가능 방법.Wherein the query comprises a configuration scheme formed from a customizable tag-based language that contains data and describes the data. 제21항에 있어서,The method of claim 21, 상기 쿼리를 표현하는 상기 표현식의 일부분은 헤드와 보디를 포함하고,A portion of the expression representing the query includes a head and a body, 상기 헤드는 제1 및 제2 쿼리 헤드 구분자에 의해 구분되고,The heads are separated by first and second query head delimiters, 상기 보디는 제1 및 제2 쿼리 보디 구분자에 의해 구분되는 컴퓨터 실행가능방법.And wherein the body is distinguished by first and second query body delimiters. 제22항에 있어서,The method of claim 22, 0개 이상의 쿼리 조건이 상기 제1 및 제2 쿼리 헤드 구분자 사이에 포함되어 있는 컴퓨터 실행가능 방법.And at least zero query conditions are included between the first and second query head delimiters. 제22항에 있어서,The method of claim 22, 0개 이상의 제약 조건이 상기 제1 및 제2 쿼리 보디 구분자 사이에 포함되어 있는 컴퓨터 실행가능 방법.And at least zero constraints are included between the first and second query body delimiters. 제24항에 있어서,The method of claim 24, 각각의 제약 조건은 하나의 쿼리 조건과 또하나의 쿼리 조건 사이의 관계를 정의하는 바인딩인 컴퓨터 실행가능 방법.Each constraint is a binding that defines a relationship between one query condition and another query condition. 제25항에 있어서,The method of claim 25, 쿼리 조건은 리터럴(literal)을 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method that includes literals. 제25항에 있어서,The method of claim 25, 쿼리 조건은 상보적 리터럴(complementary literal)을 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method that includes a complementary literal. 제25항에 있어서,The method of claim 25, 쿼리 조건은 디스카더(discarder)를 포함하는 컴퓨터 실행가능 방법.The query condition includes a discarder. 제25항에 있어서,The method of claim 25, 쿼리 조건은 변수의 이름을 포함하는 컴퓨터 실행가능 방법.The query condition includes the name of the variable. 제25항에 있어서,The method of claim 25, 쿼리 조건은 변수를 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method that includes a variable. 제25항에 있어서,The method of claim 25, 쿼리 조건은 쿼리 조건의 역(inversion)을 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method comprising an inversion of a query condition. 제25항에 있어서,The method of claim 25, 쿼리 조건은 쿼리 조건의 튜플(tuple)을 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method comprising a tuple of query conditions. 제25항에 있어서,The method of claim 25, 쿼리 조건은 쿼리 조건의 상보적 튜플을 포함하는 컴퓨터 실행가능 방법.The query condition comprises a complementary tuple of query conditions. 제25항에 있어서,The method of claim 25, 쿼리 조건은 상기 헤드 내의 0개 이상의 변수를 갖는 제2 쿼리, 및 상기 보디 내의 콤마에 의해 분리된 제3 및 제4 쿼리를 포함하는 컴퓨터 실행가능 방법.The query condition includes a second query having zero or more variables in the head, and third and fourth queries separated by commas in the body. 제34항에 있어서,The method of claim 34, wherein 쿼리 조건은 변수를 인수로서 받는 좌측 인젝터(left injector)를 포함하는 컴퓨터 실행가능 방법.The query condition includes a left injector that takes a variable as an argument. 제25항에 있어서,The method of claim 25, 쿼리 조건은 변수를 인수로서 받는 우측 인젝터(right injector)를 포함하는 컴퓨터 실행가능 방법.The query condition includes a right injector that takes a variable as an argument. 제25항에 있어서,The method of claim 25, 쿼리 조건은 상기 헤드 내의 0개 이상의 변수를 갖는 제5 쿼리 및 상기 보디 내의 제6 쿼리를 포함하는 컴퓨터 실행가능 방법.The query condition includes a fifth query having zero or more variables in the head and a sixth query in the body. 제37항에 있어서,The method of claim 37, 쿼리 조건은 쿼리 조건에 대해 작용하는 판독 연산자(read operator)를 포함하는 컴퓨터 실행가능 방법.The query condition includes a read operator that operates on the query condition. 제37항에 있어서,The method of claim 37, 쿼리 조건은 쿼리 조건에 대해 작용하는 복사 연산자(copy operator)를 포함하는 컴퓨터 실행가능 방법.A query condition is a computer executable method that includes a copy operator that operates on a query condition. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 비활성 연산자(inactivity operator)를 포함하며,A portion of the expression representing the process includes an inactivity operator, 상기 비활성 연산자는 상기 프로세스의 비활성이 표현될 수 있게 해주는 컴퓨터 실행가능 방법.The inactivity operator allows a inactivity of the process to be expressed. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 일련의 프로세스를 합산하는 합산 연산자(summation operator)를 포함하며,A portion of the expression representing the process includes a summation operator that sums up a series of processes, 상기 합산 연산자는 상기 프로세스가 상기 일련의 프로세스로부터 선택할 수 있는 선택 사항이 계속하여 표현될 수 있게 해주는 컴퓨터 실행가능 방법.And the summing operator allows the process to continuously represent the choices that the process can select from the series of processes. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 new 연산자를 포함하며,A portion of the expression representing the process includes a new operator, 상기 new 연산자는 상기 프로세스에 바인딩되어 있는 이름의 생성이 표현될 수 있게 해주는 컴퓨터 실행가능 방법.And the new operator allows a generation of a name bound to the process to be represented. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 병렬 연산자(parallel operator)를 포함하며,A portion of the expression representing the process includes a parallel operator, 상기 병렬 연산자는 병렬로 실행되는 2개의 프로세스가 표현될 수 있게 해주는 컴퓨터 실행가능 방법.The parallel operator is a computer executable method that allows two processes executed in parallel to be represented. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 복제 연산자(replication operator)를 포함하며,A portion of the expression representing the process includes a replication operator, 상기 복제 연산자는 상기 프로세스의 무한적 거동(infinite behavior)이 표현될 수 있게 해주는 컴퓨터 실행가능 방법.And the replication operator enables expression of the infinite behavior of the process. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분이 제2 큐, 제2의 큐 구분자 세트, 및 프로세스를 포함하는 컴퓨터 실행가능 방법.Wherein a portion of the expression representing the process comprises a second queue, a second set of queue delimiters, and a process. 제21항에 있어서,The method of claim 21, 상기 프로세스를 표현하는 상기 표현식의 일부분은 리프트된 쿼리(lifted query)를 포함하는 컴퓨터 실행가능 방법.A portion of the expression representing the process comprises a lifted query. 프로세스 기반 언어로 작성된 표현식을 컴파일하는 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체로서,A computer readable medium having computer executable instructions for performing a method of compiling an expression written in a process-based language, the method comprising: 상기 방법은,The method, 큐, 큐 구분자(queue delimiter) 세트, 쿼리, 시퀀스 구분자(sequence delimiter), 및 다른 동작을 표현하는 구문 요소를 획득하기 위해 상기 표현식을 파싱하는 단계, 및Parsing the expression to obtain syntax elements representing a queue, a set of queue delimiters, a query, a sequence delimiter, and other actions, and 상기 표현식을, 첫번째 동작이 상기 쿼리를 상기 큐에 또하나의 프로세스로서 전송하는 것이고 그 후에 다른 동작을 계속하는 프로세스로서 해석하는 단계를 포함하며,Interpreting the expression as a process in which the first action is to send the query to the queue as another process and then continue with another action, 상기 쿼리는 데이터를 포함하고 또 데이터를 기술하는 커스터마이즈가능한 태그 기반 언어로부터 형성된 구성 방식을 포함하는 컴퓨터 판독가능 매체.And the query comprises a configuration scheme formed from a customizable tag-based language that contains data and describes the data. 제47항에 있어서,The method of claim 47, 상기 쿼리를 표현하는 상기 표현식의 일부분은 헤드와 보디를 포함하고,A portion of the expression representing the query includes a head and a body, 상기 헤드는 제1 및 제2 쿼리 헤드 구분자에 의해 구분되고,The heads are separated by first and second query head delimiters, 상기 보디는 제1 및 제2 쿼리 보디 구분자에 의해 구분되는 컴퓨터 판독가능 매체.And the body is distinguished by first and second query body delimiters. 제48항에 있어서,The method of claim 48, 0개 이상의 쿼리 조건이 상기 제1 및 제2 쿼리 헤드 구분자 사이에 포함되어있는 컴퓨터 판독가능 매체.And at least zero query condition is included between the first and second query head delimiters. 제48항에 있어서,The method of claim 48, 0개 이상의 제약 조건이 상기 제1 및 제2 쿼리 보디 구분자 사이에 포함되어 있는 컴퓨터 판독가능 매체.And zero or more constraints are included between the first and second query body delimiters. 제50항에 있어서,51. The method of claim 50, 각각의 제약 조건은 하나의 쿼리 조건과 또하나의 쿼리 조건 사이의 관계를 정의하는 바인딩인 컴퓨터 판독가능 매체.Each constraint is a binding that defines a relationship between one query condition and another query condition. 제51항에 있어서,The method of claim 51, 쿼리 조건은 리터럴(literal)을 포함하는 컴퓨터 판독가능 매체.A query condition is a computer readable medium containing a literal. 제51항에 있어서,The method of claim 51, 쿼리 조건은 상보적 리터럴(complementary literal)을 포함하는 컴퓨터 판독가능 매체.A query condition is a computer readable medium containing a complementary literal. 제51항에 있어서,The method of claim 51, 쿼리 조건은 디스카더(discarder)를 포함하는 컴퓨터 판독가능 매체.The query condition is a computer readable medium comprising a discarder. 제51항에 있어서,The method of claim 51, 쿼리 조건은 변수의 이름을 포함하는 컴퓨터 판독가능 매체.The query condition includes a name of the variable. 제51항에 있어서,The method of claim 51, 쿼리 조건은 변수를 포함하는 컴퓨터 판독가능 매체.The query condition comprises a variable. 제51항에 있어서,The method of claim 51, 쿼리 조건은 쿼리 조건의 역(inversion)을 포함하는 컴퓨터 판독가능 매체.The query condition comprises a inversion of the query condition. 제51항에 있어서,The method of claim 51, 쿼리 조건은 쿼리 조건의 튜플(tuple)을 포함하는 컴퓨터 판독가능 매체.A query condition is a computer readable medium containing a tuple of query conditions. 제51항에 있어서,The method of claim 51, 쿼리 조건은 쿼리 조건의 상보적 튜플을 포함하는 컴퓨터 판독가능 매체.The query condition comprises a complementary tuple of query conditions. 제51항에 있어서,The method of claim 51, 쿼리 조건은 상기 헤드 내의 0개 이상의 변수를 갖는 제2 쿼리, 및 상기 보디 내의 콤마에 의해 분리된 제3 및 제4 쿼리를 포함하는 컴퓨터 판독가능 매체.The query condition includes a second query having zero or more variables in the head, and third and fourth queries separated by commas in the body. 제60항에 있어서,The method of claim 60, 쿼리 조건은 변수를 인수로서 받는 좌측 인젝터(left injector)를 포함하는 컴퓨터 판독가능 매체.The query condition includes a left injector that receives a variable as an argument. 제61항에 있어서,62. The method of claim 61, 쿼리 조건은 변수를 인수로서 받는 우측 인젝터(right injector)를 포함하는 컴퓨터 판독가능 매체.The query condition includes a right injector that takes a variable as an argument. 제61항에 있어서,62. The method of claim 61, 쿼리 조건은 상기 헤드 내의 0개 이상의 변수를 갖는 제5 쿼리 및 상기 보디 내의 제6 쿼리를 포함하는 컴퓨터 판독가능 매체.The query condition includes a fifth query having zero or more variables in the head and a sixth query in the body. 제63항에 있어서,The method of claim 63, wherein 쿼리 조건은 쿼리 조건에 대해 작용하는 판독 연산자(read operator)를 포함하는 컴퓨터 판독가능 매체.The query condition is a computer readable medium including a read operator that operates on the query condition. 제63항에 있어서,The method of claim 63, wherein 쿼리 조건은 쿼리 조건에 대해 작용하는 복사 연산자(copy operator)를 포함하는 컴퓨터 판독가능 매체.A query condition is a computer readable medium comprising a copy operator that operates on a query condition. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 비활성 연산자(inactivity operator)를 포함하며,A portion of the expression representing the process includes an inactivity operator, 상기 비활성 연산자는 상기 프로세스의 비활성이 표현될 수 있게 해주는 것인 컴퓨터 판독가능 매체.The inactivity operator is a computer readable medium that enables the inactivity of the process to be expressed. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 일련의 프로세스를 합산하는 합산 연산자(summation operator)를 포함하며,A portion of the expression representing the process includes a summation operator that sums up a series of processes, 상기 합산 연산자는 상기 프로세스가 상기 일련의 프로세스로부터 선택할 수 있는 선택 사항이 계속하여 표현될 수 있게 해주는 것인 컴퓨터 판독가능 매체.And the summing operator allows the process to continuously represent the choices that the process can select from the series of processes. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 new 연산자를 포함하며,A portion of the expression representing the process includes a new operator, 상기 new 연산자는 상기 프로세스에 바인딩되어 있는 이름의 생성이 표현될 수 있게 해주는 것인 컴퓨터 판독가능 매체.And the new operator allows a generation of a name bound to the process to be represented. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 병렬 연산자(parallel operator)를 포함하며,A portion of the expression representing the process includes a parallel operator, 상기 병렬 연산자는 병렬로 실행되는 2개의 프로세스가 표현될 수 있게 해주는 것인 컴퓨터 판독가능 매체.And the parallel operator allows two processes executed in parallel to be represented. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 복제 연산자(replication operator)를 포함하며,A portion of the expression representing the process includes a replication operator, 상기 복제 연산자는 상기 프로세스의 무한적 거동(infinite behavior)이 표현될 수 있게 해주는 것인 컴퓨터 판독가능 매체.The replication operator is such that the infinite behavior of the process can be expressed. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분이 제2 큐, 제2의 큐 구분자 세트, 및 프로세스를 포함하는 컴퓨터 판독가능 매체.And wherein a portion of the expression representing the process comprises a second queue, a second set of queue delimiters, and a process. 제47항에 있어서,The method of claim 47, 상기 프로세스를 표현하는 상기 표현식의 일부분은 리프트된 쿼리(lifted query)를 포함하는 컴퓨터 판독가능 매체.A portion of the expression representing the process comprises a lifted query. 프로세스 기반 언어로 작성된 표현식의 구조적 등가(structural equivalence)를 규율하는 일련의 등식 법칙을 실행하는 컴퓨터 실행가능 방법으로서,A computer executable method of executing a set of equation laws that govern the structural equivalence of an expression written in a process-based language. 쿼리가 프로세스와 병렬로 실행되고 있음을 기술하는 제1 표현식을 파싱하는단계로서, 상기 쿼리는 헤드와 보디를 가지며, 상기 헤드는 비어있고 상기 보디는 제2 이름에 바인딩되어 있는 제1 이름을 포함하는 파싱 단계, 및Parsing a first expression describing that the query is running in parallel with the process, wherein the query has a head and a body, the head is empty and the body includes a first name bound to a second name Parsing step, and 상기 제1 표현식을 제2 표현식에 구조적 등가인 것으로 해석하는 단계를 포함하며,Interpreting the first expression as structurally equivalent to a second expression, 상기 제2 표현식은 상기 쿼리가 표준형(canonical form)인 경우 상기 쿼리가 상기 프로세스와 병렬로 실행되고 있음을 기술하며, 상기 프로세스에서의 상기 제1 이름의 각각의 발생은 상기 제2 이름으로 대체가능한 것인 컴퓨터 실행가능 방법.The second expression describes that the query is running in parallel with the process when the query is in canonical form, wherein each occurrence of the first name in the process is replaceable with the second name. Computer executable method. 제73항에 있어서,The method of claim 73, 상기 쿼리는 상기 쿼리의 보디 내의 제약 모두가 축약불가(irreducible)이고, 상기 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 실행가능 방법.And the query is canonical only if all of the constraints in the body of the query are irreducible and the query is not a failure. 제74항에 있어서,The method of claim 74, wherein 제약은 상기 쿼리가 제2 쿼리로 축약되는 때 상기 제약이 상기 제2 쿼리의 요소가 되도록 하는 제2 쿼리가 존재하는 경우에만 상기 쿼리에서 축약불가인 것인 컴퓨터 실행가능 방법.The constraint is non-abbreviable in the query only if there is a second query that causes the constraint to be an element of the second query when the query is abbreviated to the second query. 제74항에 있어서,The method of claim 74, wherein 상기 쿼리는 상기 쿼리가 제2 쿼리로 축약가능하고 상기 제2 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 실행가능 방법.And the query is a failure only if the query is shorthand to a second query and the second query includes a failure. 제76항에 있어서,77. The method of claim 76, 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 실행가능 방법.The constraint is defined as a first literal that the constraint is bound to a second literal and fails if the first literal is not a complement of the second literal. 프로세스 기반 언어로 작성된 표현식의 구조적 등가(structural equivalence)를 규율하는 일련의 등식 법칙을 실행하는 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체로서,A computer readable medium having computer executable instructions for performing a method of executing a set of equation laws that govern the structural equivalence of an expression written in a process-based language, 상기 방법은,The method, 쿼리가 프로세스와 병렬로 실행되고 있음을 기술하는 제1 표현식을 파싱하는 단계로서, 상기 쿼리는 헤드와 보디를 가지며, 상기 헤드는 비어있고 상기 보디는 제2 이름에 바인딩되어 있는 제1 이름을 포함하는 파싱 단계, 및Parsing a first expression describing that the query is executing in parallel with the process, wherein the query has a head and a body, the head is empty and the body includes a first name bound to a second name Parsing step, and 상기 제1 표현식을 제2 표현식에 구조적 등가인 것으로 해석하는 단계를 포함하며,Interpreting the first expression as structurally equivalent to a second expression, 상기 제2 표현식은 상기 쿼리가 표준형(canonical form)인 경우 상기 쿼리가 상기 프로세스와 병렬로 실행되고 있음을 기술하며, 상기 프로세스에서의 상기 제1 이름의 각각의 발생은 상기 제2 이름으로 대체가능한 것인 컴퓨터 판독가능 매체.The second expression describes that the query is running in parallel with the process when the query is in canonical form, wherein each occurrence of the first name in the process is replaceable with the second name. Computer-readable medium. 제78항에 있어서,The method of claim 78, 상기 쿼리는 상기 쿼리의 보디 내의 제약 모두가 축약불가(irreducible)이고, 상기 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 판독가능 매체.And the query is standard only if all of the constraints in the body of the query are irreducible and the query is not a failure. 제79항에 있어서,The method of claim 79, 제약은 상기 쿼리가 제2 쿼리로 축약되는 때 상기 제약이 상기 제2 쿼리의 요소가 되도록 하는 제2 쿼리가 존재하는 경우에만 상기 쿼리에서 축약불가인 것인 컴퓨터 판독가능 매체.The constraint is non-abbreviated in the query only if there is a second query that causes the constraint to be an element of the second query when the query is abbreviated to the second query. 제79항에 있어서,The method of claim 79, 상기 쿼리는 상기 쿼리가 제2 쿼리로 축약가능하고 상기 제2 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 판독가능 매체.And the query is a failure only if the query is shorthand to a second query and the second query includes a failure. 제81항에 있어서,82. The method of claim 81 wherein 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 판독가능 매체.The constraint is defined as a first literal that the constraint is bound to a second literal and is a failure if the first literal is not a complement of the second literal. 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙(operational semantics rule)을 실행하는 컴퓨터 실행가능 방법으로서,A computer executable method of executing a set of operational semantics rules that govern the meaning of expressions written in a process-based language. 프로세스가 2개의 프로세스 중 선택 사항임을 기술하는 제1 표현식을 파싱하는 단계로서, 상기 2개의 프로세스 중 제1 프로세스는 제1 쿼리가 큐로 전송되고 그 후에 상기 제1 프로세스가 제1의 일련의 동작을 계속함을 표현하고 상기 2개의 프로세스 중 제2 프로세스는 제2 쿼리가 상기 큐로 전송되고 그 후에 상기 제2 프로세스가 제2의 일련의 동작을 계속함을 표현하는 파싱 단계, 및Parsing a first expression describing that the process is optional of two processes, wherein the first of the two processes has a first query sent to the queue and thereafter the first process performs a first series of operations. A parsing step expressing continuation, wherein a second of said two processes is a second query sent to said queue and thereafter said second process continues a second series of operations; and 상기 제1 표현식을 제2 표현식으로 축약하는 단계로서, 상기 제2 표현식은 상기 제3 쿼리가 표준형인 경우에 제3 쿼리가 상기 큐로 전송되고 그 후에 상기 제1 프로세스가 상기 제2 프로세스와 병렬로 실행됨을 기술하는 축약 단계를 포함하는 컴퓨터 실행가능 방법.Shortening the first expression to a second expression, wherein the second expression is a third query is sent to the queue if the third query is a canonical form and thereafter the first process is in parallel with the second process. A computer executable method comprising abbreviation steps describing execution. 제83항에 있어서,84. The method of claim 83, 상기 제3 쿼리는 2개의 조건의 바인딩의 축약이고,The third query is an abbreviation of the binding of two conditions, 2개의 조건 중 제1 조건은 제1 순열 함수의 상기 제1 쿼리에의 적용을 포함하고,The first of two conditions comprises the application of a first permutation function to said first query, 제2 조건은 제2 순열의 상기 제2 쿼리에의 적용을 포함하는 컴퓨터 실행가능 방법.And the second condition comprises applying a second permutation to the second query. 제83항에 있어서,84. The method of claim 83, 상기 제3 쿼리는 상기 제3 쿼리의 보디 내의 제약 모두가 축약불가(irreducible)이고, 상기 제3 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 실행가능 방법.The third query is canonical only if all of the constraints in the body of the third query are irreducible and the third query is not a failure. 제85항에 있어서,86. The method of claim 85, 제약은 상기 제3 쿼리가 제4 쿼리로 축약되는 때 상기 제약이 상기 제4 쿼리의 요소가 되도록 하는 상기 제4 쿼리가 존재하는 경우에만 상기 제3 쿼리에서 축약불가인 것인 컴퓨터 실행가능 방법.The constraint is non-abbreviable in the third query only if the fourth query exists that causes the constraint to be an element of the fourth query when the third query is abbreviated to the fourth query. 제85항에 있어서,86. The method of claim 85, 상기 제3 쿼리는 상기 제3 쿼리가 제4 쿼리로 축약가능하고 상기 제4 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 실행가능 방법.And the third query is a failure only if the third query is shorthand to a fourth query and the fourth query includes a failure. 제87항에 있어서,88. The method of claim 87 wherein 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 실행가능 방법.The constraint is defined as a first literal that the constraint is bound to a second literal and fails if the first literal is not a complement of the second literal. 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙(operational semantics rule)을 실행하는 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체로서,A computer readable medium having computer executable instructions for performing a method of executing a set of operational semantics rules that govern the meaning of expressions written in a process-based language. 상기 방법은,The method, 프로세스가 2개의 프로세스 중 선택 사항임을 기술하는 제1 표현식을 파싱하는 단계로서, 상기 2개의 프로세스 중 제1 프로세스는 제1 쿼리가 큐로 전송되고 그 후에 상기 제1 프로세스가 제1의 일련의 동작을 계속함을 표현하고 상기 2개의 프로세스 중 제2 프로세스는 제2 쿼리가 상기 큐로 전송되고 그 후에 상기 제2 프로세스가 제2의 일련의 동작을 계속함을 표현하는 파싱 단계, 및Parsing a first expression describing that the process is optional of two processes, wherein the first of the two processes has a first query sent to the queue and thereafter the first process performs a first series of operations. A parsing step expressing continuation, wherein a second of said two processes is a second query sent to said queue and thereafter said second process continues a second series of operations; and 상기 제1 표현식을 제2 표현식으로 축약하는 단계로서, 상기 제2 표현식은 상기 제3 쿼리가 표준형인 경우에 제3 쿼리가 상기 큐로 전송되고 그 후에 상기 제1 프로세스가 상기 제2 프로세스와 병렬로 실행됨을 기술하는 축약 단계를 포함하는 컴퓨터 판독가능 매체.Shortening the first expression to a second expression, wherein the second expression is a third query is sent to the queue if the third query is a canonical form and thereafter the first process is in parallel with the second process. A computer readable medium comprising the abbreviation step of describing execution. 제89항에 있어서,91. The method of claim 89 wherein 상기 제3 쿼리는 2개의 조건의 바인딩의 축약이고,The third query is an abbreviation of the binding of two conditions, 2개의 조건 중 제1 조건은 제1 순열 함수의 상기 제1 쿼리에의 적용을 포함하고,The first of two conditions comprises the application of a first permutation function to said first query, 제2 조건은 제2 순열의 상기 제2 쿼리에의 적용을 포함하는 컴퓨터 판독가능 매체.And the second condition includes the application of a second permutation to the second query. 제89항에 있어서,91. The method of claim 89 wherein 상기 제3 쿼리는 상기 제3 쿼리의 보디 내의 제약 모두가 축약불가(irreducible)이고, 상기 제3 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 판독가능 매체.And the third query is standard only if all of the constraints in the body of the third query are irreducible and the third query is not a failure. 제91항에 있어서,92. The method of claim 91, 제약은 상기 제3 쿼리가 제4 쿼리로 축약되는 때 상기 제약이 상기 제4 쿼리의 요소가 되도록 하는 상기 제4 쿼리가 존재하는 경우에만 상기 제3 쿼리에서 축약불가인 것인 컴퓨터 판독가능 매체.The constraint is non-abbreviated in the third query only if there is a fourth query that causes the constraint to be an element of the fourth query when the third query is abbreviated to the fourth query. 제91항에 있어서,92. The method of claim 91, 상기 제3 쿼리는 상기 제3 쿼리가 제4 쿼리로 축약가능하고 상기 제4 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 판독가능 매체.And the third query is a failure only if the third query is shorthand to a fourth query and the fourth query includes a failure. 제93항에 있어서,95. The method of claim 93, 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 판독가능 매체.The constraint is defined as a first literal that the constraint is bound to a second literal and is a failure if the first literal is not a complement of the second literal. 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙을 실행하는 컴퓨터 실행가능 방법으로서,A computer executable method of executing a set of operational semantic rules that govern the meaning of expressions written in a process-based language. 제1 표현식을 파싱하는 단계로서, 상기 제1 표현식은 제1 프로세스를 기술하고 이 제1 프로세스의 제1 동작은 쿼리를 큐로 전송하는 것으로서 그 후에 상기 제1 프로세스는 제2 프로세스를 계속하는 파싱 단계, 및Parsing a first expression, wherein the first expression describes a first process and the first operation of the first process is to send a query to the queue, after which the first process continues the second process , And 상기 제1 표현식을 제2 표현식으로 축약하는 단계로서, 상기 제2 표현식은 상기 제1 쿼리가 표준형인 경우에 리프트된 쿼리가 상기 제2 프로세스와 병렬로 실행됨을 기술하는 축약 단계를 포함하는 컴퓨터 실행가능 방법.Shortening the first expression to a second expression, the second expression including a shortening step describing that the lifted query is executed in parallel with the second process if the first query is standard. Possible way. 제95항에 있어서,97. The method of claim 95, 상기 제1 쿼리는 비어있는 헤드 및 제약의 리스트인 보디를 갖는 또하나의 쿼리에 구조적 등가인 것인 컴퓨터 실행가능 방법.And the first query is structurally equivalent to another query having a body that is an empty head and a list of constraints. 제96항에 있어서,97. The method of claim 96, 상기 제약의 리스트 내의 각각의 제약은 2개의 이름 사이의 바인딩인 것인 컴퓨터 실행가능 방법.Wherein each constraint in the list of constraints is a binding between two names. 제95항에 있어서,97. The method of claim 95, 상기 제1 쿼리는 상기 제1 쿼리의 상기 보디 내의 제약 모두가 축약불가이고 또 상기 제1 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 실행가능 방법.And the first query is canonical only if all of the constraints in the body of the first query are unabbreviated and the first query is not a failure. 제98항에 있어서,99. The method of claim 98, 제약은 상기 제1 쿼리가 제2 쿼리로 축약되는 때 상기 제약이 상기 제2 쿼리의 요소가 되도록 하는 상기 제2 쿼리가 존재하는 경우에만 상기 제1 쿼리에서 축약불가인 것인 컴퓨터 실행가능 방법.The constraint is non-abbreviated in the first query only if there is a second query that causes the constraint to be an element of the second query when the first query is abbreviated to the second query. 제99항에 있어서,The method of claim 99, wherein 상기 제1 쿼리는 상기 제1 쿼리가 제2 쿼리로 축약가능하고 상기 제2 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 실행가능 방법.And wherein the first query is a failure only if the first query is shorthand to a second query and the second query includes a failure. 제100항에 있어서,101. The method of claim 100, 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 실행가능 방법.The constraint is defined as a first literal that the constraint is bound to a second literal and fails if the first literal is not a complement of the second literal. 프로세스 기반 언어로 작성된 표현식의 의미를 규율하는 일련의 동작적 의미론 규칙을 실행하는 방법을 수행하는 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체로서,A computer readable medium having computer executable instructions for performing a method of executing a set of operational semantic rules that govern the meaning of an expression written in a process-based language, 제1 표현식을 파싱하는 단계로서, 상기 제1 표현식은 제1 프로세스를 기술하고 이 제1 프로세스의 제1 동작은 쿼리를 큐로 전송하는 것으로서 그 후에 상기 제1 프로세스는 제2 프로세스를 계속하는 파싱 단계, 및Parsing a first expression, wherein the first expression describes a first process and the first operation of the first process is to send a query to the queue, after which the first process continues the second process , And 상기 제1 표현식을 제2 표현식으로 축약하는 단계로서, 상기 제2 표현식은 상기 제1 쿼리가 표준형인 경우에 리프트된 쿼리가 상기 제2 프로세스와 병렬로 실행됨을 기술하는 축약 단계를 포함하는 컴퓨터 판독가능 매체.Shortening the first expression to a second expression, the second expression including a shortening step describing that the lifted query is executed in parallel with the second process if the first query is standard. Media available. 제102항에 있어서,103. The method of claim 102, 상기 제1 쿼리는 비어있는 헤드 및 제약의 리스트인 보디를 갖는 또하나의 쿼리에 구조적 등가인 것인 컴퓨터 판독가능 매체.And the first query is structurally equivalent to another query having a body that is an empty head and a list of constraints. 제103항에 있어서,103. The method of claim 103, 상기 제약의 리스트 내의 각각의 제약은 2개의 이름 사이의 바인딩인 것인 컴퓨터 판독가능 매체.Wherein each constraint in the list of constraints is a binding between two names. 제102항에 있어서,103. The method of claim 102, 상기 제1 쿼리는 상기 제1 쿼리의 상기 보디 내의 제약 모두가 축약불가이고 또 상기 제1 쿼리가 실패가 아닌 경우에만 표준형인 것인 컴퓨터 판독가능 매체.And the first query is standard only if all of the constraints in the body of the first query are non-abbreviated and the first query is not a failure. 제105항에 있어서,105. The method of claim 105, 제약은 상기 제1 쿼리가 제2 쿼리로 축약되는 때 상기 제약이 상기 제2 쿼리의 요소가 되도록 하는 상기 제2 쿼리가 존재하는 경우에만 상기 제1 쿼리에서 축약불가인 것인 컴퓨터 판독가능 매체.The constraint is nonabbreviated in the first query only if there is a second query that causes the constraint to be an element of the second query when the first query is abbreviated to the second query. 제105항에 있어서,105. The method of claim 105, 상기 제1 쿼리는 상기 제1 쿼리가 제2 쿼리로 축약가능하고 상기 제2 쿼리가 실패를 포함하는 경우에만 실패인 것인 컴퓨터 판독가능 매체.And the first query is a failure only if the first query is shorthand for a second query and the second query includes a failure. 제107항에 있어서,107. The method of claim 107 wherein 제약은 상기 제약이 제2 리터럴에 바인딩되어 있는 제1 리터널로서 정의되고 또 상기 제1 리터럴이 상기 제2 리터널의 보수(complement)가 아닌 경우에 실패인 것인 컴퓨터 판독가능 매체.The constraint is defined as a first literal that the constraint is bound to a second literal and is a failure if the first literal is not a complement of the second literal.
KR1020047018145A 2002-05-10 2003-05-09 Cooperation of concurrent, distributed networks of resources KR101187486B1 (en)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US37986402P 2002-05-10 2002-05-10
US60/379,864 2002-05-10
US10/303,407 2002-11-22
US10/303,379 US7117487B2 (en) 2002-05-10 2002-11-22 Structural equivalence of expressions containing processes and queries
US10/303,407 US20030212761A1 (en) 2002-05-10 2002-11-22 Process kernel
US10/303,445 US7055142B2 (en) 2002-05-10 2002-11-22 Permutation nuances of the integration of processes and queries as processes at queues
US10/303,343 2002-11-22
US10/303,343 US7216335B2 (en) 2002-05-10 2002-11-22 Operational semantics rules for governing evolution of processes and queries as processes
US10/303,445 2002-11-22
US10/303,379 2002-11-22
PCT/US2003/014440 WO2003096209A1 (en) 2002-05-10 2003-05-09 Cooperation of concurrent, distributed networks of resources

Publications (2)

Publication Number Publication Date
KR20050003430A true KR20050003430A (en) 2005-01-10
KR101187486B1 KR101187486B1 (en) 2012-11-15

Family

ID=29424849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047018145A KR101187486B1 (en) 2002-05-10 2003-05-09 Cooperation of concurrent, distributed networks of resources

Country Status (6)

Country Link
EP (1) EP1504362A4 (en)
JP (1) JP4276168B2 (en)
KR (1) KR101187486B1 (en)
CN (1) CN100342367C (en)
AU (1) AU2003241394A1 (en)
WO (1) WO2003096209A1 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302634B2 (en) 2001-03-14 2007-11-27 Microsoft Corporation Schema-based services for identity-based data access
US7024662B2 (en) 2001-03-14 2006-04-04 Microsoft Corporation Executing dynamically assigned functions while providing services
US9886309B2 (en) 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
US8156472B2 (en) 2004-02-12 2012-04-10 Microsoft Corporation Process language for microprocessors with finite resources
EP1645974B1 (en) * 2004-10-05 2014-01-01 Sony Europe Limited Self-organisation approach to semantic interoperability in peer-to-peer information exchange
US20060095724A1 (en) * 2004-10-28 2006-05-04 Microsoft Corporation Message-passing processor
CN101276371B (en) * 2008-04-18 2012-12-05 浙江大学 Asynchronous interactive data digging system and method based on operating stream
US9600250B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Declarative programming model with a native programming language
US9600255B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Dynamic data and compute resource elasticity
US9658890B2 (en) * 2010-10-08 2017-05-23 Microsoft Technology Licensing, Llc Runtime agnostic representation of user code for execution with selected execution runtime
US9760348B2 (en) 2010-11-29 2017-09-12 Microsoft Technology Licensing, Llc Verification of a dataflow representation of a program through static type-checking

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2077273C (en) * 1991-12-12 1996-12-03 Mike H. Conner Language neutral objects
SE515179C2 (en) * 1994-10-24 2001-06-25 Ericsson Telefon Ab L M Ways of internal communication in telecommunication systems
US6144999A (en) * 1998-05-29 2000-11-07 Sun Microsystems, Incorporated Method and apparatus for file system disaster recovery
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
DE10000960C1 (en) * 2000-01-12 2001-12-20 Infineon Technologies Ag Data processing device

Also Published As

Publication number Publication date
JP2005525640A (en) 2005-08-25
JP4276168B2 (en) 2009-06-10
CN1653439A (en) 2005-08-10
WO2003096209A1 (en) 2003-11-20
EP1504362A4 (en) 2007-10-31
EP1504362A1 (en) 2005-02-09
CN100342367C (en) 2007-10-10
AU2003241394A1 (en) 2003-11-11
KR101187486B1 (en) 2012-11-15

Similar Documents

Publication Publication Date Title
US7055142B2 (en) Permutation nuances of the integration of processes and queries as processes at queues
Wielemaker et al. SWI-Prolog and the web
US7627541B2 (en) Transformation of modular finite state transducers
Milo et al. Exchanging intensional XML data
US7624075B2 (en) Transformation of modular finite state transducers
US6055370A (en) Apparatus which allows data sharing amongst computer programs from different program environments
US11507351B2 (en) Intent compiler
US7117487B2 (en) Structural equivalence of expressions containing processes and queries
US7216335B2 (en) Operational semantics rules for governing evolution of processes and queries as processes
KR20050000352A (en) Common query runtime system and application programming interface
KR101187486B1 (en) Cooperation of concurrent, distributed networks of resources
Bloom et al. Thorn: robust, concurrent, extensible scripting on the JVM
US20030212761A1 (en) Process kernel
Petricek Context-aware programming languages
Alberda et al. Using formal methods to cultivate trust in smart card operating systems
Kozlenkov et al. Version 2.0 User’s Guide
Scherer Description languages for REST APIs-state of the art, comparison, and transformation
Hall CONTEXT-AWARE PROGRAMMING LANGUAGES
Maffeis et al. Behavioural equivalences for dynamic Web data
Hunger et al. Spring Data Neo4j-Reference Documentation
Mora Bernabé Development of web services for the PABRE system
Neely Mobile Computations Over Distributed Semistructured Data
Bezuidenhout Automated program generation
Roman et al. Service description language
Siegel Applying high-level language paradigms to communications software for distributed systems

Legal Events

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

Payment date: 20150827

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee