KR20040036535A - 버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법 - Google Patents

버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20040036535A
KR20040036535A KR1020030061391A KR20030061391A KR20040036535A KR 20040036535 A KR20040036535 A KR 20040036535A KR 1020030061391 A KR1020030061391 A KR 1020030061391A KR 20030061391 A KR20030061391 A KR 20030061391A KR 20040036535 A KR20040036535 A KR 20040036535A
Authority
KR
South Korea
Prior art keywords
program
data
work
message
virtual machine
Prior art date
Application number
KR1020030061391A
Other languages
English (en)
Other versions
KR100550197B1 (ko
Inventor
에스 술츠스티븐
트카쵸우 지니어
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20040036535A publication Critical patent/KR20040036535A/ko
Application granted granted Critical
Publication of KR100550197B1 publication Critical patent/KR100550197B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/544Buffers; Shared memory; Pipes
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 공유 메모리를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 방법에 관한 것이다. 제1 컴퓨터 프로그램은 제1 작업 큐(work queue)를 위한 제1 작업 디스패처(work dispatcher)를 갖는다. 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스팻쳐를 갖는다. 인터럽트를 유발하지 않고, 제1 프로그램에서 공유 메모리로 메시지 또는 데이터가 제2 프로그램을 위하여 기록되고 제2 작업 큐는 제2 프로그램을 위한 메시지 및 데이터를 지시하는 작업 아이템으로 갱신된다. 그럴 경우 제2 프로그램은 메시지나 데이터에 관하여 인터럽트되지 않는다. 그 후 제2 프로그램이 바쁘지 않게 될 때, 제2 프로그램은 인터럽트 없이 수신 및 데이터나 메시지를 수신하기 위하여 작업 아이템을 실행한다. 만약 제2 프로그램이 현재 바쁘지 않다면, 제2 프로그램은 인터럽트되어 그 작업 큐 상의 메시지 또는 데이터를 프로세싱한다. 이것은 제2 프로그램에 최소한의 부담을 과한다.

Description

버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를 전송하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR TRANSFERRING DATA BETWEEN VIRTUAL MACHINES OR OTHER COMPUTER ENTITIES}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것이고, 더 상세하게는 버츄얼 머신, 논리적 구분 또는 어플리케이션 프로그램 간의 메시지 및 데이터 전송을 위한 효율적인 테크닉에 관하여 다루고 있다.
둘 이상의 컴퓨터 엔티티가 메시지 또는 데이터를 교환하는 많은 컴퓨터 환경이 존재한다. 이러한 컴퓨터 환경은 유닉스 또는 윈도우즈 NT와 같은 단일 운영 체제상에서 실행되는 버츄얼 머신, 논리적 구분 및 어플리케이션을 포함한다.
버츄얼 머신 운영체제는 오늘날 잘 알려져 있고 공통 베이스 포션(common base portion) 및 개별 유저 포션을 포함한다. IBM z/VM 운영체제에서, 공통 베이스 포션은 "컨트롤 프로그램(Control Program)" 또는 "CP"라고 호칭되고 각 유저 포션은 "버츄얼 머신" 또는 "게스트"라고 호칭된다. 많은 어플리케이션은 각 버츄얼 머신상에서 실행될 수 있다. 각 버츄얼 머신은 스스로의 작업 디스패처{및 연관된 작업 큐(associated work queue)}를 갖고 있으며 유저 및 유저의 어플리케이션에게 개인 운영체제로서 나타나게 된다. 각 버츄얼 머신은 그들이 지원하는 어플리케이션을 대신하여 커맨드를 실행한다. 다른 버츄얼 머신은 공통 베이스 포션을 통하여 서로 통신할 수 있다. CP를 경유하는 다른 버츄얼 머신간의 통신은 가상화된 통신 디바이스(예를 들어 Guest Lan 또는 IUCV와 같은 IBM 전용 프로토콜)에 의하여 커버되는 메시지의 형태일 수 있다. 이러한 통신은 다양한 프로토콜을 통하여 전달되지만, 이 모든 통신 메카니즘은 적어도 4가지 공통된 특성을 갖는다.
a) 메시지 데이터는 우선 송신자의 가상 어드레스 공간(virtual address space)으로 기록된다.
b) 인터럽트는 각 수신자의 버츄얼 머신에서 각 메시지에 대하여 생성된다. 이것은 각 수신자 버츄얼 머신에서 인터럽트 핸들링(interrupt handling)을 호출한다.
c) CP는 통신을 수행하기 위하여 호출되어야만 한다.
d) CP는 송신자의 가상 어드레스 공간으로부터 모든 수신자의 가상 어드레스 공간으로 메시지 데이터를 복사한다.
상술한 통신 방법에서는, CP를 호출하고 인터럽트를 생성하고 인터럽트를 처리하고 메시지 데이터를 송신자의 가상 어드레스 공간에서 각 수신자의 가상 어드레스 공간으로 복사하는 것과 연관하여, 상당한 오버헤드가 존재한다.
아래에서 IUCV를 보다 상세히 서술한다. IUCV는 IBM 전용 포인트 투 포인트(point to point) 프로토콜이다. 포인트 투 포인트 프로토콜은 데이터를 하나의 송신자에서 하나의 수신자로 전송한다. IUVC를 거쳐 통신하기 위하여, 송신자는 우선 통신의 의도된 수신자의 아이덴티티를 지시하는 CP를 호출한다. CP는수신자에게 인터럽트를 생성하고 수신자가 통신하는 것에 동의한다면 CP는 수신자에게 통신 패스 아이디(communication pass id)를 제공한다. CP는 또한 송신자에 인터럽트를 걸고 송신자에게 통신 패스 아이디를 제공한다. 데이터를 송신하기 위하여, 송신자는 송신되는 데이터 및 이전에 획득된 패스 아이디를 지시하는 CP를 호출한다. CP는 패스 아이디를 사용하여 수신자를 인식하고 수신자에게 인터럽트를 생성한다. 수신자는 데이터를 수신하기 위하여 CP를 호출함으로써 인터럽트에 응답한다. 그러면 CP는 송신자의 가상 어드레스 공간에서 수신자의 가상 어드레스 공간으로 데이터를 복사하고 데이터가 전송되는 것을 지시하는 송신자에 인터럽트를 생성한다.
아래에서 Guest Lan에 대하여 더 상세히 설명한다. Guest Lan은 LAN 프로토콜을 사용하는 가상화된 통신 디바이스이다. Lan 프로토콜은 송신자 및 다중 수신자들간에서 동시에 통신을 동시에 허용한다. Guest Lan을 통하여 통신하기 위하여 송신자 및 수신자는 그들이 Guest Lan에 참여하기를 원한다는 것을 지시하는 CP를 호출한다. 데이터를 전송하기 위하여, 송신자는 전송되는 데이터와 어떤 수신자가 데이터를 수신해야 하는지를 지시하는 CP를 호출한다. CP는 각 인식된 수신자를 위하여 인터럽트를 생성한다. 각 수신자는 데이터를 수신하기 위하여 CP를 호출함으로써 응답한다. 그 후 CP는 데이터를 송신자의 가상 어드레스 공간으로부터 각 수신자의 가상 어드레스 공간으로 복사한다. 일단 모든 수신자가 데이터를 수신하면, CP는 데이터가 모든 수신자에 전송되었음을 지시하는 인터럽트를 송신자에 생성한다.
논리적 구분 환경 역시 오늘날 잘 알려져 있다. 논리적 구분은 단일 컴퓨터 시스템의 자원의 논리적 분할(logical division)이고, 이 분할은 소프트웨어 및 마이크로 코드에 의하여 수행된다. 각 논리적 구분은 CPU, 메모리 및 주변 장치 각각의 배치에 의하여 정의된다. 논리적 구분은 실제 머신에서 불가능한 몇 가지 부가 서비스를 제공할 수 있음에도 불구하고, 논리적 구분에서 실행되는 운영체제는 그 논리적 구분을 실제 머신과 거의 구분할 수 없는 것으로 판단한다. 따라서, 운영체제는 그것이 논리적 구분 내에서 실행된다는 것을 거의 인지하지 못하고, 동일한 실제 컴퓨터의 다른 논리적 구분을 거의 인식하지 못한다. 각 논리적 구분은 또한 자신의 디스패처(dispatcher)를 갖고 있으며, 마치 버츄얼 머신 환경에서와 같이 인터럽트를 사용하여 하나의 논리적 구분으로부터 다른 것으로 메시지/데이터를 통신한다.
두 어플리케이션이 모두 윈도우즈 NT 또는 유닉스처럼 같은 운영체제 상에서 실행되고 있을 때, 한 어플리케이션이 다른 어플리케이션과 통신하기 위한 다른 알려진 테크닉이 있다. 이러한 환경에서, 운영체제는 두 어플리케이션 모두를 위하여 같은 디스패처를 사용한다. 이 알려진 통신 테크닉에 따라, 어플리케이션 A가 어플리케이션 B와 통신하기를 원할 때, 어플리케이션 A는 운영체제 내에서 감독자를 호출/통지한다. 상기 호출은 어플리케이션 A에 의하여 액세스 가능한 메모리에서의 메시지/데이터의 주소를 포함한다. 이에 대응하여, 감독자는 메시지/데이터를 어플리케이션 B가 액세스할 수 있는 위치에 복사한다. 다음으로, 감독자는 디스패치 큐 상에 작업 엘리먼트를 놓는다. 작업 엘리먼트는 어플리케이션 B를 수령인으로 인식하고 메시지/데이터를 인출(fetch)하는 명령을 포함한다. 그 후, 디스패처는 운영체제의 디스패칭 전략 및 작업 엘리먼트의 상대적인 우선 순위와 일치하는 시간에서 어플리케이션 B로 작업 엘리먼트를 디스패치한다. 다음은 몇 가지의 알려진 가능한 디스패칭 전략이다. 만약 어플리케이션 B가 현재 바쁘지 않다면, 그 후 메시지/데이터 작업 엘리먼트는 프로세서가 자유로워지거나 높은 우선순위 작업 엘리먼트(어떤 어플리케이션을 위한 것이든)에 의하여 점유되지 않은 경우 어플리케이션 B로 디스패칭된다. 만약 어플리케이션 B가 현재 다른 낮은 우선순위 의 작업 아이템으로 바쁜 경우, 디스패처는 낮은 우선순위 작업 아이템이 할당된 프로세서 시간 조각을 완료하거나 운영체제에 호출을 할 때 메시지/데이터 작업 아이템을 교체할 수 있다. 그러나, 관련된 오버헤드 때문에 어플리케이션 B로 메시지/데이터를 전달하기 위하여 운영체제를 "인터럽트"하는 것은 적절하지 않을 것이다. 디스패처의 공유는 이것을 불필요하게 만든다. 위에 기술된 것처럼, 버츄얼 머신 및 다른 환경은 공통 디스패처(common dispatcher)를 갖지 않는다.
본 발명의 목적은 (a)같은 베이스 운영체제에서 실행되는 두 개의 다른 버츄얼 머신, (b)동일한 컴퓨터의 두 개의 논리적 구분 또는 (c)같은 컴퓨터 상에서 실행되지만 다른 디스패처를 갖는 두 개의 어플리케이션 간의 통신/데이터 전송을 위한 효율적인 방법을 제공하는 것이다.
본 발명의 목적은 (a)하나의 버츄얼 머신으로부터 동일한 베이스의 운영체제 상에서 실행되는 둘 이상의 모든 버츄얼 머신으로, (b)하나의 논리적 구분에서 동일한컴퓨터의 둘 이상의 다른 논리적 구분으로, 또는 (c)하나의 어플리케이션으로부터 같은 컴퓨터 상에서 실행되지만 다른 디스패처를 갖는 둘 이상의 다른 어플리케이션으로 통신/데이터 전송을 위한 효율적인 방법을 제공하는 것이다.
본 발명은 공유 메모리를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 방법에 관한 것이다. 제1 컴퓨터 프로그램은 제1 작업 큐를 위한 제1 작업 디스패처를 갖는다. 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스패처를 갖는다. 제1 프로그램으로부터 공유 메모리로 메시지 또는 데이터가 제2 프로그램을 위하여 기록되고 제2 작업 큐는 제2 프로그램을 위한 메시지 및 데이터를 지시하는 작업 아이템으로 갱신된다. 업데이팅 단계와 관련하여 제2 프로그램이 현재 바쁜지 여부가 결정된다. 바쁜 경우, 제2 프로그램은 메시지 또는 데이터에 관하여 인터럽트되지 않는다. 그 후 제2 프로그램이 바쁘지 않게 될 때, 제2 프로그램은 데이터나 메시지를 수신하기 위하여 인터럽트 없이 작업 아이템을 수신하고 실행한다. 만약 제2 프로그램이 현재 바쁘지 않다면, 제2 프로그램은 인터럽트되어 그 작업 큐 상의 메시지 또는 데이터를 프로세싱한다(이것은 제2 프로그램에 최소한의 부담을 과한다).
본 발명의 다른 특징에 따르면, 공유 메모리 및 공통 베이스 운영 체제를 갖는 제1 및 제2 버츄얼 머신 간의 통신을 위한 방법이 존재한다. 제1 버츄얼 머신은 제1 작업 큐를 위한 제1 작업 디스패처를 갖는다. 제2 버츄얼 머신은 제2 작업 큐를 위한 제2 작업 디스패처를 갖는다. 제1 및 제2 작업 큐는 제1 및 제2 버츄얼 머신 모두에 의하여 공유되는 메모리에 존재한다. 공통 베이스 운영체제를 호출하지 않고, 메시지 또는 데이터는 제2 버츄얼 머신을 위하여 제1 버츄얼 머신으로부터 공유 메모리로 기록되고, 제2 작업 큐는 제2 버츄얼 머신을 위한 메시지 또는 데이터를 지시하는 작업 아이템으로 갱신된다. 그 후, 제2 버츄얼 머신 프로그램은 공유 메모리로부터 메시지 또는 데이터를 판독한다.
도 1은 본 발명에 따른 버츄얼 머신 운영체제(virtual machine operating system)의 블록도.
도 2는 다른 버츄얼 머신으로부터 데이터 또는 메시지를 수신하기 위하여 도 1의 버츄얼 머신에 의하여 구현되는 프로세스를 도시하는 플로우 차트.
도 3은 다른 버츄얼 머신으로 메시지 또는 데이터를 송신하기 위하여 도 1의 버츄얼 머신에 의하여 구현되는 프로세스를 도시하는 플로우 차트.
도 4는 논리적으로 구분된(logically partitioned) 컴퓨터 시스템의 블록도.
도 5는 다른 데이터 및 메시지를 수신하기 위하여 도 5의 컴퓨터 시스템의 논리적 구분에 의하여 구현되는 프로세스를 도시하는 플로우 차트.
도 6은 다른 논리적 구분에 메시지 또는 데이터를 송신하기 위하여 도 5의 논리적 구분에 의하여 구현되는 프로세스를 도시하는 플로우 차트.
<도면의 주요 부분에 대한 부호의 설명>
10 : 버츄얼 머신 운영체제
11 : 물리적 컴퓨터(physical computer)
20 : 베이스 포션(base portion)
21 : 공유 메모리
22a : 디스패처(dispatcher)
32, 34, 36 : 어플리케이션
이제 동일한 참조 번호는 처음부터 끝까지 동일한 엘리먼트를 지시하고 있는 도면을 상세히 보면, 도 1은 보통 10이라고 지정된 본 발명에 따른 버츄얼 머신 운영체제를 도시하고 있다. 본 발명은 버츄얼 머신 및 비 버츄얼 머신 운영체제로 통합될 수 있지만, 예를 들어 버츄얼 머신 운영체제(10)는 IBM z/VM 버전 4.2.0 또는 4.3.0 운영체제가 될 수 있다. z/VM 4.2.0 운영체제의 상세는 IBM 발행 "z/VM 4.2.0 General Information"(문서 번호 : GC24-5991-03)에 개시되어 있고 이것은 International Business Machines Corp. 사서함 29570, IBM 출판, 레일라이(Raleigh), 노스 캐롤라이나 27626-0570 또는 월드 와이드 웹 상의 www.IBM.com/shop/publication/order에서 이용 가능하다. 이 간행물은 본 명세서의 일부로서 참조된다. 본 발명은 다른 서버 컴퓨터 또는 퍼스널 컴퓨터에서도 구현될 수 있지만 운영체제(10)는 IBM z시리즈 메인프레임같은 물리적 컴퓨터(11)에서 실행된다. 운영체제(10)는 z/VM 운영체제에서 버츄얼 머신 또는 게스트 버츄얼 머신이라 부르는 유저 포션(12, 14, 16) 및 공통 베이스 포션(20; z/VM 운영체제에서 CP라 부르는)을 포함한다. 각 유저 포션(12 및 14)은 I/O, 통신 등과 같은 표준 운영체제 함수를 제공한다. 각 유저 포션(12, 14 및 16)은 어플리케이션(32,34 및 36)과 같은 몇 개의 다른 어플리케이션을 동시에 실행할 수 있다. 예를 들어, 어플리케이션(32, 34 및 36)은 TELNET, FTP, PING일 수 있다(그리고 선행 기술 통신 메카니즘 대신 본 발명을 사용한다). z/VM 4.2.0 및 4.3.0 운영체제에서, 버츄얼 머신(12, 14 또는 16)의 몇몇 운영체제 함수는 현재 리눅스 운영체제에 의하여 제공되므로 리눅스 운영체제에서 필요하지 않음에도 불구하고, 리눅스(리누스 토발스의 상표) 운영체제는 각 버츄얼 머신(12, 14 및 16)상에서 실행될 수 있다. 도시되지는 않았지만, 일반적으로 많은 다른 버츄얼 머신 및 연관된 운영체제가 존재하고 이것은 또한 공통 베이스 포션(20)을 공유한다.
또한 각 버츄얼 머신상에서 실행되는 다중 어플리케이션이 존재할 수 있다. 베이스 포션(20)은 가상화된 메모리, 가상화된 디바이스 및 가상화된 CPU와 같은 알려진 함수를 포함한다.
컴퓨터(11)는 또한 모든 버츄얼 머신(12, 14, 16) 등에 의하여 공유되는 메모리 영역(21)을 포함한다. 공유되면서, 각 버츄얼 머신은 공유 메모리 영역(21)에 직접 어드레스 및 액세스하여 그곳에서 데이터를 판독하거나, 그곳으로 데이터를 기록한다. 어플리케이션에 의하여 요청되거나 생성되는 데이터에 대하여, 어플리케이션은 그것이 실행되는 각 버츄얼 머신으로 판독 및 기록 요청을 생성한다. 각 버츄얼 머신은 도 2 및 도 3을 참조하여 아래에 설명된 것처럼 어플리케이션을 대신해서 공유 메모리에 액세스한다. 본 발명의 일 실시예에서, 공유 메모리(21)는 베이스 포션(20)의 비접촉 저장 세그먼트(Discontiguous Saved Segment; DCSS) 포션의 일부이다. DCSS는 동적으로 로드 및 언로드될 수 있는 공유 메모리의 특수한 형태이다. 이것은 버츄얼 머신 종료(termination) 및 CP 종료 조차 견딜 수 있으며, 실행가능한 코드를 포함할 수 있다. 그러나, 본 발명에서 DCSS내의 공유 메모리를 제외한 다른 기능은 필요치 않으므로 본 발명은 DCSS 또는 그 등가물을 포함하는 구현에 한정되는 것은 아니다.
각 버츄얼 머신(12, 14 및 16)은 각 판독 함수(32a, 32b 및 32c), 각 기록 함수(42a, 42b, 42c) 및 각 디스패처(22a, 22b 및 22c)를 포함한다. 버츄얼 머신은 자신이 실행하는 어플리케이션에서 기록 명령을 만날 때 기록 함수를 호출한다. 기록 함수는 대기하고 있으므로 기록 함수 태스크(task)를 위하여 어떤 큐도 요구되지 않는다. 기록 함수는 버츄얼 머신으로부터 공유 메모리로 데이터를 기록한다. 기록 동작은 CP를 호출하지 않는다. 버츄얼 머신은 자신이 실행하는 어플리케이션에서 판독 명령을 만날 때 판독 함수를 호출한다. 판독 함수는 대기하고 있으므로 판독 함수 태스크를 위하여 어떤 큐도 요구되지 않는다. 판독 함수는 공유 메모리로부터 데이터를 판독한다. 따라서, 데이터는 기록자의 가상 어드레스 공간으로부터 판독자의 가상 어드레스 공간으로 복사되지 않는다. 또한, CP는 공유 메모리로부터 판독하도록 호출되지 않고, 이것은 오버헤드를 감소시킨다. 각 버츄얼 머신은 작업 아이템을 완료하여 만약 어떤 다른 작업 아이템이 필요할 경우 디스패처를 호출한다. 호출에 대응하여 디스패처는 작업 아이템에 대하여 공유 메모리(21) 내의 각 큐(26a, 26b 또는 26c)상에서 체크한다.
테이블(24)은 또한 공유 메모리(21)에 저장된다. 테이블은 각 버츄얼 머신(12, 14, 16)의 상태를 지시한다. 각 버츄얼 머신(12, 14 및 16)은 또한 각작업 큐 관리 함수(81a, 81b 또는 81c; Work Queue Management Function; WQMF)를 포함하는데, 각 작업 큐 관리 함수는 다음에 설명하는 바와 같이 작업 아이템이 발생하는 경우 그것들을 작업 큐에 추가하고 각 버츄얼 머신의 상태를 "유휴(idle)" 또는 "비유휴(not idle)"로서 갱신한다. 테이블(24)은 각 버츄얼 머신의 아이디(identity) 및 각 버츄얼 머신이 유휴인지 아닌지의 지시를 포함한다. 테이블(24)은 또한 각 버츄얼 머신에 대하여 각 작업 큐(26a, 26b 또는 26c)에 대한 포인터를 포함한다. 테이블(24)은 상태가 변화함에 따라 변화한다. 도 1에 도시된 예에서, 현재 버츄얼 머신(12)은 유휴상태가 아니다(즉, 현재 다른 작업 아이템/태스크를 실행하고 있다). 그러나, 버츄얼 머신(12)은 현재의 작업 아아템을 완료한 후에 수행할 어떤 것도 그것의 작업 큐(26a)에 가지고 있지 않다. 버츄얼 머신(14)은 현재 유휴상태이지만 큐(26b)에 작업 아이템을 갖고 있다. 큐(26b)의 작업 아이템은 24D00 위치에서 시작되어 특정된 길이로 확장되는 공유 메모리의 내용을 판독한다(작업 아이템을 따르는 "null"이라는 단어는 큐에 더 이상의 작업 아이템이 없다는 것을 지시한다). 버츄얼 머신(16)은 현재 유휴상태가 아니고 큐(26c)에 작업 아이템을 갖는다. 큐(26c)의 작업 아이템은 24D00 위치에서 시작되어 특정 길이로 확장되는 공유 메모리의 내용을 판독한다.
도 2는 각 디스패처의 동작 즉, 각 디스패처는 다른 디스패처와는 개별적으로 도 2의 단계를 구현하는 것을 도시하는 플로우 차트이다. 버츄얼 머신이 각 작업 아이템/태스크를 완료한 후에 버츄얼 머신은 수행할 새로운 작업 아이템을 찾기 위하여 디스패처를 호출한다(결정 단계 48). 이에 응하여 버츄얼 머신 내의 디스패처는 작업 아이템을 위하여 각 작업 큐{디스패처(22a)를 위한 작업 큐(26a), 디스패처(26b)를 위한 작업 큐(22b) 및 디스패처(26c)를 위한 작업 큐(26c)}를 체크한다(단계 50). 만약 큐에 작업 아이템이 존재하는 경우(결정 단계 52) 디스패처는 그 성질 및 어떤 함수가 작업 아이템을 수행하기 위하여 호출될 것인지 결정하기 위하여 작업 아이템을 파싱한다. 판독 요청의 경우, 디스패처는 작업 아이템에 의하여 지시된 위치에서 판독 함수를 호출하여 메시지/데이터를 판독한다. 따라서, 이 판독은 인터럽트 생성 및 인터럽트 핸들링 호출없이 수행될 수 있다. 그 후, 디스패처는 작업 큐를 다시 체크하기 위하여 결정 단계 (52)로 다시 돌아간다. 만약 결정 단계 (52)를 반복하는 동안 작업 큐에 작업 아이템이 없다면 디스패처는 각 버츄얼 머신에 대하여 테이블(24)에서의 상태 필드를 "유휴"로 세팅한다. 그러면 디스패처는 버츄얼 머신이 대기 상태(wait state)로 들어가도록 통지한다. 이 대기 상태에서 버추얼 머신은 어플리케이션 또는 그 자신을 위하여 작업 아이템을 실행하고 있지 않은 "슬리핑" 또는 "유휴" 모드에 있다. 버츄얼 머신은 이 작업 큐에서의 새로운 작업 아이템을 지시하는 인터럽트를 받을 때까지 대기 상태에 남아있다. 이러한 인터럽트가 수신될 때, 버츄얼 머신을 위한 WQMF는 각 버츄얼 머신을 위하여 테이블(14)의 상태 필드를 비유휴(non idle)로 세팅한다. 다음으로, 디스패처는 작업 아이템을 위하여 작업 큐를 체크하기 위하여 결정 단계 (52)으로 돌아간다. 이번에는 작업 큐에 작업 아이템이 있어야만 한다.
도 3은 다른 버츄얼 머신{예를 들어 버츄얼 머신(14)}으로 메시지 또는 데이터를 송신하기를 원하는 경우 버츄얼 머신{예를 들어 버츄얼 머신(12)} 중 하나의동작을 도시한다. 단계(80)에서, 버츄얼 머신(12)은 공유 메모리(21)에 데이터를 기록하기 위하여 기록함수(32a)를 호출한다. 상술한 것처럼, 각 버츄얼 머신은 적절한 어드레스를 제공함으로써 공유 메모리로 직접 액세스한다. 그래서 버츄얼 머신(12)의 기록 함수(32a)는 기록될 어드레스를 특정하고 기록될 데이터를 제공함으로써 데이터를 공유 메모리로 기록한다. 다음으로 버츄얼 머신(12)내의 WQMF(81a)는 작업 아이템을 작업 큐에 기록함으로써 버츄얼 머신(14)의 작업 큐(26b)로 작업 아이템을 추가한다. 작업 큐는 공유 메모리 안에 있으므로, 이것은 CP의 호출을 요구하지 않는다. 다음으로 WQMF(81a)는 테이블(24)을 체킹하여 버츄얼 머신(14)이 현재 유휴상태인지 여부를 결정한다(결정 단계 84). 만약 유휴상태가 아니라면, 버츄얼 머신(12)은 이 통신을 완료하기 위하여 더 할 것이 없고 CP는 통신 프로세스의 어느 점에서도 호출되지 않는다(종료 단계 86). 본 발명에 따라 버츄얼 머신(12)은 버츄얼 머신을 인터럽트하는데 관련된 오버헤드 때문에 버츄얼 머신(14)을 인터럽트하지 않는다. 도 2와 관련하여 상술한 바와 같이, 버츄얼 머신(14)이 현재 작업 아이템을 완료할 때, 버츄얼 머신(14)은 자동적으로 디스패처를 호출하여 다른 작업 아이템을 위한 작업 큐를 체크한다(결정 단계 48 및 단계 50). 그 시점에 버츄얼 머신(14)은 버츄얼 머신(12)으로부터 작업 아이템을 본다. 결정(84) 단계를 다시 참조하여, 만약 버츄얼 머신(14)이 유휴 상태인 경우 본 발명에 따라 버츄얼 머신(12)은 버츄얼 머신(14)에 깨우는 인터럽트("wakening" type of interrupt)를 내린다(단계 88). 이것은 CP의 호출을 요구한다. 깨우는 인터럽트는 버츄얼 머신(14)에게 큐(26b)에 작업 아이템이 있다고 경고/호출한다. 상기인터럽트를 내리는 것으로, 버츄얼 머신(12)은 데이터 통신의 자기 부분을 완료한다. 깨우는 인터럽트는 작업 아이템을 위한 작업 큐를 체크하기 위하여 자동적으로 버츄얼 머신(14)이 디스패처(22; 도 2의 결정 단계 48)를 활성화시키도록 한다. 디스패처(22b)는 작업 큐(26b)를 체크하기 위하여 도 2에 도시된 단계를 구현하고(단계 50 및 결정 단계 52) 데이터를 판독한다(단계 54).
도 3은 또한 버츄얼 머신 중 하나{예를 들어 버츄얼 머신(12)}가 둘 이상의 다른 버츄얼 머신{예를 들어 버츄얼 머신(14 및 16)}과 통신하길 원할 때의 동작을 도시한다. 단계(80)에서, 버츄얼 머신(12)은 기록 함수(32a)를 호출하여 공유 메모리(21)에 데이터를 기록한다. 그래서 버츄얼 머신(12)은 기록될 주소를 특정하고 기록될 데이터를 제공함으로써 공유 메모리에 데이터를 기록한다. 도 1에 도시된 예제에서 데이터는 어드레스 24D00에서 시작되는 공유 메모리 위치에 기록된다. 다음으로 버츄얼 머신(12)내의 WQMF(81a)는 작업 아이템, 데이터 어드레스 및 데이터 길이를 작업 큐 상에 기록함으로써 작업 아이템을 버츄얼 머신(14 및 16)의 작업 큐(26b 및 26c)에 추가한다(단계 82). 다음으로 버츄얼 머신(12) 내의 WQMF(81a)는 테이블(24)을 체킹함으로써 버츄얼 머신(14 및 16)이 현재 유휴상태인지 아닌지를 결정한다(결정 단계 84). 도 1에 도시된 예제에서 버츄얼 머신(14)은 유휴상태지만 버츄얼 머신(16)은 바쁜 상태이다. 그래서 바쁜 상태의 버츄얼 머신(16)에 대하여 버츄얼 머신(12)은 통신을 종료시키기 위하여 더이상 아무것도 하지 않는다(종료 단계 86). 본 발명에 따를 때, 버츄얼 머신(12)은 버츄얼 머신을 인터럽트하는데 관련된 오버헤드 때문에 바쁜 상태의 버츄얼 머신(16)을 인터럽트하지 않는다. 도 2와 관련하여 상술한 바와 같이, 바쁜 상태의 버츄얼 머신(16)이 현재 작업 아이템을 완료할 때, 그것은 자동적으로 다른 작업 아이템을 위하여 그 작업 큐를 체크한다(결정 단계 48 및 단계 50). 그 시점에서 버츄얼 머신(16)은 버츄얼 머신(12)으로부터의 작업 아이템을 보고 통신은 CP를 호출하지 않고 완료될 것이다. 결정(84) 단계로 다시 돌아가서, 버츄얼 머신(14)이 유휴 상태이므로 본 발명에 따라 버츄얼 머신(12)은 버츄얼 머신(14)에 깨우는 인터럽트("wakening" type of interrupt)를 내린다(단계 88). 깨우는 인터럽트는 유휴상태인 버츄얼 머신(14)에게 큐에 작업 아이템이 있다고 경고/호출한다. 상기 인터럽트를 내려서, 버츄얼 머신(12)은 데이터 통신의 일부를 완료한다. 깨우는 인터럽트는 자동적으로 유휴상태인 버츄얼 머신(14)이 자신의 디스패처(22b)를 호출하여, 작업 아이템을 위한 자신의 작업 큐를 체크하도록 한다. 디스패처(22b)는 작업 큐(26b)를 체크하기 위하여 도 2에 도시된 단계를 구현하고(결정 단계 52) 데이터를 판독한다(단계 54).
도 4는 본 발명에 따른 것으로, 일반적으로 110으로 지정된 논리적으로 구분된 컴퓨터 시스템을 도시하고 있다. 본 발명은 다른 서버 컴퓨터 또는 퍼스널 컴퓨터에서도 구현될 수 있지만 시스템(110)은 IBM z시리즈 메인프레임과 같은 물리적 컴퓨터(111)의 논리적 구분이다. 시스템(110)은 논리적 구분(112, 114, 116)을 포함한다. 각 논리적 구분(112, 114 및 116)은 I/O, 통신 등과 같은 표준 운영체제 함수를 그 어플리케이션에 제공한다. 도시된 바와 같이 각 논리적 구분(112, 114 및 116)은 어플리케이션(132, 134 및 136)과 같은 다수의 다른 어플리케이션을동시에 실행할 수 있다. 예를 들어, 어플리케이션(132, 134 및 136)은 TELNET, FTP, PING일 수 있다(그리고 선행 기술 통신 메카니즘 대신 본 발명을 사용한다). 베이스 포션(120)은 컴퓨터(111) 및 그 리소스의 실제의 논리적 구분에 참여하는데, 즉, CPU, 메모리, I/O 등을 구분한다. 베이스 포션(120) 및 논리적 구분(112, 114 및 116)의 일 예제의 함수는, 본 발명과는 별도로 출판번호 # SA24-4351-02인 "Enterprise System/9000 9221 Processors: Operating Your System - Volume 2(Logically Partitioned Mode)"라는 제목의 문서에 설명되어 있고, 상기 문서는 International Business Machines Corp. 사서함 29570, IBM 출판, 레일라이(Raleigh), 노스 캐롤라이나 27626-0570 또는 월드 와이드 웹 상의 www.IBM.com/shop/publication/order에서 이용 가능하다.
컴퓨터(111)는 또한 모든 논리적 구분(112, 114, 116등) 등에 의하여 공유되는 메모리 에리어(121)를 포함한다. 공유되면, 각 논리적 구분은 공유 메모리 영역(121)에 직접 어드레스 및 액세스하여 데이터를 판독하고 기록할 수 있다. 어플리케이션에 의하여 요청되거나 생성되는 데이터에 대하여, 어플리케이션은 그것이 실행되는 각 논리적 구분으로 판독 및 기록 요청을 생성한다. 각 논리적 구분은 도 5 및 도 6을 참조하여 아래에 설명된 것처럼 어플리케이션을 대신해서 공유 메모리에 액세스한다.
각 논리적 구분(112, 114 및 116)은 각 판독 함수(132a, 132b 및 132c), 각 기록 함수(142a, 142b 및 142c) 및 각 디스패처(122a, 122b 및 122c)를 포함한다. 논리적 구분은 실행하는 어플리케이션의 기록 명령을 만날 때 기록 함수를 호출한다. 기록 함수는 대기하고 있으므로 기록 함수 태스크를 위하여 어떤 큐도 요구되지 않는다. 기록 함수는 논리적 구분으로부터 공유 메모리로 데이터를 기록하므로 베이스 포션(120)을 호출하지 않는다. 논리적 구분은 실행하는 어플리케이션의 판독 명령을 만날 때 판독 함수를 호출한다. 판독 함수는 대기하고 있으므로 판독 함수 태스크를 위하여 어떤 큐도 요구되지 않는다. 판독 함수는 공유 메모리로부터 데이터를 판독하므로 베이스 포션(120)을 호출하지 않는다. 또한, 데이터는 기록자의 가상 어드레스 공간으로부터 판독자의 가상 어드레스 공간으로 복사되지 않는다. 각 논리적 구분은 작업 아이템을 완료하여 만약 어떤 다른 작업 아이템이 있어 필요할 경우 디스패처를 호출한다. 호출에 응하여 디스패처는 작업 아이템에 대하여 공유 메모리(121) 내의 각 큐(126a, 126b 또는 126c)상에서 체크한다.
테이블(124)은 또한 공유 메모리(121)에 저장된다. 테이블은 각 논리적 구분(112, 114, 116)의 상태를 지시한다. 또한 각 논리적 구분(112, 114 및 116)은 작업 아이템이 발생할 경우, 작업 아이템을 작업 큐에 추가하고, 각 논리적 구분의 상태를 "유휴(idle)" 또는 "비유휴(not idle)"로 갱신하는 각 WQMF(181a, 181b 또는 181c)를 포함한다. 테이블(124)은 각 논리적 구분의 아이디 및 각 논리적 구분이 유휴인지 아닌지의 지시를 포함한다. 테이블(124)은 또한 각 논리적 구분에 대하여 각 작업 큐(126a, 126b 또는 126c)에 대한 포인터를 포함한다. 테이블(124)은 상태가 변화함에 따라 변화한다. 도 4에 도시된 예에서, 현재 논리적 구분(112)은 유휴상태가 아니다(즉, 현재 다른 작업 아이템/태스크를 실행하고 있다). 그러나, 논리적 구분(112)은 현재 그것의 작업 큐(126a)에 현재의 작업 아아템을 완료한 후 할 어떤 것도 가지고 있지 않다. 논리적 구분(114)은 현재 유휴상태이지만 큐(126b)에 작업 아이템을 갖고 있다. 큐(126b)의 작업 아이템은 24D00 위치에서 시작되고 특정된 길이 만큼 확장되는 공유 메모리의 내용을 판독하는 것이다(작업 아이템을 따르는 "null"이라는 단어는 큐에 더 이상의 작업 아이템이 없다는 것을 지시한다). 논리적 구분(116)은 현재 유휴상태가 아니고 큐(126c)에 작업 아이템을 갖는다. 큐(126c)의 작업 아이템은 24D00 위치에서 시작되어 특정 길이만큼 확장되는 공유 메모리의 내용을 판독한다.
도 5는 각 디스패처의 동작을 도시하는 플로우 차트이다(즉, 각 디스패처는 다른 디스패처와 개별적으로 도 5의 단계를 구현한다). 논리적 구분이 각 작업 아이템/태스크를 완료한 후에 논리적 구분은 수행할 새로운 작업 아이템을 찾기 위하여 디스패처를 호출한다(결정 단계 148). 이에 응하여 논리적 구분 내의 디스패처는 작업 아이템을 위하여 각 작업 큐{디스패처(122a)를 위한 작업 큐(126a), 디스패처(126b)를 위한 작업 큐(122b) 및 디스패처(126c)를 위한 작업 큐(126c)}를 체크한다(단계 150). 만약 큐에 작업 아이템이 존재하는 경우(결정 단계 152) 디스패처는 그 성질 및 어떤 함수가 작업 아이템을 수행하기 위하여 호출될 것인지 결정하기 위하여 작업 아이템을 파싱한다. 판독 요청의 경우, 디스패처는 판독 함수를 호출하여 메시지/데이터를 작업 아이템에 의하여 지시된 위치에서 판독한다. 따라서, 이 판독은 인터럽트 생성 및 인터럽트 핸들링 호출없이 수행될 수 있다. 그 후, 디스패처는 작업 큐를 다시 체크하기 위하여 결정 단계(152)로 돌아간다. 만약 결정 단계(152)를 반복하는 동안 작업 큐에 작업 아이템이 없다면 디스패처는각 논리적 구분에 대하여 테이블(124)에서의 상태 필드를 유휴로 설정한다(단계 160). 그러면 디스패처는 논리적 구분이 대기 상태(wait state)로 들어가도록 통지한다(단계 162). 이 대기 상태에서 논리적 구분은 어플리케이션 또는 그 자신을 위하여 작업 아이템을 실행하고 있지 않은 "슬리핑" 또는 "유휴 모드"에 있다. 논리적 구분은 이 작업 큐에서의 새로운 작업 아이템을 지시하는 인터럽트를 받을 때까지 대기 상태에 남아있다(결정 단계 166). 이러한 인터럽트가 수신될 때, 논리적 구분을 위한 WQMF는 각 논리적 구분을 위하여 테이블(114)의 상태 필드를 비유휴(non idle)로 설정한다(단계 168). 다음으로, 디스패처는 작업 아이템을 위하여 작업 큐를 체크하기 위하여 결정(152)으로 돌아간다. 이번에는 작업 큐에 작업 아이템이 있어야만 한다.
도 6은 다른 논리적 구분(예를 들어 논리적 구분(114))으로 메시지 또는 데이터를 송신하기를 원하는 경우 논리적 구분{예를 들어 논리적 구분(112)} 중 하나의 동작을 도시한다. 단계(180)에서, 논리적 구분(112)은 공유 메모리(121)에 데이터를 기록하기 위하여 기록함수(132a)를 호출한다. 상술한 것처럼, 각 논리적 구분은 적절한 어드레스를 제공함으로써 공유 메모리로 직접 액세스한다. 그래서 논리적 구분(112)의 기록 함수(132a)는 기록될 어드레스를 특정하고 기록될 데이터를 제공함으로써 데이터를 공유 메모리로 기록한다. 다음으로 논리적 구분(112)내의 WQMF(181a)는 작업 아이템을 작업 큐에 기록함으로써 논리적 구분(114)의 작업 큐(126b)로 작업 아이템을 추가한다(단계 182). 다음으로 WQMF(181a)는 논리적 구분(114)이 현재 유휴상태인지 여부를 테이블(124)을 체킹하여 결정한다(결정 단계184). 만약 그렇지 않다면 논리적 구분(112)은 이 통신을 완료하기 위하여 더 이상 아무것도 하지 않고 베이스 포션(120)은 통신 프로세스의 어느 점에서도 호출되지 않는다(종료 단계 186). 본 발명에 따라 논리적 구분(112)은 논리적 구분을 인터럽트하는데 관련된 오버헤드 때문에 논리적 구분(114)을 인터럽트하지 않는다. 도 5를 참조하여 설명한 바와 같이 논리적 구분(114)이 현재 작업 아이템을 완료할 때, 논리적 구분(114)은 자동적으로 디스패처를 호출하여 다른 작업 아이템을 위한 작업 큐를 체크한다(결정 단계 148 및 단계 150). 그 시점에 논리적 구분(114)은 논리적 구분(112)으로부터 작업 아이템을 본다. 결정 단계(184)를 다시 참조하여, 만약 논리적 구분(114)이 유휴 상태인 경우, 본 발명에 따라 논리적 구분(112)은 깨우는 인터럽트("wakening" type of interrupt)를 논리적 구분(114)에 내린다(단계 188). 깨우는 인터럽트는 논리적 구분(114)에게 큐(126b)에 작업 아이템이 있다고 경고/호출한다. 상기 인터럽트를 내려서, 논리적 구분(112)은 데이터 통신에서 자신의 부분을 완료한다. 깨우는 인터럽트는 자동적으로 논리적 구분(114)이 디스패처(122; 도 5의 결정 단계 148)를 활성화시키도록 하여 작업 아이템을 위한 작업 큐를 체크하도록 한다. 디스패처(122b)는 작업 큐(126b)를 체크하기 위하여 도 5에 도시된 단계를 구현하고(단계 150 및 결정 단계 152) 데이터를 판독한다(단계 154).
도 6은 또한 논리적 구분 중 하나{예를 들어 논리적 구분(112)}가 둘 이상의 다른 논리적 구분{예를 들어 논리적 구분(114 및 116)}과 통신하길 원할 때의 동작을 도시한다. 단계(80)에서, 논리적 구분(112)은 기록 함수(132a)를 호출하여 공유 메모리(121)에 데이터를 기록한다. 그래서 논리적 구분(112)은 기록될 주소를 특정하고 기록될 데이터를 제공함으로써 공유 메모리에 데이터를 기록한다. 도 4에 도시된 예제에서 데이터는 어드레스 24D00에서 시작되는 공유 메모리 위치에 기록된다. 다음으로 논리적 구분(112) 내의 WQMF(181a)는 작업 아이템, 데이터 어드레스 및 데이터 길이를 작업 큐 상에 기록함으로써 작업 아이템을 논리적 구분(114 및 116)의 작업 큐(126b 및 126c)에 추가한다(단계 182). 다음으로 논리적 구분(112) 내의 WQMF(181a)는 테이블(124)을 체킹함으로써 논리적 구분(114 및 116)이 현재 유휴상태인지 아닌지를 결정한다(결정 단계 184). 도 4에 도시된 예에서 논리적 구분(114)은 유휴상태지만 논리적 구분(116)은 바쁜 상태이다. 그래서 바쁜 논리적 구분(116)에 대하여 논리적 구분(112)은 통신을 완료시키기 위하여 아무것도 더 하지 않는다(종료 단계 186). 본 발명에 따를 때, 논리적 구분(112)은 논리적 구분을 인터럽트하는데 관련된 오버헤드 때문에 바쁜 논리적 구분(116)을 인터럽트하지 않는다. 도 5를 참조하여 상술한 바와 같이, 바쁜 논리적 구분(116)이 현재 작업 아이템을 완료할 때, 그것은 자동적으로 다른 작업 아이템을 위하여 그 작업 큐를 체크한다(결정 단계 148 및 단계 150). 그 시점에서 논리적 구분(116)은 논리적 구분(112)로부터의 작업 아이템을 본 것이고, 통신은 베이스 포션(120)을 호출하지 않고 완료될 것이다. 결정 단계(184)를 다시 참조하여, 논리적 구분(114)이 유휴 상태이므로 본 발명에 따라 논리적 구분(112)은 논리적 구분(114)에 깨우는 인터럽트("wakening" type of interrupt)를 내린다(단계 188). 깨우는 인터럽트는 유휴상태인 논리적 구분(114)에게 큐에 작업 아이템이 있다고경고/호출한다. 상기 인터럽트를 내려서, 논리적 구분(112)은 데이터 통신에서 자신의 부분을 완료한다. 깨우는 인터럽트는 자동적으로 유휴상태인 논리적 구분(114)이 디스패처(122b)를 호출하도록 하여 작업 아이템을 위한 작업 큐를 체크하도록 한다. 디스패처(122b)는 작업 큐(126b)를 체크하기 위하여 도 5에 도시된 단계를 구현하고(결정 단계 152) 데이터를 판독한다(단계 154).
본 발명은 (a)같은 베이스 운영체제에서 실행되는 두 개의 다른 버츄얼 머신, (b)동일한 컴퓨터의 두 개의 논리적 구분, 또는 (c)같은 컴퓨터 상에서 실행되지만 다른 디스패처를 갖는 두 개의 어플리케이션 간의 통신/데이터 전송을 위한 효율적인 방법을 제공하고, (a)하나의 버츄얼 머신으로부터 동일한 베이스의 운영체제 상에서 실행되는 둘 이상의 모든 버츄얼 머신으로, (b)하나의 논리적 구분에서 동일한 컴퓨터의 둘 이상의 다른 논리적 구분 또는 (c)하나의 어플리케이션으로부터 같은 컴퓨터 상에서 실행되지만 다른 디스패처를 갖는 둘 이상의 다른 어플리케이션으로 통신/데이터 전송을 위한 효율적인 방법을 제공한다.

Claims (20)

  1. 공유 메모리를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 방법으로서 - 상기 제1 컴퓨터 프로그램은 제1 작업 큐(work queue)를 위한 제1 작업 디스패처(dispatcher)를 갖고, 상기 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스패처를 가짐 - ,
    상기 제1 프로그램으로부터 상기 공유 메모리로 상기 제2 프로그램을 위한 메시지 또는 데이터를 기록하고 상기 제2 프로그램을 위하여 메시지 또는 데이터를 지시하는 작업 아이템(work item)으로 상기 제2 작업 큐를 갱신하는 단계;
    상기 갱신 단계와 관련하여 상기 제2 프로그램이 현재 바쁜지 여부를 결정하여, 만약 바쁜 경우에는 상기 메시지 또는 데이터에 대하여 상기 제2 프로그램을 인터럽트 하지 않고, 만약 바쁘지 않은 경우에는 작업 큐 상의 상기 메시지 또는 데이터를 처리하기 위하여 상기 제2 프로그램을 인터럽트하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 제2 프로그램이 이후에 바쁘지 않은 경우, 상기 제2 프로그램은 상기 메시지 또는 데이터를 수신하기 위하여 상기 작업 아이템을 인터럽트 없이 수신하고 실행하는 방법.
  3. 제1항에 있어서, 상기 제1 프로그램은 제1 버츄얼 머신이고 상기 제2 프로그램은 제2 버츄얼 머신인 방법.
  4. 제1항에 있어서, 상기 제1 및 제2 작업 큐는 상기 제1 및 제2 컴퓨터 프로그램에 의해 공유된 메모리에 존재하는 방법.
  5. 제1항에 있어서, 상기 제1 및 제2 작업 큐는 상기 공유 메모리에 존재하는 방법.
  6. 제5항에 있어서, 두 버츄얼 머신에 상기 공유 메모리가 동시에 존재하도록 버츄얼 머신 운영체제의 공통 베이스 포션(common base portion)에 의하여 상기 공유 메모리가 설정되는 방법.
  7. 제1항에 있어서, 상기 제1 컴퓨터 프로그램은 컴퓨터 시스템의 제1 논리적 구분이고, 상기 제2 컴퓨터 시스템은 상기 컴퓨터 시스템의 제2 논리적 구분인 방법.
  8. 제7항에 있어서, 상기 제1 및 제2 논리적 구분에 공통된 베이스 운영체제(base operating system)를 더 포함하고, 상기 기록 및 갱신 단계는 상기 베이스 운영 체제의 호출을 요구하지 않는 방법.
  9. 제1항에 있어서, 상기 제2 컴퓨터 프로그램이 상기 공유 메모리로부터의 상기 메시지 또는 데이터를 판독하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서, 상기 제1 컴퓨터 프로그램으로부터 상기 제2 컴퓨터 프로그램으로 통신할 때, 상기 메시지 또는 데이터는 상기 공유 메모리로 한 번만 기록되는 방법.
  11. 공유 메모리를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 시스템으로서 - 상기 제1 컴퓨터 프로그램은 제1 작업 큐를 위한 제1 작업 디스패처를 갖고, 상기 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스패처를 가짐 - ,
    상기 제1 프로그램으로부터 상기 공유 메모리로 상기 제2 프로그램을 위한 메시지 또는 데이터를 기록하고 상기 제2 프로그램을 위하여 메시지 또는 데이터를 지시하는 작업 아이템으로 상기 제2 작업 큐를 갱신하기 위한 수단;
    상기 갱신 단계와 관련하여 상기 제2 프로그램이 현재 바쁜지 여부를 결정하여, 만약 바쁜 경우에는 상기 메시지 및 데이터에 대하여 상기 제2 프로그램을 인터럽트 하지 않고, 만약 바쁘지 않은 경우에는 작업 큐 상의 상기 메시지 또는 데이터를 처리하기 위하여 상기 제2 프로그램을 인터럽트하기 위한 수단을 포함하는 시스템.
  12. 공유 메모리를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 기록 매체로서 - 상기 제1 컴퓨터 프로그램은 제1 작업 큐를 위한 제1 작업 디스패처를 갖고, 상기 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스패처를 가짐 - ,
    상기 제1 프로그램으로부터 상기 공유 메모리로 상기 제2 프로그램을 위한 메시지 또는 데이터를 기록하고 상기 제2 프로그램을 위하여 메시지 또는 데이터를 지시하는 작업 아이템으로 상기 제2 작업 큐를 갱신하기 위한 프로그램 명령어 수단;
    상기 갱신 단계와 관련하여 상기 제2 프로그램이 현재 바쁜지 여부를 결정하여, 만약 바쁜 경우에는 상기 메시지 및 데이터에 대하여 상기 제2 프로그램을 인터럽트 하지 않고, 만약 바쁘지 않은 경우에는 작업 큐 상의 상기 메시지 또는 데이터를 처리하기 위하여 상기 제2 프로그램을 인터럽트하는 수단을 포함하는 컴퓨터 판독 가능한 기록 매체.
  13. 공유 메모리 및 공통 베이스 운영체제를 갖는 제1 및 제2 버츄얼 머신간의 통신을 위한 방법에 있어서 - 상기 제1 버츄얼 머신은 제1 작업 큐를 위한 제1 작업 디스패처를 갖고, 상기 제2 버츄얼 머신은 제2 작업 큐를 위한 제2 작업 디스패처를 갖고 상기 제1 및 제2 작업 큐는 상기 제1 및 제2 버츄얼 머신 모두에 의하여 공유되는 메모리에 존재함 - ,
    상기 공통 베이스 운영 체제를 호출하지 않고, 상기 제1 버츄얼 머신으로부터 상기 공유 메모리로 상기 제2 버츄얼 머신을 위한 메시지 또는 데이터를 기록하고 상기 제2 버츄얼 머신을 위하여 메시지 또는 데이터를 지시하는 작업 아이템으로 상기 제2 작업 큐를 갱신하는 단계를 포함하는 방법.
  14. 제13항에 있어서, 상기 갱신 단계와 관련하여 상기 공통 베이스 운영체제의 호출없이 상기 제2 버츄얼 머신이 현재 바쁜지 여부를 결정하여,
    만약 바쁜 경우에는 상기 메시지 및 데이터에 대하여 상기 제2 프로그램을 인터럽트 하지 않고, 만약 바쁘지 않은 경우 작업 큐 상의 상기 메시지 또는 데이터를 처리하는 상기 제2 프로그램을 인터럽트하는 방법.
  15. 제14항에 있어서, 상기 인터럽트 단계는 상기 공통 베이스 운영체제의 호출을 요구하는 방법.
  16. 제13항에 있어서, 상기 제1 디스패처는 상기 제1 버츄얼 머신에 존재하고 상기 제2 디스패처는 상기 제2 버츄얼 머신에 존재하는 방법.
  17. 제13항에 있어서, 상기 제2 버츄얼 머신 프로그램이 상기 공유 메모리로부터 상기 메시지 또는 데이터를 판독하는 단계를 더 포함하는 방법.
  18. 공유 메모리 및 공통 베이스 운영체제를 갖는 제1 및 제2 컴퓨터 프로그램간의 통신을 위한 방법에 있어서 - 상기 제1 컴퓨터 프로그램은 제1 작업 큐를 위한 제1 작업 디스패처를 갖고, 상기 제2 컴퓨터 프로그램은 제2 작업 큐를 위한 제2 작업 디스패처를 갖으며, 상기 제1 및 제2 작업 큐는 상기 제1 및 제2 컴퓨터 프로그램 모두에 의하여 공유되는 메모리에 존재함 - ,
    상기 공통 베이스 운영 체제를 호출하지 않고, 상기 제1 컴퓨터 프로그램으로부터 상기 공유 메모리로 상기 제2 컴퓨터 프로그램을 위한 메시지 또는 데이터를 기록하고 상기 제2 컴퓨터 프로그램을 위하여 메시지 또는 데이터를 지시하는 작업 아이템으로 상기 제2 작업 큐를 갱신하는 단계를 포함하는 방법.
  19. 제19항에 있어서, 상기 제1 컴퓨터 프로그램은 제1 논리적 구분이고 상기 제2 컴퓨터 프로그램은 제2 논리적 구분인 방법.
  20. 제19항에 있어서, 상기 제1 및 제2 작업 큐는 상기 제1 및 제2 컴퓨터 프로그램에 공통된 메모리 또는 메모리들에 존재하는 방법.
KR1020030061391A 2002-10-24 2003-09-03 버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법 KR100550197B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/280,987 US7181744B2 (en) 2002-10-24 2002-10-24 System and method for transferring data between virtual machines or other computer entities
US10/280,987 2002-10-24

Publications (2)

Publication Number Publication Date
KR20040036535A true KR20040036535A (ko) 2004-04-30
KR100550197B1 KR100550197B1 (ko) 2006-02-08

Family

ID=32107078

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030061391A KR100550197B1 (ko) 2002-10-24 2003-09-03 버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법

Country Status (4)

Country Link
US (4) US7181744B2 (ko)
KR (1) KR100550197B1 (ko)
CN (1) CN100405351C (ko)
TW (1) TWI249106B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220088261A (ko) * 2020-12-18 2022-06-27 인하대학교 산학협력단 동일 물리 머신에서 공유메모리를 이용한 가상 머신 간 고성능 통신 기법

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
JP4012517B2 (ja) * 2003-04-29 2007-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想計算機環境におけるロックの管理
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
JP4458929B2 (ja) * 2003-07-16 2010-04-28 キヤノン株式会社 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US7739684B2 (en) * 2003-11-25 2010-06-15 Intel Corporation Virtual direct memory access crossover
US20050155011A1 (en) * 2004-01-12 2005-07-14 Stephan Heik Method and system for restricting access in a distributed job environment
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8898246B2 (en) * 2004-07-29 2014-11-25 Hewlett-Packard Development Company, L.P. Communication among partitioned devices
WO2006015181A2 (en) * 2004-07-30 2006-02-09 Mocana Corporation Hardware acceleration for large volumes of channels
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7797704B2 (en) * 2005-03-30 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for performing work by one of plural threads using a lockable resource
US7818746B2 (en) * 2005-03-30 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for benchmarking using a multi-threaded load generator
US7975271B2 (en) * 2005-03-30 2011-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock
US8166473B2 (en) * 2005-04-21 2012-04-24 Microsoft Corporation Method and system for a resource negotiation between virtual machines
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8799857B2 (en) * 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US7689800B2 (en) * 2005-05-12 2010-03-30 Microsoft Corporation Partition bus
US7490203B2 (en) * 2005-05-12 2009-02-10 International Business Machines Corporation Method for dumping data in processing systems to a shared storage
US7478220B2 (en) * 2005-06-23 2009-01-13 International Business Machines Corporation Method, apparatus, and product for prohibiting unauthorized access of data stored on storage drives
US7937701B2 (en) * 2005-06-30 2011-05-03 Intel Corporation ACPI communication between virtual machine monitor and policy virtual machine via mailbox
US20080118065A1 (en) * 2005-07-29 2008-05-22 James Blaisdell Hardware acceleration for large volumes of channels
US7814494B1 (en) * 2005-08-26 2010-10-12 Oracle America, Inc. Method and system for performing reliable resource locking
US9274974B1 (en) 2005-10-21 2016-03-01 Vmware, Inc. Isolating data within a computer system using private shadow mappings
US7861244B2 (en) * 2005-12-15 2010-12-28 International Business Machines Corporation Remote performance monitor in a virtual data center complex
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
US20070162594A1 (en) * 2006-01-12 2007-07-12 Microsoft Corporation Controlled disconnection of a network device
US7941800B2 (en) * 2006-02-23 2011-05-10 Microsoft Corporation Transferring data between virtual machines by way of virtual machine bus in pipe mode
US8095931B1 (en) * 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
CN100418319C (zh) * 2006-05-18 2008-09-10 清华大学 透明计算系统中端设备间数据的传送方法
US20070288938A1 (en) * 2006-06-12 2007-12-13 Daniel Zilavy Sharing data between partitions in a partitionable system
US9392078B2 (en) * 2006-06-23 2016-07-12 Microsoft Technology Licensing, Llc Remote network access via virtual machine
US8307359B1 (en) * 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
US9213513B2 (en) * 2006-06-23 2015-12-15 Microsoft Technology Licensing, Llc Maintaining synchronization of virtual machine image differences across server and host computers
US7630368B2 (en) * 2006-06-30 2009-12-08 Sun Microsystems, Inc. Virtual network interface card loopback fastpath
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US7346909B1 (en) * 2006-08-28 2008-03-18 Intel Corporation Network-like communication and stack synchronization for different virtual machines on the same physical device
US7650469B2 (en) * 2006-09-06 2010-01-19 International Business Machines Corporation Determining whether a non-running processor has access to an address space
US7876765B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Method for supporting IP network interconnectivity between partitions in a virtualized environment
US9183524B2 (en) * 2007-02-21 2015-11-10 Novell, Inc. Imaged-based method for transport and authentication of virtualized workflows
JP4926120B2 (ja) * 2007-04-26 2012-05-09 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データ処理システムおよびデータ処理方法
US8555081B2 (en) 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US9740637B2 (en) 2007-10-30 2017-08-22 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8352939B1 (en) * 2007-12-03 2013-01-08 Mcafee, Inc. System, method and computer program product for performing a security or maintenance operation in association with virtual disk data
US8949977B2 (en) * 2007-12-21 2015-02-03 The Invention Science Fund I, Llc Look ahead of links/alter links
US8468440B2 (en) * 2007-12-21 2013-06-18 The Invention Science Fund I, Llc Look ahead of links/alter links
US8489981B2 (en) * 2007-12-21 2013-07-16 The Invention Science Fund I, Llc Look ahead of links/alter links
US8473836B2 (en) * 2007-12-21 2013-06-25 The Invention Science Fund I, Llc Look ahead of links/alter links
US8793616B2 (en) 2007-12-21 2014-07-29 The Invention Science Fund I, Llc Look ahead of links/alter links
US8495486B2 (en) * 2007-12-21 2013-07-23 The Invention Science Fund I, Llc Look ahead of links/alter links
US20090165134A1 (en) * 2007-12-21 2009-06-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Look ahead of links/alter links
US8015115B2 (en) * 2007-12-27 2011-09-06 Pitney Bowes Inc. System and method for providing controlled access to a funds dispensing device from external processors
US7908403B2 (en) * 2008-02-14 2011-03-15 International Business Machines Corporation Reserved device access contention reduction
US8527715B2 (en) * 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
US8458438B2 (en) * 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8140834B2 (en) 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
WO2009128837A1 (en) * 2008-04-18 2009-10-22 Lucent Technologies Inc. Diameter bus communications between processing nodes of a network element
US8369343B2 (en) * 2008-06-03 2013-02-05 Microsoft Corporation Device virtualization
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US8645596B2 (en) * 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US7996548B2 (en) * 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
WO2010113248A1 (ja) * 2009-03-31 2010-10-07 富士通株式会社 仮想計算機システム、情報処理装置、コンピュータプログラム及び接続制御方法
US8312100B2 (en) * 2009-03-31 2012-11-13 International Business Machines Corporation Managing orphaned requests in a multi-server environment
US8336050B2 (en) * 2009-08-31 2012-12-18 Red Hat, Inc. Shared memory inter-process communication of virtual machines using virtual synchrony
US8635632B2 (en) * 2009-10-21 2014-01-21 International Business Machines Corporation High performance and resource efficient communications between partitions in a logically partitioned system
US9092597B2 (en) * 2009-12-09 2015-07-28 Sandisk Technologies Inc. Storage device and method for using a virtual file in a public memory area to access a plurality of protected files in a private memory area
US8776067B1 (en) * 2009-12-11 2014-07-08 Salesforce.Com, Inc. Techniques for utilizing computational resources in a multi-tenant on-demand database system
US8453149B2 (en) 2010-01-21 2013-05-28 International Business Machines Corporation Efficient multi-core processing of events
US8489708B2 (en) * 2010-04-06 2013-07-16 Microsoft Corporation Virtual application extension points
US10061701B2 (en) 2010-04-26 2018-08-28 International Business Machines Corporation Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US8301715B2 (en) 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
US8301694B2 (en) * 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
US9361212B2 (en) * 2010-06-09 2016-06-07 Siemens Aktiengesellschaft Computation apparatus with coordination of the access to an internal memory and operating method
US8463980B2 (en) * 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
US8468524B2 (en) * 2010-10-13 2013-06-18 Lsi Corporation Inter-virtual machine time profiling of I/O transactions
WO2012147116A1 (en) * 2011-04-25 2012-11-01 Hitachi, Ltd. Computer system and virtual machine control method
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
CN102325178A (zh) * 2011-09-07 2012-01-18 西安交通大学 基于hypervisor构架的虚拟非易失闪存存储器件设备设计方法
US9473596B2 (en) 2011-09-27 2016-10-18 International Business Machines Corporation Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US8667048B2 (en) 2011-12-28 2014-03-04 Tatung Company Method for managing internet protocol addresses in network
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8839447B2 (en) * 2012-02-27 2014-09-16 Ca, Inc. System and method for virtual image security in a cloud environment
KR101878297B1 (ko) * 2012-03-06 2018-08-07 삼성전자주식회사 락 홀더 선점 회복 방법 및 장치
WO2013138587A1 (en) 2012-03-14 2013-09-19 Convergent .Io Technologies Inc. Systems, methods and devices for management of virtual memory systems
CN103415838B (zh) * 2012-03-21 2016-10-05 广州市飞元信息科技有限公司 支持用户自定义的虚拟操作空间系统及其操作方法和支撑系统
US9396101B2 (en) * 2012-06-12 2016-07-19 International Business Machines Corporation Shared physical memory protocol
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9166865B2 (en) 2012-11-07 2015-10-20 International Business Machines Corporation Mobility operation resource allocation
US9405689B2 (en) * 2012-11-19 2016-08-02 Marvell World Trade Ltd. Locally caching data from a shared storage
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
US9122505B1 (en) * 2013-01-31 2015-09-01 Parallels IP Holdings GmbH System and method for handling I/O timeout deadlines in virtualized systems
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
US20150205542A1 (en) * 2014-01-22 2015-07-23 Vmware, Inc. Virtual machine migration in shared storage environment
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
WO2015121750A1 (en) * 2014-02-14 2015-08-20 6Wind System and method for data communication between virtual interfaces
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US10303782B1 (en) * 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
US9715410B2 (en) * 2015-01-30 2017-07-25 Red Hat Israel, Ltd. Protected virtual machine function access
US10191672B2 (en) 2015-10-16 2019-01-29 Google Llc Asynchronous copying of data within memory
US10628192B2 (en) * 2015-12-24 2020-04-21 Intel Corporation Scalable techniques for data transfer between virtual machines
BR112017011541B1 (pt) * 2015-12-30 2023-09-26 Huawei Technologies Co., Ltd Método para processar uma solicitação de bloqueio, aparelho de gerenciamento de solicitação de bloqueio e servidor
CN106959927B (zh) 2016-01-08 2020-08-25 阿里巴巴集团控股有限公司 获取虚拟机中的逻辑分区的位置信息的方法及装置
WO2017120563A1 (en) * 2016-01-08 2017-07-13 Alibaba Group Holding Limited Acquiring location information for logical partition within virtual machine
US10505791B2 (en) * 2016-12-16 2019-12-10 Futurewei Technologies, Inc. System and method to handle events using historical data in serverless systems
US10719372B2 (en) * 2017-05-22 2020-07-21 Oracle International Corporation Dynamic parallelization of data loading
US11126474B1 (en) 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
CN111868687B (zh) * 2018-03-20 2021-09-17 三菱电机株式会社 信息处理装置、方法及程序
CN108614728A (zh) * 2018-04-27 2018-10-02 平安科技(深圳)有限公司 虚拟机服务提供方法、装置、设备及计算机可读存储介质
CN108932170A (zh) * 2018-06-06 2018-12-04 华东师范大学 一种同驻虚拟机间高效共享内存文件系统的机制
US10713082B2 (en) * 2018-11-28 2020-07-14 Sap Se Cloud platform integration load balancer
CN112685137A (zh) * 2021-01-07 2021-04-20 广州市品高软件股份有限公司 一种云计算虚拟机块存储熔断保护方法
US11915065B2 (en) * 2022-01-20 2024-02-27 Vmware, Inc. Brokerless reliable totally ordered many-to-many interprocess communication on a single node that uses shared memory and multicast

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61206043A (ja) 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US4835685A (en) 1985-05-06 1989-05-30 Computer X, Inc. Virtual single machine with message-like hardware interrupts and processor exceptions
JPS6336445A (ja) 1986-07-31 1988-02-17 Nec Corp 仮想計算機システムにおけるフアイル共用制御方式
JPH02112055A (ja) 1988-10-21 1990-04-24 Fuji Electric Co Ltd マルチプロロセッサシステムのデータ転送方式
CA2027934C (en) 1989-12-22 1994-06-21 Cherie C. Barnes Accelerated deadlock detection in congested data transactions
JPH04367963A (ja) 1991-06-15 1992-12-21 Hitachi Ltd 共有記憶通信方法
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5390328A (en) * 1992-03-30 1995-02-14 International Business Machines Corporation Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
JPH0713823A (ja) 1993-06-24 1995-01-17 Nec Corp 仮想計算機システムにおけるファイル資源管理方式
IT1264644B1 (it) * 1993-07-02 1996-10-04 Alcatel Italia Metodo per permettere lo scambio di informazioni fra processi attraverso un dispositivo di comunicazione
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
US5884077A (en) * 1994-08-31 1999-03-16 Canon Kabushiki Kaisha Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
JP3512910B2 (ja) * 1995-07-06 2004-03-31 株式会社東芝 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法
US5706489A (en) * 1995-10-18 1998-01-06 International Business Machines Corporation Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
JPH09319653A (ja) 1996-05-31 1997-12-12 Canon Inc 情報処理装置、情報処理システム及びその制御方法
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US6438663B1 (en) * 1996-12-11 2002-08-20 Steeleye Technology, Inc. System and method for identifying shared virtual memory in a computer cluster
US6170045B1 (en) * 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
FR2763714B1 (fr) * 1997-05-26 1999-07-02 Bull Sa Compteurs de remplacement pour machine avec memoire a acces non uniforme
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6003066A (en) * 1997-08-14 1999-12-14 International Business Machines Corporation System for distributing a plurality of threads associated with a process initiating by one data processing station among data processing stations
US6389482B1 (en) * 1997-08-28 2002-05-14 International Business Machines Corp. Dynamic transitioning from a local pipe to a cross-system pipe
US6205528B1 (en) * 1997-08-29 2001-03-20 International Business Machines Corporation User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
US6332180B1 (en) 1998-06-10 2001-12-18 Compaq Information Technologies Group, L.P. Method and apparatus for communication in a multi-processor computer system
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
JPH11149387A (ja) * 1997-11-17 1999-06-02 Hitachi Ltd 共有装置制御方法及びその実施装置
US6601146B2 (en) 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6154832A (en) 1998-12-04 2000-11-28 Advanced Micro Devices, Inc. Processor employing multiple register sets to eliminate interrupts
US6115779A (en) 1999-01-21 2000-09-05 Advanced Micro Devices, Inc. Interrupt management system having batch mechanism for handling interrupt events
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6347341B1 (en) 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
AU5141200A (en) 1999-06-01 2000-12-18 Microsoft Corporation Single logical clipboard for multiple computers
US6738977B1 (en) * 2000-05-31 2004-05-18 International Business Machines Corporation Class sharing between multiple virtual machines
JP2002073358A (ja) 2000-09-04 2002-03-12 Hitachi Ltd 仮想計算機主記憶のアクセス制御方法
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
US7131120B2 (en) * 2002-05-16 2006-10-31 Sun Microsystems, Inc. Inter Java virtual machine (JVM) resource locking mechanism
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220088261A (ko) * 2020-12-18 2022-06-27 인하대학교 산학협력단 동일 물리 머신에서 공유메모리를 이용한 가상 머신 간 고성능 통신 기법

Also Published As

Publication number Publication date
US20040230972A1 (en) 2004-11-18
CN1497469A (zh) 2004-05-19
US7181744B2 (en) 2007-02-20
US7490324B2 (en) 2009-02-10
KR100550197B1 (ko) 2006-02-08
US7299464B2 (en) 2007-11-20
US7328437B2 (en) 2008-02-05
CN100405351C (zh) 2008-07-23
TWI249106B (en) 2006-02-11
US20080046885A1 (en) 2008-02-21
TW200411403A (en) 2004-07-01
US20070067775A1 (en) 2007-03-22
US20040083481A1 (en) 2004-04-29

Similar Documents

Publication Publication Date Title
KR100550197B1 (ko) 버츄얼 머신 또는 다른 컴퓨터 엔티티 간의 데이터를전송하기 위한 시스템 및 방법
US7233984B2 (en) Light weight file I/O over system area networks
KR100733852B1 (ko) 계산기 시스템
US5448698A (en) Inter-processor communication system in which messages are stored at locations specified by the sender
US7784060B2 (en) Efficient virtual machine communication via virtual machine queues
US5305455A (en) Per thread exception management for multitasking multithreaded operating system
JP4012517B2 (ja) 仮想計算機環境におけるロックの管理
US5396630A (en) Method and system for object management across process boundries in a data processing system
US5060150A (en) Process creation and termination monitors for use in a distributed message-based operating system
EP0769172B1 (en) Method and apparatus for handling i/o requests
EP0592117A2 (en) Asynchronous inter-process communications arrangement
JPH07122863B2 (ja) 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム
US7640549B2 (en) System and method for efficiently exchanging data among processes
US20230035594A1 (en) Managing peripherals in a containerized environment
EP0614139A2 (en) External procedure call for distributed processing environment
JPH10307732A (ja) メッセージ伝送方法
EP0193933B1 (en) Apparatus for control of one computer system by another computer system
JP7056870B2 (ja) 情報処理装置、情報処理方法及びプログラム
US20010025324A1 (en) Data communication method and apparatus, and storage medium storing program for implementing the method and apparatus
US5392426A (en) Method and apparatus for use in program operation, control and control block management and storage
EP3255544B1 (en) Interrupt controller
JP2002169699A (ja) 複数の仮想計算機を用いた通信システム
KR19980086588A (ko) Tcp/ip 소켓 애플리케이션을 이용한 시스템 자원 저감 툴
JPH11184712A (ja) 情報処理装置
WO1996031824A1 (en) Operating system

Legal Events

Date Code Title Description
A201 Request for examination
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: 20091231

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee