KR20060117869A - 파티션 버스 - Google Patents

파티션 버스 Download PDF

Info

Publication number
KR20060117869A
KR20060117869A KR1020050080757A KR20050080757A KR20060117869A KR 20060117869 A KR20060117869 A KR 20060117869A KR 1020050080757 A KR1020050080757 A KR 1020050080757A KR 20050080757 A KR20050080757 A KR 20050080757A KR 20060117869 A KR20060117869 A KR 20060117869A
Authority
KR
South Korea
Prior art keywords
partition
ring buffer
transfer
information
bus
Prior art date
Application number
KR1020050080757A
Other languages
English (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
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060117869A publication Critical patent/KR20060117869A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • 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
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)

Abstract

가상 머신 환경에서 파티션을 통합하는 방법 및 시스템이 제공된다. 구체적으로 말하면, 파티션 버스가 제공되며, 여기서 파티션 버스는 그 자신이 파티션들 간의 데이터 전송 및 장치 공유를 가능하게 해주는 데이터 전송 메카니즘으로서 기능하도록 파티션들을 연결하는 동작을 한다. 파티션 버스는 적절한 경우 그 자신을 설정하고, 파티션들 간의 통신 채널을 설정하고, 파티션들에 인터럽트를 주입하는 일을 하기 위해서 가상화 소프트웨어에 의존한다. 게다가, 파티션 버스는 링 버퍼, 전송 페이지 및 메모리 맵 변경 등의 메카니즘을 이용하여 정보(요청 및 데이터)를 전송한다. 게다가, 파티션 버스는 정책 에이전트를 사용하여 정보가 언제 전송되어야만 하는지 또는 장치가 파티션들 간에 언제 공유되어야만 하는지를 결정한다. 마지막으로, 파티션 버스는 파티션들 간의 원만한 통합을 보장해주기 위해 여러가지 메카니즘을 이용하며, 이는 장치 버저닝 기능 및 프록시 장치를 갖는 원격 서비스를 포함한다.
파티션 버스, 가상 머신, 링 버퍼, 전송 페이지, 메모리 맵

Description

파티션 버스{PARTITION BUS}
도 1은 본 발명이 구현될 수 있는 적당한 컴퓨팅 장치의 간단한 일반적인 설명을 나타낸 도면.
도 2는 컴퓨터 시스템에서의 가상화된 오퍼레이팅 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타낸 블록도.
도 3a는 가상화가 호스트 오퍼레이팅 시스템에 의해 (직접 또는 하이퍼바이저를 통해) 수행되는 가상화된 컴퓨팅 시스템을 나타낸 블록도.
도 3b는 가상화가 호스트 오퍼레이팅 시스템과 나란히 실행 중인 가상 머신 모니터에 의해 수행되는 대안의 가상화된 컴퓨팅 시스템을 나타낸 블록도.
도 4는 파티션들 간의 장치 공유 및 데이터 전송을 가능하게 해주는 파티션 버스의 일반적인 측면을 나타낸 도면.
도 5a는 로컬 프록시 합성 장치(local proxy synthetic device)로 나타내어져 있는 원격 서비스를 나타낸 도면.
도 5b는 스토리지 콘트롤러 및 드래그-앤-드롭 장치를 포함하여, 본 발명의 여러가지 측면에서 사용될 수 있는 유형의 합성 장치를 나타낸 도면.
도 6은 링 버퍼 모델, 전송 페이지 모델, 및 주소 공간 조작 모델을 포함하여, 파티션 버스에 의해 사용되는 여러가지 유형의 데이터 전송 메카니즘을 나타낸 도면.
도 7은 파티션들 간에 소량의 데이터를 전송하기 위해 사용될 수 있는 링 버퍼 모델을 나타낸 도면.
도 8은 파티션들 간에 중간량의 데이터를 전송하기 위해 사용될 수 있는 전송 페이지 모델을 나타낸 도면.
도 9는 파티션들 간에 대량의 데이터를 전송하기 위해 사용될 수 있는 주소 공간 조작 모델을 나타낸 도면.
도 10은 컨텍스트 스위치와 연관된 비용을 발생시키지 않고 파티션들 간에 데이터를 전송하는 메카니즘을 나타낸 도면.
도 11은 인터페이스 및 프로토콜에 대한 파티션 버스 버저닝 메카니즘을 나타낸 도면.
도 12는 한 파티션 기반의 식별자 및 다른 파티션의 신뢰성에 의해 이루어진 정책 결정을 나타낸 도면.
도 13은 에뮬레이트된 장치 모듈 및 가상화 서비스 제공자의 동시 동작을 나타낸 도면.
도 14a는 파티션 버스의 특정 구현의 사용자 모드 측면을 나타낸 도면.
도 14b는 파티션 버스의 특정 구현의 커널 모드 측면을 나타낸 도면.
도 14c는 파티션 버스의 특정 구현의 로더 측면을 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
204: 소프트웨어 애플리케이션
206: 게스트 오퍼레이팅 시스템
208: 게스트 하드웨어 아키텍처
210: 가상화 프로그램
212: 물리적 하드웨어 아키텍처
저작권 고지 및 허용
본 특허 문헌의 개시 내용 중 일부분은 저작권 보호를 받는 자료를 포함할 수 있다. 저작권 소유자는 특허 문헌 또는 특허 개시물이 미국 특허상표청의 특허 파일 또는 기록에 있을 때는 누구든지 팩시밀리 재생하는 것에 대해서 이의를 제기하지 않지만, 그렇지 않다면 어떤 경우에도 모든 저작권을 유보한다. 이 고지는 이 문서에 적용된다. 저작권 ⓒ 2005, Microsoft Corp.
본 발명은 일반적으로 가상 머신(또는 "파티션")의 분야 및 이러한 파티션 내에서 실행되는 오퍼레이팅 시스템에 관한 것이다. 보다 구체적으로는, 본 발명은 파티션들 간에 데이터를 이동시키고 장치를 공유하기 위한 시스템 및 방법에 관한 것이다.
일반적인 가상 머신 환경에서, 다수의 가상 머신 또는 "파티션"이 가상화 소프트웨어의 상부에서 실행된다. 이 소프트웨어는 차례로 하드웨어의 상부에서 실행된다. 가상화 소프트웨어는 복수의 파티션 - 각 파티션은 그 자신의 오퍼레이팅 시스템(OS)을 가짐 - 이 하드웨어 상에서 실행될 수 있게 해주는 방식으로 하드웨어를 노출시킨다. 따라서, 하드웨어는 가상화 소프트웨어에 의해 파티션들에 대해 가상화된다.
개별적인 파티션은 윈도즈, 리눅스, 솔라리스 및 기타 등등과 같은 별개의 OS를 실행할 수 있다. 한 파티션 내의 한 OS가 장애를 일으키는 경우, 이것이 다른 파티션 내의 다른 OS에 영향을 주지 않도록, 이들 OS는 서로 분리될 수 있다.
한 세트의 하드웨어 상에서 실행 중인 다수의 파티션과 연관된 한가지 비용은 가상화 소프트웨어가 각 파티션에 대한 장치들을 가상화할 때 상당한 프로세서 사이클을 소비한다는 것이다. 이와 마찬가지로, 정보(요청 및/또는 데이터) 또는 장치가 이러한 파티션들 간에 공유될 때, 가상화 소프트웨어는 상당한 사이클을 소비하게 되는데, 그 이유는 이 정보 및 장치가 파티션들 간에 공유되고 있을 때 가상화 소프트웨어가 이들을 프로세싱해야만 하기 때문이다.
구체적으로 말하면, 임의의 주어진 가상 머신 환경에서, 한 부류의 문제점이 발생하는 이유는 파티션들에 존재하는 입/출력 장치 중 일부, 및 아마도 그 모두가 다른 파티션들에서 발견되는 다수의 OS와 공유되도록 설계되어 있지 않기 때문이다. 대부분 장치들의 프로그래밍 모델은 그 장치를 "소유"하는 단 하나의 OS가 있는 것으로 가정하며, 이는 여러 파티션에서 발견되는 몇개의 오퍼레이팅 시스템이 그 장치를 동시에 사용하는 것을 아주 어렵게 또는 불가능하게 만든다. 예를 들어 디스크 콘트롤러가 2개의 오퍼레이팅 시스템으로부터 동시에 명령을 가져오는 경우 문제가 발생할 수 있다. 각 오퍼레이팅 시스템은 자기가 파일 시스템 구조를 제어하고 있는 것으로 생각하고 그가 선택한 어떤 데이터든지 기록을 하며, 머지않아 디스크는 오염된다. 이것이 일어나지 않도록 하기 위해, 장치의 소유권을 단일의 오퍼레이팅 시스템에 할당하고 이어서 그 장치의 서비스를 임의의 다른 실행 중인 오퍼레이팅 시스템과 공유하는 어떤 방법 및 시스템을 고안하는 것이 유익하다.
게다가, 다수의 오퍼레이팅 시스템이 동일한 머신을 공유하려고 시도할 때 다른 부류의 문제점이 발생하는데, 그 이유는 사용자들이 이들 오퍼레이팅 시스템 간에 어떤 수준의 통합을 필요로 하기 때문이다. 예를 들어, 사용자는 그의 개별적인 파티션에서 발견되는 오퍼레이팅 시스템들 간에 데이터를 이동시키기를 원할 수 있다. 따라서, 실행 중인 오퍼레이팅 시스템들 간에 데이터 또는 보다 광의적으로는 정보를 이동시키는 방법 및 시스템을 제공하는 것도 유익하게 된다.
본 발명의 여러가지 측면에서 가상 머신 환경에서 여러 파티션들 간의 장치 공유 및 데이터 전송을 가능하게 해주는 방법 및 시스템이 제공된다. 본 발명의 한 측면에서, 파티션 버스가 제공되며, 이 파티션 버스는 상기한 파티션들 간의 장치 공유 및 데이터 전송을 가능하게 해주는 데이터 전송 메카니즘이다.
특히, 파티션 버스는 정보(요청 및/또는 데이터)를 한 파티션에서 다른 파티션으로 전송하기 위해 링 버퍼를 사용한다. 본 발명의 다른 측면에서, 파티션 버스는 요청을 한 파티션에서 다른 파티션으로 전송하기 위해 링 버퍼를 사용하고, 데이터를 한 파티션에서 다른 파티션으로 전송하기 위해 전송 페이지를 사용한다. 본 발명의 또다른 측면에서, 파티션 버스는 파티션들 간에 요청을 전송하기 위해 링 버퍼를 사용하고 파티션들 간에 데이터를 전송하기 위해 주소 공간 조작을 사용한다.
본 발명의 부가의 측면에서, 파티션 버스는 한 파티션 내의 서비스에 대응하는 로컬 프록시 합성 장치가 다른 파티션 내에 존재할 수 있게 해준다. 파티션 버스는 또한 이들 합성 장치가 스토리지 콘트롤러 등의 실제 장치 또는 드래그-앤-드롭(drag-and-drop) 기능 등의 추상 서비스에 대응할 수 있게 해준다. 또다른 측면에서, 파티션 버스는 파티션들에 의해 그에게로 기록 및 그로부터 판독될 수 있는 링 버퍼를 이들 파티션에 매핑하는 것에 의해 컨텍스트 스위칭의 비용 없이 이들 파티션들 간에 데이터를 전송하는 메카니즘을 제공한다. 또다른 측면에서, 파티션 버스는 파티션 버스에 위치하는 서비스가 서비스의 유형 및 서비스의 인스턴스에 기초하여 전역적으로 고유한 식별자를 갖는 것인 버저닝(versioning) 메카니즘을 제공한다. 다른 측면에서, 파티션 버스는 한 파티션에서 다른 파티션으로 행해진 채널 제의를 조사하는 정책 결정 에이전트를 사용한다. 이 정책 에이전트는 제3의 파티션에 위치될 수 있다. 또다른 측면에서, 파티션 버스는 하드웨어 에뮬레이트된 장치 모듈 및 가상화 서비스 제공자의 동시 동작을 가능하게 해준다. 또다른 측면에서, 파티션 버스는 클라이언트 컴포넌트가 사용자 모드에 있는지 커널 모드에 있는지에 따라 3가지 컴포넌트의 조합으로 이루어져 있다. 이들 컴포넌트로는 링 버퍼 관리, 채널 관리 및 버스 드라이버가 있다.
본 발명의 다른 특징은 이하에 기술된다.
이상의 요약은 물론 본 발명의 이하의 상세한 설명은 첨부 도면을 참조하여 읽어가면 보다 잘 이해된다. 본 발명을 예시하기 위해, 본 발명의 여러가지 측면이 도시되어 있다. 그렇지만, 본 발명은 개시된 특정의 시스템 및 방법에 한정되지 않는다.
개요
파티션 버스의 여러 측면에 대해 기술한다. 먼저, 가상 머신 환경에서 오퍼레이팅 시스템을 갖는 파티션들에 대한 일반적인 설명과 함께 전형적인 컴퓨팅 환경이 제공된다. 이 설명 이후에, 파티션 버스의 파티션간 데이터 전송 및 장치 공유 기능에 대해 상세히 기술된다. 파티션 버스의 일반적인 설명이 제공된 이후에, 파티션 버스의, 합성 장치의 사용에 의한 서비스들의 장치 공유 능력에 대한 상세한 설명이 있게 되고, 이어서 파티션 버스의, 링 버퍼, 전송 페이지, 및 주소 공간 조작을 사용하는 정보 전달 능력에 대한 상세한 설명이 있게 된다. 게다가, 파티션 채널 제의를 조사하는 정책 에이전트의 사용과 같은 파티션 버스의 추가의 측면들이 고려된다.
전형적인 컴퓨팅 환경
도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적합한 컴퓨팅 장치에 대한 간략하고 일반적인 설명을 제공하기 위한 것이다. 예를 들어, 도 1에 예시한 클라이언트 및 서버 컴퓨터 또는 장치 중 임의의 것은 이 형태를 취할 수 있다. 그러나, 모든 종류의 핸드헬드, 휴대용 및 다른 컴퓨팅 장치 및 컴퓨팅 객체가 본 발명과 관련하여 사용하기 위해 생각될 수 있는 것들임을 잘 알 것이다. 즉, 컴퓨팅 환경에서 이들 중 어느 것으로부터도 데이터가 발생, 처리, 수신 및/또는 전송될 수 있다. 이하에서 범용 컴퓨터가 기술되고 있지만, 이것은 단지 예에 불과하며, 본 발명은 네트워크/버스 상호 운용성 및 상호작용을 갖는 씬 클라이언트(thin client)에서 구현될 수도 있다. 따라서, 본 발명은 아주 적은 또는 최소한의 클라이언트 리소스가 관여되고 있는 네트워크화되고 호스팅된 서비스들(networked hosted services)의 환경에서, 예를 들어 클라이언트 장치가 단지 가전 제품에 들어 있는 객체 등의 네트워크/버스로의 인터페이스로서 기능하는 네트워크화된 환경에서 구현될 수 있다. 본질적으로, 데이터가 어느 곳에라도 저장될 수 있는 것 또는 데이터가 어느 곳으로부터도 검색 또는 다른 컴퓨터로 전송될 수 있는 것이 본 발명의 객체 영속성 메소드(object persistence method)의 동작에 바람직한 또는 적합한 환경이다.
꼭 그렇게 할 필요는 없지만, 본 발명은 장치 또는 객체에 대한 서비스의 개발자가 사용하기 위해 오퍼레이팅 시스템을 통해 구현될 수 있고 및/또는 본 발명에 따라 동작하는 애플리케이션 또는 서버 소프트웨어 내에 포함될 수 있다. 소프트웨어는 클라이언트 워크스테이션, 서버 또는 기타 장치 등의 하나 이상의 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 및 기타 등등을 포함한다. 일반적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 바에 따라 결합 또는 분산될 수 있다. 게다가, 본 발명은 다른 컴퓨터 시스템 구성 및 프로토콜로 실시될 수 있다. 본 발명에서 사용하기에 적당할 수 있는 다른 공지된 컴퓨팅 시스템, 환경 및/또는 구성은 퍼스널 컴퓨터(PC), 자동 현금 입출금기(automated teller machine, ATM), 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능 가전 제품, 네트워크 PC, 가전 제품, 조명, 환경 제어 소자, 미니컴퓨터, 메인프레임 컴퓨터, 및 기타 등등을 포함하지만, 이에 한정되는 것은 아니다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 그러나, 상기로부터 명백한 바와 같이, 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러 한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 불휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성, 분리형 및 비분리형 매체를 둘다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하기 위해 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이 상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 불휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 불휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 불휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 불휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카 드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로 세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 그래픽 인터페이스(182)도 시스템 버스(121)에 접속될 수 있다. 하나 이상의 그래픽 처리 유닛(GUI, 184)은 그래픽 인터페이스(182)와 통신할 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 비디오 인터페이스(190)는 차례로 비디오 메모리(186)와 통신할 수 있다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크 버스를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
가상 머신
도 2는 컴퓨터 시스템에서 가상화된 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타낸 도면이다. 동 도면에서, 가상화 프로그램(210)은 물리적 하드웨어 아키텍처(212) 상에서 직접 또는 간접적으로 실행된다. 가상화 프로그램(210)은 (a) 호스트 오퍼레이팅 시스템과 나란히 실행되는 가상 머신 모니터 또는 (b) 하이퍼바이저 컴포넌트를 갖는 호스트 오퍼레이팅 시스템일 수 있으며, 여기서 하이퍼바이저 컴포넌트는 가상화를 수행한다. 가상화 프로그램(210)은 게스트 하드웨어 아키텍처(208)(이 컴포넌트가 파티션 또는 "가상 머신"이라는 사실을 나타내기 위해 점선으로 표시함), 즉 실제로는 존재하지 않지만 그 대신에 가상화 프로그램(210)에 의해 가상화되는 하드웨어를 가상화한다. 게스트 오퍼레이팅 시스템(206)은 게스트 하드웨어 아키텍처(208) 상에서 실행되고, 소프트웨어 애플리케이션(204)은 게스트 오퍼레이팅 시스템(206) 상에서 실행된다. 도 2의 가 상화된 오퍼레이팅 환경에서, 소프트웨어 애플리케이션(204)이 일반적으로 호스트 오퍼레이팅 시스템 및 하드웨어 아키텍처(212)와 호환되지 않는 오퍼레이팅 시스템 상에서 실행되도록 설계되어 있을지라도, 소프트웨어 애플리케이션(204)은 컴퓨터 시스템(202)에서 실행될 수 있다.
도 3a는 물리적 컴퓨터 하드웨어(302) 바로 위에서 실행되는 호스트 오퍼레이팅 시스템(호스트 OS) 소프트웨어 계층(304)을 포함하는 가상화된 컴퓨팅 시스템을 나타낸 것이며, 여기서 호스트 OS(304)는 오퍼레이팅 시스템(312) 및 오퍼레이팅 시스템(314)이 각각 사용하기 위한 파티션 A(308) 및 파티션 B(310)에 대한 인터페이스를 노출시킴으로써 물리적 컴퓨터 하드웨어(302)의 리소스에 대한 액세스를 제공한다. 이것은 호스트 OS(304) 위에서 실행되는 오퍼레이팅 시스템 계층들(312, 314)이 호스트 OS(304)를 알아채지 못하게 할 수 있다. 다시 말하면, 가상화를 수행하기 위해, 호스트 OS(304)는 본래의 가상화 기능을 갖는 특별히 설계된 오퍼레이팅 시스템일 수 있거나 또는 다른 대안으로서 호스트 OS(304)는 가상화를 수행하기 위한 내장된 하이퍼바이저 컴포넌트(도시 생략)를 갖는 표준 오퍼레이팅 시스템일 수 있다.
도 3a를 다시 참조하면, 호스트 OS(304) 상에는 2개의 파티션, 즉 예를 들어 가상화된 인텔 386 프로세서일 수 있는 파티션 A 및 예를 들어 모토롤라 680X0 계열의 프로세서 중 하나의 가상화된 버전일 수 있는 파티션 B가 있다. 각 파티션(308, 310) 내에는 각각 게스트 오퍼레이팅 시스템(게스트 OS) A(312) 및 게스트 OS B(314)가 있다. 게스트 OS A(312) 상부에는 2개의 애플리케이션, 즉 애플리케 이션 A1(316) 및 애플리케이션 A2(318)가 실행되고, 게스트 OS B(314) 상부에는 애플리케이션 B1(320)이 실행되고 있다.
도 3a를 참조하면, 파티션 A(308) 및 파티션 B(314)(점선으로 도시되어 있음)는 소프트웨어 구성으로서만 존재하는 가상화된 컴퓨터 하드웨어 표현이라는 것에 유의하는 것이 중요하다. 파티션 A(308) 및 파티션 B(310)를 각각 게스트 OS A(312) 및 게스트 OS B(314)에 제공할 뿐만 아니라 게스트 OS A(312) 및 게스트 OS B(314)가 실제의 물리적 컴퓨터 하드웨어(302)와 간접적으로 상호작용하기 위해 필요한 모든 소프트웨어 단계들을 수행하는 전문화된 가상화 소프트웨어(들)의 실행으로 인해 이들 파티션이 가능하게 된다.
도 3b는 가상화가 호스트 오퍼레이팅 시스템(304")과 나란히 실행되고 있는 가상 머신 모니터(VMM)(304')에 의해 수행되는 대안의 가상화된 컴퓨팅 시스템을 나타낸 것이다. 어떤 경우에, VMM(304')은 호스트 오퍼레이팅 시스템(304") 상부에서 실행되면서 호스트 오퍼레이팅 시스템(304")을 통해서만 컴퓨터 하드웨어(302)와 상호작용하는 애플리케이션일 수 있다. 다른 경우에, 도 3b에 도시한 바와 같이, VMM(304')은 그 대신에 어떤 레벨에서는 호스트 오퍼레이팅 시스템(304")을 통해 컴퓨터 하드웨어(302)와 간접적으로 상호작용하는 부분적으로 독립적인 소프트웨어 시스템을 포함할 수 있지만, 다른 레벨에서는 VMM(304')은 컴퓨터 하드웨어(302)와 직접 상호작용한다(호스트 오퍼레이팅 시스템이 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함). 게다가, 다른 경우에, VMM(304')은 모든 레벨에서 호스트 오퍼레이팅 시스템(304")을 이용하지 않고 컴퓨터 하드웨어(302)와 집적 상 호작용하는 (그러나, 컴퓨터 하드웨어(302)의 사용을 조정하고 충돌 등을 회피하기 위해서 호스트 오퍼레이팅 시스템(304")과 여전히 상호작용함) 완전히 독립적인 소프트웨어 시스템을 포함할 수 있다(호스트 오퍼레이팅 시스템이 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함).
상기 언급한 파티션을 구현하는 이들 변형들 모두는 단지 전형적인 구현에 불과하며, 본 명세서의 어느 것도 본 발명을 임의의 특정의 가상화 측면으로 한정하는 것으로 해석되어서는 안된다.
일반적인 파티션 버스: 장치 공유 및 데이터 전송
본 발명의 한 측면에서, 하드웨어 버스의 소프트웨어 모델이 생성된다. 이 "버스"는 "파티션 버스"이다. 파티션 버스는 파티션간 데이터 전송 메카니즘의 형식화를 가능하게 해준다. 또한, 파티션 버스를 사용함으로써, 장치 공유 및 OS간 통합을 가능하게 해주는 서비스를 구축하는 것이 훨씬 더 용이하게 된다.
파티션 버스는 다수의 파티션이 실행되고 있는 시스템에서 파티션들 간에 또는 파티션들 내에서 사용하기 위한 정보(요청 및/또는 데이터) 전송 메카니즘이다. 그렇지만, 이 파티션 버스가 가상 머신 환경에서 유일한 정보 전송 메카니즘이라는 것은 아니다. 따라서, 파티션 버스가 클라이언트 파티션/서비스 파티션 관계에서 클라이언트 파티션의 가능한 목적을 단 하나도 빠짐없이 만족시켜야 할 필요는 없다. 예를 들어, 파티션 버스는 NT 커널 모드 환경에서 하드웨어 추상화 계층(hardware abstraction layer, HAL)이 초기화를 위해 파티션 버스를 사용할 수 있을 정도로 충분히 일찍 로드될 필요가 없다.
한 측면에서, 파티션 버스는 그 자신을 셋업하기 위해, 파티션들 간의 통신 채널을 설정하기 위해, 또한 인터럽트를 파티션에 주입하기 위해 하이퍼바이저 프로세스간 통신(inter-process communication, IPC)에 의존한다.
도 4는 파티션들 간의 장치 공유 및 정보 전송을 가능하게 해주는 파티션 버스의 일반적인 개념을 나타낸 것이다. 3개의 파티션은 서비스 파티션(402)과 2개의 클라이언트 파티션, 즉 클라이언트 파티션 A(404) 및 클라이언트 파티션 B(406)으로 도시되어 있다. 이들 파티션은 하이퍼바이저(410)에 의해 유지된다. 이들 파티션 각각은 어떤 OS, 즉 나머지 파티션들과 동일한 OS 또는 다른 OS를 가질 수 있다. 따라서, 서비스 파티션(402)은 Windows XP를 실행할 수 있고, 클라이언트 파티션 A(404)는 Windows 2000을 실행할 수 있으며, 클라이언트 파티션 B(406)는 Windows 98을 실행할 수 있다.
게다가, 이들 파티션 각각은 몇몇 장치들을 포함한다. 구체적으로 말하면, 서비스 파티션(402)은 물리적 장치(424)에 대한 장치 드라이버(418)를 포함한다. 장치 드라이버(418)는 합성 장치가 물리적 장치(424)와 통신할 수 있게 해주는 가상화 서비스 제공자(vitualization service provider, VSP)(417)와 통신한다. 따라서, 클라이언트 파티션 A(404) 내의 합성 장치(420) 및 클라이언트 파티션 B(406) 내의 합성 장치(422)는 파티션 버스(408)를 통해 물리적 장치(424)의 서비스를 사용할 수 있다.
파티션 버스(408)는 클라이언트 파티션 A(404) 및 클라이언트 파티션 B(406)가 합성 장치(420, 422)에 의해 각각 사용되는 물리적 장치(424)에 액세스하는 수 단을 제공한다. 달리 말하면, 파티션 버스(408)는 물리적 장치(424) 등의 장치의 소유권을 Windows XP(412) 등의 단일의 OS에 할당하는 수단, 및 이어서 그 장치의 서비스를 Windows 2000(414) 및 Windows 98(416) 등의 다른 실행 중인 OS와 공유하는 수단을 제공한다.
게다가, 파티션 버스(408)는 또한 OS가 파티션들 간에 데이터를 이동시키는 것을 가능하게 해주며, 따라서 데이터는 데이터 이동 트랜잭션에 종래의 하이퍼바이저(410) 메카니즘을 관여시키는 높은 컴퓨팅 비용을 발생시키지 않고 예를 들어 서비스 파티션(402)에서 제2 클라이언트 파티션 B(406)로 용이하게 이동될 수 있다.
파티션 버스: 장치 공유
본 발명의 다른 측면에서, 도 5a는 파티션 내에 로컬 프록시 합성 장치로 대표되는 원격 서비스를 나타낸 것이다. 예를 들어 어떤 원격 오퍼레이팅 시스템(510)을 갖는 어떤 원격 파티션(508)에 저장되어 있는 원격 서비스(512)가 파티션 버스(514)를 통해 제공되면, 합성 장치(506)는 클라이언트 파티션의 오퍼레이팅 시스템(504)에 부가된다. 원격 서비스(512) 등의 서비스 인스턴스와 장치(506) 등의 합성 장치 간에는 일대일 대응이 있다. 각각의 합성 장치는 데이터를 전송 또는 수신하기 위해 사용될 수 있으며, 이는 일반적인 프로토콜 버스 상의 어떤 일반적인 장치라도 마찬가지이다.
도 5b는 파티션 버스 상에서 사용가능한 합성 장치에 대응할 수 있는 장치 및 서비스의 유형들을 나타낸 것이다. 도 5b를 참조하여 구체적으로 말하면, 합성 장치(516)가 제시되어 있다. 이 합성 장치(516)는 다양한 장치(518), 즉 스토리지, 네트워킹, 입력(키보드 및 마우스), 사운드, 비디오, 스마트카드, 기타 등등에 대응할 수 있다. 합성 장치(516)는 또한 다양한 서비스(518), 즉 시간 동기(time sync), 드래그/드롭, 폴더 공유, 잘라내기/붙여넣기, 원격 실행, 원격 애플리케이션 기동, 프로세스간 통신에도 대응할 수 있다. 실제로 합성 장치(516)에 의해 어떤 종류의 장치 및 서비스가 모델링될 수 있는지에 대한 아무런 제한도 없다.
파티션 버스: 데이터 전송
파티션 버스(602)는 한 파티션에서 다른 파티션으로 전송되어야 할 데이터량이 소량인지, 중간량인지 또는 대량인지에 따라서 적어도 3가지 개별적인 방식으로 요청(또는 명령) 및 데이터의 전송을 가능하게 해준다. 따라서, 도 6에, 데이터를 전송하기 위한 3가지 모델, 즉 링 버퍼 모델(604), 전송 페이지 모델(606) 및 주소 공간 조작 모델(608)이 예시되어 있다.
일반적으로, 링 버퍼 모델(604)은 한 파티션에서 다른 파티션으로 요청 및 데이터 둘다를 전송하기 위해 링 버퍼(610)를 사용한다. 링 버퍼는 단순히 고정 크기의 버퍼이며, 따라서 링 버퍼가 가득차면, 추가의 정보는 다시 버퍼의 처음 부분에 배치되어 "링" 내의 오래된 데이터를 덮어쓴다. 일반적인 가상화된 시스템에서, 링 버퍼는 2개 이상의 OS가 동시에 이용가능하도록 되어 있다.
전송 페이지 모델(606)은 요청을 전송하는 데는 링 버퍼(612)를 사용하고 데이터를 전송하는 데는 전송 페이지(614)를 사용한다(2개의 전송 페이지, 즉 페이지 A 및 페이지 B가 예시되어 있음). 전송 페이지는 한 파티션으로부터의 정보를 할 당된 페이지 내로 또 할당된 페이지로부터 다른 파티션으로 복사함으로써 정보를 전송하기 위한 메모리 내에 할당된 페이지이다. 전송 페이지 모델은 구조, 프로토콜 또는 연관된 순서화(ordering)를 갖지 않는다는 점에서 링 버퍼와 다르다. 따라서, 전송 페이지 모델은 DMA 동작의 대상으로서 또한 전송 페이지 내의 데이터를 처리하는 동안 홀딩 로크(holding lock)를 회피하는 데 보다 적절하다.
마지막으로, 주소 공간 조작 모델(608)이 예시되어 있다. 다른 2개의 모델과 마찬가지로, 링 버퍼(616)는 한 파티션에 의해 판독되어질 다른 파티션으로부터의 요청을 저장하기 위해 사용된다. 또한, 3개의 메모리 맵, 즉 서비스 파티션 메모리 맵(618), 클라이언트 파티션 메모리 맵(622), 및 비가상화된 시스템 메모리 맵(620)이 도시되어 있다. 클라이언트 파티션 및 서비스 파티션은 그의 메모리 매핑(618, 622) 중 어떤 것을 비가상화된 시스템 메모리 매핑(620)에 대응하도록 변경할 수 있으며, 따라서 (전송 페이지 모델 시나리오와는 달리) 데이터가 복사될 필요가 없고 그 대신에 양 파티션에 의해 액세스되고 판독될 수 있다. 이것은 클라이언트 파티션 및 서비스 파티션이 어떤 물리적 메모리 페이지를 공통으로 공유하도록 그들의 메모리 맵을 변경한다는 것을 의미한다. 트레이드-오프는 클라이언트 파티션의 메모리 맵(618) 및 서비스 파티션의 메모리 맵(622)이 각각 초기에 어떤 비가상화된 시스템 메모리 맵(620)에 대응하도록 변경되어야만 하고 이어서 임의의 주어진 트랜잭션이 완료되었을 때 그들의 원래의 매핑으로 다시 변경되어야만 한다는 것이다. 따라서, 파티션들 간에 데이터를 전송하기 위해 복사를 사용하는 전송 페이지 모델과는 달리, 공간 조작 모델은 주소 맵 변경을 사용한다.
주의해야 할 것은 소량, 중간량 또는 대량의 데이터의 개념이 상대적인 개념이고 어느 정도는 컴퓨터 시스템 리소스에 의해 정의된다는 것이다. 시스템 리소스의 이용가능성에 따라, 적절한 전송 모델이 이용될 수 있다. 따라서, 경험에 기초해 볼 때, 링 버퍼 모델은 소량의 데이터가 전송되어야 하는 경우에 가장 효과적이고, 전송 페이지 모델은 중간량의 데이터가 전송되어야 하는 경우에 가장 효과적이며, 주소 공간 조작 모델은 대량의 데이터가 전송되어야 하는 경우에 가장 효과적이다.
따라서, 본 발명의 한 측면에서, 링 버퍼 모델은 2개의 파티션 간에 요청 및 데이터 둘다(본 명세서에서는 조합하여 또는 단독으로 "정보"라고 함)를 전달하기 위해 예비해 둔 메모리 영역을 사용한다. 이 모델에서, 링 버퍼에 삽입되는 정보패킷들은 한 패킷이 다른 패킷 다음에 온다는 의미에서 순서화되어 있다. 또한, 링 버퍼로의 패킷의 삽입은 일반적으로 비교적 신속한 동작인데, 그 이유는 연속적인 패킷들이 이전의 패킷이 삽입될 때까지는 삽입될 수 없기 때문이다. 따라서, 링 버퍼는 빠르게 도착하는 데이터에 가장 적합하며, 따라서 삽입될 연속적인 패킷들을 위한 대기 시간이 그다지 없다.
도 7은 링 버퍼 모델을 나타낸 것이다. 하이퍼바이저(도시 생략)는 2개의 파티션, 즉 클라이언트 파티션(702) 및 서비스 파티션(708)을 유지한다. 서비스 파티션(708)은 데이터 형태의 정보를 클라이언트 파티션(702) 및 그의 OS(704)에 전송하는 몇몇 서비스 OS(710)를 실행하고 있을 수 있다. 데이터는 연속적으로 순서화되어 링 버퍼(706)에 배치된다. 이와 마찬가지로, 요청 형태의 정보도 몇몇 서비스의 수행을 요청하기 위해 클라이언트 파티션(702)으로부터 링 버퍼(706)를 거쳐 서비스 파티션(708)으로 전송될 수 있다. 비가상화된 시스템 메모리(705) 내의 링 버퍼(706)는 2개의 파티션(702, 708) 간의 요청 및 데이터의 이러한 스와핑을 가능하도록 해주기 위해 각각 양쪽 파티션(702, 708)으로 매핑된다(706A, 706B). 따라서, 도 7은 2개의 요청 패킷과 2개의 데이터 패킷이 링 버퍼(706)를 통해 서비스 파티션(702)과 클라이언트 파티션(708) 간에 전송되는 것을 도시하고 있다.
본 발명의 다른 측면에서는, 전송 페이지 모델이 이용된다. 이 모델에서, 페이지들의 풀(pool of pages)은 전송 라이브러리(transport library)에 의해 관리된다. 흥미롭게도, 서비스 파티션 또는 클라이언트 파티션은 언제라도 전송 페이지 세트를 할당하여 이를 이미 사용 중에 있는 기존의 세트에 부가할 수 있다. 전송 페이지 세트를 할당하는 파티션은 그 세트 내의 페이지의 할당(allocation) 및 할당 해제(deallocation)를 비롯한 그 세트의 관리를 맡는다.
전송 페이지와 연관된 유일한 비용은 전송 페이지가 할당되어 클라이언트 파티션 및 서비스 파티션 둘다에 매핑될 때 발생한다. 파티션의 물리적 주소 맵도 역시 변경되지만, 이것은 많은 전송들에 걸쳐 양도될 수 있는 1회성 동작(one-time operation)이다. 게다가, 전송 페이지가 영구적으로 양 파티션에 매핑되기 때문에, 비밀들이 전송 페이지에 저장될 수 없지만, 이것은 또한 전송 페이지가 결코 스크러빙(scrubbing)될 필요가 없음을 의미한다.
앞서 언급한 바와 같이, 도 8에 예시된 전송 페이지 모델은 전송 페이지가 구조, 프로토콜 또는 그와 연관된 순서화를 필요로 하지 않으며 따라서 전송 페이지를 DMA 동작의 대상으로서 사용하고 또 전송 페이지 내의 데이터를 처리하는 동안 홀딩 로크를 회피하기 위해 더 많은 자유를 클라이언트에 허용한다는 점에서 도 7에 예시된 링 버퍼 모델과 다르다.
도 8은 전송 페이지 모델의 예시적인 구현을 나타낸 것이다. 서비스 파티션(802) 및 클라이언트 파티션(804)이 도시되어 있으며, 이들 2개의 파티션은 하이퍼바이저(806)에 의해 유지된다. 도 8에서, 클라이언트 파티션(804)에서의 사용자-모드 프로세스는 서비스 파티션(802) 내의 가상 디스크 서비스(808)에 의해 처리되는 중인 파일로부터 데이터를 요청한다. 서비스 파티션(802)으로부터 데이터를 가져오라는 요청은 하드웨어 DMA(direct memory access, 직접 메모리 액세스) 트랜잭션으로 모델링된다.
예로서, 애플리케이션(812)은 먼저 전송 페이지(811)에서 흔히 이용가능한 것보다 더 많은 것인 7개의 데이터 페이지에 대한 요청을 생성한다. 따라서, 요청은 2개의 서브요청으로 구분되어야만 한다. 첫번째 요청은 아래의 가상 디스크 드라이버(814)로 전달된다. 어떤 경우에, 이것은 필터일 수 있으며, 다른 경우에 이는 충분히 계발된(fully enlightened) 디스크 드라이버(즉, 합성 장치와만 통신하고 그 안에 가상화 기능의 흔적이 전혀 남아 있지 않는 디스크 드라이버. 광의로는, 용어 "계발된"은 자신이 가상화된 환경에서 실행 중임을 알고 있는 OS 환경을 말한다)일 수 있다.
가상 디스크 드라이버(814)는 그의 물리적 장치 객체(physical device object, PDO)로부터 가져온 함수를 사용하여 표준 DMA 요청(818)을 생성한다. 이어서, 가상 디스크 드라이버 인터페이스 인스턴스(816)는 전송 페이지의 풀로부터 현재 이용가능한 페이지 모두를 할당한다. 이 예에서, 이것은 5개의 페이지(811A-811E)에 해당하며, 이는 수직선을 사용하여 전송 페이지(811) 내에 도시되어 있다.
그 다음에, 이들 페이지를 가상 디스크 서비스(808)로부터 가져오기 위해 서비스 파티션(802) 내의 서버로 요청이 전송된다. 서버가 요청된 페이지를 채웠을 때, 즉 요청된 데이터를 페이지(811A-811E)로 복사하였을 때, 서버는 클라이언트 파티션(804)으로 다시 메시지를 전송한다. 이어서, 데이터는 전송 페이지로부터 애플리케이션(812)에 의해 유지되는 버퍼로 복사된다. 복사 동작이 종료되었을 때, 전송 페이지(811A-811E)는 해방된다.
두번째 요청의 경우, 풀로부터 2개의 페이지(811I, 811J)가 더 할당된다[다른 도시된 페이지(811F-811H)는 도시되어 있지 않은 다른 요청들에 의해 예비된 페이지이다]. 따라서, 2개의 데이터 페이지에 대해 새로운 요청이 서비스 파티션(802)으로 전송된다. 이전과 마찬가지로, 서비스 파티션(802) 서버는 전송 페이지(811I-811J)로의 데이터를 채우고 그의 동작에 관한 메시지를 다시 클라이언트(804)로 전송한다. 이어서, 데이터는 애플리케이션(812) 버퍼로 다시 복사되고, 따라서 처음에 2 단계로 구분되었던 요청이 완료된다.
전송 페이지(811)는 데이터를 전송하기 위해 사용된다. 요청은 링 버퍼(810)를 사용하여 전송된다. 본 발명의 이 측면에서의 요청의 순차적 특성 및 패킷 특성은 요청 및 데이터가 링 버퍼만을 사용하여 전송되는 도 7에 설명한 것과 유사하다.
본 발명의 다른 측면들에서, 주소 공간 조작은 도 7 및 도 8에서 각각 전술한 링 버퍼 모델 및 전송 페이지 모델 둘다에서 수행되는 고비용의 메모리 복사를 회피하기 위해 사용된다. 어떤 트랜잭션은 클라이언트의 물리적 주소 공간에 임의적으로 배치된 버퍼를 수반하며 초대량의 데이터가 전송될 필요가 있다. 이 상황에서, 전송 페이지가 사용되지 않는 이유는 고정된 위치에 있는 전송 페이지로부터 임의적으로 배치되어 있는 버퍼로 데이터를 복사해야만 하기 때문이다. 데이터가 궁극적으로 있어야만 하는 메모리에 데이터를 직접 배치할 수 있도록 보장하기 위해, 서비스 파티션의 물리적 주소 맵이 변경되어야만 하며, 따라서 적어도 일시적으로 이 주소 맵이 클라이언트 파티션으로부터의 페이지를 포함하게 된다. 이어서, 데이터는 소프트웨어 또는 하드웨어 중 어느 하나에 의해 그 페이지들에 직접 기록 또는 그로부터 직접 판독될 수 있다. 트랜잭션이 완료된 후에, 주소 맵이 원상태로 변경되어 클라이언트의 페이지를 서버의 물리적 주소 맵으로부터 삭제한다. 이러한 일련의 동작은 비교적 고비용이기 때문에, 소량의 데이터를 전송하는 데는 사용되지 않는다 - 이 경우에는 전송 버퍼로/로부터 데이터를 복사하는 것이 주소 맵을 변경하는 것보다 효율적이다.
도 9에는, 클라이언트 파티션(902) 및 서비스 파티션(908)이 예시되어 있으며, 여기서 양 파티션은 하이퍼바이저(도시 생략)에 의해 유지된다. 각 파티션(902, 908)은 그 자신의 OS(904, 910)를 각각 갖는다. 이들 OS는 각각 가상 주소를 파티션 물리 주소로 매핑하는 메모리 주소 맵(914, 916)을 유지한다. 대량의 정보(주로 데이터)가 이들 파티션 간에 전송되어야 하는 경우, 가장 효율적인 메카니즘은 관련된 클라이언트 파티션 메모리 매핑(914)을 변경하는 것과 이들을 어떤 비가상화된 시스템 메모리 매핑(907)과 연관시키는 것을 필요로 한다. 예를 들어, 도 9에서, 클라이언트 파티션(902)에서의 "A" 매핑은 비가상화된 시스템 메모리(905)에서의 "3" 매핑과 연관된다. 이와 마찬가지로, 서비스 메모리 매핑(916)은 비가상화된 시스템 메모리 매핑(907)과 연관되며, 따라서 클라이언트 파티션(902) 및 서비스 파티션(908) 둘다는 메모리 내의 한 위치로부터 다른 위치로 데이터를 복사할 필요없이 비가상화된 시스템 메모리(905)에 액세스할 수 있다. 따라서, 서비스 파티션(908)에서의 "b" 매핑은 비가상화된 시스템 메모리(905)에서의 "3" 매핑과 연관된다. 복사하지 않는 것에 대한 트레이드-오프는 트랜잭션의 시작에서 메모리 매핑이 변경되고 트랜잭션이 완료되었을 때 또다시 변경되어야만 한다는 것이다. 이 트레이드-오프는 대용량 데이터가 전송되어야만 하는 경우에 제대로 효과가 있다.
본 발명의 다른 측면에 있어서, 도 10은 컨텍스트 스위치와 연관된 비용을 발생시키지 않고 파티션들 간에 정보를 전송하는 메카니즘을 나타낸 것이다. OS가 그 각자의 파티션에서 실행 중인 경우, CPU는 이들 파티션 간을 스위칭하여 그 각각에 타임-슬라이스를 제공한다. 이러한 시간 공유 시스템에서, 컨텍스트 스위치 시에, 한 작업(또는 파티션)에서 다른 작업(또는 파티션)으로의 스위칭과 연관된 비용이 있다.
게다가, 파티션들 간에 인터럽트를 전송하는 것도 역시 상당한 고비용의 컨 텍스트 스위칭을 필요로 한다. 예를 들어, 클라이언트 파티션이 서비스 파티션으로부터 서비스를 획득할 수 있도록 서비스 파티션을 "웨이크업"하고자 하는 경우 이러한 인터럽트가 전송되어야만 할지 모른다. 이와 마찬가지로, 서비스 파티션은 서비스 파티션이 클라이언트 파티션에 의해 지정된 작업을 완료했음을 클라이언트 파티션이 인터럽트를 통해 알게 하기를 원할 수 있다.
이러한 고비용의 컨텍스트 스위칭을 피하기 위해, 도 10에서 본 발명의 이 측면에서는, 링 버퍼가 한 파티션이 그의 명령을 다른 파티션의 링 버퍼에 배치하기 위한 명령 큐로서 사용되며, 따라서 속도 조건(rate condition)(이하에 기술됨) 하에 있는 경우를 제외하고는 인터럽트의 전송을 회피하게 된다.
따라서, 클라이언트 파티션(1002) 및 서비스 파티션(1010)이 예시되어 있다. 각각의 파티션은 Windows 98 이든 Windows XP 이든지간에 일부 오퍼레이팅 시스템을 실행하고 있으며, 이들 파티션은 일부 하이퍼바이저(1016)에 의해 유지된다. 클라이언트 파티션(1002)이 서비스 파티션(1010)으로부터의 서비스, 예를 들어 디스크 콘트롤러 서비스 - 이는 서비스 파티션(1010)에 의해 소유될 수 있고 또 서비스 파티션(1010) 상의 어떤 합성 장치에 대응할 수 있음 - 를 원하는 경우, 이 서비스를 획득하는 한가지 방법은 클라이언트 파티션(1002)이 링 버퍼(1006)에 정보(일반적으로 명령/요청)를 기록하는 것이다. 이어서, 서비스 파티션(1010)은 이들 명령을 판독하여 어떤 요청이라도 응할 수 있다. 링 버퍼(1006)가 양 파티션(1002, 1010)으로 매핑(1006A, 1006B)된다는 사실은 이들 파티션이 컨텍스트 스위칭 비용을 발생시키지 않고 통신할 수 있게 해준다.
서비스 파티션(1010)은 또한 클라이언트 파티션(1002)이 그의 요청이 완료되었음을 알게 되도록 링 버퍼(1006)에 정보(일반적으로 데이터 및/또는 요청에 대한 응답)를 기록할 수 있다. 이 시나리오에서, 링 버퍼(1006)는 파티션 버스(1008)를 나타내는 데 사용되지만, 상기한 다른 모델들이 적용될 수 있다.
이 링 버퍼 구현을 이용하는 파티션은 링 버퍼로부터 명령을 판독하기 위해 인터럽트를 가져올 필요가 없으며, 따라서 인터럽트를 전송하는 비용(및 모든 연관된 컨텍스트 스위칭)이 회피될 수 있다. 그렇지만, 예를 들어 서비스 파티션이 클라이언트 파티션으로부터 그에게로 전송된 명령을 실행하고 있지 않을 때, 인터럽트는 그 명령이 실행을 시작하도록 하기 위한 적절한 방법이다.
요약하면, 이 경우에 링 버퍼 모델은 컨텍스트 스위칭 비용을 회피하지만, 2가지 조건, 즉 (1) 송신측 링 버퍼가 비어있다가 나중에 비어있지 않은 상태가 되는 경우, 또는 (2) 수신측 링 버퍼가 채워져 있다가 나중에 채워져 있지 않은 경우하에서는 인터럽트를 사용할 수 있다, 즉 인터럽트가 한 파티션에서 다른 파티션으로 전송되어야만 할지 모른다[클라이언트 파티션(1002)의 관점에서 볼 때, 링 버퍼 [[1014]]++1006++는 송신측 링 버퍼이고, 링 버퍼(1006)는 수신측 링 버퍼이고, 서비스 파티션(1010)의 관점에서 볼 때는 이와 반대이다].
예를 들어, 첫번째 경우에, 링 버퍼(1014)가 비어있다가 나중에 비어있지 않은 경우에, 클라이언트 파티션(1002)은 서비스 파티션(1010)이 그의 링 버퍼(1014)가 정보(아마도 명령/요청)로 채워져 있음을 알게 해주어야만 할지 모른다. 두번째 경우에, 링 버퍼(1006)가 채워져 있다가 나중에 채워져 있지 않은 경우, 클라이 언트 파티션(1002)은 서비스 파티션(1010)이 인터럽트를 통해 그의 링 버퍼(1006)가 더 이상 채워져 있지 않음을 알게 해줘야 할지 모른다.
본 발명의 이러한 측면은 2개 이상의 프로세서를 갖는 머신에서 특히 효과가 있다. 클라이언트 파티션(1002) 및 서비스 파티션(1010) 둘다가 동시에 실행되어 각각이 컨텍스트 스위치 비용을 발생시키지 않고 상대방 파티션으로 정보를 전송하는 것이 가능하다.
본 발명의 이러한 측면에 대한 변형은 인터럽트를 수신한 파티션이 아주 짧은 시간 후에 다시 실행될 경우에 인터럽트를 전송하기 전에 지연을 도입하며, 따라서 인터럽트를 불필요하게 만든다. 이 지연은 물론 대기 시간을 증가시키지만, 대기 시간의 비용은 인터럽트의 비용보다 덜할 수 있다.
본 발명의 다른 측면에서, 파티션 버스는 서비스의 서로 다른 버전 및 인스턴스가 나란히 존재할 수 있게 해준다. 도 11에서, 서비스(1102)가 제공되어 있다. 각 서비스의 ID는 2개의 128비트 GUID(Globally Unique ID, 전역적으로 고유한 식별자)로 이루어져 있다. 이들 ID 중 첫번째 것은 서비스 인스턴스를 고유하게 식별해준다. 예를 들어, 서비스 인스턴스 A(1104)는 가상 디스크일 수 있으며, 이 때 이 가상 디스크는 그에 할당된 고유 ID(1108)(예를 들어, c80ccb8a...)를 얻으며, 가상 디스크의 임의의 다른 인스턴스(도시하지 않음)는 다른 고유의 ID를 수신하게 된다.
서비스 인스턴스 ID와 함께, 역시 GUID로 표현되는 서비스 버전 ID도 있다. 이러한 GUID는 서버에 의해 구현되는 프로토콜을 식별해준다. (프로토콜은 서버에 의해 관리되는 명령 및 동작 모두의 총합일 수 있다.) 따라서, 도 11에서, 서비스(1102)에 대한 서비스 버전 ID(1106)는 b73606dc...이다. 이들 2개의 GUID는 파티션 버스 상의 합성 장치의 버스 레벨 플러그-앤-플레이 ID를 생성하기 위해 사용된다. 클라이언트 파티션에서 실행 중인 OS의 인스턴스는 이들 플러그-앤-플레이 ID에 기초하여 어느 드라이버를 로드할지를 결정할 수 있으며, 그 OS가 서비스의 다수의 버전들에 대한 드라이버를, 심지어는 아마도 개별적인 드라이버 파일에 유지할 수 있게 해준다. 게다가, 서로 다른 장치 버전 - 서비스와 마찬가지임 - 이 장치 인스턴스 및 장치 버전을 확인하기 위해 GUID를 제공받을 수 있다.
게다가, 서버 파티션이 디스크 등의 단일 리소스에 대한 다수의 서비스 인스턴스 - 각각의 서비스는 서로 다른 프로토콜 버전을 구현함 - 를 동시에 생성하는 것이 전적으로 가능하다. 클라이언트 파티션은 동일한 가상 디스크의 인스턴스를 2개 제공받아 그 파티션이 지원하는 프로토콜 버전과 연관된 드라이버만을 로드하기로 선택할 수 있다.
본 발명의 어떤 측면에서, 파티션의 식별자 및 신뢰성에 기초하여 정책 결정을 행하는 능력이 제공된다. 파티션 버스 채널이 어떤 파티션에서는 환영받지 못할 수 있다. 구체적으로 말하면, 채널 제의가 특정의 보안 파티션에 도달할 수 있게 해주는 것이 적절하지 않을 수 있다. 이 정책에 대한 여러가지 이유로는, (1) 파티션이 보안 파티션에 대한 부트 디스크 서버로서 가장하도록 허용하는 것을 원치 않음, (2) 신뢰받지 못하는 I/O 경로를 허용하는 것을 원치않음, 또는 (3) 채널 제의가 있게 될 때 발생질 수 있는, 파티션이 다른 파티션 내의 어떤 리소스도 사 용하게 허용하는 것을 원치 않는다는 것이다.
이러한 정책 결정을 지원하기 위해, 본 발명의 이 측면은 파티션 버스 채널 정책 에이전트에 대해 개시한다. 채널 정책 에이전트는 채널 제의를 중재한다. 도 12는 Windows의 한 버전을 실행하고 있는 파티션의 인스턴스에 구현되어 있는 채널 정책 에이전트를 예시한 것이다. 아마도, 이러한 에이전트는 이 파티션에 대해 어떤 특정의 I/O 채널이 허용되고 다른 채널은 허용되지 않아야만 하는지를 규정하는 파티션 매니페스트(partition manifest)와 같은 것에 액세스해야만 한다.
본 발명의 이러한 측면의 상태도가 도 12에 예시되어 있다. 도 12에서, 하이퍼바이저(926)에 의해 유지되는 3개의 파티션, 즉 (1) 서비스 파티션(1202), (2) 보안 필터 파티션(1204), 및 (3) 보안 게스트 파티션(1206)이 예시되어 있다. 서비스 파티션(1202)에서, 첫째로, 채널 서버(1208)는 채널 관리 라이브러리(1210)로 채널 제의(channel offer)와 함께 요청을 전송한다. 둘째로, 그 제의는 제의 캐쉬(1212)에 저장된다. 제의 캐쉬(1212)는 차례로 그 제의를 보안 필터 파티션(1204)의 제의 캐쉬(1218)로 전달한다(또는 정책 에이전트가 보안 파티션에 대해 존재하는 곳은 어디나).
셋째, 보안 필터 파티션(1204) 내의 채널 관리 라이브러리(1216)는 조사될 채널 정책 에이전트(1214)에까지 그 제의를 전송한다. 넷째, 채널 정책 에이전트(1214)는 응답을 채널 관리 라이브러리(1216)로 전송하고 라이브러리(1216)에 대해 그 제의를 종료하거나 이를 전달하도록 지시한다. 다섯째, 제의가 전달되어야 하는 경우, 그 제의는 신뢰되는 게스트 파티션(1206) 내의 제의 캐쉬(1224)로 전송된 다.
여섯째, 제의가 제의 캐쉬(1224)에 도착할 때, 그 제의는 열거 채널(enumeration channel)을 트리거하고, 신뢰되는 게스트 파티션(1206) 내의 소프트웨어는 채널을 개방하기로 결정한다. 일곱째, 이어서 채널 클라이언트(1220)는 메시지를 직접 채널 서버(1208)로 다시 전송하고 채널을 개방한다. 따라서, 이와 같이 하여, 채널 제의는 보안 필터 파티션에 위치하는 정책 에이전트에 의해 중재될 수 있다.
파티션 버스: 부가의 측면
본 발명의 다른 측면에서, 에뮬레이트된 장치 모듈(emulated device module, EDM)들은 파티션 버스와 같은 계발된(가상 머신을 인식한) 데이터 전송 메카니즘과 협력하여 동시에 동작한다. EDM은 물리적 하드웨어 장치와 동일한 방식으로 I/O 요청에 응답하도록 작성되어 있다. 주어진 게스트 오퍼레이팅 시스템이 문제의 물리적 하드웨어 장치를 지원하도록 작성되었다면(즉, 대응하는 드라이버를 포함하면), 그 오퍼레이팅 시스템은 EDM이 제대로 작성된 것으로 가정하여 수정 없이 제대로 동작할 것이다. 따라서, EDM은 레거시 오퍼레이팅 시스템에 우수한 호환성을 제공하지만, 일반적으로 높은 가상화 오버헤드를 도입한다. 이와 반대로, 가상화 서비스 제공자(virtualization service provider, VSP)는 훨씬 더 나은 성능을 제공하지만, 클라이언트 OS에 대해 새로운 드라이버(및 잠재적으로 다른 수정)가 작성되어 있을 것을 요구한다.
가상 머신 시스템의 한 예에서, VSP 및 EDM 둘다가 동일한 서비스 파티션에 적어도 얼마간은 구현되며, 이 때 VSP는 파티션 버스 상부에 놓여 있는 서비스로서 클라이언트 파티션 내에서 이용가능한 에뮬레이트된 장치 또는 가상 장치와는 달리 클라이언트 파티션 내의 합성 장치들에 대한 백엔드 지원을 제공한다. VSP는 합성 장치와 통신하는 것이다.
구체적으로 말하면, 도 13은 파티션 내에서 실행되는 그 각자의 OS(1006, 1308)를 포함하는 클라이언트 파티션(1304) 및 서비스 파티션(1302)을 나타내고 있다. 파티션 버스(1312)는 2개의 파티션(1302, 1304) 간의 통신 수단을 제공한다. 또한, 이들 파티션(1302, 1304) 둘다는 하이퍼바이저(1320)에 의해 유지된다. EDM(1316)은 장치 에뮬레이션(1315)이 클라이언트 파티션(1302)에 실제 장치처럼 보이도록 하기 위해 하이퍼바이저(1320)와 통신한다. EDM(1316)은 또한 클라이언트 파티션(1302)과 공유되고 있는 실제 물리 장치(1322)와 [장치 드라이버(1318)를 통해] 통신하기 위해 VSP(1314)에 의존한다. VSP(1314)는 또한 합성 장치를 통해 이 장치(1322)를 클라이언트 파티션(1302)에 노출시킨다.
본 발명의 또다른 측면에서, 파티션 버스는 3개의 라이브러리, 보다 일반적으로는 3개의 컴포넌트로부터 구축되었다. 따라서, 도 14a 내지 도 14c에서, 파티션 버스의 컴포넌트는 이들이 서로 다른 모드에서 사용되는 것으로 예시되어 있다. 3개의 컴포넌트는,
● 링 버퍼 관리
● 채널 관리, 및
● 버스 드라이버
이다.
서로 다른 환경은 파티션 버스의 서로 다른 컴포넌트를 사용한다. 예를 들어, 도 14a에서, 사용자 모드 서비스(1431)는 링 버퍼 관리(1432) 컴포넌트만을 가져오는데, 그 이유는 이 서비스가 채널 관리를 행하기 위해 커널 모드 내의 코드에 의존하기 때문이다. 이것을 강조하기 위해 도 14a에서는, 링 버퍼 관리(1432) 컴포넌트가 실선 박스 내에 있고 나머지 2개의 컴포넌트, 즉 채널 관리(1434) 및 버스 드라이버(1436)가 점선 박스에 있으며 사용자 모드(1431)에서는 이들 컴포넌트가 없음을 나타내기 위해 회색 폰트로 되어 있다.
도 14b에서, 커널 모드(1433) 서비스는 3개의 컴포넌트 모두, 즉 링 버퍼 관리(1432), 채널 관리(1434) 및 버스 드라이버(1436)를 수신한다.
마지막으로, 도 14c에서, 로더(1435) 환경은 링 버퍼 관리(1432) 및 채널 관리(1434)를 수신하지만 버스 드라이버(1436)는 수신하지 않는다(점선 박스로 표시되어 있음). 요약하면, 파티션 버스는 이들 3개의 컴포넌트(및 여러가지 다른 하위 컴포넌트)로 구성되어 있으며, 이들 컴포넌트는 파티션 버스가 사용되는 환경에 따라 여러가지 조합으로 나타난다.
파티션 버스는 파티션들 간에 데이터를 전송하는 데 링 버퍼를 사용하기 위해 링 버퍼 관리(1432)를 사용한다. 채널 관리(1434)는 파티션들 간에 채널 통신을 설정하기 위해 사용된다. 마지막으로, 버스 드라이버(1436)는 통신의 채널이 설정되었을 때 파티션들 간의 입력 및 출력 동작을 제어한다. 따라서, 어떤 파티션 내의 합성 장치는 다른 파티션 내의 실제 장치를 소유할 수 있으며 - 하드웨어 레벨에서 -, 이러한 실제 장치는 다른 파티션 내의 다른 합성 장치에 의해 사용될 수 있는데, 그 이유는 입력 및 출력 동작이 버스 드라이버(1436)에 의해 관리되기 때문이다.
파티션 버스의 모든 용도가 물리적 장치와 직접 관련되어 있는 것이 아님을 앞서 살펴보았다. 따라서, 본 발명의 또다른 측면에서, 물리적 장치에 대응하지 않는 많은 용도가 편리하게도 커널 모드 드라이버 대신에 사용자 모드 컴포넌트(예를 들어, DLL)에 구현된다. 파티션 버스는 전적으로 사용자 모드에서 이들 컴포넌트를 생성하기에 충분한 기반구조를 제공하며 일반적으로 커널 모드로부터만 액세스가능한 주소 공간 관리, 인터럽트 전달 및 기타 서비스를 수행할 수 있게 해준다.
본 발명이 여러 도면에 예시되어 있는 바와 같이 바람직한 측면과 관련하여 기재되어 있지만, 다른 유사한 측면들이 사용될 수 있거나 본 발명으로부터 벗어나지 않고 본 발명의 동일한 기능을 수행하기 위해 기재된 측면들에 대한 수정 및 부가가 행해질 수 있음을 잘 알 것이다. 예를 들어, 본 발명의 어떤 측면들에서, 파티션 버스가 기술되어 있으며, 여기서 파티션 버스는 파티션들 간에 데이터를 전송하고 장치의 소유권을 선택된 파티션에 할당하면서 그 장치의 서비스를 다른 파티션들과 공유하기 위한 메카니즘을 제공한다. 그렇지만, 본 발명의 이 측면에 대한 다른 등가 장치도 역시 본 명세서의 개시 내용이 생각하고 있는 것이다. 따라서, 본 발명은 어떤 단일 측면에 의해서도 제한되지 않으며 첨부된 청구항들에 따라 폭 및 범위가 해석되어야 한다.
본 발명에 의하면, 가상 머신 환경에서 여러 파티션들 간의 장치 공유 및 데이터 전송을 가능하게 해주는 방법 및 시스템이 제공된다.

Claims (20)

  1. 가상 머신 환경에서 파티션들 간의 통합을 제공하는 방법으로서,
    제1 파티션 및 제2 파티션을 사용하는 단계, 및
    (a) 링 버퍼와 (b) 전송 페이지 및 주소 공간 조작 중 어느 하나 중 적어도 하나를 사용하여 상기 제1 파티션과 상기 제2 파티션 간에 정보의 전송을 가능하게 해주는 전송 메카니즘을 사용하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 링 버퍼는 상기 제1 파티션과 상기 제2 파티션 간에 정보를 전송하기 위해 사용되고,
    상기 정보는 요청들 및 데이터 중 적어도 하나를 포함하는 방법.
  3. 제1항에 있어서,
    상기 링 버퍼 및 상기 전송 페이지 둘다는 상기 제1 파티션과 상기 제2 파티션 간에 상기 정보를 전송하기 위해 사용되고,
    상기 링 버퍼는 상기 제1 파티션과 상기 제2 파티션 간에 요청들을 전송하기 위해 사용되며,
    상기 전송 페이지는 상기 제1 파티션과 상기 제2 파티션 간에 데이터를 전송하기 위해 사용되는 방법.
  4. 제1항에 있어서,
    상기 링 버퍼 및 상기 주소 공간 조작 둘다는 상기 제1 파티션과 상기 제2 파티션 간에 상기 정보를 전송하기 위해 사용되고,
    상기 링 버퍼는 상기 제1 파티션과 상기 제2 파티션 간에 요청들을 전송하기 위해 사용되며,
    상기 주소 공간 조작은 상기 제1 파티션과 상기 제2 파티션 간에 데이터를 전송하기 위해 사용되는 방법.
  5. 제1항에 있어서,
    실제 하드웨어 장치를 구동하기 위해 상기 제1 파티션에 포함된 장치 드라이버 및 상기 제2 파티션에 포함된 합성 장치(synthetic device)를 더 포함하고,
    상기 전송 메카니즘은 상기 실제 하드웨어 장치의 소유권을 상기 합성 장치에 할당하는 것을 가능하게 해주는 방법.
  6. 제5항에 있어서,
    상기 합성 장치는 추상 서비스에 더욱 대응할 수 있는 방법.
  7. 제1항에 있어서,
    상기 전송 메카니즘은 상기 제1 파티션 및 상기 제2 파티션이 컨텍스트 스위 치 비용을 발생시키지 않고 정보를 교환할 수 있게 해주고,
    상기 전송 메카니즘은 상기 제1 파티션 내에 매핑되고 상기 제2 파티션 내에 매핑되어 있는 링 버퍼를 사용하고,
    정보는 상기 제1 파티션에 의해 상기 링 버퍼로 기록되고 상기 제2 파티션에 의해 상기 링 버퍼로부터 판독될 수 있으며,
    정보는 상기 제2 파티션에 의해 상기 링 버퍼로 기록되고 상기 제1 파티션에 의해 상기 링 버퍼로부터 판독될 수 있는 방법.
  8. 제1항에 있어서,
    상기 제1 파티션에 포함된 서비스 및 장치 중 하나를 더 포함하며,
    상기 서비스 및 상기 장치 각각은, 각각 상기 서비스 버전 및 인스턴스와 상기 장치 버전 및 인스턴스를 지정하기 위한 전역적으로 고유한 식별자를 가지는 방법.
  9. 제1항에 있어서,
    정책 에이전트를 더 포함하며,
    상기 정책 에이전트는 상기 제1 파티션으로부터 상기 제2 파티션으로 행해진 적어도 하나의 채널 제의를 조사하고,
    상기 정책 에이전트는 제3 파티션 내에 존재할 수 있는 방법.
  10. 제1항에 있어서,
    상기 전송 메카니즘은 링 버퍼 관리, 채널 관리 및 버스 드라이버로 이루어진 파티션 버스이고,
    상기 파티션 버스는 사용자 모드에서 상기 링 버퍼 관리만을 이용하고,
    상기 파티션 버스는 커널 모드에서 상기 링 버퍼 관리, 상기 채널 관리 및 상기 버스 드라이버의 셋 모두를 이용하는 방법.
  11. 제1항에 있어서,
    에뮬레이트된 하드웨어 모듈 및 가상화 서비스 제공자는 상기 제1 파티션에서 동시에 동작하고,
    상기 가상화 서비스 제공자는 상기 제2 파티션 내의 합성 장치가 상기 제1 파티션에 열거될 수 있게 해주는 것인 방법.
  12. 가상 머신 환경에서 파티션들 간의 통합을 제공하는 시스템으로서,
    제1 파티션,
    제2 파티션, 및
    (a) 링 버퍼 및 (b) 전송 페이지 및 주소 공간 조작 중 어느 하나 중 적어도 하나를 사용하여 상기 제1 파티션과 상기 제2 파티션 간에 정보의 전송을 가능하게 해주는 전송 메카니즘을 포함하는 시스템.
  13. 제12항에 있어서,
    상기 링 버퍼 및 상기 전송 페이지 둘다는 상기 제1 파티션과 상기 제2 파티션 간에 상기 정보를 전송하기 위해 사용되고,
    상기 링 버퍼는 상기 제1 파티션과 상기 제2 파티션 간에 상기 요청들을 전송하기 위해 사용되며,
    상기 전송 페이지는 상기 제1 파티션과 상기 제2 파티션 간에 데이터를 전송기 위해 사용되는 시스템.
  14. 제12항에 있어서,
    상기 링 버퍼 및 상기 주소 공간 조작 둘다는 상기 제1 파티션과 상기 제2 파티션 간에 상기 정보를 전송하기 위해 사용되고,
    상기 링 버퍼는 상기 제1 파티션과 상기 제2 파티션 간에 요청들을 전송하기 위해 사용되며,
    상기 주소 공간 조작은 상기 제1 파티션과 상기 제2 파티션 간에 데이터를 전송하기 위해 사용되는 시스템.
  15. 제12항에 있어서,
    실제 하드웨어 장치를 구동하기 위해 상기 제1 파티션에 포함된 장치 드라이버 및 상기 제2 파티션에 포함된 합성 장치를 더 포함하고,
    상기 전송 메카니즘은 상기 실제 하드웨어 장치의 소유권을 상기 합성 장치 에 할당하는 것을 가능하게 해주며,
    상기 합성 장치는 또한 추상 서비스에 대응할 수 있는 시스템.
  16. 제12항에 있어서,
    상기 전송 메카니즘은 상기 제1 파티션 및 상기 제2 파티션이 컨텍스트 스위치 비용을 발생시키지 않고 정보를 교환할 수 있게 해주고,
    상기 전송 메카니즘은 상기 제1 파티션 내에 매핑되고 상기 제2 파티션 내에 매핑되어 있는 링 버퍼를 사용하고,
    정보는 상기 제1 파티션에 의해 상기 링 버퍼로 기록되고 상기 제2 파티션에 의해 상기 링 버퍼로부터 판독될 수 있으며,
    정보는 상기 제2 파티션에 의해 상기 링 버퍼로 기록되고 상기 제1 파티션에 의해 상기 링 버퍼로부터 판독될 수 있는 시스템.
  17. 제12항에 있어서,
    상기 제1 파티션에 포함된 서비스 및 장치 중 하나를 더 포함하며,
    상기 서비스 및 상기 장치 각각은, 각각 상기 서비스 버전 및 인스턴스와 상기 장치 버전 및 인스턴스를 지정하기 위한 전역적으로 고유한 식별자를 가지는 시스템.
  18. 제12항에 있어서,
    정책 에이전트를 더 포함하며,
    상기 정책 에이전트는 상기 제1 파티션으로부터 상기 제2 파티션으로 행해진 적어도 하나의 채널 제의를 조사하고,
    상기 정책 에이전트는 제3 파티션 내에 존재할 수 있는 시스템.
  19. 제12항에 있어서,
    에뮬레이트된 하드웨어 모듈 및 가상화 서비스 제공자는 상기 제1 파티션에서 동시에 동작하고,
    상기 가상화 서비스 제공자는 상기 제2 파티션 내의 합성 장치가 상기 제1 파티션에 열거될 수 있게 해주는 시스템.
  20. 가상 머신 환경에서 파티션들 간의 통합을 제공하기 위한 방법을 수행하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 매체로서,
    상기 방법은,
    제1 파티션 및 제2 파티션을 사용하는 단계, 및
    (a) 링 버퍼 및 (b) 전송 페이지 및 주소 공간 조작 중 어느 하나 중 적어도 하나를 사용하여 상기 제1 파티션과 상기 제2 파티션 간에 정보의 전송을 가능하게 해주는 전송 메카니즘을 제공하는 단계를 포함하는 컴퓨터 판독가능 매체.
KR1020050080757A 2005-05-12 2005-08-31 파티션 버스 KR20060117869A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/128,647 2005-05-12
US11/128,647 US7689800B2 (en) 2005-05-12 2005-05-12 Partition bus

Publications (1)

Publication Number Publication Date
KR20060117869A true KR20060117869A (ko) 2006-11-17

Family

ID=35295557

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050080757A KR20060117869A (ko) 2005-05-12 2005-08-31 파티션 버스

Country Status (15)

Country Link
US (2) US7689800B2 (ko)
EP (1) EP1722301B1 (ko)
JP (1) JP4942966B2 (ko)
KR (1) KR20060117869A (ko)
CN (1) CN1862494A (ko)
AU (1) AU2005203519A1 (ko)
BR (1) BRPI0503636A (ko)
CA (1) CA2518014A1 (ko)
CO (1) CO5730016A1 (ko)
NO (1) NO20054000L (ko)
NZ (1) NZ541625A (ko)
RU (1) RU2390827C2 (ko)
SG (1) SG127782A1 (ko)
TW (1) TW200639642A (ko)
ZA (1) ZA200506982B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110050230A (ko) * 2009-11-06 2011-05-13 삼성전자주식회사 가상화 시스템 및 그것의 명령어 실행 방법
US8464253B2 (en) 2008-12-03 2013-06-11 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
KR101451781B1 (ko) * 2013-04-05 2014-10-16 국방과학연구소 가상머신 환경에서 가상화 시스템의 장치 복제 시스템 및 그 방법

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050767A1 (en) * 2005-08-31 2007-03-01 Grobman Steven L Method, apparatus and system for a virtual diskless client architecture
US7389398B2 (en) * 2005-12-14 2008-06-17 Intel Corporation Methods and apparatus for data transfer between partitions in a computer system
US8868628B2 (en) * 2005-12-19 2014-10-21 International Business Machines Corporation Sharing computer data among computers
US8572159B2 (en) * 2005-12-23 2013-10-29 Intel Corporation Managing device models in a virtual machine cluster environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US7987469B2 (en) 2006-12-14 2011-07-26 Intel Corporation RDMA (remote direct memory access) data transfer in a virtual environment
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
JP4907371B2 (ja) * 2007-02-01 2012-03-28 株式会社日立ソリューションズ ウィルス感染及び機密情報漏洩防止対策システム
US8479208B2 (en) * 2007-03-30 2013-07-02 Intel Corporation System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode
US8316377B2 (en) * 2007-09-06 2012-11-20 Hewlett-Packard Development Company, L.P. Sharing legacy devices in a multi-host environment
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
US7802062B2 (en) * 2007-09-28 2010-09-21 Microsoft Corporation Non-blocking variable size recyclable buffer management
JP4618455B2 (ja) * 2008-04-09 2011-01-26 日本電気株式会社 端末装置、ネットワーク接続方法及びプログラム
JP2010004979A (ja) * 2008-06-25 2010-01-14 Fujifilm Corp 画像処理装置、および内視鏡用プロセッサ装置
US8117346B2 (en) * 2008-10-03 2012-02-14 Microsoft Corporation Configuration space virtualization
US20100313249A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100311393A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100310193A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for selecting and/or displaying images of perspective views of an object at a communication device
WO2010144430A1 (en) * 2009-06-08 2010-12-16 Swakker Llc Methods and apparatus for remote interaction using a partitioned display
US20100313244A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US8286084B2 (en) * 2009-06-08 2012-10-09 Swakker Llc Methods and apparatus for remote interaction using a partitioned display
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
JP5567414B2 (ja) * 2010-06-30 2014-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報漏洩のリスクを極小化しながらデータを外部で保管できるようにデータを処理する方法
US8463980B2 (en) * 2010-09-30 2013-06-11 Microsoft Corporation Shared memory between child and parent partitions
US8849941B2 (en) * 2010-09-30 2014-09-30 Microsoft Corporation Virtual desktop configuration and operation techniques
US8832686B2 (en) 2010-10-29 2014-09-09 Microsoft Corporation Inherited product activation for virtual machines
US8924964B2 (en) 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US9836478B2 (en) * 2011-04-11 2017-12-05 Ineda Systems Inc. File system sharing
US20130117744A1 (en) * 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9176678B2 (en) 2012-11-30 2015-11-03 International Business Machines Corporation Common contiguous memory region optimized virtual machine migration within a workgroup
US20140310287A1 (en) * 2012-12-17 2014-10-16 Unisys Corporation Method and system for storing data in commodity computing
GB2519578B (en) * 2013-10-25 2016-02-17 Samsung Electronics Co Ltd Managing data transfer
US20150121376A1 (en) * 2013-10-25 2015-04-30 Samsung Electronics Co., Ltd. Managing data transfer
RU2569873C1 (ru) * 2014-08-05 2015-11-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Тольяттинский государственный университет" Способ формирования жаростойких покрытий
RU2598323C1 (ru) * 2015-03-26 2016-09-20 Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" Способ адресации кольцевого буфера в памяти микропроцессора
EP3206124B1 (en) * 2015-10-21 2020-01-08 Huawei Technologies Co., Ltd. Method, apparatus and system for accessing storage device
US10298447B2 (en) * 2016-08-08 2019-05-21 American Megatrends, Inc. System and method for accessing real sensors for virtual service processor stack
WO2019026136A1 (ja) 2017-07-31 2019-02-07 三菱電機株式会社 情報処理装置および情報処理方法
CN110998529B (zh) 2017-07-31 2021-08-20 三菱电机株式会社 信息处理装置以及信息处理方法
US11099911B1 (en) 2019-07-01 2021-08-24 Northrop Grumman Systems Corporation Systems and methods for inter-partition communication
CN110868365B (zh) * 2019-11-20 2023-04-07 中国航空工业集团公司西安航空计算技术研究所 通信方法和通信系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US83481A (en) * 1868-10-27 Improvement in shovel-plows
JPH01191234A (ja) * 1988-01-26 1989-08-01 Fujitsu Ltd 仮想計算機間通信方式
JP2945498B2 (ja) * 1991-04-12 1999-09-06 富士通株式会社 システム間通信方式
US5548728A (en) * 1994-11-04 1996-08-20 Canon Information Systems, Inc. System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory
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
EP0991081B1 (en) * 1998-09-30 2005-11-30 STMicroelectronics S.r.l. Emulated EEPROM memory device and corresponding method
JP2001290665A (ja) * 2000-04-11 2001-10-19 Nec Software Hokuriku Ltd プロセッサシステム
US20020129274A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a security server in a partitioned processing environment
US20030093258A1 (en) * 2001-11-14 2003-05-15 Roman Fishstein Method and apparatus for efficient simulation of memory mapped device access
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
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
US7376949B2 (en) * 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7318140B2 (en) * 2004-06-10 2008-01-08 International Business Machines Corporation Method and apparatus for dynamic hosting partition page assignment

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8464253B2 (en) 2008-12-03 2013-06-11 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
US9459899B2 (en) 2008-12-03 2016-10-04 Samsung Electronics Co., Ltd. Apparatus and method for providing services using a virtual operating system
KR20110050230A (ko) * 2009-11-06 2011-05-13 삼성전자주식회사 가상화 시스템 및 그것의 명령어 실행 방법
KR101451781B1 (ko) * 2013-04-05 2014-10-16 국방과학연구소 가상머신 환경에서 가상화 시스템의 장치 복제 시스템 및 그 방법

Also Published As

Publication number Publication date
SG127782A1 (en) 2006-12-29
NO20054000L (no) 2006-11-13
NO20054000D0 (no) 2005-08-29
CA2518014A1 (en) 2006-11-12
JP4942966B2 (ja) 2012-05-30
JP2006318441A (ja) 2006-11-24
NZ541625A (en) 2006-09-29
US20110066782A1 (en) 2011-03-17
AU2005203519A1 (en) 2006-11-30
EP1722301A3 (en) 2006-12-06
RU2005127422A (ru) 2007-03-10
BRPI0503636A (pt) 2007-01-09
US8112610B2 (en) 2012-02-07
US20060259731A1 (en) 2006-11-16
EP1722301A2 (en) 2006-11-15
RU2390827C2 (ru) 2010-05-27
CO5730016A1 (es) 2007-02-28
US7689800B2 (en) 2010-03-30
CN1862494A (zh) 2006-11-15
EP1722301B1 (en) 2013-05-29
TW200639642A (en) 2006-11-16
ZA200506982B (en) 2007-04-25

Similar Documents

Publication Publication Date Title
KR20060117869A (ko) 파티션 버스
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
KR102047558B1 (ko) 가상 디스크 저장 기술
RU2436149C2 (ru) Мигрирование виртуальной машины, которая владеет ресурсом, таким, как аппаратное устройство
US7581229B2 (en) Systems and methods for supporting device access from multiple operating systems
JP5450620B2 (ja) コンピュータシステム、処理方法及びコンピュータプログラム
US7496495B2 (en) Virtual operating system device communication relying on memory access violations
RU2406128C2 (ru) Система и способ для виртуализации графических подсистем
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
US8196154B2 (en) Copying workload files to a virtual disk
US7761578B2 (en) Communicating in a virtual environment
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US20060248528A1 (en) Systems and methods for hypervisor discovery and utilization
US20120084775A1 (en) Techniques for Streaming Virtual Machines from a Server to a Host
WO2006035730A1 (ja) 情報処理装置、通信処理方法、並びにコンピュータ・プログラム
US11989419B2 (en) Storage device write performance in remote computing environments
JP2022523424A (ja) 構成要求に応じて回路を処理するための仲介要求を転送するための装置
MXPA05009210A (es) Bus de division
Sankh et al. Survey of Approaches to Improve Inter Virtual Machine Communication Efficiency on Xen Platform

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid