KR20120098838A - 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치 - Google Patents

가상화 환경에서 i/o 동작을 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20120098838A
KR20120098838A KR1020127016854A KR20127016854A KR20120098838A KR 20120098838 A KR20120098838 A KR 20120098838A KR 1020127016854 A KR1020127016854 A KR 1020127016854A KR 20127016854 A KR20127016854 A KR 20127016854A KR 20120098838 A KR20120098838 A KR 20120098838A
Authority
KR
South Korea
Prior art keywords
virtual machine
guest virtual
guest
architecture
updated
Prior art date
Application number
KR1020127016854A
Other languages
English (en)
Other versions
KR101521778B1 (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 KR20120098838A publication Critical patent/KR20120098838A/ko
Application granted granted Critical
Publication of KR101521778B1 publication Critical patent/KR101521778B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • 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/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

머신 판독 가능한 매체, 방법, 장치 및 시스템. 가상화 환경에서 I/O 동작을 처리하는 방법 및 장치. 일부 실시예에서, 시스템은 입력/출력(I/O) 디바이스를 포함하는 하드웨어 머신; 및 하드웨어 머신 및 복수의 가상 머신을 인터페이스하는 가상 머신 모니터를 포함한다. 일부 실시예에서, 가상 머신은 I/O 동작에 관련된 입력/출력(I/O) 정보를 기록하는 게스트 가상 머신, 및 디바이스 모델 및 디바이스 드라이버를 포함하는 서비스 가상 머신을 포함하며, 디바이스 모델은 I/O 정보를 이용하여 I/O 동작을 구현하도록 I/O 디바이스의 일부을 제어하기 위해 디바이스 드라이버를 호출하며, 디바이스 모델, 디바이스 드라이버 및 I/O 디바이스의 일부는 게스트 가상 머신에 할당된다.

Description

가상화 환경에서 I/O 동작을 처리하는 방법 및 장치{METHOD AND APPARATUS FOR HANDLING AN I/O OPERATION IN A VIRTUALIZATION ENVIRONMENT}
가상 머신 아키텍처는 물리적 머신을 논리적으로 분할하여, 그 결과 머신의 기반 하드웨어가 공유되며 하나 이상의 독립적으로 동작하는 가상 머신으로 보인다. 입력/출력(I/O(input/output)) 가상화(IOV)는 복수의 가상 머신에 의해 이용되는 I/O 디바이스의 능력을 실현할 수 있다.
소프트웨어 풀 디바이스 에뮬레이션(software full device emulation)은 I/O 가상화의 일례일 수 있다. I/O 디바이스의 풀 에뮬레이션은 가상 머신이 기존의 디바이스 드라이버를 재사용할 수 있게 할 수 있다. 단일 루트 I/O 가상화(SR-IOV) 또는 어떤 다른 자원 분할 솔루션은 I/O 가상화의 다른 예일 수 있다. 복수의 가상 인터페이스(VI)가 각각 하나의 가상 머신에 할당되는 상태에서 I/O 디바이스 기능(예컨대 데이터 이동에 관련된 I/O 디바이스 기능)을 복수의 가상 인터페이스(VI)로 분할하는 것은 소프트웨어 에뮬레이션 계층(layer)에서 I/O 오버헤드를 감소시킬 수 있다.
여기에 설명되는 본 발명은 첨부 도면에서 예지만 제한은 아닌 것으로서 예시된다. 예시의 단순성 및 명료성을 위해, 도면에 예시된 구성요소는 반드시 일정한 축척에 따라 도시되지 않는다. 예컨대, 일부 구성요소의 치수는 명료성을 위해 다른 구성요소에 비해 과장될 수 있다. 더욱이, 적절한 것으로 간주되는 경우, 참조 부호는 상응하거나 유사한 구성요소를 표시하도록 도면 중에서 반복되었다.
도 1은 게스트 가상 머신에서 시작되는 I/O 동작을 제어하는 서비스 가상 머신을 포함하는 컴퓨팅 플랫폼의 실시예를 예시한다.
도 2a는 I/O 동작을 위해 I/O 기술자(descriptor)를 저장한 기술자 링 구조의 실시예를 예시한다.
도 2b는 I/O 동작을 위해 I/O 기술자를 저장한 새도우(shadow) 기술자 링 구조 및 기술자 링 구조의 실시예를 예시한다.
도 3은 I/O 디바이스에 의한 직접 메모리 액세스(DMA)에 대한 입력/출력 메모리 관리 유닛(IOMMU) 테이블의 실시예를 예시한다.
도 4는 게스트 가상 머신에 의해 I/O 동작에 관련된 I/O 정보를 기록하는 방법의 실시예를 예시한다.
도 5는 서비스 가상 머신에 의해 I/O 정보에 기초하여 I/O 동작을 처리하는 방법의 실시예를 예시한다.
도 6a-6b는 서비스 가상 머신에 의해 I/O 정보에 기초하여 I/O 동작을 처리하는 방법의 다른 실시예를 예시한다.
다음의 설명은 가상화 환경에서 I/O 동작을 처리하는 기술을 설명한다. 다음의 설명에서, 논리 구현, 의사 코드, 피연산자를 특정하는 수단, 자원 분할/공유/중복 구현, 시스템 구성 요소의 타입 및 상호 관계, 및 논리 분할/통합 선택과 같은 많은 특정한 상세 사항은 본 발명의 더욱 철저한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이와 같은 특정한 상세 사항 없이 실시될 수 있다. 다른 경우에, 제어 구조, 게이트 레벨 회로 및 전체 소프트웨어 명령어 시퀀스는 본 발명을 불명료하게 하지 않도록 상세히 나타내지 않았다. 당업자는 과도한 실험 없이 포함된 설명을 이용해서 적절한 기능을 구현할 수 있다.
명세서에서 "일 실시예(one embodiment)", "실시예(an embodiment)", "예시적 실시예(example embodiment)" 등에 대한 언급은 설명된 실시예들이 특정한 특징, 구조, 또는 특성을 포함할 수 있지만 모든 실시예가 반드시 특정한 특징, 구조, 또는 특성을 포함하지 않을 수 있다는 것을 나타낸다. 더욱이, 이와 같은 구(phrase)들은 반드시 동일한 실시예를 나타내지 않는다. 더욱이, 특정한 특징, 구조 또는 특성이 실시예와 관련하여 설명될 때, 명시적으로 설명되었는지를 불문하고 다른 실시예들과 관련하여 그러한 특정한 특징, 구조 또는 특성을 달성하는 것은 당업자의 지식 범위 내에 있다는 점이 언급된다.
본 발명의 실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 이의 어떤 조합으로 구현될 수 있다. 본 발명의 실시예들은 또한 하나 이상의 프로세서에 의해 판독되어 실행될 수 있는 머신 판독 가능 매체에 저장된 명령어로서 구현될 수 있다. 머신 판독 가능 매체는 머신(예컨대, 컴퓨팅 디바이스)에 의해 판독 가능한 형식으로 정보를 저장하거나 전송하는 어떤 메커니즘을 포함할 수 있다. 예컨대, 머신 판독 가능 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체, 광학 저장 매체; 플래시 메모리 디바이스; 전기, 광학, 음향 또는 다른 형식의 전파 신호(예컨대, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수 있다.
가상화 환경에서 I/O 동작을 처리하는 컴퓨팅 플랫폼(100)의 실시예는 도 1에 도시된다. 컴퓨팅 시스템(100)에 대한 예들의 총망라하지 않은 리스트(non-exhaustive list)는 분산 컴퓨팅 시스템, 슈퍼컴퓨터, 컴퓨팅 클러스터, 메인프레임 컴퓨터, 미니 컴퓨터, 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 랩탑 컴퓨터 및 데이터를 송수신하여 처리하는 다른 디바이스를 포함할 수 있다.
실시예에서, 컴퓨팅 플랫폼(100)은 하나 이상의 프로세서(111), 메모리 시스템(121), 칩셋(131), I/O 디바이스(141), 및 다른 구성 요소를 가진 기본 하드웨어 시스템(101)을 포함할 수 있다. 하나 이상의 프로세서(111)는 (도 1에 도시되지 않은) 프로세서 버스와 같은 하나 이상의 버스를 통해 여러 구성 요소(예컨대, 칩셋(131))에 통신 가능하게 결합될 수 있다. 프로세서(111)는 적절한 아키텍쳐 하에 코드를 실행할 수 있는 하나 이상의 처리 코어를 가진 집적 회로(IC)로서 구현될 수 있다.
메모리 시스템(121)은 프로세서(111)에 의해 실행되는 명령어 및 데이터를 저장할 수 있다. 메모리(121)에 대한 예들은 동기식 동적 랜덤 액세스 메모리(SDRAM) 디바이스, 램버스(RAMBUS) 동적 랜덤 액세스 메모리(RDRAM) 디바이스, 더블 데이터 레이트(DDR) 메모리 디바이스, 정적 랜덤 액세스 메모리(SRAM), 및 플래시 메모리 디바이스와 같은 반도체 디바이스의 하나 이상의 조합을 포함할 수 있다.
칩셋(131)은 하나 이상의 프로세서(111), 메모리(121) 및 I/O 디바이스(141)와 같은 다른 구성 요소 중 하나 이상의 통신 경로를 제공할 수 있다. I/O 디바이스(141)는 주변 구성 요소 상호 접속(PCI) 및/또는 PCI 익스프레스(PCIe) 디바이스를 포함할 수 있지만, 이에 제한되지 않으며, 이러한 디바이스는 PCI 또는 PCIe 버스를 통해 호스트 마더보드(host motherboard)와 접속한다. I/O 디바이스(141)의 예들은 범용 직렬 버스(USB) 제어기, 그래픽 어댑터, 오디오 제어기, 네트워크 인터페이스 제어기(NIC), 저장 디바이스 등을 포함할 수 있다.
컴퓨팅 플랫폼(100)은 기본 하드웨어 및 그 위에 놓인(overlying) 가상 머신(예컨대, 서비스 가상 머신(103), 게스트 가상 머신(1031-103n))을 인터페이싱하여, 기본 물리적 자원을 공유하기 위해 가상 머신의 다중 운영 체제(OSes)(예컨대, 서비스 가상 머신(103)의 호스트 운영 체제(113), 게스트 가상 머신(1031-103n)의 게스트 운영 체제(1131-113n))를 용이하게 관리할 책임이 있는 가상 머신 모니터(VMM)(102)를 더 포함할 수 있다. 가상 머신 모니터의 예들은 Xen, ESX 서버, 가상 PC, 가상 서버, Hyper-V, Parallel, Open VZ, Qemu 등을 포함할 수 있다.
실시예에서, I/O 디바이스(141)(예컨대, 네트워크 카드)는 입력/출력 가상화(IOV) 아키텍처(예컨대, 단일 루트(single-root) IOV)를 지원하는 제어 엔티티(CE)(1410), 및 전용 액세스를 위한 런타임(runtime) 자원(예컨대, 네트워크 디바이스에서의 대기열(queue) 쌍)을 가진 다중 가상 함수 인터페이스(VI)(1411-141n)를 포함하는 여러 함수 부분으로 분할될 수 있다. CE 및 VI의 예들은 단일 루트 I/O 가상화 아키텍처 또는 다중 루트 I/O 가상화 아키텍처 하에 물리적 함수 및 가상 함수를 포함할 수 있다. CE는 VI 기능을 추가로 구성하여 관리할 수 있다. 실시예에서, 게스트 가상 머신(1031-103n)의 각각에 VIs(1411-141n) 중 하나 이상이 지정될 수 있을 동안에 다중 게스트 가상 머신(1031-103n)은 CE(1410)에 의해 제어되는 물리적 자원을 공유할 수 있다. 예컨대, 게스트 가상 머신(1031)에는 VI(1411)가 지정될 수 있다.
다른 실시예들은 I/O 디바이스(141)의 구조에 대한 다른 기술을 구현할 수 있는 것으로 평가될 것이다. 실시예에서, I/O 디바이스(141)는 CE 없이 하나 이상의 VIs를 포함할 수 있다. 예컨대, 분할 능력이 없는 레거시(legacy) NIC는 NULL CE 조건 하에 단일 VI 작업을 포함할 수 있다.
서비스 가상 머신(103)은 디바이스 모델(114), CE 드라이버(115) 및 VI 드라이버(116)의 코드로 적재될 수 있다. 디바이스 모델(114)은 실제 I/O 디바이스(141)의 소프트웨어 에뮬레이션일 수 있거나 아닐 수 있다. CE 드라이버(115)는 컴퓨팅 플랫폼(100)의 초기화 및 런타임 동안에 I/O 디바이스 초기화 및 구성에 관계되는 CE(1410)를 관리할 수 있다. VI 드라이버(116)는 관리 정책에 따라 VI 1411-VI 141n 중 하나 이상을 관리하는 디바이스 드라이버일 수 있다. 실시예에서, 관리 정책에 기초하여, VI 드라이버는 VI 드라이버가 지원할 수 있는 게스트 VM에 할당된 자원을 관리할 수 있는 반면에, CE 드라이버는 전역적 활동을 관리할 수 있다.
게스트 가상 머신(1031-103n) 각각은 VMM(102)에 의해 제시되는 가상 디바이스를 관리하는 게스트 디바이스 드라이버, 예컨대, 게스트 가상 머신(1031)의 게스트 디바이스 드라이버(1161) 또는 게스트 가상 머신(103n)의 게스트 디바이스 드라이버(116n)의 코드를 적재할 수 있다. 게스트 디바이스 드라이버는 VIs(141) 및 이들의 드라이버(116)와 호환 가능한 모드에서 작업할 수 있거나 작업할 수 없을 수 있다. 실시예에서, 게스트 디바이스 드라이버는 레거시 드라이버일 수 있다.
실시예에서, 게스트 가상 머신의 게스트 운영 체제(예컨대, 게스트 VM(1031)의 게스트 OS(1131))가 게스트 디바이스 드라이버(예컨대, 게스트 디바이스 드라이버(1161))를 적재하는 것에 응답하여, 서비스 VM(103)은 디바이스 모델(114) 및 VI 드라이버(116)의 인스턴스(instance)를 실행할 수 있다. 예컨대, 디바이스 모델(114)의 인스턴스는 게스트 디바이스 드라이버(1161)를 서비스할 수 있는 반면에, VI 드라이버(116)의 인스턴스는 게스트 VM(1031)에 지정된 VI(1411)를 제어할 수 있다. 예컨대, 게스트 디바이스 드라이버(1161)가 82571EB 기반 NIC(캘리포니아의 산타 클라라, 인텔사에 의해 제조되는 네트워크 제어기)의 레거시 드라이버이고, 게스트 VM(103i)에 할당되는 VI(1411)가 82571EB 기반 NIC 또는 82571EB 기반 NIC와 호환 가능하거나 호환 가능하지 않은 다른 타입의 NIC이면, 서비스 VM(103)은 가상 82571EB 기반 NIC를 나타내는 디바이스 모델(114)의 인스턴스, 및 VI(1411)를 제어하는 VI 드라이버(116), 즉 82571EB 기반 NIC 또는 82571EB 기반 NIC와 호환 가능하거나 호환 가능하지 않은 다른 타입의 NIC의 인스턴스를 실행할 수 있다.
도 1에 도시된 바와 같은 실시예는 예시를 위해 제공되며, 다른 기술은 컴퓨팅 시스템(100)의 다른 실시예들을 구현할 수 있는 것으로 평가될 것이다. 예컨대, 디바이스 모델(114)은 VI 드라이버(116), 또는 CE 드라이버(116), 모두 하나의 박스 내에 통합될 수 있다. 이들은 OS 커널과 같은 권한 모드(privilege mode), 또는 OS 유저 랜드(user land)와 같은 비권한 모드로 실행할 수 있다. 다른 VM이 디바이스 모델 및 VI 드라이버 또는 복수의 VMs 사이의 충분한 통신을 가진 어떤 다른 조합을 실행할 동안, 서비스 VM은 하나의 VM이 CE를 실행하는 복수의 VMs로 분할될 수도 있다.
실시예에서, I/O 동작이 게스트 VM(1031)에서 실행하는 애플리케이션(예컨대, 애플리케이션(1171))에 의해 지시되면, 게스트 디바이스 드라이버(1161)는 I/O 동작에 관련된 I/O 정보를 게스트 VM(1031)에 지정된 (도 1에 도시되지 않은) 버퍼에 기록할 수 있다. 예컨대, 게스트 디바이스 드라이버(1161)는 하나의 I/O 기술자에 대한 링 구조의 하나의 엔트리로 도 2a에 도시된 바와 같이 I/O 기술자를 링 구조에 기록할 수 있다. 실시예에서, I/O 기술자는 데이터 패킷과 관련된 I/O 동작을 나타낼 수 있다. 예컨대, 게스트 애플리케이션(1171)이 게스트 메모리 어드레스 xxx-yyy로부터 또는 xxx-yyy로 100 패킷을 판독하거나 기록하도록 지시하면, 게스트 디바이스 드라이버(1161)는 100 I/O 기술자를 도 2a의 기술자 링에 기록할 수 있다. 게스트 디바이스 드라이버(1161)는 이러한 기술자를 헤드 포인터(201)에서 개시하는 기술자 링에 기록할 수 있다. 게스트 디바이스 드라이버(1161)는 I/O 동작에 관련된 기술자의 기록을 완료한 후 테일(tail) 포인터(202)를 업데이트할 수 있다. 실시예에서, 헤드 포인터(201) 및 테일 포인터(202)는 헤드 레지스터 및 테일 레지스터(도면에 도시되지 않음)에 저장될 수 있다.
실시예에서, 기술자는 데이터, I/O 동작 타입(판독 또는 기록), VI(1411)를 위한 게스트 메모리 어드레스를 포함하여, I/O 동작 및 I/O 동작에 필요한 가능한 다른 정보의 상태로부터 데이터를 판독하거나 데이터를 이러한 상태로 기록할 수 있다.
실시예에서, 게스트 디바이스 드라이버(1161)가 게스트 VM(1031)에 지정된 VI(1411)와 호환 가능한 모드로 작업할 수 없다면, 예컨대, VI(1411) 및 게스트 디바이스 드라이버(1161)가 지원하는 서로 다른 비트 포맷 및/또는 시맨틱스(semantics) 때문에 VI(1411)가 게스트 디바이스 드라이버(1161)에 의해 기록되는 기술자에 기초하여 I/O 동작을 구현할 수 없다면, VI 드라이버(116)는 (도 2b에 도시된 바와 같이) 새도우 링을 생성하여, 게스트 VM(1031)의 아키텍처에 따른 기술자, 헤드 포인터 및 테일 포인터를 VI(1411)의 아키텍처에 따른 새도우 기술자(S-기술자), 새도우 헤드 포인터(S-헤드 포인터) 및 새도우 테일 포인터(S-테일 포인터)로 변환하여, VI(1411)가 새도우 기술자에 기초하여 I/O 동작을 구현할 수 있도록 한다.
도 2a 및 2b에 도시된 실시예들은 예시를 위해 제공되며, 다른 기술은 I/O 정보의 다른 실시예들을 구현할 수 있는 것으로 평가될 것이다. 예컨대, I/O 정보는 해시 테이블, 링크 테이블 등과 같은 도 2a 및 2b의 링 구조와 다른 데이터 구조에 기록될 수 있다. 다른 예의 경우, 단일 링은 수신 및 전송의 양방에 이용될 수 있거나, 별도의 링은 수신 또는 전송에 이용될 수 있다.
IOMMU 또는 유사한 기술은 I/O 디바이스(141)가 기술자 링 또는 새도우 기술자 링 내의 기술자로부터 검색되는 게스트 어드레스를 호스트 어드레스로의 리매핑(remapping)을 통해 액세스 메모리 시스템(121)에 지시하도록 할 수 있다. 도 3은 IOMMU 테이블의 실시예를 도시한다. 게스트 VM(1031)과 같은 게스트 가상 머신은 게스트 VM의 아키텍처에 따른 게스트 메모리 어드레스와 호스트 컴퓨팅 시스템의 아키텍처에 따른 호스트 메모리 어드레스 사이의 대응하는 관계를 나타내는 적어도 하나의 IOMMU 테이블을 가질 수 있다. VMM(102) 및 서비스 VM(103)은 게스트 가상 머신의 모두에 대한 IOMMU 테이블을 관리할 수 있다. 더욱이, IOMMU 페이지 테이블은 디바이스 식별자(예컨대, PCIe 시스템세서 버스:디바이스:기능 번호), 게스트 VM 번호, 또는 IOMMU 구현에 특정된 어떤 다른 방법)로 색인되는 바와 같이 다양한 방법으로 색인될 수 있다.
서로 다른 실시예들은 메모리 액세스에 대해 서로 다른 기술을 이용할 수 있는 것으로 평가될 것이다. 실시예에서, IOMMU는 게스트 어드레스가 호스트 어드레스와 동일한 경우 예컨대 소프트웨어 솔루션을 통해 이용될 수 없다. 다른 실시예에서, 게스트 디바이스 드라이버는 IOMMU 테이블과 유사한 매핑 테이블을 이용하여 게스트 어드레스를 호스트 어드레스로 변환하도록 VMM(102)과 작업할 수 있다.
도 4는 게스트 가상 머신에 의해 I/O 동작에 관련된 I/O 정보를 기록하는 방법의 실시예를 도시한다. 다음의 설명은 일례로서 게스트 VM(1031)을 취함으로써 행해진다. 동일하거나 유사한 기술은 다른 게스트 VMs에 적용할 수 있는 것으로 이해되어야 한다.
블록(401)에서, 게스트 VM(1031)에서 실행하는 애플리케이션(1171)은 예컨대 100 패킷을 게스트 메모리 어드레스 xxx-yyy에 기록하도록 I/O 동작에 지시할 수 있다. 블록(402)에서, 게스트 디바이스 드라이버(1161)는, 블록(403)에서 I/O 동작에 관련된 모든 기술자가 기술자 링에 기록될 때까지, I/O 동작에 관련된 I/O 기술자를 생성시켜 게스트 VM(1031)의 기술자 링(예컨대, 도 2a 또는 2b에 도시된 바와 같은 기술자 링)에 기록할 수 있다. 실시예에서, 게스트 디바이스 드라이버(1161)는 헤드 포인터(예컨대, 도 2a의 헤드 포인터(201) 또는 도 2b의 헤드 포인터(2201))에서 개시하는 I/O 기술자를 기록할 수 있다. 블록(404)에서, 게스트 디바이스 드라이버(1161)는 I/O 동작에 관련된 모든 기술자가 버퍼에 기록된 후에 테일 포인터(예컨대, 도 2a의 테일 포인터(202) 또는 도 2b의 테일 포인터(2202))를 업데이트할 수 있다.
도 5는 서비스 VM(103)에 의해 I/O 동작을 처리하는 방법의 실시예를 도시한다. 실시예는 게스트 가상 머신의 게스트 디바이스 드라이버가 게스트 가상 머신에 할당된 VI 및/또는 이의 드라이버와 호환 가능한 모드로 작업할 수 있는 조건에 적용될 수 있다. 예컨대, 게스트 디바이스 드라이버는 82571EB 기반 NIC의 레거시 드라이버이지만, VI는 82571EB 기반 NIC 또는 82571EB 기반 NIC와 호환 가능한 다른 타입의 NIC, 예컨대, 82571EB 기반 NIC의 가상 함수이다. 다음의 설명은 일례로서 게스트 VM(1031)을 취함으로써 행해진다. 동일하거나 유사한 기술은 다른 게스트 VMs에 적용할 수 있는 것으로 이해되어야 한다.
블록(501)에서, 게스트 VM(1031)은 VMM(102)에 의해 캡처될 수 있는 가상 머신 출구(예컨대, VMExit)를 트리거할 수 있는 테일 포인터(예컨대, 도 2a의 테일 포인터(202))를 업데이트하여, VMM(102)가 게스트 VM(1031)의 게스트 OS(1131)에서 서비스 VM(103)의 디바이스 모델(114)로 시스템의 제어를 전송할 수 있도록 한다.
블록(502)에서, 디바이스 모델(114)은 테일 업데이트에 응답하여 VI 드라이버(116)를 호출(invoke)할 수 있다. 블록(503-506)에서, VI 드라이버(116)는 게스트 VM(1031)에 지정된 VI(1141)를 제어하여, 게스트 VM(1031)에 의해 기록된 I/O 기술자(예컨대, 도 2a의 I/O 기술자)에 기초하여 I/O 동작을 구현할 수 있다. 특히, 블록(503)에서, VI 드라이버(116)는 I/O 기술자의 준비를 위해 VI(1141)를 호출할 수 있다. 실시예에서, VI 드라이버(116)는 (도면에 도시되지 않은) 테일 레지스터를 업데이트하여 VI(1141)를 호출할 수 있다. 블록(504)에서, VI(1141)는 게스트 VM(1031)의 기술자 링(예컨대, 도 2a에 도시된 바와 같은 기술자 링)으로부터의 기술자를 판독하여, 예컨대, 패킷을 수신하여 패킷을 게스트 메모리 어드레스 xxx에 기록하는 I/O 기술자에 나타낸 바와 같은 I/O 동작을 구현할 수 있다. 실시예에서, VI(1141)는 기술자 링의 헤드 포인터(예컨대, 도 2a의 헤드 포인터(201))에 의해 지적된 I/O 기술자를 판독할 수 있다.
실시예에서, VI(1141)는 I/O 동작을 위해 직접 메모리 액세스(DMA)를 구현하도록 IOMMU 또는 유사한 기술을 이용할 수 있다. 예컨대, VI1(1141)는 게스트 VM(1031)에 대해 생성된 IOMMU 테이블로부터 게스트 메모리 어드레스에 상응하는 호스트 메모리 어드레스를 획득하여, 메모리 시스템(121)으로부터 패킷을 직접 판독하거나 패킷을 메모리 시스템(121)에 기록할 수 있다. 다른 실시예에서, VI(1141)는 게스트 어드레스가 게스트 어드레스와 호스트 어드레스 사이의 고정된 매핑 하에 호스트 어드레스와 동일할 경우에 IOMMU 테이블 없이 직접 메모리 액세스를 구현할 수 있다. 블록(505)에서, VI(1141)는 I/O 기술자, 예컨대, I/O 기술자에 포함된 I/O 동작의 상태를 추가로 업데이트하여, I/O 기술자가 구현되었음을 나타낼 수 있다. 실시예에서, VI(1141)는 I/O 기술자 업데이트를 위해 IOMMU 테이블을 이용할 수 있거나 이용하지 않을 수 있다. VI(1141)는 헤드 포인터를 추가로 업데이트하여 헤드 포인터를 앞으로 이동시켜, 기술자 링에서 다음 I/O 기술자를 지적할 수 있다.
블록(506)에서, VI(1141)는 테일 포인터에 의해 지적된 I/O 기술자에 도달하는지의 여부를 판단할 수 있다. 도달하지 못함에 응답하여, VI(1141)는 기술자 링으로부터 I/O 기술자를 계속 판독하여, 블록(504 및 505)에서 I/O 기술자에 의해 지시된 I/O 동작을 구현할 수 있다. 도달함에 응답하여, VI(1141)는, 예컨대, VMM(102)으로의 인터럽트 신호 전송을 통해 블록(507)에서 I/O 동작의 완료를 VMM(102)에 통지할 수 있다. 블록(508)에서, VMM(102)은, 예컨대, 서비스 VM(103)에 대한 인터럽트의 주입을 통해 I/O 동작의 완료를 VI 드라이버(106)에 통지할 수 있다.
블록(509)에서, VI 드라이버(116)는 VI(1141)의 상태를 유지하여, I/O 동작의 완료를 디바이스 모델(114)에 통지할 수 있다. 블록(510)에서, 디바이스 모델(114)은 게스트 디바이스 드라이버(1161)가 이벤트를 처리하여 I/O 동작이 구현됨을 애플리케이션(1171)에 통지할 수 있도록 게스트 VM(1131)으로 가상 인터럽트 신호를 전송할 수 있다. 예컨대, 게스트 디바이스 드라이버(1161)는 데이터가 수신되어 이용할 준비가 되어 있음을 애플리케이션(1171)에 통지할 수 있다. 실시예에서, 디바이스 모델(14)은 기술자 링의 제어가 게스트 디바이스 드라이버(1161)로 다시 전송되는 것을 나타내도록 (도면에 도시되지 않은) 헤드 레지스터를 추가로 업데이트할 수 있다. 게스트 디바이스 드라이버(1161)에 통지하는 것은 디바이스/드라이버 정책, 예컨대, 게스트 디바이스 드라이버가 디바이스 인터럽트를 사용할 수 없게 하는 경우에 행해지는 디바이스/드라이버 정책에 의해 결정될 수 있는 다른 방식으로 일어날 수 있는 것으로 평가될 것이다.
설명된 바와 같은 실시예는 예시를 위해 제공되며, 다른 기술은 다른 실시예들을 구현할 수 있는 것으로 평가될 것이다. 예컨대, 서로 다른 VMM 메커니즘에 따라, VI(1141)는 서로 다른 방식으로 I/O 동작의 완료를 그 위에 놓인 머신에 통지할 수 있다. 실시예에서, VI(1141)는 VMM(102)을 통하기 보다는 서비스 VM(103)으로 직접 통지할 수 있다. 다른 실시예에서, VI(1141)는 기술자 링에 리스트된 I/O 동작의 모두가 아닌 하나 이상이 완료될 때를 그 위에 놓인 머신에 통지하여, 게스트 애플리케이션이 시간적으로 I/O 동작의 부분의 완료를 통지받을 수 있도록 할 수 있다.
도 6a-6b는 서비스 VM(103)에 의해 I/O 동작을 처리하는 방법의 다른 실시예를 예시한다. 실시예는 게스트 가상 머신의 게스트 디바이스 드라이버가 게스트 가상 머신에 할당된 VI 및/또는 이의 드라이버와 호환 가능한 모드로 작업할 수 없는 조건에 적용될 수 있다. 다음의 설명은 일례로서 게스트 VM(1031)을 취함으로써 행해진다. 동일하거나 유사한 기술은 다른 게스트 VMs에 적용할 수 있는 것으로 이해되어야 한다.
블록(601)에서, 예컨대, 게스트 디바이스 드라이버(116)가 가상 디바이스(예컨대, 디바이스 모델(114))에 액세스할 때, VMM은 게스트 VM(1031)에 의해 생성된 가상 머신 출구(예컨대, VMExit)를 캡처할 수 있다. 블록(602)에서, VMM(102)은 게스트 VM(1031)의 게스트 OS(1131)에서 서비스 VM(103)의 디바이스 모델(114)로 시스템의 제어를 전송할 수 있다. 블록(603)에서, 디바이스 모델(114)은, 게스트 디바이스 드라이버(1161)가 I/O 동작에 관련된 I/O 기술자를 기술자 링(예컨대, 도 2b의 기술자 링)에 기록하는 것을 완료하였다는 사실에 의해 가상 머신 출구가 트리거되는지의 여부를 판단할 수 있다. 실시예에서, 게스트 VM(1031)은 I/O 기술자의 끝을 나타내는 테일 포인터(예컨대, 도 2b의 테일 포인터(2202))를 업데이트할 수 있다. 이 경우에, 디바이스 모델(114)은 가상 머신 출구가 테일 포인터의 업데이트에 의해 트리거되는지의 여부를 판단할 수 있다.
게스트 디바이스 드라이버(1161)가 I/O 기술자를 기록하는 것을 완료하였다는 사실에 의해 가상 머신 출구가 트리거되지 않는 것에 응답하여, 도 6a-6b의 방법은 블록(601)으로 다시 진행할 수 있으며, 즉 VMM은 다음 VM 출구를 캡처할 수 있다. 게스트 디바이스 드라이버(1161)가 I/O 기술자를 기록하는 것을 완료하였다는 사실에 의해 가상 머신 출구가 트리거되는 것에 응답하여, 블록(604)에서, 디바이스 모델(114)은 게스트 VM(1031)의 아키텍처에 따른 I/O 기술자를 게스트 VM(1031)에 지정된 VI(1411)의 아키텍처에 따른 새도우 I/O 기술자로 변환하여, 새도우 I/O 기술자를 새도우 기술자 링(예컨대, 도 2b에 도시된 새도우 기술자 링)에 저장하도록 VI 드라이버(116)를 호출할 수 있다.
블록(605)에서, VI 드라이버(116)는 게스트 VM(1031)의 아키텍처에 따른 테일 포인터를 VI(1411)의 아키텍처에 따른 새도우 테일 포인터로 변환할 수 있다.
블록(606-610)에서, VI 드라이버(116)는 VI(1141)를 제어하여 게스트 VM(1031)에 의해 기록된 I/O 기술자에 기초하여 I/O 동작을 구현할 수 있다. 특히, 블록(606)에서, VI 드라이버(116)는 새도우 기술자의 준비를 위해 VI(1141)를 호출할 수 있다. 실시예에서, VI 드라이버(116)는 (도면에 도시되지 않은) 새도우 테일 포인터를 업데이트하여 VI(1141)를 호출할 수 있다. 블록(607)에서, VI(1141)는 새도우 기술자 링으로부터의 새도우 I/O 기술자를 판독하여, 예컨대, 패킷을 수신하여 패킷을 게스트 메모리 어드레스 xxx에 기록하거나, 게스트 메모리 어드레스 xxx로부터 패킷을 판독하여 패킷을 전송하는 새도우 I/O 기술자에 나타낸 바와 같은 I/O 동작을 구현할 수 있다. 실시예에서, VI(1141)는 새도우 기술자 링의 새도우 헤드 포인터(예컨대, 도 2b의 새도우 헤드 포인터(2201))에 의해 지적된 I/O 기술자를 판독할 수 있다.
실시예에서, VI(1141)는 I/O 동작을 위해 직접 메모리 액세스를 실현하도록 IOMMU 또는 유사한 기술을 이용할 수 있다. 예컨대, VI1(1141)는 게스트 VM(1031)에 대해 생성된 IOMMU 테이블로부터 게스트 메모리 어드레스에 상응하는 호스트 메모리 어드레스를 획득하여, 수신된 패킷을 메모리 시스템(121)에 직접 기록할 수 있다. 다른 실시예에서, VI(1141)는 게스트 어드레스가 게스트 어드레스와 호스트 어드레스 사이의 고정된 매핑 하에 호스트 어드레스와 동일할 경우에 IOMMU 테이블 없이 직접 메모리 액세스를 구현할 수 있다. 블록(608)에서, VI(1141)는 새도우 I/O 기술자, 예컨대, 새도우 I/O 기술자에 포함된 I/O 동작의 상태를 추가로 업데이트하여, I/O 기술자가 구현되었음을 나타낼 수 있다. 실시예에서, VI(1141)는 I/O 기술자 업데이트를 위해 IOMMU 테이블을 이용할 수 있다. VI(1141)는 새도우 헤드 포인터를 추가로 업데이트하여 새도우 헤드 포인터를 앞으로 이동시켜, 새도우 기술자 링에서 다음 새도우 I/O 기술자를 지적할 수 있다.
블록(609)에서, VI 드라이버(116)는 업데이트된 새도우 I/O 기술자 및 새도우 헤드 포인터를 다시 I/O 기술자 및 헤드 포인터로 변환하여, 새로운 I/O 기술자 및 헤드 포인터로 기술자 링을 업데이트할 수 있다. 블록(610)에서, VI(1141)는 새도우 테일 포인터에 의해 지적된 새도우 I/O 기술자에 도달하는지의 여부를 판단할 수 있다. 도달하지 못함에 응답하여, VI(1141)는 새도우 기술자 링으로부터 새도우 I/O 기술자를 계속 판독하여, 블록(607-609)에서 새도우 I/O 기술자에 의해 나타낸 I/O 동작을 구현할 수 있다. 도달함에 응답하여, VI(1141)는, 예컨대, VMM(102)으로의 인터럽트 신호 전송을 통해 블록(611)에서 I/O 동작의 완료를 VMM(102)에 통지할 수 있다. 그리고 나서, VMM(102)은 예컨대 서비스 VM(103)로의 인터럽트의 주입을 통해 I/O 동작의 완료를 VI 드라이버(106)에 통지할 수 있다.
블록(612)에서, VI 드라이버(116)는 VI(1141)의 상태를 유지하며, I/O 동작의 완료를 디바이스 모델(114)에 통지할 수 있다. 블록(613)에서, 디바이스 모델(114)은 게스트 디바이스 드라이버(1161)가 이벤트를 처리하여 I/O 동작이 구현됨을 애플리케이션(1171)에 통지할 수 있도록 게스트 디바이스 드라이버(1161)로 가상 인터럽트 신호를 전송할 수 있다. 예컨대, 게스트 디바이스 드라이버(1161)는 데이터가 수신되어 이용할 준비가 되어 있음을 애플리케이션(1171)에 통지할 수 있다. 실시예에서, 디바이스 모델(14)은 기술자 링의 제어가 게스트 디바이스 드라이버(1161)로 다시 전송되는 것을 나타내도록 (도면에 도시되지 않은) 헤드 레지스터를 추가로 업데이트할 수 있다. 게스트 디바이스 드라이버(1161)에 통지하는 것은 디바이스/드라이버 정책, 예컨대, 게스트 디바이스 드라이버가 디바이스 인터럽트를 사용할 수 없게 하는 경우에 행해지는 디바이스/드라이버 정책에 의해 결정될 수 있는 다른 방식으로 일어날 수 있는 것으로 평가될 것이다.
설명된 바와 같은 실시예는 예시를 위해 제공되며, 다른 기술은 다른 실시예들을 구현할 수 있는 것으로 평가될 것이다. 예컨대, 서로 다른 VMM 메커니즘에 따라, VI(1141)는 서로 다른 방식으로 I/O 동작의 완료를 그 위에 놓인 머신에 통지할 수 있다. 실시예에서, VI(1141)는 VMM(102)을 통하기보다는 서비스 VM(103)으로 직접 통지할 수 있다. 다른 실시예에서, VI(1141)는 기술자 링에 리스트된 I/O 동작의 모두가 아닌 하나 이상이 완료될 때를 그 위에 놓인 머신에 통지하여, 게스트 애플리케이션이 시간적으로 I/O 동작의 부분의 완료를 통지받을 수 있도록 할 수 있다.
본 발명의 소정 특징이 예시적인 실시예들에 관련하여 설명되었지만, 이 설명은 제한적인 뜻으로 해석되지 않도록 의도된다. 본 발명이 속하는 기술 분야의 당업자에게는 자명한 본 발명의 예시적 실시예들 뿐만 아니라 다른 실시예들에 대한 여러 수정은 본 발명의 사상 및 범위 내에 있는 것으로 간주된다.

Claims (26)

  1. 서비스 가상 머신에 의해 동작되는 방법으로서,
    입력/출력(I/O) 동작에 관련되며 게스트 가상 머신에 의해 기록되는 I/O 정보를 이용하여 상기 I/O 동작을 구현하도록 I/O 디바이스의 일부를 제어하기 위해 상기 서비스 가상 머신의 디바이스 모델에 의해 상기 서비스 가상 머신의 디바이스 드라이버를 호출하는 단계를 포함하며,
    상기 디바이스 모델, 상기 디바이스 드라이버 및 상기 I/O 디바이스의 일부는 상기 게스트 가상 머신에 할당되는
    방법.
  2. 제1항에 있어서,
    상기 I/O 디바이스의 상기 일부가 상기 게스트 가상 머신의 아키텍처와 호환 가능하게 작업할 수 없을 경우,
    상기 디바이스 드라이버에 의해, 상기 게스트 가상 머신의 상기 아키텍처에 따른 상기 I/O 정보를 상기 I/O 디바이스의 상기 일부의 아키텍처에 따른 새도우 I/O 정보로 변환하는 단계와,
    상기 디바이스 드라이버에 의해, 상기 I/O 디바이스의 상기 일부의 상기 아키텍처에 따른 업데이트된 새도우 I/O 정보를 상기 게스트 가상 머신의 상기 아키텍처에 따른 업데이트된 I/O 정보로 변환하는 단계 - 상기 업데이트된 I/O 정보는 상기 I/O 동작의 구현에 응답하여 상기 I/O 디바이스의 상기 일부에 의해 업데이트됨 - 를 더 포함하는
    방법.
  3. 제1항에 있어서,
    상기 디바이스 드라이버에 의해, 상기 I/O 동작이 구현된 후에 상기 I/O 디바이스의 상기 일부의 상태를 유지하는 단계를 더 포함하는
    방법.
  4. 제1항에 있어서,
    상기 디바이스 모델에 의해, 상기 I/O 동작이 구현됨을 상기 게스트 가상 머신에 통지하는 단계를 더 포함하는
    방법.
  5. 제1항에 있어서,
    상기 I/O 정보는 상기 I/O 디바이스의 상기 일부에 의해 제어 가능한 헤드 포인터로부터 시작하는 데이터 구조에 기록되는
    방법.
  6. 제1항에 있어서,
    상기 I/O 정보의 끝을 나타내는 테일 포인터는 상기 게스트 가상 머신에 의해 업데이트되는
    방법.
  7. 디바이스 모델 및 디바이스 드라이버를 포함하되,
    상기 디바이스 모델은 I/O 동작에 관련되며 게스트 가상 머신에 의해 기록되는 I/O 정보를 이용하여 상기 I/O 동작을 구현하도록 I/O 디바이스의 일부를 제어하기 위해 상기 디바이스 드라이버를 호출하고,
    상기 디바이스 모델, 상기 디바이스 드라이버 및 상기 I/O 디바이스의 상기 일부는 상기 게스트 가상 머신에 할당되는
    장치.
  8. 제7항에 있어서,
    상기 I/O 디바이스의 상기 일부가 상기 게스트 가상 머신의 아키텍처와 호환 가능하게 작업할 수 없을 경우,
    상기 디바이스 드라이버는
    상기 게스트 가상 머신의 상기 아키텍처에 따른 상기 I/O 정보를 상기 I/O 디바이스의 상기 일부의 아키텍처에 따른 새도우 I/O 정보로 변환하고,
    상기 I/O 디바이스의 상기 일부의 상기 아키텍처에 따른 업데이트된 새도우 I/O 정보를 상기 게스트 가상 머신의 상기 아키텍처에 따른 업데이트된 I/O 정보로 변환하고,
    상기 업데이트된 I/O 정보는 상기 I/O 동작의 구현에 응답하여 상기 I/O 디바이스의 상기 일부에 의해 업데이트된
    장치.
  9. 제7항에 있어서,
    상기 디바이스 드라이버는 상기 I/O 동작이 구현된 후에 상기 I/O 디바이스의 상기 일부의 상태를 더 유지하는
    장치.
  10. 제7항에 있어서,
    상기 디바이스 모델은 상기 I/O 동작이 구현됨을 상기 게스트 가상 머신에 더 통지하는
    장치.
  11. 제7항에 있어서,
    상기 I/O 정보는 상기 I/O 디바이스의 상기 일부에 의해 제어 가능한 헤드 포인터로부터 시작하는 데이터 구조에 기록되는
    장치.
  12. 제7항에 있어서,
    상기 I/O 정보의 끝을 나타내는 테일 포인터는 상기 게스트 가상 머신에 의해 업데이트되는
    장치.
  13. 복수의 명령어를 포함하며,
    상기 복수의 명령어는 실행될 때 시스템으로 하여금,
    I/O 동작에 관련되며 게스트 가상 머신에 의해 기록되는 I/O 정보를 이용하여 상기 I/O 동작을 구현하도록 I/O 디바이스의 일부를 제어하기 위해 서비스 가상 머신의 디바이스 모델에 의해 상기 서비스 가상 머신의 디바이스 드라이버를 호출하게 하고,
    상기 디바이스 모델, 상기 디바이스 드라이버 및 상기 I/O 디바이스의 상기 일부는 상기 게스트 가상 머신에 할당되는
    머신 판독 가능한 매체.
  14. 제13항에 있어서,
    상기 I/O 디바이스의 상기 일부가 상기 게스트 가상 머신의 아키텍처와 호환 가능하게 작업할 수 없을 경우,
    상기 복수의 명령어는 상기 시스템으로 하여금 추가로,
    상기 디바이스 드라이버에 의해, 상기 게스트 가상 머신의 상기 아키텍처에 따른 상기 I/O 정보를 상기 I/O 디바이스의 상기 일부의 아키텍처에 따른 새도우 I/O 정보로 변환하도록 하고,
    상기 디바이스 드라이버에 의해, 상기 I/O 디바이스의 상기 일부의 상기 아키텍처에 따른 업데이트된 새도우 I/O 정보를 상기 게스트 가상 머신의 상기 아키텍처에 따른 업데이트된 I/O 정보로 변환하도록 하며,
    상기 업데이트된 I/O 정보는 상기 I/O 동작의 구현에 응답하여 상기 I/O 디바이스의 상기 일부에 의해 업데이트된
    머신 판독 가능한 매체.
  15. 제13항에 있어서,
    상기 복수의 명령어는 상기 시스템으로 하여금 추가로,
    상기 디바이스 드라이버에 의해, 상기 I/O 동작이 구현된 후에 상기 I/O 디바이스의 상기 일부의 상태를 유지하게 하는
    머신 판독 가능한 매체.
  16. 제13항에 있어서, 상기 복수의 명령어는 상기 시스템으로 하여금 추가로,
    상기 디바이스 모델에 의해, 상기 I/O 동작이 구현됨을 상기 게스트 가상 머신에 통지하게 하는
    머신 판독 가능한 매체.
  17. 제13항에 있어서,
    상기 I/O 정보는 상기 I/O 디바이스의 상기 일부에 의해 제어 가능한 헤드 포인터로부터 시작하는 데이터 구조에 기록되는
    머신 판독 가능한 매체.
  18. 제13항에 있어서,
    상기 I/O 정보의 끝을 나타내는 테일 포인터는 상기 게스트 가상 머신에 의해 업데이트되는
    머신 판독 가능한 매체.
  19. I/O 디바이스를 포함하는 하드웨어 머신과,
    상기 하드웨어 머신 및 복수의 가상 머신을 인터페이스하는 가상 머신 모니터를 포함하되,
    상기 가상 머신은
    I/O 동작에 관련된 I/O 정보를 기록하는 게스트 가상 머신과,
    디바이스 모델 및 디바이스 드라이버를 포함하는 서비스 가상 머신을 포함하며,
    상기 디바이스 모델은 상기 I/O 정보를 이용하여 상기 I/O 동작을 구현하도록 상기 I/O 디바이스의 일부를 제어하기 위해 상기 디바이스 드라이버를 호출하며, 상기 디바이스 모델, 상기 디바이스 드라이버 및 상기 I/O 디바이스의 상기 일부는 상기 게스트 가상 머신에 할당되는
    시스템.
  20. 제19항에 있어서,
    상기 I/O 디바이스의 상기 일부가 상기 게스트 가상 머신의 아키텍처와 호환 가능하게 작업할 수 없을 경우, 상기 서비스 가상 머신의 상기 디바이스 드라이버는 추가로
    상기 게스트 가상 머신의 상기 아키텍처에 따른 상기 I/O 정보를 상기 I/O 디바이스의 상기 일부의 아키텍처에 따른 새도우 I/O 정보로 변환하며,
    상기 I/O 디바이스의 적어도 상기 일부의 상기 아키텍처에 따른 업데이트된 새도우 I/O 정보를 상기 게스트 가상 머신의 상기 아키텍처에 따른 업데이트된 I/O 정보로 변환하되,
    상기 업데이트된 I/O 정보는 상기 I/O 동작의 구현에 응답하여 상기 I/O 디바이스의 일부에 의해 업데이트된
    시스템.
  21. 제20항에 있어서,
    상기 게스트 가상 머신은 상기 I/O 정보를 상기 I/O 디바이스의 상기 일부에 의해 업데이트되는 헤드 포인터로부터 시작하는 데이터 구조에 기록하는
    시스템.
  22. 제20항에 있어서,
    상기 게스트 가상 머신은 상기 I/O 정보의 끝을 나타내는 테일 포인터를 업데이트하는
    시스템.
  23. 제20항에 있어서,
    상기 가상 머신 모니터는 상기 테일 포인터가 업데이트되는 것을 검출할 경우에 상기 시스템의 제어를 상기 게스트 가상 머신에서 상기 서비스 가상 머신으로 전송하는
    시스템.
  24. 제20항에 있어서,
    상기 I/O 디바이스의 상기 일부는 상기 I/O 동작이 구현되는 것에 응답하여 상기 I/O 정보를 업데이트하는
    시스템.

  25. 제20항에 있어서,
    상기 디바이스 드라이버는 상기 I/O 동작이 구현된 후에 상기 I/O 디바이스의 상기 일부의 상태를 유지하는
    시스템.
  26. 제20항에 있어서,
    상기 디바이스 모델은 상기 I/O 동작이 구현됨을 상기 게스트 가상 머신에 통지하는
    시스템.
KR1020127016854A 2009-12-24 2009-12-24 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치 KR101521778B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2009/001543 WO2011075870A1 (en) 2009-12-24 2009-12-24 Method and apparatus for handling an i/o operation in a virtualization environment

Publications (2)

Publication Number Publication Date
KR20120098838A true KR20120098838A (ko) 2012-09-05
KR101521778B1 KR101521778B1 (ko) 2015-05-20

Family

ID=44194887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016854A KR101521778B1 (ko) 2009-12-24 2009-12-24 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치

Country Status (9)

Country Link
US (1) US20130055259A1 (ko)
EP (1) EP2517104A4 (ko)
JP (1) JP5608243B2 (ko)
KR (1) KR101521778B1 (ko)
CN (1) CN102754076B (ko)
AU (1) AU2009357325B2 (ko)
RU (1) RU2532708C2 (ko)
SG (1) SG181557A1 (ko)
WO (1) WO2011075870A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012151392A1 (en) * 2011-05-04 2012-11-08 Citrix Systems, Inc. Systems and methods for sr-iov pass-thru via an intermediary device
US8578378B2 (en) * 2011-07-28 2013-11-05 Intel Corporation Facilitating compatible interaction, at least in part
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
WO2013097105A1 (en) 2011-12-28 2013-07-04 Intel Corporation Efficient dynamic randomizing address remapping for pcm caching to improve endurance and anti-attack
CN102591702B (zh) 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US10740148B2 (en) * 2013-07-12 2020-08-11 Hewlett Packard Enterprise Development Lp Accelerated data operations in virtual environments
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
US9846592B2 (en) * 2015-12-23 2017-12-19 Intel Corporation Versatile protected input/output device access and isolated servicing for virtual machines
CN105700826A (zh) 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US10185679B2 (en) * 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
KR101716715B1 (ko) 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN106844007B (zh) * 2016-12-29 2020-01-07 中国科学院计算技术研究所 一种基于空间复用的虚拟化方法与系统
US10642603B2 (en) 2018-01-16 2020-05-05 Nutanix, Inc. Scheduling upgrades in distributed computing systems
US10628350B1 (en) * 2018-01-18 2020-04-21 Cavium, Llc Methods and systems for generating interrupts by a response direct memory access module
US10838754B2 (en) * 2018-04-27 2020-11-17 Nutanix, Inc. Virtualized systems having hardware interface services for controlling hardware
CN109542831B (zh) * 2018-10-28 2023-05-23 西南电子技术研究所(中国电子科技集团公司第十研究所) 机载平台多核虚拟分区处理系统
US11422959B1 (en) 2021-02-25 2022-08-23 Red Hat, Inc. System to use descriptor rings for I/O communication

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107267B2 (en) * 2002-01-31 2006-09-12 Sun Microsystems, Inc. Method, system, program, and data structure for implementing a locking mechanism for a shared resource
US7793287B2 (en) * 2003-10-01 2010-09-07 Hewlett-Packard Development Company, L.P. Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
US7464412B2 (en) * 2003-10-24 2008-12-09 Microsoft Corporation Providing secure input to a system with a high-assurance execution environment
US7552419B2 (en) * 2004-03-18 2009-06-23 Intel Corporation Sharing trusted hardware across multiple operational environments
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
CN100399274C (zh) * 2005-09-19 2008-07-02 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
US8099730B2 (en) * 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
US7787303B2 (en) * 2007-09-20 2010-08-31 Cypress Semiconductor Corporation Programmable CSONOS logic element
US8464260B2 (en) * 2007-10-31 2013-06-11 Hewlett-Packard Development Company, L.P. Configuration and association of a supervisory virtual device function to a privileged entity
US20090319740A1 (en) * 2008-06-18 2009-12-24 Fujitsu Limited Virtual computer system, information processing device providing virtual computer system, and program thereof
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
GB0823162D0 (en) * 2008-12-18 2009-01-28 Solarflare Communications Inc Virtualised Interface Functions

Also Published As

Publication number Publication date
EP2517104A4 (en) 2013-06-05
EP2517104A1 (en) 2012-10-31
KR101521778B1 (ko) 2015-05-20
US20130055259A1 (en) 2013-02-28
CN102754076A (zh) 2012-10-24
AU2009357325A1 (en) 2012-07-05
SG181557A1 (en) 2012-07-30
WO2011075870A1 (en) 2011-06-30
RU2012127415A (ru) 2014-01-10
CN102754076B (zh) 2016-09-07
JP2013515983A (ja) 2013-05-09
JP5608243B2 (ja) 2014-10-15
AU2009357325B2 (en) 2014-04-10
RU2532708C2 (ru) 2014-11-10

Similar Documents

Publication Publication Date Title
KR101521778B1 (ko) 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
US9170835B2 (en) Apparatus and method for expedited virtual machine (VM) launch in VM cluster environment
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US8181176B2 (en) Uniform storage device access using partial virtual machine executing within a secure enclave session
US7421533B2 (en) Method to manage memory in a platform with virtual machines
US7613847B2 (en) Partially virtualizing an I/O device for use by virtual machines
US20110153909A1 (en) Efficient Nested Virtualization
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US20110197190A1 (en) Virtualization method and virtual machine
US10019275B2 (en) Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels
CN105980986B (zh) 用于虚拟化计算的装置和方法
US20070040834A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
US11435958B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
US9921875B2 (en) Zero copy memory reclaim for applications using memory offlining
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
US20220365729A1 (en) Shared memory mechanism to support fast transport of sq/cq pair communication between ssd device driver in virtualization environment and physical ssd
US20190227942A1 (en) System and Method to Handle I/O Page Faults in an I/O Memory Management Unit
US20230033583A1 (en) Primary input-output queue serving host and guest operating systems concurrently

Legal Events

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

Payment date: 20180427

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee